B \]U@sxdZddlZddlZddlZddlZddddddd d d d d ddddddgZejejddZ e dej ej BZ ddZddZdZddeedDZdd d!d"Zd>d$d%Zd&d'Zd(d)Zd*d+ZGd,ddZGd-ddeZd?d/dZiZd@d0dZdAd1dZiaiad2adBd3d Z dCd4d Z!dDd5d Z"d6d Z#d7dZ$d8d Z%d9dZ&d:dZ'd;dZ(d[ \t]+) | # spaces and horizontal tabs (?P[0-9]+\b) | # decimal integer (?Pn\b) | # only n is allowed (?P[()]) | (?P[-*/%+?:]|[>, # <=, >=, ==, !=, &&, ||, # ? : # unary and bitwise ops # not allowed (?P\w+|.) # invalid token ccsTxHtt|D]8}|j}|dkr"q||}|dkr@td||VqWdVdS)NZ WHITESPACESZINVALIDz invalid token in plural form: %s)refinditer_token_pattern lastgroupgroup ValueError)pluralmoZkindvaluer#/usr/local/lib/python3.7/gettext.py _tokenizeVs   r!cCs|rtd|StdSdS)Nz#unexpected token in plural form: %szunexpected end of plural form)r)rrrr _erroras r"))z||)z&&)z==z!=)<>z<=z>=)+-)*/%cCs i|]\}}|D] }||qqSrr).0iZopsoprrr osr-orandz//)z||z&&r(c Csd}t|}x|dkr(|d7}t|}qW|dkr\t|\}}d||f}|dkrtdnP|dkrrd ||f}n:yt|d }Wntk rt|dYnXd ||f}t|}d }xh|tkr t|}||krP|d kr|d krd|}t||}t||d\} }d||| f}|}qW||kr:dkrFnnd|}|dkr|dkrt|d\} }|dkrzt|t|\} }d| || f}|dkrd|}||fS)Nr!znot (z%s(%s))z%unbalanced parenthesis in plural formnz%s%s z%s%dd)z(%s)r.z%s %s %sr9?r:z%s if %s else %s)next_parserintr" _binary_ops _c2py_opsget) tokensZpriorityresultnexttoksubrjr+r,rightZif_trueZif_falserrr r=rsP           r=cCsZy t|}Wn(tk r4td|jjfdYnXddl}|d|jjftd|S)Nz'Plural value must be an integer, got %srr9)round TypeError __class____name__warningswarnDeprecationWarning)r5r+rLrrr _as_ints  rOcCst|dkrtdy~tt|\}}|r2t|d}x>|D]6}|dkrb|d7}|dkrrtdq<|dkr<|d8}qt|D]\}}!t |!||||f<qWnt |||t ||<| d7} | d7} qWdS)z8Override this method to support alternative .mo formats.r)unpacknamercSs t|dkS)Nr.)r>)r5rrr ]z(GNUTranslations._parse..z4Iz>IIzBad magic numberzBad version number zFile is corrupt r;r. z content-typezcharset=z plural-forms;zplural=ascii)structrgetattr_catalogrreadrRLE_MAGICBE_MAGICOSErrorrVERSIONSstrr]splitdecodestriplowerrhrirW enumerate)"rlrmrfilenameZcatalogbufbuflenmagicrZmsgcountZ masteridxZtransidxZiiZ major_versionZ minor_versionr+ZmlenZmoffZmendZtlenZtoffZtendmsgrvZlastkZb_itemitemkvrrxrtruxrrr r=Tsr                      zGNUTranslations._parsecCsRt}|j||}||kr2|jr.|j|S|}|jrD||jS|tS)N) objectrrArkrrjrrrrs)rlrqmissingrvrrr rs  zGNUTranslations.lgettextcCsvy|j|||f}Wn<tk rT|jr>|j|||S|dkrL|}n|}YnX|jrh||jS|tS)Nr.) rrKeyErrorrkrrjrrrrs)rlrtrur5rvrrr rs  zGNUTranslations.lngettextcCs6t}|j||}||kr2|jr.|j|S|S|S)N)rrrArkr )rlrqrrvrrr r s zGNUTranslations.gettextcCsZy|j|||f}Wn<tk rT|jr>|j|||S|dkrL|}n|}YnX|S)Nr.)rrrrkr)rlrtrur5rvrrr rs zGNUTranslations.ngettextN) rKrrrrrrr=rrr rrrrr rHsV  Fc Cs|dkr t}|dkrTg}x(dD] }tj|}|r|d}PqWd|krT|dg}x0|D](}x"t|D]}||krl||qlWq^W|rg} nd} xL|D]D}|dkrPtj||dd|} tj | r|r| | q| SqW| S)N)LANGUAGELC_ALL LC_MESSAGESLANGr;Crz%s.mo) _default_localedirosenvironrArr^rgpathjoinexists) domain localedir languagesallZenvarrfZnelangslangZnelangrCmofilerrr rs8        c Cs|dkr t}t|||dd}|sB|r*tSddlm}t|d|d}x|D]} |tj| f} t | } | dkrt | d} t | || } WdQRXddl } | | } |r| ||dkr| }qL|| qLW|S)NT)rr)ENOENTz$No translation file found for domainrb)rrrerrnorFileNotFoundErrorrrabspath _translationsrAopen setdefaultcopyrzro)rrrZclass_rprcZmofilesrrCrkeytrmrrrr rs0      cCst||d|d}||dS)NT)rprc)rr)rrrcrrrrr r&sZmessagescCs|dk r |atS)N)_current_domain)rrrr r4scCs|dk r|t|<t|tS)N) _localedirsrAr)rrrrr r ;scCs|dk r|t|<t|S)N)_localecodesetsrA)rrcrrr r BscCs@y t|t|dt|d}Wntk r4|SX||S)N)rc)rrrArrr )rrqrrrr r Is cCsRt|}yt|t|d|d}Wn"tk rF||pBtSX||S)N)rc) rrArrrrrrrsr)rrqrcrrrr rQs  cCsTy t|t|dt|d}Wn$tk rD|dkr<|S|SYnX||||S)N)rcr.)rrrArrr)rrtrur5rrrr r Ys cCsht|}yt|t|d|d}Wn4tk rX|dkrB|}n|}||pTtSX||||S)N)rcr.) rrArrrrrrrsr)rrtrur5rcrrvrrr rds cCs tt|S)N)r r)rqrrr r pscCs tt|S)N)rr)rqrrr rsscCstt|||S)N)r r)rtrur5rrr rvscCstt|||S)N)rr)rtrur5rrr rys)r1)NNF)NNNFN)NNN)N)N)N),__doc__rrrsys__all__rr base_prefixrcompileVERBOSEDOTALLrr!r"r?rr@r=rOrWrgrrrrrrrrrrr r r rr rr rrrrrrrr  sX&        1 $*K & #