U e5do1�M@s0dZddlZddlZddlZddlZddlZddlmZddl Z dddddd d d d d dddddddddddddgZ dd�Z dd�Z z ddl TWnLek r�d Zd!Zd"ZdZd#Zd$Zd%Zd&ZeZd'd �Z�d�d(d�ZYnXd e�kr�e Zd e�kr�e ZeZiZe � e�d)d ��Zd*d+�Z!�d�d-d.�Z"d/d0�Z#e�$d1�Z%�d�d2d3�Z&�d�d4d�Z'�d�d5d�Z(�d�d7d�Z)d8d �Zd9d:�Z*e+fd;d�Z,d�Z.eZ/d?d@�Z0dAdB�Z1dCd�Z2dDdE�Z3dFdG�Z4�d�dId�Z5efdJd�Z6�d�dKd�ZefdLd �Z7ej8�9dM��r �d�dNd�Z:nRze;Wn<ee?e>�@��D]"\ZAZBeA�Cdrds�ZAe>�DeAeB��q�dtdtdtdudvdwdxdxdydzd{d{d|d}d~ddd�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�dd�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�dSd�dSdSd|d�dSdSd�d�d�d�d�d�d�d�d|d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d|d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d|d�d�d�d�d�d�d�d|d�d|dSd|d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d��dd�d�d�d�d�d�d�d�d�d�d�d�d�d �d �d �d �d d��d �d �d�d �d �d �d �d �d�d�d�d�d�d�d�d�dd�d�d�d��d�d�d�dd�d�d�d�d�d�d�d�d�d�d�d�d�d�dd�d�d��d�d �d!�d!�d!�d"�d#�d$�d%�d&�d'�d'�d(�d)�d'�d'�d&�d&d|d�d|d�d|d�d*�d+�d*�d*�d,�d,�d,�d�d�d-�d.�d.�d.�d/�d/�d.�d.�d.�d.�d.�d0�d0�d0�d1�d0�d2�d3�d4�d4�d5�d6�d6�d7�d7�d7�d8�d7�d7�d9�d9�d:�d;�d<�d<�d=�d=�d>�d?�d@�dA�dB�dC�dD�dE�dE�dF�dF�dE�dC�dC�dG�dG�dH�dI�dJ�dJ�dK�dL�dM�dN�dO�dO�dP�dQ�dR�dR�dS�dS�dT�dU�dV�dV�dW�dW�dX�dX�dY�dZd�d��d[�d\�d]�d^�d_�d`d�dad�d�db�db�dc�dd�dc�dc�dc�dc�de�de�df�df�dd�dd�db�dg�dg�dh�di�dj�dj�dk�dl�dl�dm�dn�do�dp�dq�dr�dq�ds�ds�dt�dt�dt�du�dvdSdS�dw�dw�dx�du�dv�du�dy�dz�d{�d{�d{�d|�d|�d}�d{�d~�d�d�d��d��d��d��d��d��d��d��d��d��d��d��d�d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d�d�d�d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d�d��d��d��d��d��d��d��d��d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d��d�d�d��d�d�d�d�d�d�d��d�d�d��LZE�d�d�d�d�d�d�d�d�d�d�d�d��d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d��d��d��d��d��d��d��d��d��d��d��d��d�d�d�d�d�d�d�d�d�d �d �d �d �d �d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d �d!�d"�d#�d$�d%�d&�d'�d(�d)�d*�d+�d,�d-�d.�d.�d/�d0�d1�d2�d3�d4�d5�d6�d7�d8�d9�d:�d;�d<�d=�d>�d?�d@�dA�dB�dC�dD�dE�dF�dG�dH�dI�dJ�dK�dL�dM�dN�dO�dP�dQ�dR�dS�dT�dU�dV�dW�dX�dY�dZ�d[�d\�d]�d^�d_�d`�da�db�dc�dd�de�df�dg�df�dg�dh�di�dj�dk�dl�dm�dn�dm�do�dp�dq�dr�ds�dt�du�dv�dw�dx�dy�dz�d{�d|�d}�d~�d�d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d���ZF�d��d��ZGzeWne int. Compares two strings according to the locale. �)�a�brr�/usr/lib64/python3.8/locale.py�_strcoll!srcCs|S)z\ strxfrm(string) -> string. Returns a string that behaves for cmp locale-aware. r)�srrr�_strxfrm'sr)�*�������cCs,dgddddgddddddddddddd�S)zd localeconv() -> dict. Returns numeric and monetary locale-specific parameters. r!��.)�grouping�currency_symbol� n_sign_posn� p_cs_precedes� n_cs_precedes� mon_grouping�n_sep_by_space� decimal_point� negative_sign� positive_sign�p_sep_by_space�int_curr_symbol� p_sign_posn� thousands_sep�mon_thousands_sep� frac_digits�mon_decimal_point�int_frac_digitsrrrrrr ?s&�cCs|dkrtd��dS)zd setlocale(integer,string=None) -> string. Activates/queries locale processing. )Nr(�Cz*_locale emulation only supports "C" localer<)r)�category�valuerrrrWscCst�}tr|�t�|S)N)� _localeconv�_override_localeconv�update)�drrrr ls ccsJd}|D]<}|tkrdS|dkr:|dkr2td��|Vq2|V|}qdS)Nrzinvalid grouping)r� ValueError)r*Z last_interval�intervalrrr�_grouping_intervalszsrEFc Cs�t�}||rdpd}||r dp"d}|s2|dfS|ddkr\|��}|t|�d�}|}nd}d}g}t|�D]B} |r�|dd kr�|}d}q�|�|| d��|d| �}qp|r�|�|�|��||�|�|t|�t|�d fS) Nr8r7r/r*r������ r(� 0123456789r&)r �rstrip�lenrE�append�reverse�join) r�monetary�convr7r*�strippedZ right_spacesZ left_spaces�groupsrDrrr�_group�s2   �rRcCsdd}|r&||dkr&|d7}|d8}qt|�d}|rT||dkrT|d8}|d8}q2|||d�S)NrrGr&)rJ)rZamountZlposZrposrrr�_strip_padding�s   rSzG%(?:\((?P.*?)\))?(?P[-#0-9 +*.hlL]*?)[eEfFgGdiouxXcrs%]c Gs�|r||f|}n||}|ddkr~d}|�d�}|rRt|d|d�\|d<}t�|r^dp`d}|�|�}|r�t||�}n2|ddkr�d}|r�t||d�\}}|r�t||�}|S) NrFZeEfFgGrr)�rNr:r1Zdiu)�splitrRr rMrS) �percentr>r*rN� additionalZ formattedZseps�partsr1rrr�_format�s*   �    rYc Cs tt�|��}t�d|�}t|tj�rjg}|D]8}|��ddkrN|�d�q.|�t |��|||��q.n�t|t �sz|f}g}d}|D]r}|��ddkr�|�d�q�|�d�� d�} |�t |��||||f||d|d| ����|d| 7}q�t |�}||S)aFormats a string in the same way that the % formatting would use, but takes the current locale into account. Grouping is applied if the third parameter is true. Conversion uses monetary thousands separator and grouping strings if forth parameter monetary is true.z%srF�%rZ modifiersr r&) �list� _percent_re�finditer�sub� isinstance�_collections_abc�Mapping�grouprKrY�tuple�count) �f�valr*rNZpercentsZnew_fZnew_valZperc�iZ starcountrrrr�s4      ��cGs^ddl}|jdtdd�t�|�}|r:t|���t|�krJtdt|���t ||||f|��S)z&Deprecated, use format_string instead.rNz`This method will be removed in a future version of Python. Use 'locale.format_string()' instead.r')� stacklevelzHformat() must be given exactly one %%char format specifier, %s not valid) �warnings�warn�DeprecationWarningr\�matchrJrbrC�reprrY)rVr>r*rNrWrirlrrrr�s� �Tc Csft�}||rdpd}|dkr&td��td|t|�|dd�}d|d }|r�||rXd pZd }||d krld pnd}||d kr�dp�d} |r�|| r�dp�d|}n|| r�dp�d|}||d kr�dp�d} ||d kr�dp�d} | d kr�d|d}n`| dk�r| |}nL| dk�r|| }n8| dk�r2|�d| �}n | dk�rJ|�d | �}n| |}|�dd��d d�S)zIFormats val according to the currency settings in the current locale.r;r9r!z9Currency formatting is not possible using the 'C' locale.z%%.%ifTrT�<�>r5r+rr.r-r0r4rGr(r,r6r2r3�(�)r&r'r#r%)r rCrY�abs�replace) rfZsymbolr*Z internationalrOZdigitsrZsmbZprecedesZ separatedZsign_posZsignrrrrs6       cCs td|�S)z8Convert float to string, taking the locale into account.z%.12g)rY)rfrrrr0scCs:t�}|d}|r|�|d�}|d}|r6|�|d�}|S)zHParses a string as a normalized number according to the locale settings.r7r(r1r))r rs)�stringrO�tsZddrrr� delocalize4s  rvcCs |t|��S)zi>iLi:i�iziNi|iPiPiaiii�iHici)iiiiFikikik iiii;$i;i;i;i;i; i; i;i;iOi iiii[ili2ii$i i i i i i i i i $i (i ,i 0i 4i 8i <i @i Di Hi Li Pi TiAiiiZi(i_iIiDiJiiQiQiiBi�i"i.i i iCiCi*iRi�i4i�ixiji5cCs�i}|fdd�}|�|d=td�td�t�\}}td|p@d�td|pNd�t�td �td�|��D]@\}}t|d �t|�\}}td |p�d�td |p�d�t�qpt�td �td�t�|��D]B\}}t|d �t|�\}}td |p�d�td |�pd�t�q�zttd�Wn$td�td�td�YnhXt�td�td�|��D]F\}}t|d �t|�\}}td |�p�d�td |�p�d�t��qldS)z Test function. cSs0t���D] \}}|dd�dkr |||<q dS)Nr#ZLC_)�globals�items)� categories�k�vrrr�_init_categories�sz'_print_locale.._init_categoriesrz4Locale defaults as determined by getdefaultlocale():zH------------------------------------------------------------------------z Language: z (undefined)z Encoding: zLocale settings on startup:z...z Language: z Encoding: z,Locale settings after calling resetlocale():r(zNOTE:z9setlocale(LC_ALL, "") does not support the default localez&given in the OS environment variables.z4Locale settings after calling setlocale(LC_ALL, ""):N)rzrr�rrrr)r�r�Zlang�enc�namer=rrr� _print_locale�sV        r�� LC_MESSAGES�__main__zLocale aliasing:zNumber formatting:)N)F)FF)FF)FF)TFF)r�)N)T)T)T)T)K�__doc__r�r�Zencodings.aliases�rer`�builtinsrr�� functools�__all__rrr�r�rrrrr�rrrrCrr rr�r r r?r@�wrapsrErRrS�compiler\rYrrrrv�floatr r r|r�r�r�rr�r�rrrr�� startswithr�CODESET� NameError�hasattrr��sortedr�r�r�rs� setdefaultr�r�r�rK�__name__rzrrrr�st  �        %  -  S" 5     $�6 }����� a��V :