eaiovnaovbqoebvqoeavibavo B  fU@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)pluralZmoZkindvaluer,/opt/alt/python37/lib64/python3.7/gettext.py _tokenizeVs   rcCs|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 %sr7?r:z%s if %s else %s)next_parserintr _binary_ops _c2py_opsget) tokensZpriorityresultnexttoksubrjr)r*rightZif_trueZif_falserrrr;rsP           r;cCsZy t|}Wn(tk r4td|jjfdYnXddl}|d|jjftd|S)Nz'Plural value must be an integer, got %srr7)round TypeError __class____name__warningswarnDeprecationWarning)r3r)rJrrr_as_ints  rMcCst|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<)r3rrr]z(GNUTranslations._parse..z4Iz>IIzBad magic numberzBad version number zFile is corrupt r9r, z content-typezcharset=z plural-forms;zplural=ascii)Zstructrgetattr_catalogrreadrPLE_MAGICBE_MAGICOSErrorr~VERSIONSstrrZsplitdecodestriplowerrbrcrU enumerate)"rfrgrfilenameZcatalogZbufZbuflenmagicr}ZmsgcountZ masteridxZtransidxZiiZ major_versionZ minor_versionr)ZmlenZmoffZmendZtlenZtoffZtendmsgrpZlastkZb_itemitemkvrrrrnroxrrrr;Tsr                      zGNUTranslations._parsecCsRt}|j||}||kr2|jr.|j|S|}|jrD||jS|tS)N) objectrr?rerrdrlrrm)rfrkmissingrprrrrs  zGNUTranslations.lgettextcCsvy|j|||f}Wn<tk rT|jr>|j|||S|dkrL|}n|}YnX|jrh||jS|tS)Nr,) rrKeyErrorrerrdrlrrm)rfrnror3rprrrrs  zGNUTranslations.lngettextcCs6t}|j||}||kr2|jr.|j|S|S|S)N)rrr?rer )rfrkrrprrrr s zGNUTranslations.gettextcCsZy|j|||f}Wn<tk rT|jr>|j|||S|dkrL|}n|}YnX|S)Nr,)rrrrer)rfrnror3rprrrrs zGNUTranslations.ngettextN) rIrzr{rrrr~r;rrr rrrrrrHsV  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)ZLANGUAGELC_ALL LC_MESSAGESZLANGr9Crz%s.mo) _default_localedirosenvironr?rr[rapathjoinexists) domain localedir languagesallZenvarr`ZnelangsZlangZnelangrAmofilerrrrs8        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 _translationsr?open setdefaultcopyrtri)rrrZclass_rjr_ZmofilesrrArkeytrgrrrrrs0      cCst||d|d}||dS)NT)rjr_)rr)rrr_ryrrrrr&sZmessagescCs|dk r |atS)N)_current_domain)rrrrr4scCs|dk r|t|<t|tS)N) _localedirsr?r)rrrrrr ;scCs|dk r|t|<t|S)N)_localecodesetsr?)rr_rrrr BscCs@y t|t|dt|d}Wntk r4|SX||S)N)r_)rrr?rrr )rrkrrrrr Is cCsRt|}yt|t|d|d}Wn"tk rF||pBtSX||S)N)r_) rr?rrrrlrrmr)rrkr_rrrrrQs  cCsTy t|t|dt|d}Wn$tk rD|dkr<|S|SYnX||||S)N)r_r,)rrr?rrr)rrnror3rrrrr Ys cCsht|}yt|t|d|d}Wn4tk rX|dkrB|}n|}||pTtSX||||S)N)r_r,) rr?rrrrlrrmr)rrnror3r_rrprrrrds cCs tt|S)N)r r)rkrrrr pscCs tt|S)N)rr)rkrrrrsscCstt|||S)N)r r)rnror3rrrrvscCstt|||S)N)rr)rnror3rrrrys)r/)NNF)NNNFN)NNN)N)N)N),__doc__rrrsys__all__rr base_prefixrcompileVERBOSEDOTALLrrr r=rr>r;rMrUrarrrrrrrrrrr r r rr rr rrrrrrrr sX&        1 $*K & #