�
ƪb � � � d Z ddlmZmZ ddlmZ ed� � Zi dd�dd�d d
�dd�dd�d
d�dd�dd
�dd�dd�dd�dd�dd�dd�dd�dd�dd�i dd�dd�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/d0��i d1d�d2d�d3d�d4d�d5d�d6d�d7d�d8d�d9d:�d;d<�d=d>�d?d�d@d�dAd�dBd�dCd�dDdE��i dFd�dGd$�dHdI�dJd
�dKd�dLdM�dNd
�dOd�dPd�dQd�dRd�dSd
�dTd�dUd�dVd�dWd��ZdZ G dX� dYe � � Z
efdZ�Zd[S )\z�
babel.messages.plurals
~~~~~~~~~~~~~~~~~~~~~~
Plural form definitions.
:copyright: (c) 2013-2022 by the Babel Team.
:license: BSD, see LICENSE for more details.
� )�default_locale�Locale)�
itemgetter�LC_CTYPE�af)� z(n != 1)�ar)� z[(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=0 && n%100<=2 ? 4 : 5)�be)� zR(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)�bg�bn�bo)� �0�br)r
a& (n==1 ? 0 : n%10==1 && n%100!=11 && n%100!=71 && n%100!=91 ? 1 : n%10==2 && n%100!=12 && n%100!=72 && n%100!=92 ? 2 : (n%10==3 || n%10==4 || n%10==9) && n%100!=13 && n%100!=14 && n%100!=19 && n%100!=73 && n%100!=74 && n%100!=79 && n%100!=93 && n%100!=94 && n%100!=99 ? 3 : n%1000000==0 ? 4 : 5)�bs�ca�cs)r z%((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2)�cv�cy)� z/(n==1 ? 1 : n==2 ? 2 : n==3 ? 3 : n==6 ? 4 : 0)�da�de�dz�el�en�eo�es�et�eu�fa�fi�fr)r z(n > 1)�fur�ga)r z@(n==1 ? 0 : n==2 ? 1 : n>=3 && n<=6 ? 2 : n>=7 && n<=10 ? 3 : 4)�gl�ha�he�hi�hr�hu�hy�is)r z(n%10==1 && n%100!=11 ? 0 : 1)�it�ja�ka�kg�km�ko�ku�lo�lt)r zG(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)�lv)r z+(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)�mt)� zS(n==1 ? 0 : n==0 || ( n%100>=1 && n%100<=10) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3)�nb�nl�nn�no�pa�pl)r zB(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)�pt�pt_BR�ro)r z8(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2)�ru�sk�sl)r: z<(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)�sr�st�sv�th�tr�uk�ve�vi�xh�zhc � � e Zd ZdZdZ e ed� � d�� � Z e ed� � d�� � Z ed� d �� � Z d
� Z
dS )�_PluralTuplez A tuple with plural information.� r z.
The number of plurals used by the locale.)�docr z.
The plural expression used by the locale.c � � d| z S )Nznplurals=%s; plural=%s;rS )�xs �8/usr/lib/python3/dist-packages/babel/messages/plurals.py�<lambda>z_PluralTuple.<lambda>� s � �&?�!�&C� � z9
The plural expression used by the catalog or locale.c � � | j S )N)�plural_forms)�selfs rW �__str__z_PluralTuple.__str__� s � �� � rY N)�__name__�
__module__�__qualname__�__doc__� __slots__�propertyr �num_plurals�plural_exprr[ r] rS rY rW rR rR � s� � � � � � �*�*��I��(�:�:�a�=�=� /1� 2� 2� 2�K��(�:�:�a�=�=� /1� 2� 2� 2�K��8�C�C� J<� =� =� =�L�!� !� !� !� !rY rR c � � t j | � � } t t | � � }n;# t $ r. t | j }n# t $ r
t }Y nw xY wY nw xY wt |� � S )a� A tuple with the information catalogs need to perform proper
pluralization. The first item of the tuple is the number of plural
forms, the second the plural expression.
>>> get_plural(locale='en')
(2, '(n != 1)')
>>> get_plural(locale='ga')
(5, '(n==1 ? 0 : n==2 ? 1 : n>=3 && n<=6 ? 2 : n>=7 && n<=10 ? 3 : 4)')
The object returned is a special tuple with additional members:
>>> tup = get_plural("ja")
>>> tup.num_plurals
1
>>> tup.plural_expr
'0'
>>> tup.plural_forms
'nplurals=1; plural=0;'
Converting the tuple into a string prints the plural forms for a
gettext catalog:
>>> str(tup)
'nplurals=1; plural=0;'
)r �parse�PLURALS�str�KeyError�language�DEFAULT_PLURALrR )�locale�tups rW �
get_pluralro � s� � �4 �\�&�
!�
!�F�!��c�&�k�k�"����� !� !� !� !��&�/�*�C�C��� !� !� !� �C�C�C� !������!����
����s2 �1 �
A)�A�A)�A#� A)�"A#�#A)�(A)N)ra �
babel.corer r �operatorr r rh rl �tuplerR ro rS rY rW �<module>rs s� ��� � .� -� -� -� -� -� -� -� � � � � � � �>�*�%�%��t� �/�t� �
l�!t�8 �
c�9t�< |