ÿØÿà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Áß_ÿÙ Yc@sddlmZddlmZdZdZdZdZddZ ddZ d e fd YZ d efd YZ d efdYZdS(i(t NodeVisitor(t iteritemstparamtresolvetaliast undefinedcCs=td|}t|}x|D]}|j|q"W|S(Ntparent(tSymbolstFrameSymbolVisitortvisit(tnodestparent_symbolstsymtvisitortnode((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyt find_symbols s   cCs td|}|j||S(NR(Rt analyze_node(RR R ((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pytsymbols_for_nodes RcBseZd d dZdZd dZdZdZdZdZ dZ dZ d Z d Z d Zd ZRS(cCse|dkr1|dkr!d}q1|jd}n||_||_i|_i|_t|_dS(Nii(tNonetlevelRtrefstloadstsettstores(tselfRR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyt__init__s       cKs t|}|j||dS(N(t RootVisitorR (RRtkwargsR ((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyR's cCs@d|j|f}||j|<|dk r<||j|s   cCs_tj|j}|jj|j|jj|_|jj|_|jj|_|S(N( tobjectt__new__t __class__t__dict__tupdateRtcopyRR(RR$((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyR+Es cCs|jj|||jkr|jdk rl|jj|}|dk rl|j|dt|fdSn|j|dtdfndS(NR( RtaddRRRR"RtVAR_LOAD_ALIAStVAR_LOAD_UNDEFINED(RRt outer_ref((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pytstoreMs cCs)|jj||j|dtdfS(NR(RR,RtVAR_LOAD_PARAMETERR(RR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pytdeclare_parameter_scCs;|j|}|dkr7|j|dt|fndS(NR(R"RRtVAR_LOAD_RESOLVE(RRR!((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyRcs c CsHi}xQ|D]I}x@|jD]5}||jkr8qn|j|dd||(((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyRs           RcBsqeZdZdZeZZZZZZ Z dZ dZ dZ ddZdZdZRS( cCst||_dS(N(Rt sym_visitor(Rtsymbols((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyRscKs+x$|jD]}|jj|q WdS(N(titer_child_nodesRAR (RRRtchild((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyt _simple_visitscKs(x!|jD]}|jj|q WdS(N(tbodyRAR (RRRRD((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pytvisit_AssignBlockscKs1x*|jddD]}|jj|qWdS(Ntexcludetcall(RI(RCRAR (RRRRD((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pytvisit_CallBlockscKs(x!|jD]}|jj|q WdS(N(RFRAR (RRRRD((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pytvisit_OverlayScopesRFcKs|dkr1|jj|jdt|j}nr|dkrI|j}nZ|dkr|jj|jdt|jdk r|jj|jndStdx$|pdD]}|jj|qWdS(NRFtstore_as_paramtelsettestsUnknown for branch(( RAR R!tTrueRFtelse_RNRt RuntimeError(RRt for_branchRR7titem((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyt visit_Fors      cKsLx!|jD]}|jj|q Wx!|jD]}|jj|q.WdS(N(ttargetsRAR RF(RRRR!RD((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyt visit_WithscOstd|jjdS(NsCannot find symbols for %r(tNotImplementedErrorR(R?(RRtargsR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyt generic_visits(R?R@RREtvisit_Templatet visit_Blockt visit_Macrotvisit_FilterBlockt visit_Scopetvisit_Iftvisit_ScopedEvalContextModifierRGRJRKRTRVRY(((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyRs       RcBseZdZdZedZdZdZdZdZ dZ dZ d Z d Z d Zd Zd ZdZdZdZRS(sA visitor for `Frame.inspect`.cCs ||_dS(N(RB(RRB((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyRscKsy|s|jdkr+|jj|jnJ|jdkrP|jj|jn%|jdkru|jj|jndS(s2All assignments to names go through this function.RR0RN(tctxRBR2RR0R(RRRLR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyt visit_Names cKs|jj|jdS(N(RBRR(RRR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyt visit_NSRefsc sj|jjfd}||j}||j}||jp^d}jj|||gdS(NcsAj_}x|D]}j|qW_|S(N(R+RBR (R R$tsubnode(Rtoriginal_symbolsR(s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyt inner_visits   ((R RNRBRFtelif_RPR:(RRRRft body_symbolst elif_symbolst else_symbols((RReRs5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyR_s cKs|jj|jdS(N(RBR0R(RRR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyR\scKs'|j|||jj|jdS(N(RYRBR0R!(RRR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyt visit_ImportscKs^|j||xG|jD]<}t|trF|jj|dq|jj|qWdS(Ni(RYtnamest isinstancettupleRBR0(RRRR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pytvisit_FromImports cKs*|j|j||j|j|dS(s'Visit assignments in the correct order.N(R RR!(RRR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyt visit_AssignscKs|j|j|dS(sqVisiting stops at for blocks. However the block sequence is visited as part of the outer scope. N(R titer(RRR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyRTscKs|j|j|dS(N(R RI(RRR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyRJ scKs|j|j|dS(N(R tfilter(RRR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyR] scKs%x|jD]}|j|q WdS(N(tvaluesR (RRRR!((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyRVscKs|j|j|dS(sStop visiting at block assigns.N(R R!(RRR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyRGscKsdS(sStop visiting at scopes.N((RRR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyR^tcKsdS(sStop visiting at blocks.N((RRR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyR[RtcKsdS(s!Do not visit into overlay scopes.N((RRR((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyRKRt(R?R@t__doc__RtFalseRbRcR_R\RkRoRpRTRJR]RVRGR^R[RK(((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyRs"              N(tjinja2.visitorRtjinja2._compatRR1R3R-R.RRRR&RRR(((s5/usr/lib/python2.7/site-packages/jinja2/idtracking.pyts  ~4