ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙa 3gj@sddlZddlZddlZgdZejejddZedej ej BZ ddZ dd Z d Zd d eed DZddddZdFddZddZddZddZGdddZGdddeZdGd d!ZiZd"gZddddefd#d$Zdedfd%d&Ziaiad'adHd(d)ZdId*d+Z dJd,d-Z!d.d/Z"d0d1Z#d2d3Z$d4d5Z%d6d7Z&d8d9Z'd:d;Z(dd?Z*d@dAZ+dBdCZ,dDdEZ-eZ.dS)KN)NullTranslationsGNUTranslationsCatalogfind translationinstall textdomainbindtextdomainbind_textdomain_codesetdgettext dngettextgettextlgettext ldgettext ldngettext lngettextngettextpgettext dpgettext npgettext dnpgettextsharelocalea (?P[ \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 ccsPtt|D]8}|j}|dkr q ||}|dkr>td||Vq dVdS)N WHITESPACESINVALIDz invalid token in plural form: %s)refinditer_token_pattern lastgroupgroup ValueError)pluralmokindvaluer&&/opt/python39/lib/python3.9/gettext.py _tokenizeVs  r(cCs|rtd|StdSdS)Nz#unexpected token in plural form: %szunexpected end of plural form)r!)r%r&r&r'_erroras r)))||)&&)z==z!=)<>z<=z>=)+-)*/%cCs i|]\}}|D] }||qqSr&r&).0iopsopr&r&r' or7orandz//)r*r+r1c Csd}t|}|dkr&|d7}t|}q |dkrXt|\}}d||f}|dkrtdnN|dkrnd ||f}n8zt|d }Wntyt|dYn0d ||f}t|}d }|tvrt|}||krАq|d vr|d vrd|}t||}t||d\} }d||| f}|}q||kr2dkr>nnd|}|dkr|dkrt|d\} }|dkrrt|t|\} }d| || f}|dkrd|}||fS)Nr!znot (z%s(%s))z%unbalanced parenthesis in plural formnz%s%s z%s%dd)z(%s)r9z%s %s %srD?r:z%s if %s else %s)next_parser!intr) _binary_ops _c2py_opsget) tokenspriorityresultnexttoksubr%jr4r6rightif_trueif_falser&r&r'rHrsP           rHcCsXz t|}Wn&ty2td|jjfdYn0ddl}|d|jjftd|S)Nz'Plural value must be an integer, got %srrD)round TypeError __class____name__warningswarnDeprecationWarning)r@r4rZr&r&r'_as_ints  r]cCst|dkrtdz|tt|\}}|r2t|d}|D]6}|dkr`|d7}|dkrptdq:|dkr:|d8}q:d ti}td |||d WStytdYn0dS) Niz"plural form expression is too longrr>r9z%plural form expression is too complexr?r]zif True: def func(n): if not isinstance(n, int): n = _as_int(n) return int(%s) func)lenr!rHr(r)r]execRecursionError)r"rOrPdepthcnsr&r&r'c2pys.     rfcCs>ddl}||}d}d}d}d}|d}|dkrV||d}|d|}||O}nd}|d}|dkr||d}|d|}||O}nd}|d}|dkr||d} |d|}||O}nd} |} g} t|dD]R} | |@s| } | |@r| | 7} | |@r| |7} | |@r&| |7} | | q| | S) Nrr9rD@r._)r normalizerrangeappendreverse)locrCOMPONENT_CODESETCOMPONENT_TERRITORYCOMPONENT_MODIFIERmaskposmodifiercodeset territorylanguageretr4valr&r&r' _expand_langsF               r{c@seZdZdddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZdddZdS) rNcCs.i|_d|_d|_d|_|dur*||dSN)_info_charset_output_charset _fallbackrHselffpr&r&r'__init__s zNullTranslations.__init__cCsdSr|r&rr&r&r'rHszNullTranslations._parsecCs|jr|j|n||_dSr|)r add_fallback)rfallbackr&r&r'r szNullTranslations.add_fallbackcCs|jr|j|S|Sr|)rr )rmessager&r&r'r s zNullTranslations.gettextcCsddl}|dtdddl}|jrf|*|ddt|j|WdS1s\0Y|jrx| |jS| | S)Nr/lgettext() is deprecated, use gettext() insteadrgignore.*\blgettext\b.*) rZr[r\rrcatch_warningsfilterwarningsrrencodegetpreferredencoding)rrrZrr&r&r'rs * zNullTranslations.lgettextcCs*|jr|j|||S|dkr"|S|SdSNr9)rr)rmsgid1msgid2r@r&r&r'r#s zNullTranslations.ngettextcCsddl}|dtdddl}|jrj|.|ddt|j|||WdS1s`0Y|dkrx|}n|}|jr| |jS| | S)Nr1lngettext() is deprecated, use ngettext() insteadrgr.*\blngettext\b.*r9) rZr[r\rrrrrrrrrrrr@rZrtmsgr&r&r'r+s" . zNullTranslations.lngettextcCs|jr|j||S|Sr|)rr)rcontextrr&r&r'r=szNullTranslations.pgettextcCs,|jr|j||||S|dkr$|S|SdSr)rr)rrrrr@r&r&r'rBs zNullTranslations.npgettextcCs|jSr|)r}rr&r&r'infoJszNullTranslations.infocCs|jSr|)r~rr&r&r'charsetMszNullTranslations.charsetcCsddl}|dtd|jS)Nrzoutput_charset() is deprecatedrgrZr[r\r)rrZr&r&r'output_charsetPs zNullTranslations.output_charsetcCs ddl}|dtd||_dS)Nrz"set_output_charset() is deprecatedrgr)rrrZr&r&r'set_output_charsetVs z#NullTranslations.set_output_charsetcCsJddl}|j|jd<|durFhd}|t|@D]}t|||j|<q0dS)Nrrj>rr rrrr)builtinsr __dict__setgetattr)rnamesrallowednamer&r&r'r\s  zNullTranslations.install)N)N)rY __module__ __qualname__rrHrr rrrrrrrrrrr&r&r&r'rs rc@s\eZdZdZdZdZdZddZddZd d Z d d Z d dZ ddZ ddZ ddZdS)rl*l$<z%s%s)rr9cCs|d?|d@fS)Nir&)rversionr&r&r' _get_versionsrszGNUTranslations._get_versionsc"Csddlm}t|dd}i|_}dd|_|}t|}|d|ddd}||jkr||d |dd \}} } } d } n6||jkr|d |dd \}} } } d } n t dd|| |\} }| |j vrt ddt | |t d| D]}|| || | d\}}||}|| || | d\}}||}||kr`||kr`|||}|||}n t dd||dkrld}|dD]}|}|sq|dr|drqd}}d|vr|dd\}}|}|}||j|<|}n|r|j|d|7<|dkr8|dd|_n0|dkr|d}|ddd}t||_q|jpvd}d|vr|d\}} |d}t ||}t|D]\}}!t |!||||f<qnt |||t ||<| d7} | d7} qdS)Nr)unpackrrcSs t|dkSr)rI)r@r&r&r'r8z(GNUTranslations._parse..z4Iz>IIzBad magic numberzBad version number zFile is corrupt z #-#-#-#-#rFr9 z content-typezcharset=z plural-forms;zplural=ascii)structrr_catalogr"readr`LE_MAGICBE_MAGICOSErrorrVERSIONSstrrlsplitdecodestrip startswithendswithlowerr}r~rf enumerate)"rrrfilenamecatalogbufbuflenmagicrmsgcount masteridxtransidxii major_version minor_versionr4mlenmoffmendtlentofftendmsgrlastkb_itemitemkvr"rrrxr&r&r'rHvsv                      zGNUTranslations._parsecCspddl}|dtdddl}t}|j||}||urP|jrL|j|S|}|j rb| |j S| | S)Nrrrg) rZr[r\robjectrrLrrrrr)rrrZrmissingrr&r&r'rs  zGNUTranslations.lgettextcCsddl}|dtdddl}z|j|||f}Wn>tyt|jr^|j|||YS|dkrl|}n|}Yn0|j r| |j S| | S)Nrrrgr9) rZr[r\rrr"KeyErrorrrrrrrr&r&r'rs    zGNUTranslations.lngettextcCs6t}|j||}||ur2|jr.|j|S|S|Sr|)rrrLrr )rrrrr&r&r'r s zGNUTranslations.gettextcCs\z|j|||f}Wn>tyV|jr@|j|||YS|dkrN|}n|}Yn0|Sr)rr"rrr)rrrr@rr&r&r'rs  zGNUTranslations.ngettextcCsF|j||f}t}|j||}||urB|jr>|j||S|S|Sr|)CONTEXTrrrLrr)rrr ctxt_msg_idrrr&r&r'rszGNUTranslations.pgettextc Csl|j||f}z|j|||f}Wn@tyf|jrP|j||||YS|dkr^|}n|}Yn0|Sr)rrr"rrr)rrrrr@rrr&r&r'rs  zGNUTranslations.npgettextN)rYrrrrrrrrHrrr rrrr&r&r&r'rfsY   rFc Cs|dur t}|durRg}dD]"}tj|}|r|d}q@qd|vrR|dg}|D]$}t|D]}||vrf||qfqZ|rg} nd} |D]J}|dkrqtj||dd|} tj | r|r| | q| Sq| S)N)LANGUAGELC_ALL LC_MESSAGESLANGrFCrz%s.mo) _default_localedirosenvironrLrrmr{pathjoinexists) domain localedir languagesallenvarrznelangslangnelangrOmofiler&r&r'rs8       r unspecifiedc CsD|dur t}t|||dd}|sB|r*tSddlm}t|d|d}|D]} |tj| f} t | } | durt | d } t | || } Wdn1s0Yddl } | | } |tur$ddl}|dtd|r$|(|d d t| |Wdn1s0Y|dur4| }qJ|| qJ|S) NT)rr)ENOENTz$No translation file found for domainrbzparameter codeset is deprecatedrgrz.*\bset_output_charset\b.*)rrrerrnorFileNotFoundErrorrrabspath _translationsrLopen setdefaultcopy _unspecifiedrZr[r\rrrr)rrrclass_rrvmofilesrrOrkeytrrrZr&r&r'rGsD   .   *  rcCst||d|d}||dS)NT)rrv)rr)rrrvrrr&r&r'rrsrmessagescCs|dur |atSr|)_current_domain)rr&r&r'rsrcCs|dur|t|<t|tSr|) _localedirsrLr)rrr&r&r'r sr cCs0ddl}|dtd|dur&|t|<t|S)Nrz'bind_textdomain_codeset() is deprecatedrg)rZr[r\_localecodesetsrL)rrvrZr&r&r'r sr cCs8zt|t|d}Wnty,|YS0||Sr|)rrrLrr )rrrr&r&r'r s   r cCsddl}|dtdddl}t|}zP|4|ddtt|t |d|d}Wdn1sl0YWn$t y| |p| YS0|(|ddt| |WdS1s0YdS)Nrz1ldgettext() is deprecated, use dgettext() insteadrgr.*\bparameter codeset\b.*rvr)rZr[r\rrrLrrrrrrrr)rrrZrrvrr&r&r'rs&  8  rcCsPzt|t|d}Wn*ty@|dkr4|YS|YSYn0||||Sr)rrrLrr)rrrr@rr&r&r'r s r c Csddl}|dtdddl}t|}zP|4|ddtt|t |d|d}Wdn1sl0YWn6t y|dkr|}n|}| |p| YS0|,|ddt| |||WdS1s0YdS) Nrz3ldngettext() is deprecated, use dngettext() insteadrgrrrr9r)rZr[r\rrrLrrrrrrrr) rrrr@rZrrvrrr&r&r'rs,  8  rcCs:zt|t|d}Wnty,|YS0|||Sr|)rrrLrr)rrrrr&r&r'rs   rcCsRzt|t|d}Wn*ty@|dkr4|YS|YSYn0|||||Sr)rrrLrr)rrrrr@rr&r&r'rs rcCs tt|Sr|)r r)rr&r&r'r sr cCsZddl}|dtd|(|ddttt|WdS1sL0YdS)Nrrrgrz.*\bldgettext\b.*)rZr[r\rrrr)rrZr&r&r'rs rcCstt|||Sr|)r r)rrr@r&r&r'rsrcCs^ddl}|dtd|,|ddttt|||WdS1sP0YdS)Nrrrgrz.*\bldngettext\b.*)rZr[r\rrrr)rrr@rZr&r&r'rs rcCs tt||Sr|)rr)rrr&r&r'rsrcCstt||||Sr|)rr)rrrr@r&r&r'rsr)r<)NNF)N)N)N)/rrsys__all__rr base_prefixrcompileVERBOSEDOTALLrr(r)rJrrKrHr]rfr{rrrrrrrrrrrr r r rr rrrr rrrrrrr&r&r&r'1sZ      1 $+h9 & +