ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ ǚPc@sdZddlmZddlmZmZddlZejrkeddddgZej d Z n$edddgZej d Z y)ddl Z ej e ddl Z Wn7ek rdZ dd lmZdd lmZnXd dZe rhde jfdYZde jfdYZde jfdYZdefdYZnqdefdYZdefdYZdefdYZdefdYZdejfdYZdS(syHandles parsing of Python code. Parsing to AST is done via _ast on Python > 2.5, otherwise the compiler module is used. i(tStringIO(t exceptionstutilNtTruetFalsetNonetprinttargtid(tparse(tvisitortexeccKsyNtrtj|d|St|tr@|jdd}nt||SWn?tk r}tj d|j j ||dd!f|nXdS(sParse an expression into ASTs tasciitbackslashreplaces (%s) %s (%r)ii2N( t_astt _ast_utilR t isinstancetunicodetencodetcompiler_parset ExceptionRtSyntaxExceptiont __class__t__name__(tcodetmodetexception_kwargste((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR +s tFindIdentifierscBseZdZdZdZdZejr?dZndZ dZ dZ dZ d Z d Zd Zd ZRS( cKs4t|_t|_t|_||_||_dS(N(Rt in_functiontin_assign_targetstsettlocal_ident_stacktlistenerR(tselfR!R((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt__init__Bs     cCs3|js|jjj|n|jj|dS(N(RR!tdeclared_identifierstaddR (R"tname((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt _add_declaredIs cCs|j|jdS(N(R'R&(R"tnode((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytvisit_ClassDefOscCsP|j|j|j}t|_x|jD]}|j|q,W||_dS(N(tvisittvalueRRttargets(R"R(tin_atn((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visit_AssignRs   cCsr|jdk r"|j|jn|jdk rM|jjj|jjnx|jD]}|j |qWWdS(N( R&RR'ttypeR!tundeclared_identifiersR%RtbodyR*(R"R(t statement((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytvisit_ExceptHandlerds cGs|j|tdS(N(t_visit_functionR(R"R(targs((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visit_LambdalscCs$|j|j|j|tdS(N(R'R&R5R(R"R(((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytvisit_FunctionDefosccsHxA|D]9}t|tjr;x|jD] }|Vq)Wq|VqWdS(N(RRtTupletelts(R"R6RR.((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt_expand_tuplesss   cCs|j}t|_|j}|jg|j|jjD]}t|^q7|_|rn|j|jn!x|jD]}|j|qxW||_||_dS(N( RRR tunionR;R6targ_idR*R2(R"R(tislambdatinfR RR.((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR5{s   4 cCsf|j|j|j|jx|jD]}|j|q*Wx|jD]}|j|qKWdS(N(R*titerttargetR2torelse(R"R(R3((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visit_Fors cCs{t|jtjr(|j|jnO|jtkrw|j|jjkrw|j|j krw|jj j |jndS(N( RtctxRtStoreR'RtreservedR!R$R R1R%(R"R(((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visit_Names  cCsWxP|jD]E}|jdk r2|j|jq |j|jjddq WdS(Nt.i(tnamestasnameRR'R&tsplit(R"R(R&((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visit_ImportscCsqxj|jD]_}|jdk r2|j|jq |jdkrYtjd|jn|j|jq WdS(Nt*s'import *' is not supported, since all identifier names must be explicitly declared. Please use the form 'from import , , ...' instead.(RIRJRR'R&RtCompileExceptionR(R"R(R&((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytvisit_ImportFroms(Rt __module__R#R'R)R/Rtpy3kR4R7R8R;R5RCRGRLRO(((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR@s          t FindTuplecBseZdZdZRS(cKs||_||_||_dS(N(R!Rt code_factory(R"R!RSR((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR#s  cCsx|jD]}|j||j}|jjj||jjjt|j|jj j |j |j_ |jj j |j |j_ q WdS(N( R:RSRR!tcodeargstappendR6tExpressionGeneratorR+R$R<R1(R"R(R.tp((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visit_Tuples  (RRPR#RX(((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyRRs t ParseFunccBseZdZdZRS(cKs||_||_dS(N(R!R(R"R!R((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR#s cCs|j|j_g|jjD]}t|^q}|jjrV|j|jjn|jjrx|j|jjn||j_|jj |j_ |jj|j_ |jj|j_ dS(N( R&R!tfuncnameR6R=tvarargRUtkwargtargnamestdefaultstvarargstkwargs(R"R(RR]((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR8s%   (RRPR#R8(((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyRYs RVcBseZdZdZRS(cCs&tjd|_|jj|dS(Nt is (RtSourceGeneratort generatorR*(R"tastnode((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR#scCsdj|jjS(Nt(tjoinRctresult(R"((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR+s(RRPR#R+(((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyRVs cBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZRS(cKs+t|_t|_||_||_dS(N(RRRR R!R(R"R!R((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR#s   cCs3|js|jjj|n|jj|dS(N(RR!R$R%R (R"R&((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR's cGs|j|jdS(N(R'R&(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitClassscGs|j|jdS(N(R'R&(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitAssNamescGs;|j|j|x!|jD]}|j||qWdS(N(R*texprtnodes(R"R(R6R.((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitAssignscGs|j||dS(N(R5(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitLambda scGs$|j|j|j||dS(N(R'R&R5(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitFunction sccsBx;|D]3}t|tr5x|D] }|Vq#Wq|VqWdS(N(Rttuple(R"R6RR.((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR;s    cCs|j}t|_|j}|jg|j|jD] }|^q4|_x$|jD]}|j||qYW||_||_dS(N(RRR R<R;R]t getChildNodesR*(R"R(R6R?R RR.((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR5s   + cGs=|j|j||j|j||j|j|dS(N(R*tlisttassignR2(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytvisitFor-scGsS|jtkrO|j|jjkrO|j|jkrO|jjj|jndS(N(R&RFR!R$R R1R%(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitName5s cGsTxM|jD]B\}}|dk r2|j|q |j|jddq WdS(NRHi(RIRR'RK(R"R(R6tmodtalias((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitImport;s cGskxd|jD]Y\}}|dk r2|j|q |dkrVtjd|jn|j|q WdS(NRMs'import *' is not supported, since all identifier names must be explicitly declared. Please use the form 'from import , , ...' instead.(RIRR'RRNR(R"R(R6RuRv((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitFromBs  cCstj||dS(N(R twalk(R"Rj((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR*Os(RRPR#R'RhRiRlRmRnR;R5RsRtRwRxR*(((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyRs            cBs#eZdZdZdZRS(cKs||_||_||_dS(N(R!RRS(R"R!RSR((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR#Us  cGsx|jD]}|j||j}|jjj||jjjt|j|jj j |j |j_ |jj j |j |j_ q WdS(N( RkRSRR!RTRUR6RVR+R$R<R1(R"R(R6R.RW((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitTupleZs  cCstj||dS(N(R Ry(R"Rj((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR*fs(RRPR#RzR*(((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyRRSs  cBs#eZdZdZdZRS(cKs||_||_dS(N(R!R(R"R!R((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR#ls cGsO|j|j_|j|j_|j|j_|j|j_|j|j_dS(N(R&R!RZR]R^R_R`(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyRnps cCstj||dS(N(R Ry(R"Rj((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR*ws(RRPR#RnR*(((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyRYjs  cBs%eZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!RS( sMgiven an AST node, generates an equivalent literal Python expression.cCs t|_tj||dS(N(RtbufR Ry(R"Rd((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR#s cCs |jjS(N(R{tgetvalue(R"((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR+scGs^|jjd|j|j||jjd||j|j||jjddS(Nt(s %s t)(R{twriteR*tlefttright(R"topR(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytoperators cGsX|j|jdx=|jdD].}|jjd|d|j||q"WdS(NiiRa(R*RkR{R(R"RR(R6R.((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt booleanopscGs|jjt|jdS(N(R{RtreprR+(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitConstscGs|jj|jdS(N(R{RR&(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyRiscGs|jj|jdS(N(R{RR&(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyRtscGs|jd||dS(NRM(R(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytvisitMulscGs|jd||dS(Ntand(R(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytvisitAndscGs|jd||dS(Ntor(R(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytvisitOrscGs|jd||dS(Nt&(R(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitBitandscGs|jd||dS(Nt|(R(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitBitorscGs|jd||dS(Nt^(R(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitBitxorscGs|jd||dS(Nt+(R(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytvisitAddscGs.|j|j||jjd|jdS(Ns.%s(R*RjR{Rtattrname(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitGetattrscGs|jd||dS(Nt-(R(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytvisitSubscGs$|jjd|j|jdS(Nsnot (R{RR*Rj(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytvisitNotscGs|jd||dS(Nt/(R(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytvisitDivscGs|jd||dS(Ns//(R(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitFloorDivscGsW|j|j|jjdg|jD]}|j|^q*|jjddS(Nt[t](R*RjR{Rtsubs(R"R(R6tx((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytvisitSubscripts#cGs$|jjd|j|jdS(NR(R{RR*Rj(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitUnarySubscGs$|jjd|j|jdS(NR(R{RR*Rj(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitUnaryAddscGs|j|j|jjd|jdk rB|j|jn|jjd|jdk rt|j|jn|jjddS(NRt:R(R*RjR{RtlowerRtupper(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitSlicescCs|jjd|j}xtdt|dD]e}|j|||jjd|j||d|t|dkr5|jjdq5q5W|jjddS(Nt{iis: is, t}(R{Rt getChildrentrangetlenR*(R"R(tcti((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitDicts cCs|jjd|j}xWtdt|D]@}|j|||t|dkr2|jjdq2q2W|jjddS(NR}iis, R~(R{RRRRR*(R"R(RR((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyRzs cCs|jjd|j}xWtdt|D]@}|j|||t|dkr2|jjdq2q2W|jjddS(NRiis, R(R{RRRRR*(R"R(RR((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitLists cCse|jjd|j|j|jjdx|jD]}|j|q:W|jjddS(NRRaR(R{RR*Rjtquals(R"R(R.((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitListComps cCse|jjd|j|j|jjd|j|jx|jD]}|j|qJWdS(Ns for s in (R{RR*RrRqtifs(R"R(R.((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytvisitListCompFors cCs$|jjd|j|jdS(Ns if (R{RR*ttest(R"R(((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pytvisitListCompIf scCsM|j|jx6|jD]+}|jj|d|j|dqWdS(Nii(R*RjtopsR{R(R"R(ttup((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitComparescGs|j|j|jjdt|jr{|j|jdx5|jdD]#}|jjd|j|qQWn|jjddS(NR}iis, R~(R*R(R{RRR6(R"R(R6ta((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt visitCallFuncs("RRPt__doc__R#R+RRRRiRtRRRRRRRRRRRRRRRRRRzRRRRRR(((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyRV{s@                          twalkercBseZdZRS(cGs%dGt|GHtjj|||S(NsNode:(tstrR t ASTVisitortdispatch(R"R(R6((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR"s(RRPR(((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyR s(RRtmakoRRRRQRRFt attrgetterR=Rt restore__astRt ImportErrorRtcompilerR RR t NodeVisitorRRRRYtobjectRVRR(((s>/opt/alt/python27/lib/python2.7/site-packages/mako/pyparser.pyt s6      | g