ÿØÿà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@sddlZddlZeedep6ejd*kZejd+kZejd,kZejj dZ ejj d Z e ed Z erdd lmZn.ydd lmZWndd lmZnXddlZddlZddlZddlZddlZddlZddlZyddlZddlZWn)ek rlddlZddlZnXe sye rejZn ejZd Zydd l m!Z!WndZ!nXesdZ"dZ#ne"Z"dZ#de$fdYZ%dZ&ddZ(de$fdYZ)de$fdYZ*de+fdYZ,de$fdYZ-de+fdYZ.ej/d ej0Z1d!Z2d"Z3d#Z4y#dd$l5m6Z6m7Z7d%Z8Wn&ek rddl5Z5d&Z8nXd'd(Z9d)Z:dS(-iNt py3kwarningiiiiitjavatwintpypy_version_info(tStringIOcCs ||_|S(sReturn a function with a given __name__. Will assign to __name__ and return the original function if possible on the Python implementation, otherwise a new function will be constructed. (t__name__(tfntname((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pytfunction_named)s (tpartialcsfd}|S(Ncs*j}|j|||S(N(tcopytupdate(tfargst fkeywordst newkeywords(targstfunctkeywords(s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pytnewfunc7s  ((RRRR((RRRs:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyR 6scCsx|D]}|stSqWtS(N(tFalsetTrue(titerableti((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pytall>s cCs*y|jjSWntk r%|jSXdS(N(t __class__RtAttributeError(texc((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pytexception_nameDs cCs |jjS(N(RR(R((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyRLst PluginLoadercBs#eZdZdZdZRS(cCs||_i|_dS(N(tgrouptimpls(tselfR((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyt__init__Qs cCs||jkr|j|Sddl}x`|j|j|D]}|j|j|<|jSWddlm}|jd|j|fdS(Ni(t exceptionssCan't load plugin %s %s(Rt pkg_resourcestiter_entry_pointsRtloadtmakoR!tRuntimeException(RRR"timplR!((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyR$Us    cs#fd}||j|dkrSfd}j|_j|_|S(NcsPj||fd}j|_j|_|jj<S(NcsS(N((tatkw(RG(s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pytt(RARRBRD(RRKtmemo(RER(RGs:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pytoneshots   (R9RRB(RRERFRO((RERs:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyRHs    N(RR1RBR9R RH(((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyRIs t SetLikeDictcBseZdZdZRS(s0a dictionary that has some setlike methods on itcCst|}|j||S(sproduce a 'union' of this dict and another (at the key level). values in the second dict take precedence over that of the first(RPR (RtotherR=((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pytunions  (RR1RBRR(((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyRPstFastEncodingBuffercBs2eZdZddedZdZdZRS(sma very rudimentary buffer that is faster than StringIO, but doesn't crash on unicode data like cStringIO.tstrictcCsXtj|_||_|r*d|_n d|_||_||_|jj|_dS(NuRM( t collectionstdequetdatatencodingtdelimtunicodeterrorstappendtwrite(RRXR[RZ((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyR s     cCs"tj|_|jj|_dS(N(RURVRWR\R](R((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyttruncatescCsE|jr.|jj|jj|j|jS|jj|jSdS(N(RXRYtjoinRWtencodeR[(R((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pytgetvalues  N(RR1RBR9RR R^Ra(((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyRSs tLRUCachecBs]eZdZdefdYZddZdZdZdZdZ d Z RS( s$A dictionary-like object that stores a limited number of items, discarding lesser used items periodically. this is a rewrite of LRUCache from Myghty to use a periodic timestamp-based paradigm so that synchronization is not really needed. the size management is inexact. t_ItemcBseZdZdZRS(cCs"||_||_t|_dS(N(tkeytvaluet time_funct timestamp(RRdRe((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyR s  cCs t|jS(N(treprRe(R((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyt__repr__s(RR1R Ri(((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyRcs g?cCs||_||_dS(N(tcapacityt threshold(RRjRk((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyR s cCs%tj||}t|_|jS(N(tdictt __getitem__RfRgRe(RRdtitem((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyRms cCs#gtj|D]}|j^qS(N(RltvaluesRe(RR((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyRoscCs&||kr||S|||<|SdS(N((RRdRe((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyt setdefaults  cCs]tj||}|dkrF|j||}tj|||n ||_|jdS(N(RltgetR9Rct __setitem__Ret _manage_size(RRdReRn((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyRrs   cCsxt||j|j|jkrttj|dtjddt}x8||jD])}y||j =Wq^t k rPq^Xq^WqWdS(NRdRgtreverse( tlenRjRktsortedRlRotoperatort attrgetterRRdtKeyError(RtbytimeRn((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyRss& ( RR1RBtobjectRcR RmRoRpRrRs(((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyRbs     s([ \t\f]* \# .* coding[=:][ \t]*([-\w.]+)cCs-|j}|jdz|j}|jtj}|rV|ttj}ntj|j dd}|sy)ddl }|j |j ddWnt t fk rqX|j}tj|j dd}n|r|rt dndS|r|jdSdSWd|j|XdS( sDeduce the encoding of a Python source file (binary mode) from magic comment. It does this in the same way as the `Python interpreter`__ .. __: http://docs.python.org/ref/encodings.html The ``fp`` argument should be a seekable file object in binary mode. itasciitignoreiNs\python refuses to compile code with both a UTF8 byte-order-mark and a magic encoding commenttutf_8i(ttelltseektreadlinet startswithtcodecstBOM_UTF8Rut_PYTHON_MAGIC_COMMENT_retmatchtdecodetparsertsuitet ImportErrort SyntaxErrorRR9(tfptpostline1thas_bomtmRtline2((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pytparse_encoding s4       cCsL|j}|jddjg|D]}d|||f^q&dS(s{repr() a dictionary with the keys in order. Used by the lexer unit test to compare parse trees based on strings. t{s, s%r: %rt}(tkeystsortR_(tdRtk((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pytsorted_dict_repr<s  cCst|drdSd|_tddd|j}t||_xJ|jjD]<}|jdkrq||_qP|jdkrP||_qPqPWt|j d |_ t|j d |_ t|j d|_ t|j d j d |_t|j d j d j|_t|j d j|_t|j d jj|_t|j d jjj|_t|j d jjj|_t|j d jjjj|_t|j d jj|_t|j d jjj|_t|j d jjjj|_t|j d jjjjj|_t|j djj|_t|j djjj|_t|j djjjj|_ t|j djj|_!t|j djj"d j|_#t|j djjj|_$t|j djjjj|_%t|j djjjj&j|_'t|j djjjj|_(t|j djj|_!t|j djj"d j|_#t|j djj)d |_*t|j djj)d |_+t|j djjj)d |_,t|j djjj)d |_-t|j djj)d |_.t|j djj)d |_/t|j djj)d|_0t|j djj)d |_1t|j djj)d |_2t|j djj)d |_3dS(sdAttempt to restore the required classes to the _ast module if it appears to be missing them tASTNii sdef foo(): pass class Bar(object): pass if False: pass baz = 'mako' 1 + 2 - 3 * 4 / 5 6 // 7 % 8 << 9 >> 10 11 & 12 ^ 13 | 14 15 and 16 or 17 -baz + (not +18) - ~17 baz and 'foo' or 'bar' (mako is baz == baz) is not baz != mako mako > baz < mako >= baz <= mako mako in baz not in makos texecR,iiiiiiiii i i i(4thasattrt PyCF_ONLY_ASTtcompilettypetModulet__mro__RR,Rtbodyt FunctionDeftClassDeftIfttargetstNametctxtStoreRetStrtoptSubtlefttAddtrighttDivtMulttRShifttLShifttModtFloorDivtBitOrtBitXortBitAndtOrRotAndtInverttNottoperandtUAddtUSubtopstIsNottNotEqtIstEqtGttLttGtEtLtEtIntNotIn(t_astRRF((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyt restore__astFs\    ""%"#"%"#  ##     (tCO_VARKEYWORDSt CO_VARARGScCs|j}|j}|j}t|| }d}|jt@rX|j|}|d}nd}|jt@r{|j|}n||||jfS(Ni( t func_codet co_argcountt co_varnamesR;R9tco_flagsRRt func_defaults(RtcotnargstnamesRtvarargstvarkw((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pytinspect_func_argss       cCs tj|S(N(tinspectt getargspec(R((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyRstrbcCs5t||}z|j}|SWd|jXdS(N(topentreadtclose(R3tmodeRRW((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyt read_files  cCs8t|d}ztj|||SWd|jXdS(NR(Rtimpt load_sourceR(t module_idR3R((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pyt load_modules(ii(ii(ii(;RtsysR+Rt version_infotpy3ktpy26tpy25tplatformRtjythontwin32RtpypytioRt cStringIORtretweakrefR2ttimeRwRUt threadingtthreadRtdummy_threadingt dummy_threadtclockRfRt functoolsR RRR{RR8R9R?R@RIRlRPRSRbRtVERBOSERRRRRRRRRR(((s:/opt/alt/python27/lib/python2.7/site-packages/mako/util.pytsp  !H               :  / L