Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 `”b»�ã@s¢ddlZddlZddlZddlZddlZddlZddlZddlZeej j ddƒƒZ e e fZejdd…d2kZeedƒZddlZGdd „d eƒZejd ejd ejd ejd ejdejdejdejdejdejdej dej!dej"di Z#e$ddddddddgƒZ%e$dj&ƒƒZ'ej(d d!j)e'ƒej*ƒZ+d"d#„Z,Gd$d%„d%ej-ƒZ.d&d'„Z/Gd(d)„d)ƒZ0iZ1d3d*d+„Z2ej3Z4e5ƒZ6Gd,d-„d-ƒZ7Gd.d/„d/ƒZ8Gd0d1„d1e8ƒZ9e9ƒZ:e8ƒZ;dS)4éNZ EVAL_DEBUGÚ0ééé Ú NameConstantc@s eZdZdS)ÚBadCodeN)Ú__name__Ú __module__Ú __qualname__©r r ú;/tmp/tmp4i9tl1d3/lib64/python/reportlab/lib/rl_safe_eval.pyrsrz+=z-=z*=z/=z%=z**=z<<=z>>=z|=z^=z&=z//=z@=Ú__init__Ú __contains__Ú__lt__Ú__le__Ú__eq__Ú__ne__Ú__gt__Ú__ge__aãbuiltins breakpoint __annotations__ co_argcount co_cellvars co_code co_consts __code__ co_filename co_firstlineno co_flags co_freevars co_kwonlyargcount co_lnotab co_name co_names co_nlocals co_posonlyargcount co_stacksize co_varnames cr_await cr_code cr_frame cr_origin cr_running __defaults__ f_back f_builtins f_code f_exc_traceback f_exc_type f_exc_value f_globals f_lasti f_lineno f_locals f_restricted f_trace __func__ func_code func_defaults func_doc func_globals func_name gi_code gi_frame gi_running gi_yieldfrom __globals__ im_class im_func im_self __iter__ __kwdefaults__ __module__ __name__ next __qualname__ __self__ tb_frame tb_lasti tb_lineno tb_next globals vars localsz\b(?:%s)ú|cCs|j|_|j|_tj|ƒdS)N)ÚlinenoÚ col_offsetÚastÚfix_missing_locations)Únew_nodeÚold_noder r r Úcopy_locations<srcs¢eZdZdJ‡fdd„ Zedd„ƒZdd„Zdd „Zd d „Zd d „Z dd„Z dKdd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Z d=d>„Z!d?d@„Z"e!Z#eZ$eZ%dAdB„Z&dCdD„Z'‡fdEdF„Z(e)dGk�rFdHdI„Z*e'Z+e'Z,e'Z-e'Z.e'Z/e'Z0e'Z1e'Z2e'Z3e(Z4e(Z5e(Z6e(Z7e(Z8e(Z9e(Z:e(Z;e(Ze(Z?e(Z@e(ZAe(ZBe(ZCe(ZDe(ZEe(ZFe(ZGe(ZHe(ZIe(ZJe(ZKe(ZLe(ZMe(ZNe(ZOe(ZPe(ZQe(ZRe(ZSe(ZTe(ZUe(ZVe(ZWe(ZXe(ZYe(ZZe(Z[e(Z\e(Z]e(Z^e(Z_e(Z`e(Zae(Zbe(Zce(Zde(Zee(Zfe(Zge(Zhe(Zie(Zje(Zke(Zle(Zme(Zne(Zoe(Zpe(Zqe(Zre(Zse(Zte(Zue(Zve(Zwe(Zxe(Zye(Zze(Z{e(Z|e(Z}e(Z~e(Z‡Z€S)LÚUntrustedAstTransformerNcsJtt|ƒjƒ|dkrin||_||_d|_dttjƒƒjddƒ|_ dS)Nrz_tmp%sÚ.Ú) Úsuperrr Ú names_seenÚ nameIsAllowedÚ_tmp_idxÚreprÚtimeÚreplaceÚ_tmp_pfx)Úselfr!r")Ú __class__r r r Cs z UntrustedAstTransformer.__init__cCs"d|j|jf}|jd7_|S)Nz%s%sé)r'r#)r(Únamer r r ÚtmpNameLszUntrustedAstTransformer.tmpNamecCstdt|ddƒ|fƒ‚dS)Nz Line %s: %srz??)rÚgetattr)r(ÚnodeÚmsgr r r ÚerrorRszUntrustedAstTransformer.errorcCsŒ|j|ƒ}t|jtjƒrV|j|jƒ}tjtjdtjƒƒ|j |tjdtjƒƒggd�}n tjtjdtjƒƒ|j ggd�}t ||j ƒ||_ |S)z· Converts: for x in expr to for x in __rl_getiter__(expr) Also used for * list comprehensions * dict comprehensions * set comprehensions * generator expresions Ú__rl_iter_unpack_sequence__Ú__rl_getiter__)ÚfuncÚargsÚkeywords) Úvisit_childrenÚ isinstanceÚtargetrÚTupleÚgen_unpack_specÚCallÚNameÚLoadÚiterr)r(r.ÚspecZnew_iterr r r Ú guard_iterUs    z"UntrustedAstTransformer.guard_itercCs t|tjƒS)N)r7rÚStarred)r(Úobr r r Ú is_starredtsz"UntrustedAstTransformer.is_starredcsþtjggd�}|jjtjdƒƒ|jjtjgtjƒƒƒt‡fdd„|j Dƒƒ}d}x€t |j ƒD]r\}}ˆj |ƒr||d}q`t |tjƒr`tjgtjƒƒ}|j jtj ||ƒƒ|j jˆj|ƒƒ|jdj j|ƒq`W|jjtjdƒƒ|jjtj |ƒƒ|S)aêGenerate a specification for '__rl_unpack_sequence__'. This spec is used to protect sequence unpacking. The primary goal of this spec is to tell which elements in a sequence are sequences again. These 'child' sequences have to be protected again. For example there is a sequence like this: (a, (b, c), (d, (e, f))) = g On a higher level the spec says: - There is a sequence of len 3 - The element at index 1 is a sequence again with len 2 - The element at index 2 is a sequence again with len 2 - The element at index 1 in this subsequence is a sequence again with len 2 With this spec '__rl_unpack_sequence__' does something like this for protection (len checks are omitted): t = list(__rl_getiter__(g)) t[1] = list(__rl_getiter__(t[1])) t[2] = list(__rl_getiter__(t[2])) t[2][1] = list(__rl_getiter__(t[2][1])) return t The 'real' spec for the case above is then: spec = { 'min_len': 3, 'childs': ( (1, {'min_len': 2, 'childs': ()}), (2, { 'min_len': 2, 'childs': ( (1, {'min_len': 2, 'childs': ()}) ) } ) ) } So finally the assignment above is converted into: (a, (b, c), (d, (e, f))) = __rl_unpack_sequence__(g, spec) )ÚkeysÚvaluesÚchildscsg|]}ˆj|ƒs|‘qSr )rC)Ú.0rB)r(r r ú ¬sz;UntrustedAstTransformer.gen_unpack_spec..rr*Úmin_len)rÚDictrDÚappendÚStrrEr9r=ÚlenÚeltsÚ enumeraterCr7ÚNumr:)r(Ztplr?rIÚoffsetÚidxÚvalÚelr )r(r r:ws -   z'UntrustedAstTransformer.gen_unpack_speccCs8|j|ƒ}tjtjdtjƒƒ||tjdtjƒƒggd�S)NÚ__rl_unpack_sequence__r2)r3r4r5)r:rr;r<r=)r(r8Úvaluer?r r r Úprotect_unpack_sequenceÃs  z/UntrustedAstTransformer.protect_unpack_sequenceÚstorec Csª|j}|j|tj|tjƒƒƒ}tj|g|d�g}|j|ƒg}tj||ggd�}|dkr`tjƒ}n"|dkrrtj ƒ}nt dt |ƒƒ‚tj||ƒ} t | |ƒt ||ƒ| |fS)a2Helper function to protect tuple unpacks. node: used to copy the locations for the new nodes. target: is the tuple which must be protected. ctx: Defines the context of the returned temporary node. It returns a tuple with two element. Element 1: Is a temporary name node which must be used to replace the target. The context (store, param) is defined by the 'ctx' parameter.. Element 2: Is a try .. finally where the body performs the protected tuple unpack of the temporary variable into the original target. )ÚtargetsrV)ÚbodyÚ finalbodyÚhandlersZorelserXÚparamz bad ctx "%s") r,rWrr<r=ÚAssignÚ gen_del_stmtÚTryÚStoreÚParamÚNotImplementedErrorÚtyper) r(r.r8ÚctxZtnamÚ converterZtry_bodyr[ÚcleanupÚ tmp_targetr r r Úgen_unpack_wrapperÊs"       z*UntrustedAstTransformer.gen_unpack_wrappercCs"trtjdd�Stjdtjƒd�S)N)rVÚNone)Úidre)ZhasNameConstantrrr<r=)r(r r r Ú gen_none_nodesz%UntrustedAstTransformer.gen_none_nodecCstjtj|ddgd�|d�S)N)r4ÚvarargÚkwargÚdefaults)r4rZ)rÚLambdaÚ arguments)r(r4rZr r r Ú gen_lambdas z"UntrustedAstTransformer.gen_lambdacCstjtj|tjƒƒgd�S)N)rY)rÚDeleter<ÚDel)r(Z name_to_delr r r r_sz$UntrustedAstTransformer.gen_del_stmtcCsþt|tjƒr|jSt|tjƒr¤g}|jr6|j|jƒn|j|jƒƒ|jrX|j|jƒn|j|jƒƒ|j rz|j|j ƒn|j|jƒƒtj tj dtj ƒƒ|gd�St|tj ƒrætjgtj ƒƒ}x |jD]}|jj|j|ƒƒqÈW|Strî|Std|ƒ‚dS)zõTransform slices into function parameters. ast.Slice nodes are only allowed within a ast.Subscript node. To use a slice as an argument of ast.Call it has to be converted. Conversion is done by calling the 'slice' function from builtins Úslice)r3r4r5zUnknown slice type: %sN)r7rÚIndexrVÚSliceÚlowerrKrlÚupperÚstepr;r<r=ÚExtSlicer9ÚdimsrNÚtransform_sliceÚisPy39rc)r(Zslice_r4r|Úitemr r r r}s2    z'UntrustedAstTransformer.transform_slicecCs|dkr dS|j|ƒdS)N)r")r(r.r+r r r Ú isAllowedNameAsz%UntrustedAstTransformer.isAllowedNamecCsxx|jjD]}|j||jƒq W|jjr:|j||jjjƒ|jjrT|j||jjjƒx|jjD]}|j||jƒq^WdS)N)r4r€ÚargrmrnÚ kwonlyargs)r(r.r�r r r Úcheck_function_argument_namesEsz5UntrustedAstTransformer.check_function_argument_namescCsRxF|jD]<}d|jkr"|j|dƒ|j||jƒ|jr|j||jƒqW|j|ƒS)zÏCheck the names being imported. This is a protection against rebinding dunder names like __rl_getitem__,__rl_set__ via imports. => 'from _a import x' is ok, because '_a' is not added to the scope. Ú*z"*" imports are not allowed.)Únamesr+r0r€Zasnamer6)r(r.r+r r r Úcheck_import_namesYs   z*UntrustedAstTransformer.check_import_namescCs<tjtjdtjƒƒ|tj|ƒggd�}tjtjƒ||gd�S)zpCheck if 'attr_name' is allowed on the object in node. It generates (_getattr_(node, attr_name) and node). Ú__rl_getattr__)r3r4r5)ÚoprE)rr;r<r=rLÚBoolOpÚAnd)r(r.Ú attr_nameZ call_getattrr r r Úgen_attr_checkjs  z&UntrustedAstTransformer.gen_attr_checkcCs$|jtkr|j|dƒdS|j|ƒS)zÌAllow constant literals with restriction for Ellipsis. Constant replaces Num, Str, Bytes, NameConstant and Ellipsis in Python 3.8+. :see: https://docs.python.org/dev/whatsnew/3.8.html#deprecated z$Ellipsis statements are not allowed.N)rVÚEllipsisr0r6)r(r.r r r Úvisit_Constantws  z&UntrustedAstTransformer.visit_ConstantcCsL|j|ƒ}t|jtjƒr:|jdkr.|j|dƒd|j|j<|j||jƒ|S)NÚprintzprint function is not allowedT) r6r7rerr=rkr0r!r€)r(r.r r r Ú visit_Name‰s    z"UntrustedAstTransformer.visit_NamecCsÄt|jtjƒr@|jjdkr(|j|dƒn|jjdkr@|j|dƒd}x|jD]}t|tjƒrLd}qLWx|jD]}|j dkrld}qlW|j |ƒ}|jj d|jƒtjd tj ƒƒ|_t |j|jdƒ|S) aÿChecks calls with '*args' and '**kwargs'. Note: The following happens only if '*args' or '**kwargs' is used. Transfroms 'foo()' into __rl_apply__(foo, ) The thing is that '__rl_apply__' has only '*args', '**kwargs', so it gets Python to collapse all the myriad ways to call functions into one manageable from. From there, '__rl_apply__()' wraps args and kws in guarded accessors, then calls the function, returning the value. ÚexeczExec calls are not allowed.ÚevalzEval calls are not allowed.FTNrÚ __rl_apply__)r7r3rr<rkr0r4rAr5r�r6Úinsertr=r)r(r.Z needs_wrapZpos_argZ keyword_argr r r Ú visit_Call”s"        z"UntrustedAstTransformer.visit_CallcCsâ|jjdƒr(|jdkr(|j|d|jƒt|jtjƒrx|j|ƒ}tjtj dtjƒƒ|j tj |jƒggd�}t ||ƒ|St|jtj tjfƒrÌ|j|ƒ}tjtj dtjƒƒ|j ggd�}t ||j ƒ||_ |Stdt|jƒƒ‚dS)z\Checks and mutates attribute access/assignment. 'a.b' becomes '__rl_getattr__(a, "b")' Ú__z"%s" is an invalid attributer‡)r3r4r5Ú __rl_sd__zUnknown ctx type: %sN)ÚattrÚ startswithr0r7rerr=r6r;r<rVrLrrartrcrd)r(r.rZ new_valuer r r Úvisit_Attribute¾s(    z'UntrustedAstTransformer.visit_AttributecCs~|j|ƒ}t|jtjƒrPtjtjdtjƒƒ|j|j|j ƒggd�}t ||ƒ|St|jtj tj fƒrh|St dt|jƒƒ‚dS)aàTransforms all kinds of subscripts. 'v[a]' becomes '__rl_getitem__(foo, a)' 'v[:b]' becomes '__rl_getitem__(foo, slice(None, b, None))' 'v[a:]' becomes '__rl_getitem__(foo, slice(a, None, None))' 'v[a:b]' becomes '__rl_getitem__(foo, slice(a, b, None))' 'v[a:b:c]' becomes '__rl_getitem__(foo, slice(a, b, c))' 'v[a,b:c] becomes '__rl_getitem__(foo, (a, slice(b, c, None)))' #'v[a] = c' becomes '_rl_write__(v)[a] = c' #'del v[a]' becomes 'del __rl_sd__(v)[a]' Ú__rl_getitem__)r3r4r5zUnknown ctx type: %sN)r6r7rerr=r;r<rVr}rurrtrarcrd)r(r.rr r r Úvisit_Subscriptàs  z'UntrustedAstTransformer.visit_SubscriptcCs¤|j|ƒ}tdd„|jDƒƒs"|Sg}x`t|jƒD]R}t|tjƒrhtj|g|j||j ƒd�}|j |ƒq2tj|g|j d�}|j |ƒq2Wx|D]}t ||ƒqŽW|S)Ncss|]}t|tjƒVqdS)N)r7rr9)rGÚtr r r ú sz7UntrustedAstTransformer.visit_Assign..)rYrV) r6ÚanyrYÚreversedr7rr9r^rWrVrKr)r(r.Z new_nodesr8Úwrapperrr r r Ú visit_Assign s    z$UntrustedAstTransformer.visit_AssigncCsÆ|j|ƒ}t|jtjƒr&|j|dƒnœt|jtjƒrB|j|dƒn€t|jtjƒr°tj|jgtj tjdtj ƒƒtj t t |jƒƒtj|jjtj ƒƒ|jggd�d�}t||ƒ|Stdt |jƒƒ‚dS)ajForbid certain kinds of AugAssign According to the language reference (and ast.c) the following nodes are are possible: Name, Attribute, Subscript Note that although augmented assignment of attributes and subscripts is disallowed, augmented assignment of names (such as 'n += 1') is allowed. 'n += 1' becomes 'n = __rl_augAssign__("+=", n, 1)' z2Augmented assignment of attributes is not allowed.z?Augmented assignment of object items and slices is not allowed.Ú__rl_augAssign__)r3r4r5)rYrVzUnknown target type: %sN)r6r7r8rÚ Attributer0Ú Subscriptr<r^r;r=rLÚaugOpsrdrˆrkrVrrc)r(r.rr r r Úvisit_AugAssign8s"   z'UntrustedAstTransformer.visit_AugAssigncCstj|ƒ|S)N)r(r6)r.r r r Ú visit_Whilecs z#UntrustedAstTransformer.visit_WhilecCs|j|ƒ}|j||jƒ|S)zàProtect tuple unpacking on exception handlers. try: ..... except Exception as (a, b): .... becomes try: ..... except Exception as tmp: try: (a, b) = __rl_getiter__(tmp) finally: del tmp )r6r€r+)r(r.r r r Úvisit_ExceptHandlergs z+UntrustedAstTransformer.visit_ExceptHandlercCsZ|j|ƒ}|j}xDt|ƒD]8}t|jtjƒr|j||jƒ\}}||_|jj d|ƒqW|S)z+Protect tuple unpacking on with statements.r) r6Úitemsr r7Z optional_varsrr9rirZr”)r(r.rªrrhÚunpackr r r Ú visit_With~s  z"UntrustedAstTransformer.visit_WithcCs|j||jƒ|j|ƒ|S)z:Allow function definitions (`def`) with some restrictions.)r€r+rƒ)r(r.r r r Úvisit_FunctionDef�s z)UntrustedAstTransformer.visit_FunctionDefcCs|j|ƒ|j|ƒ}|S)z$Allow lambda with some restrictions.)rƒr6)r(r.r r r Ú visit_Lambda—s  z$UntrustedAstTransformer.visit_LambdacCst|j||jƒ|j|ƒ}tdd„|jDƒƒr8|j|dƒtjd|jƒ}tj |ƒj d}|j |_ |j |_ |j |_ |S)z%Check the name of a class definition.css|]}|jdkVqdS)Ú metaclassN)r�)rGÚkeywordr r r rž£sz9UntrustedAstTransformer.visit_ClassDef..z0The keyword argument "metaclass" is not allowed.z1 class %s(metaclass=__metaclass__): pass r) r€r+r6rŸr5r0ÚtextwrapÚdedentrÚparserZÚbasesZdecorator_list)r(r.Z CLASS_DEFZnew_class_noder r r Úvisit_ClassDefŸs   z&UntrustedAstTransformer.visit_ClassDefcCs |j|ƒS)NÚ __rl_add__)r3r4r5) r†r6rr;r<r=ÚleftÚrightr)r(r.rr r r Ú visit_Import°s z$UntrustedAstTransformer.visit_ImportcCs€|j|ƒ}|j}t|tjtjtjfƒr|t|tjƒr6dnt|tjƒrFdnd}tjtj|tj ƒƒ|j |j ggd�}t ||ƒ|S|S)NÚ __rl_mult__r¶Ú __rl_pow__)r3r4r5) r6rˆr7rÚMultÚAddÚPowr;r<r=r·r¸r)r(r.rˆZopfrr r r Ú visit_BinOp»s   z#UntrustedAstTransformer.visit_BinOpcCs|j|ƒdS)z>Reject nodes which do not have a corresponding `visit` method.N)Ú not_allowed)r(r.r r r Ú generic_visitÎsz%UntrustedAstTransformer.generic_visitcCs|j|d|jjƒdS)Nz%s statements are not allowed.)r0r)r)r(r.r r r rÀÒsz#UntrustedAstTransformer.not_allowedcstt|ƒj|ƒS)zVisit the contents of a node.)r rrÁ)r(r.)r)r r r6Õsz&UntrustedAstTransformer.visit_childrenrcCs4d|jj}t|||jƒ}td|||fƒ||ƒS)NÚvisit_zvisitor=%s=%r node=%r)r)rr-rÁr�)r(r.ÚmethodÚvisitorr r r ÚvisitÚs zUntrustedAstTransformer.visit)NN)rX)�rr r r Úpropertyr,r0r@rCr:rWrirlrrr_r}r€rƒr†rŒrŽr�r•ršrœr¢r§r¨r©r¬r­r®rµr¹r¿Zvisit_ImportFromZ visit_ForZvisit_comprehensionrÁrÀr6Ú eval_debugrÅZvisit_EllipsisZ visit_MatMultZ visit_ExecZvisit_NonlocalZvisit_AsyncFunctionDefZ visit_AwaitZvisit_AsyncForZvisit_AsyncWithZ visit_PrintZ visit_NumZ visit_StrZ visit_BytesZ visit_ListZ visit_TupleZ visit_SetZ visit_DictZvisit_FormattedValueZvisit_JoinedStrZvisit_NameConstantZ visit_LoadZ visit_StoreZ visit_DelZ visit_StarredZvisit_ExpressionZ visit_ExprZ visit_UnaryOpZ visit_UAddZ visit_USubZ visit_NotZ visit_InvertZ visit_AddZ visit_SubZ visit_MultZ visit_DivZvisit_FloorDivZ visit_PowZ visit_ModZ visit_LShiftZ visit_RShiftZ visit_BitOrZ visit_BitXorZ visit_BitAndZ visit_BoolOpZ visit_AndZvisit_OrZ visit_CompareZvisit_EqZ visit_NotEqZvisit_LtZ visit_LtEZvisit_GtZ visit_GtEZvisit_IsZ visit_IsNotZvisit_InZ visit_NotInZ visit_keywordZ visit_IfExpZ visit_IndexZ visit_SliceZvisit_ExtSliceZvisit_ListCompZ visit_SetCompZvisit_GeneratorExpZvisit_DictCompZ visit_RaiseZ visit_AssertZ visit_DeleteZ visit_PassZ visit_aliasZvisit_IfZ visit_BreakZvisit_ContinueZ visit_TryZvisit_TryFinallyZvisit_TryExceptZvisit_withitemZvisit_argumentsZ visit_argZ visit_ReturnZ visit_YieldZvisit_YieldFromZ visit_GlobalZ visit_ModuleZ visit_ParamÚ __classcell__r r )r)r rAsø L ;0  *"+-+   rcCstjtj|ƒdddd�S)NTé)Úannotate_fieldsÚinclude_attributesÚindent)rÚdumpÚcopyÚdeepcopy)r.r r r Ú astFormat7srÐc@s(eZdZdd„Zdd„Zdd„ZeZdS)Ú__rl_SafeIter__cCs|ƒj|ƒ|_||_dS)N)Ú__rl_real_iter__Ú __rl_iter__Ú __rl_owner__)r(ÚitÚownerr r r r ;sz__rl_SafeIter__.__init__cCs|S)Nr )r(r r r Ú__iter__?sz__rl_SafeIter__.__iter__cCs|jƒjƒt|jƒS)N)rÔÚ __rl_check__ÚnextrÓ)r(r r r Ú__next__Bs z__rl_SafeIter__.__next__N)rr r r r×rÚrÙr r r r rÑ:srÑcCsD|dkrtjdƒjjƒ}x&d D]}||kr0||=tjƒ|d<qW|S) Nr*Ú__annotations__Ú__doc__Ú __loader__rÚ __package__Ú__spec__Ú __builtins__)rÛrÜrÝrrÞrß)ÚsysÚ _getframeÚ f_globalsrÎÚ__rl_safe_builtins__)Úgr+r r r Ú safer_globalsIs ræc@sHeZdZejZejZee dƒƒZ dNdd„Z dd„Z dd„Z d d „Zd d „Zd d„Zdd„ZdOdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Z d/d0„Z!d1d2„Z"d3d4„Z#d5Z$d6Z%d7Z&d8d9„Z'd:d;„Z(dd?„Z*d@dA„Z+dBdC„Z,dDdE„Z-dPdIdJ„Z.dQdLdM„Z/dS)RÚ__RL_SAFE_ENV__rNcs.|dk r |nˆjˆ_|r(|dkr$tq*|ngˆ_ddl‰ˆjˆ_ˆjˆ_G‡fdd„dt ƒ}Gdd„dƒ‰ˆˆ_ dˆdƒfdˆj ffˆ_ t j‡fd d „d jƒDƒƒ‡‡fd d „tˆƒDƒˆ_}|jt ƒˆj|d <ˆj|d<ˆj|d<ˆj|d<ˆj|d<ˆj|d<ˆj|d<ˆj |d<ˆj|d<ˆj|d<ˆj|d<ˆj|d<‡fdd„|d<t|d<ˆj|d<||d<ˆj |d<ˆj|d<ˆj|d <ˆj|d!<ˆj |d"<ˆj!|d#<ˆj"|d$<ˆj#|d%<ˆj$|d&<ˆj%|d'<ˆj&|d(<ˆj'|d)<ˆj(|d*<ˆj)|d+<ˆj*|d,<ˆj+|d-<ˆj,|d.<ˆj-|d/<ˆj.|d0<dS)1NTrcseZdZ‡fdd„ZdS)z-__RL_SAFE_ENV__.__init__..__rl_dict__c sbt|ƒdkrPt|dtƒ rPyˆj|dƒ}Wntk rBYnXˆj|ƒf}tj|f|ž|ŽS)Nr*r)rMr7ÚdictZ __real_iter__Ú TypeErrorr2Ú__new__)Úclsr4ÚkwdsrÕ)r(r r rêbs z5__RL_SAFE_ENV__.__init__..__rl_dict__.__new__N)rr r rêr )r(r r Ú __rl_dict__asríc@seZdZdd„Zdd„ZdS)z5__RL_SAFE_ENV__.__init__..__rl_missing_func__cSs ||_dS)N)r)r(r+r r r r msz>__RL_SAFE_ENV__.__init__..__rl_missing_func__.__init__c_std|jƒ‚dS)Nzmissing global %s)rr)r(r4rìr r r Ú__call__osz>__RL_SAFE_ENV__.__init__..__rl_missing_func__.__call__N)rr r r rîr r r r Ú__rl_missing_func__lsrïÚopenr>csi|]}tˆ|ƒ|“qSr )r-)rGÚ_)Úbuiltinsr r ú xsz,__RL_SAFE_ENV__.__init__..aNone False True abs bool callable chr complex divmod float hash hex id int isinstance issubclass len oct ord range repr round slice str tuple setattr classmethod staticmethod property divmod next object getattr dict iter pow list type max min sum enumerate zip hasattr filter map any all sorted reversed range set frozenset ArithmeticError AssertionError AttributeError BaseException BufferError BytesWarning DeprecationWarning EOFError EnvironmentError Exception FloatingPointError FutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexError KeyError KeyboardInterrupt LookupError MemoryError NameError NotImplementedError OSError OverflowError PendingDeprecationWarning ReferenceError RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarning SystemError SystemExit TabError TypeError UnboundLocalError UnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateError UnicodeWarning UserWarning ValueError Warning ZeroDivisionError __build_class__cs$i|]}ttˆ|ƒƒrˆ|ƒ|“qSr )Úcallabler-)rGrñ)rïròr r róŠsr¶rºr»r—r£r›r‡r2Ú__rl_max_len__Ú__rl_max_pow_digits__r1rUcsˆj|||ƒS)N)r“)r3r4rì)r(r r Úšsz*__RL_SAFE_ENV__.__init__..r“rÑr-rèÚpowÚlistrdÚmaxÚminÚsumrOÚzipÚhasattrÚfilterÚmaprŸÚallÚsortedr ÚrangeÚsetÚ frozenset)/Ú __rl_tmax__ÚtimeoutÚ__allowed_magic_methods__Úallowed_magic_methodsròrÚ__rl_gen_range__r>rÒrèÚreal_bir2Ú bi_replaceräÚupdateÚsplitÚdirÚ__rl_builtins__r¶rºr»r—r£r›r‡rõrör1rUrÑÚ __rl_list__Ú __rl_type__Ú __rl_max__Ú __rl_min__Ú __rl_sum__Ú__rl_enumerate__Ú __rl_zip__Ú__rl_hasattr__Ú __rl_filter__Ú __rl_map__Ú __rl_any__Ú __rl_all__Ú __rl_sorted__Ú__rl_reversed__Ú __rl_range__Ú __rl_set__Ú__rl_frozenset__)r(rr rírr )rïròr(r r Xsb                                  z__RL_SAFE_ENV__.__init__cGs t|ƒdkrt|ŽStdƒ‚dS)Nr*ztype call error)rMrdr)r(r4r r r r´s z__RL_SAFE_ENV__.__rl_type__cCs|jƒ|jkrtdƒ‚dS)NzResources exceeded)Ú __time_time__Ú __rl_limit__r)r(r r r rظsz__RL_SAFE_ENV__.__rl_check__cCs|S)Nr )r(Úobjr r r r—¼sz__RL_SAFE_ENV__.__rl_sd__cCst||j|ƒd�S)N)rÖ)rÑÚ__weakref_ref__)r(rÕr r r r2¿sz__RL_SAFE_ENV__.__rl_getiter__cOs&|r|g}|j|ƒt|j|ƒf|ŽS)N)ÚextendrúÚ__rl_args_iter__)r(r�r4rìr r r rÂs z__RL_SAFE_ENV__.__rl_max__cOs&|r|g}|j|ƒt|j|ƒf|ŽS)N)r&rûr')r(r�r4rìr r r rÈs z__RL_SAFE_ENV__.__rl_min__cCst|j|ƒ|ƒS)N)rür')r(ÚsequenceÚstartr r r rÎsz__RL_SAFE_ENV__.__rl_sum__cCst|j|ƒƒS)N)rOr')r(Úseqr r r rÑsz __RL_SAFE_ENV__.__rl_enumerate__cs t‡‡fdd„ttˆƒƒDƒŽS)Ncsg|]}ˆjˆjˆ|ƒƒ‘qSr )r'r›)rGÚi)r4r(r r rHÕsz.__RL_SAFE_ENV__.__rl_zip__..)rýrrM)r(r4r )r4r(r rÔsz__RL_SAFE_ENV__.__rl_zip__c Cs0y|j||ƒWntttfk r*dSXdS)NFT)r‡ÚAttributeErrorrré)r(r$r+r r r r×s z__RL_SAFE_ENV__.__rl_hasattr__cCst||j|ƒƒS)N)rÿr')r(Úfr*r r r rÞsz__RL_SAFE_ENV__.__rl_filter__cCst||j|ƒƒS)N)rr')r(r-r*r r r rász__RL_SAFE_ENV__.__rl_map__cCst|j|ƒƒS)N)rŸr')r(r*r r r räsz__RL_SAFE_ENV__.__rl_any__cCst|j|ƒƒS)N)rr')r(r*r r r rçsz__RL_SAFE_ENV__.__rl_all__cKst|j|ƒf|ŽS)N)rr')r(r*rìr r r rêsz__RL_SAFE_ENV__.__rl_sorted__cCs|jt|ƒƒS)N)r'r )r(r*r r r rísz__RL_SAFE_ENV__.__rl_reversed__cGs|jt|f|žŽƒS)N)r2r)r(r)r4r r r rðsz__RL_SAFE_ENV__.__rl_range__cCst|j|ƒƒS)N)rr')r(rÕr r r r ósz__RL_SAFE_ENV__.__rl_set__cCst|j|ƒƒS)N)rr')r(rÕr r r r!ösz __RL_SAFE_ENV__.__rl_frozenset__ccs&x ||ƒD]}|j|||ƒVq WdS)zÎProtect sequence unpacking of targets in a 'for loop'. The target of a for loop could be a sequence. For example "for a, b in it" => Each object from the iterator needs guarded sequence unpacking. N)rU)r(rÕr?Ú _getiter_rBr r r r1ùsz+__RL_SAFE_ENV__.__rl_iter_unpack_sequence__cCsRt|j|ƒƒ}t|ƒ|dkr"|Sx*|dD]\}}|j||||ƒ||<q,W|S)aProtect nested sequence unpacking. Protect the unpacking of 'it' by wrapping it with '_getiter_'. Furthermore for each child element, defined by spec, __rl_unpack_sequence__ is called again. Have a look at transformer.py 'gen_unpack_spec' for a more detailed explanation. rIrF)rùZ__rl__getiter__rMrU)r(rÕr?r.ÚretrRZ child_specr r r rUs z&__RL_SAFE_ENV__.__rl_unpack_sequence__cCs>t|tƒr:|tks.|jdƒr:|dkr:||jkr:td|ƒ‚dS)z­Check names if they are allowed. If ``allow_magic_methods is True`` names in `__allowed_magic_methods__` are additionally allowed although their names start with `_`. r–zunsafe access of %sN)r7ÚstrTypesÚ __rl_unsafe__r™r r)r(r+r r r Ú__rl_is_allowed_name__s   z&__RL_SAFE_ENV__.__rl_is_allowed_name__cGs<t|tƒr"|dkr"tdt|ƒƒ‚|j|ƒt||f|žŽS)NÚformatz%s.format is not implemented)r7r0rrdr2r-)r(r$Úar4r r r r‡'s z__RL_SAFE_ENV__.__rl_getattr__cCs„t|ƒ|jkr`|jdk r"||}n:|j}|j}|dkr:d}|dkrP||d…}n |||…}|St|tƒr||j|ƒ||S||S)Nr)rdÚ __slicetype__rzr)Ústopr7r0r2)r(r$r4Úvr)r6r r r r›-s     z__RL_SAFE_ENV__.__rl_getitem__éi †édcCs:t|dƒr2t|dƒr2t|ƒt|ƒ|jkr2tdƒ‚||S)NÚ__len__zexcessive length)rþrMrõr)r(r4Úbr r r r¶Dsz__RL_SAFE_ENV__.__rl_add__cCsHt|dƒr|t|ƒ|jks8t|dƒr@|t|ƒ|jkr@tdƒ‚||S)Nr:zexcessive length)rþrMrõr)r(r4r;r r r rºJsz__RL_SAFE_ENV__.__rl_mult__c CsPy*|dkr(t|t|ƒdƒ|jkr(t‚Wntd||fƒ‚YnX||S)Nrr*z%r**%r invalid or too large)ÚintÚ math_log10rör)r(r4r;r r r r»Psz__RL_SAFE_ENV__.__rl_pow__cCsÐ|dkr|j||ƒS|dkr$||S|dkr8|j||ƒS|dkrH||S|dkrX||S|dkrl|j||ƒS|dkr|||>S|dkrŒ||?S|d krœ||BS|d kr¬||AS|d kr¼||@S|d krÌ||SdS) Nz+=z-=z*=z/=z%=z**=z<<=z>>=z|=z^=z&=z//=)r¶rºr»)r(rˆr7r+r r r r£Ys0   z __RL_SAFE_ENV__.__rl_augAssign__cCsZt|ddƒ}|r2t|tƒr2|jd kr2|j|dƒ|dd„|j|ƒDƒd d „|jƒDƒŽS) NÚ__self__ÚpopÚ setdefaultÚgetÚpopitemrcSsg|]}|‘qSr r )rGr4r r r rHlsz0__RL_SAFE_ENV__.__rl_apply__..cSsi|]\}}||“qSr r )rGÚkr7r r r rólsz0__RL_SAFE_ENV__.__rl_apply__..)r?r@rArB)r-r7rèrr2r2rª)r(r3r4rìr$r r r r“gs  z__RL_SAFE_ENV__.__rl_apply__cGsFt|ƒdkr8|d}t|tƒr"|St||jƒs8|j|ƒS|jt|ŽƒS)Nr*r)rMr7rÑr r2r>)r(r4r+r r r r'ns    z __RL_SAFE_ENV__.__rl_args_iter__cCst|j|ƒƒS)N)rùr2)r(rÕr r r rxsz__RL_SAFE_ENV__.__rl_list__úr’Tc Cszi}|st||||| d�}nTtj|||ƒ} tdkrDtdt| ƒƒ|| ƒ} tdkrdtdt| ƒƒt| ||d�}||fS)N)ÚmodeÚflagsÚ dont_inheritrzpre: %s z post: %s )rE)Úcompilerr³rÇr�rÐ) r(ÚsrcÚfnamerErFÚinheritrÅr!ÚbcodeZastcr r r Ú__rl_compile__{sz__RL_SAFE_ENV__.__rl_compile__rcCsd|j|d|ddt|jd�jd�\}} d||fkrhtj|ƒ} |dkrL| jjƒn|} |dkrb| jjƒn|} n|} |} d| kr‚| dfnd} |j | d<|j ƒ|dk r¢|n|j |_ |dk rÎ|rÈ|dkrÄt qÊ|ng|_gj} |j}|j}x*|D]"\}}| t||ƒƒt|||ƒqæWz t|| | ƒS| j} x*t|ƒD]\}\}}t||| |ƒ�q*W| �r^| d| d<XdS)NzrT)r")rJrErFrKrÅràF)rMrr2rÅrárâÚf_localsrÎrãrr"rr#rr rKr r r-Úsetattrr’r>rO)r(ÚexprråÚlrErr Ú__frame_depth__rLÚnsÚGÚLZobiZsbiZbiZbirÚnÚrr+r r r Ú__rl_safe_eval__‰s4    z __RL_SAFE_ENV__.__rl_safe_eval__)NN)r)rDr’rTN)NNr)0rr r r%r"ÚweakrefÚrefr%rdrur5r rrØr—r2rrrrrrrrrrrrrr r!r1rUr2r‡r›rrõrör¶rºr»r£r“r'rrMrXr r r r rçTsP  \      rçc@s&eZdZdZdZdd„Zddd„ZdS) rXz&creates one environment and re-uses itr’cCs d|_dS)N)Úenv)r(r r r r «sz__rl_safe_eval__.__init__Nc Cs0|jst||d�|_|jj||||j||dd�S)N)rr r)rr rR)r[rçrXrE)r(rPrårQrr r r r rî®s z__rl_safe_eval__.__call__)NNNN)rr r rÜrEr rîr r r r rX¨srXc@seZdZdZdS)Ú__rl_safe_exec__r‘N)rr r rEr r r r r\´sr\)rr)N)sf@   { V