
    Q?h                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKr\	" \R                  R                  SS5      5      r\\4r\ R                   SS S:  r\ R                   SS S:  rS SKr " S S\5      r\R,                  S	\R.                  S
\R0                  S\R2                  S\R4                  S\R6                  S\R8                  S\R:                  S\R<                  S\R>                  S\R@                  S\RB                  S\RD                  S0r#\$" / SQ5      r%\$" 5       4S jr&\$" SRO                  5       5      r(\RR                  " SSRU                  \(5      -  \RV                  5      r,S r- " S S\R\                  5      r/S r0 " S S 5      r10 r2S*S! jr3\Rh                  r5\6" 5       r7 " S" S#5      r8 " S$ S%5      r9 " S& S'\95      r:S+S( jr;\:" 5       r<\9" 5       r=S) r>g),    N
EVAL_DEBUG0   )   	   )r      c                       \ rS rSrSrg)BadCode    N)__name__
__module____qualname____firstlineno____static_attributes__r       L/var/www/html/env/lib/python3.13/site-packages/reportlab/lib/rl_safe_eval.pyr
   r
      s    r   r
   +=-=*=/=%=**=<<=>>=|=^=&=//=z@=)__init____contains____lt____le____eq____ne____gt____ge__c                     [        U [        [        [        [        45      (       a  [        U 5      $ [        U [
        5      (       a  U $ [        U 5      (       a  U$ [        5       $ N)
isinstancetuplelistsetdict	frozensetbool)valuedefaults     r   __fix_set__r3   /   sK    ueDT*++	5	y!!	,
5kk	.	r   aT  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 locals
						type eval exec aiter anext compile open
						dir print classmethod staticmethod __import__ super propertyz\b(?:%s)|c                 \    [         R                  " X5        [         R                  " U 5        g r)   )astcopy_locationfix_missing_locations)new_nodeold_nodes     r   copy_locationsr;   I   s    8&8$r   c                   v  ^  \ rS rSrS&U 4S jjr\S 5       rS rS rS r	S r
S rS'S	 jrS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"\!r#\r$\r%S  r&S! r'U 4S" jr(\)S#:  a  S$ r*\'r+\'r,\'r-\'r.\'r/\'r0\'r1\'r2\'r3\(r\(r4\(r5\(r6\(r7\(r8\(r9\(r:\(r;\(r<\(r=\(r>\(r?\(r@\(rA\(rB\(rC\(rD\(rE\(rF\(rG\(rH\(rI\(rJ\(rK\(rL\(rM\(rN\(rO\(rP\(rQ\(rR\(rS\(rT\(rU\(rV\(rW\(rX\(rY\(rZ\(r[\(r\\(r]\(r^\(r_\(r`\(ra\(rb\(rc\(rd\(re\(rf\(rg\(rh\(ri\(rj\(rk\(rl\(rm\(rn\(ro\(rp\(rq\(rr\(rs\(rt\(ru\(rv\(rw\(rx\(ry\(rz\(r{\(r|\(r}\(r~\(rS%rU =r$ )(UntrustedAstTransformerM   c                    > [         [        U ]  5         Uc  0 OUU l        X l        SU l        S[        [        R                  " 5       5      R                  SS5      -  U l	        g )Nr   z_tmp%s. )
superr=   r    
names_seennameIsAllowed_tmp_idxreprtimereplace_tmp_pfx)selfrC   rD   	__class__s      r   r     UntrustedAstTransformer.__init__O   sR    /1$,B*$/$ $-T$))+.66s2>>$-r   c                 h    U R                   < U R                  < 3nU =R                  S-  sl        U$ )N   )rI   rE   rJ   names     r   tmpNameUntrustedAstTransformer.tmpNameX   s'    ==	/$--1-	+r   c                 >    [        S[        USS5      < SU< 35      e)NzLine linenoz??z: )r
   getattr)rJ   nodemsgs      r   errorUntrustedAstTransformer.error^   s    '$$"?EFFr   c           
      `   U R                  U5      n[        UR                  [        R                  5      (       a  U R                  UR                  5      n[        R                  " [        R                  " S[        R                  " 5       5      UR                  U[        R                  " S[        R                  " 5       5      // S9nOI[        R                  " [        R                  " S[        R                  " 5       5      UR                  // S9n[        X1R                  5        X1l	        U$ )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_childrenr*   targetr6   Tuplegen_unpack_specCallNameLoaditerr;   )rJ   rV   specnew_iters       r   
guard_iter"UntrustedAstTransformer.guard_itera   s     
		T	"$SYY''


t{{
+4hh	/	<
))T388$4chhjA	B8
 hh	"CHHJ	/
))8
 99%)	+r   c                 6    [        U[        R                  5      $ r)   )r*   r6   Starred)rJ   obs     r   
is_starred"UntrustedAstTransformer.is_starred   s    	B	$$r   c                 j   [         R                  " / / S9nUR                  R                  [         R                  " S5      5        UR
                  R                  [         R                  " / [         R                  " 5       5      5        [        UR                   Vs/ s H  o0R                  U5      (       a  M  UPM     sn5      nSn[        UR                  5       H  u  pgU R                  U5      (       a  US-   nM"  [        U[         R                  5      (       d  MC  [         R                  " / [         R                  " 5       5      nUR                  R                  [         R                  " Xe-
  5      5        UR                  R                  U R                  U5      5        UR
                  S   R                  R                  U5        M     UR                  R                  [         R                  " S5      5        UR
                  R                  [         R                  " U5      5        U$ s  snf )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childsr   rN   min_len)r6   Dictrs   appendConstantrt   rc   rg   leneltsrp   	enumerater*   rd   )	rJ   tplri   ro   rv   offsetidxvalels	            r   rd   'UntrustedAstTransformer.gen_unpack_spec   sk   Z 
r"	%$))3<<)*++SYYr388:./
 chhBhoob.AhBC'&CHH%hc oocq[F3		""	2sxxz	"BGGNN3<<-.GGNN4'',-KKNr" & ))3<<	*+++S\\'*+	++ Cs   H08H0c           
          U R                  U5      n[        R                  " [        R                  " S[        R                  " 5       5      X#[        R                  " S[        R                  " 5       5      // S9$ )N__rl_unpack_sequence__r\   r]   )rd   r6   re   rf   rg   )rJ   rb   r1   ri   s       r   protect_unpack_sequence/UntrustedAstTransformer.protect_unpack_sequence   sU    			f	%$	)388:6	chh/<=
 r   c                    U R                   nU R                  U[        R                  " U[        R                  " 5       5      5      n[        R
                  " U/US9/nU R                  U5      /n[        R                  " Xg/ / S9nUS:X  a  [        R                  " 5       nO3US:X  a  [        R                  " 5       nO[        S[        U5      -  5      e[        R                  " XC5      n	[        X5        [        X5        X4$ )a`  Helper 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.
targetsr1   )body	finalbodyhandlersorelsestoreparamzbad ctx "%s")rQ   r   r6   rf   rg   Assigngen_del_stmtTryStoreParamNotImplementedErrortyper;   )
rJ   rV   rb   ctxtnam	convertertry_bodyr   cleanup
tmp_targets
             r   gen_unpack_wrapper*UntrustedAstTransformer.gen_unpack_wrapper   s    ( 
$
 **	88D#((*) jj&;<(  &')GG2?' 	G^	3
g~	3 
^d3i7	88 xx"*"
	r   c           	      V    [         R                  " [         R                  " US S / S9US9$ )N)r_   varargkwargdefaults)r_   r   )r6   Lambda	arguments)rJ   r_   r   s      r   
gen_lambda"UntrustedAstTransformer.gen_lambda  s+    		d$	5
 r   c                 |    [         R                  " [         R                  " U[         R                  " 5       5      /S9$ )N)r   )r6   Deleterf   Del)rJ   name_to_dels     r   r   $UntrustedAstTransformer.gen_del_stmt  s%    	SXXk3779=>	??r   c                 J   [        U[        R                  5      (       a  UR                  $ [        U[        R                  5      (       Ga6  / nUR
                  (       a  UR                  UR
                  5        O%UR                  [        R                  " S5      5        UR                  (       a  UR                  UR                  5        O%UR                  [        R                  " S5      5        UR                  (       a  UR                  UR                  5        O%UR                  [        R                  " S5      5        [        R                  " [        R                  " S[        R                  " 5       5      U/ S9$ [        U[        R                  5      (       ai  [        R                  " / [        R                  " 5       5      nUR                   H-  nUR                   R                  U R#                  U5      5        M/     U$ [$        (       a  U$ ['        SU-  5      e)zTransform 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
Nslicer]   zUnknown slice type: %s)r*   r6   Indexr1   Slicelowerrx   ry   upperstepre   rf   rg   ExtSlicerc   dimsr{   transform_sliceisPy39r   )rJ   slice_r_   r   items        r   r   'UntrustedAstTransformer.transform_slice  sZ    		""
,,&#))$$
4llKKKKT"#llKKKKT"#kkKKKKT"#
((	'388:	&	 
 &#,,''
))B

#4{{tIIT))$/0 
;v
= 
5>	??r   c                 .    Uc  g U R                  U5        g r)   rD   rJ   rV   rP   s      r   isAllowedName%UntrustedAstTransformer.isAllowedNameJ  s    	\6Tr   c                    UR                   R                    H  nU R                  XR                  5        M      UR                   R                  (       a/  U R                  XR                   R                  R                  5        UR                   R                  (       a/  U R                  XR                   R                  R                  5        UR                   R
                   H  nU R                  XR                  5        M      g r)   )r_   r   argr   r   
kwonlyargs)rJ   rV   r   s      r   check_function_argument_names5UntrustedAstTransformer.check_function_argument_namesN  s     YY^^cdGG$  
YYdII,,001	YY__dIIOO//0YY!!cdGG$ "r   c                     UR                    Hn  nSUR                  ;   a  U R                  US5        U R                  XR                  5        UR                  (       d  MS  U R                  XR                  5        Mp     U R                  U5      $ )zCheck 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.)namesrP   rX   r   asnamera   r   s      r   check_import_names*UntrustedAstTransformer.check_import_namesb  sm     jjd	TYYJJt34dII&
kkkt[[)  
		T	""r   c                     [         R                  " [         R                  " S[         R                  " 5       5      U[         R                  " U5      // S9n[         R
                  " [         R                  " 5       X1/S9$ )zlCheck if 'attr_name' is allowed on the object in node.

It generates (_getattr_(node, attr_name) and node).
__rl_getattr__r]   )oprt   )r6   re   rf   rg   ry   BoolOpAnd)rJ   rV   	attr_namecall_getattrs       r   gen_attr_check&UntrustedAstTransformer.gen_attr_checks  sW     !388:.	s||I&',
 
swwy,)=	>>r   c                 p    UR                   [        L a  U R                  US5        gU R                  U5      $ )zAllow 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)r1   EllipsisrX   ra   rJ   rV   s     r   visit_Constant&UntrustedAstTransformer.visit_Constant  s5     
ZZ8 ::d:;				T	""r   c                 &   U R                  U5      n[        UR                  [        R                  5      (       a;  UR
                  S:X  a  U R                  US5        SU R                  UR
                  '   U R                  XR
                  5        U$ )Nprintzprint function is not allowedT)	ra   r*   r   r6   rg   idrX   rC   r   r   s     r   
visit_Name"UntrustedAstTransformer.visit_Name  sk    			T	"$#((##
ggJJt34"4??477T77#	+r   c                    [        UR                  [        R                  5      (       aY  UR                  R                  S:X  a  U R                  US5        O,UR                  R                  S:X  a  U R                  US5        SnUR                   H&  n[        U[        R                  5      (       d  M$  SnM(     UR                   H  nUR                  b  M  SnM     U R                  U5      nUR                  R                  SUR                  5        [        R                  " S[        R                  " 5       5      Ul        [        UR                  UR                  S   5        U$ )	a  Checks calls with '*args' and '**kwargs'.

Note: The following happens only if '*args' or '**kwargs' is used.

Transfroms 'foo(<all the possible ways of args>)' into
__rl_apply__(foo, <all the possible ways for args>)

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.
execzExec calls are not allowed.evalzEval calls are not allowed.FTr   __rl_apply__)r*   r^   r6   rf   r   rX   r_   rn   r`   r   ra   insertrg   r;   )rJ   rV   
needs_wrappos_argkeyword_args        r   
visit_Call"UntrustedAstTransformer.visit_Call  s      		388$$
iillfJJt23		JJt23*g#++&&J  ]]kooJ # 
		T	"$
 ))1dii hh~sxxz2$)DIIaL)	+r   c                    UR                   R                  S5      (       aP  UR                   S:w  a@  U R                  UR                   S5      (       d  U R                  USUR                   -  5        [	        UR
                  [        R                  5      (       a  U R                  U5      n[        R                  " [        R                  " S[        R                  " 5       5      UR                  [        R                  " UR                   5      // S9n[        X!5        U$ [	        UR
                  [        R                  [        R                  45      (       aw  U R                  U5      n[        R                  " [        R                  " S[        R                  " 5       5      UR                  // S9n[        X1R                  5        X1l        U$ [!        S[#        UR
                  5      -  5      e)zXChecks and mutates attribute access/assignment.

'a.b' becomes '__rl_getattr__(a, "b")'
__Fz"%s" is an invalid attributer   r]   	__rl_sd__Unknown ctx type: %s)attr
startswithrD   rX   r*   r   r6   rg   ra   re   rf   r1   ry   r;   r   r   r   r   )rJ   rV   r9   	new_values       r   visit_Attribute'UntrustedAstTransformer.visit_Attribute  sX   
 
YY$DII$5d>P>PQUQZQZ[`>a>a::d2499<=#((##


d
#4hh	"CHHJ	/
**cll499-	.8
 (!
?$((SYY011


d
#4xx	+sxxz	*
**9
 )ZZ(:
; 
3d488nD	EEr   c                    U R                  U5      n[        UR                  [        R                  5      (       ap  [        R
                  " [        R                  " S[        R                  " 5       5      UR                  U R                  UR                  5      // S9n[        X!5        U$ [        UR                  [        R                  [        R                  45      (       a  U$ [        S[        UR                  5      -  5      e)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__r]   r   )ra   r*   r   r6   rg   re   rf   r1   r   r   r;   r   r   r   r   rJ   rV   r9   s      r   visit_Subscript'UntrustedAstTransformer.visit_Subscript  s     
		T	"$ #((##hh	"CHHJ	/
**d**4::6	78
 (!
?$((SWWcii011 ; 
3d488nD	EEr   c                    U R                  U5      n[        S UR                   5       5      (       d  U$ / n[        UR                  5       H  n[	        U[
        R                  5      (       aB  [
        R                  " U/U R                  X1R                  5      S9nUR                  U5        Md  [
        R                  " U/UR                  S9nUR                  U5        M     U H  n[        XQ5        M     U$ )Nc              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr)   )r*   r6   rc   ).0ts     r   	<genexpr>7UntrustedAstTransformer.visit_Assign.<locals>.<genexpr>  s     <|!Z399%%|s   ')r   )ra   anyr   reversedr*   r6   rc   r   r   r1   rx   r;   )rJ   rV   	new_nodesrb   wrapperr9   s         r   visit_Assign$UntrustedAstTransformer.visit_Assign  s    			T	"$	<t||<	<	<
;. ) &f##jjX''

;=G Wzz6($**=HX ' h(!  
r   c                 h   U R                  U5      n[        UR                  [        R                  5      (       a  U R                  US5        g[        UR                  [        R                  5      (       a  U R                  US5        g[        UR                  [        R                  5      (       a  [        R                  " UR                  /[        R                  " [        R                  " S[        R                  " 5       5      [        R                  " [        [        UR                  5         5      [        R                  " UR                  R                  [        R                  " 5       5      UR                   // S9S9n[#        X!5        U$ [%        S[        UR                  5      -  5      e)aZ  Forbid 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__r]   r   zUnknown target type: %sN)ra   r*   rb   r6   	AttributerX   	Subscriptrf   r   re   rg   ry   augOpsr   r   r   r1   r;   r   r   s      r   visit_AugAssign'UntrustedAstTransformer.visit_AugAssignA  s    
		T	"$S]]++::dHI$++s}}--::dUV$++sxx((jj[[M
((
((%sxxz
2	ll6$tww-()	hht{{~~sxxz*
jj
 	8 (!
? 
6dkk9JJ	KKr   c                 0    [         R                  U 5        U $ r)   )rJ   ra   rV   s    r   visit_While#UntrustedAstTransformer.visit_Whilel  s    d	+r   c                 ^    U R                  U5      nU R                  XR                  5        U$ )a  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
)ra   r   rP   r   s     r   visit_ExceptHandler+UntrustedAstTransformer.visit_ExceptHandlerp  s+    $ 
		T	"$T99%	+r   c                 :   U R                  U5      nUR                  n[        U5       Hn  n[        UR                  [
        R                  5      (       d  M.  U R                  UUR                  5      u  pEXCl        UR                  R                  SU5        Mp     U$ )z+Protect tuple unpacking on with statements.r   )
ra   itemsr   r*   optional_varsr6   rc   r   r   r   )rJ   rV   r  r   r   unpacks         r   
visit_With"UntrustedAstTransformer.visit_With  s    			T	"$
**%uod##SYY//00		J $IIQ  
+r   c                 ^    U R                  XR                  5        U R                  U5        U$ )z:Allow function definitions (`def`) with some restrictions.)r   rP   r   r   s     r   visit_FunctionDef)UntrustedAstTransformer.visit_FunctionDef  s'    T99%$$T*	+r   c                 J    U R                  U5        U R                  U5      nU$ )z$Allow lambda with some restrictions.)r   ra   r   s     r   visit_Lambda$UntrustedAstTransformer.visit_Lambda  s%    $$T*			T	"$	+r   c                    U R                  XR                  5        U R                  U5      n[        S UR                   5       5      (       a  U R                  US5        [        R                  " SUR                  -  5      n[        R                  " U5      R                  S   nUR                  Ul
        UR                  Ul        UR                  Ul        U$ )z%Check the name of a class definition.c              3   >   #    U  H  oR                   S :H  v   M     g7f)	metaclassN)r   )r   keywords     r   r   9UntrustedAstTransformer.visit_ClassDef.<locals>.<genexpr>  s     A=	#=s   z0The keyword argument "metaclass" is not allowed.z1			class %s(metaclass=__metaclass__):
				pass
		r   )r   rP   ra   r   r`   rX   textwrapdedentr6   parser   basesdecorator_list)rJ   rV   	CLASS_DEFnew_class_nodes       r   visit_ClassDef&UntrustedAstTransformer.visit_ClassDef  s    T99%			T	"$A4==AAA::dFGoo  			 ) 99Y',,Q/.		.."&"5"5.	r   c                 $    U R                  U5      $ r)   )	r   ra   r6   re   rf   rg   leftrightr;   r   s      r   visit_Import$UntrustedAstTransformer.visit_Import  s    		 	 	&&r   c                    U R                  U5      nUR                  n[        U[        R                  [        R
                  [        R                  45      (       a  [        U[        R                  5      (       a  SO"[        U[        R
                  5      (       a  SOSn[        R                  " [        R                  " U[        R                  " 5       5      UR                  UR                  // S9n[        XA5        U$ U$ )N__rl_mult__
__rl_add__
__rl_pow__r]   )ra   r   r*   r6   MultAddPowre   rf   rg   r*  r+  r;   )rJ   rV   r   opfr9   s        r   visit_BinOp#UntrustedAstTransformer.visit_BinOp  s    			T	"$ww"CHHSWWSWW-..%b22-$R00,
  hh88C$YY

#8 (!
?	+r   c                 &    U R                  U5        g)z>Reject nodes which do not have a corresponding `visit` method.N)not_allowedr   s     r   generic_visit%UntrustedAstTransformer.generic_visit  s    4r   c                 V    U R                  USUR                  R                  -  5        g )Nz%s statements are not allowed.)rX   rK   r   r   s     r   r9  #UntrustedAstTransformer.not_allowed  s     **T3DNN4K4KKLr   c                 *   > [         [        U ]  U5      $ )zVisit the contents of a node.)rB   r=   r:  )rJ   rV   rK   s     r   ra   &UntrustedAstTransformer.visit_children  s    	&	;D	AAr   r   c                     SUR                   R                  -   n[        XU R                  5      n[	        SU< SU< SU< 35        U" U5      $ )Nvisit_zvisitor==z node=)rK   r   rU   r:  r   )rJ   rV   methodvisitors       r   visitUntrustedAstTransformer.visit  sA    t~~...6T4#5#567F74	89
$-r   )rE   rI   rD   rC   NN)r   )r   r   r   r   r    propertyrQ   rX   rk   rp   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r'  r,  r6  visit_ImportFrom	visit_Forvisit_comprehensionr:  r9  ra   
eval_debugrE  visit_Ellipsisvisit_MatMult
visit_Execvisit_Nonlocalvisit_AsyncFunctionDefvisit_Awaitvisit_AsyncForvisit_AsyncWithvisit_Print	visit_Num	visit_Strvisit_Bytes
visit_Listvisit_Tuple	visit_Set
visit_Dictvisit_FormattedValuevisit_JoinedStrvisit_NameConstant
visit_Loadvisit_Store	visit_Delvisit_Starredvisit_Expression
visit_Exprvisit_UnaryOp
visit_UAdd
visit_USub	visit_Notvisit_Invert	visit_Add	visit_Sub
visit_Mult	visit_Divvisit_FloorDiv	visit_Pow	visit_Modvisit_LShiftvisit_RShiftvisit_BitOrvisit_BitXorvisit_BitAndvisit_BoolOp	visit_Andvisit_Orvisit_Comparevisit_Eqvisit_NotEqvisit_Lt	visit_LtEvisit_Gt	visit_GtEvisit_Isvisit_IsNotvisit_Invisit_NotInvisit_keywordvisit_IfExpvisit_Indexvisit_Slicevisit_ExtSlicevisit_ListCompvisit_SetCompvisit_GeneratorExpvisit_DictCompvisit_Raisevisit_Assertvisit_Delete
visit_Passvisit_aliasvisit_Ifvisit_Breakvisit_Continue	visit_Tryvisit_TryFinallyvisit_TryExceptvisit_withitemvisit_arguments	visit_argvisit_Returnvisit_Yieldvisit_YieldFromvisit_Globalvisit_Modulevisit_Paramr   __classcell__)rK   s   @r   r=   r=   M   s   ?  
G>%JX9v@.@`%(#"?#$	(TFD(FV+Z)LV.$"	 !!MB M % &!$"   $  "! !!r   r=   c                 X    [         R                  " [        R                  " U 5      SSSS9$ )NT   )annotate_fieldsinclude_attributesindent)r6   dumpcopydeepcopyr	  s    r   	astFormatr  A  s!    t$TdZ[\\r   c                   *    \ rS rSrS rS rS r\rSrg)__rl_SafeIter__iD  c                 F    U" 5       R                  U5      U l        X l        g r)   )__rl_real_iter____rl_iter____rl_owner__)rJ   itowners      r   r    __rl_SafeIter__.__init__E  s    W--b1$r   c                     U $ r)   r   rJ   s    r   __iter____rl_SafeIter__.__iter__I  s    	+r   c                 h    U R                  5       R                  5         [        U R                  5      $ r)   )r  __rl_check__nextr  r  s    r   __next____rl_SafeIter__.__next__L  s(    ""$	d	r   )r  r  N)	r   r   r   r   r    r  r  r  r   r   r   r   r  r  D  s      	r   r  c                     U c.  [         R                  " S5      R                  R                  5       n S H!  nX;   a  X	 [        R                  5       U S'   M#     U $ )NrN   )__annotations____doc__
__loader__r   __package____spec____builtins__)sys	_getframe	f_globalsr  __rl_safe_builtins__)grP   s     r   safer_globalsr  S  sS    I	mmA  %%'!`T	Yw*//1!N a 	
r   c                   T   \ rS rSr\R                  r\R                  r\	" \
" S5      5      rS*S jrS rS rS rS rS	 rS
 rS+S jrS rS rS rS rS rS rS rS rS rS rS rS,S jrS r S r!S-S jr"S r#S r$Sr%Sr&Sr'S  r(S! r)S" r*S# r+S$ r,S% r-S& r.S.S' jr/  S/S( jr0S)r1g)0__RL_SAFE_ENV__i^  r   Nc           
      t  ^  Ub  UOT R                   T l        [        U[        5      T l        [        U5      T l        SS KnUR                  T l        UR                  T l
         " U 4S jS[        5      n " S S5      nUT l        SU" S5      4ST R                  44T l        [        R!                  SR#                  5        Vs0 s H  ow[%        XG5      _M     sn5        ['        U5       Vs0 s H&  n[)        [%        XG5      5      (       d  M  Xv" U5      _M(     sn=T l        nUR!                  [        5        T R,                  US	'   T R.                  US
'   T R0                  US'   T R2                  US'   T R4                  US'   T R6                  US'   T R8                  US'   T R                  US'   T R:                  US'   T R<                  US'   T R>                  US'   T R@                  US'   U 4S jUS'   [B        US'   T R8                  US'   XXS'   T R                  US'   T R0                  US'   T RD                  US'   T RF                  US'   T RH                  US'   T RJ                  US'   T RL                  US'   T RN                  US '   T RP                  US!'   T RR                  US"'   T RT                  US#'   T RV                  US$'   T RX                  US%'   T RZ                  US&'   T R\                  US''   T R^                  US('   T R`                  US)'   T Rb                  US*'   T Rd                  US+'   g s  snf s  snf ),Nr   c                   "   > \ rS rSrU 4S jrSrg)-__RL_SAFE_ENV__.__init__.<locals>.__rl_dict__ik  c                    > [        U5      S:X  a?  [        US   [        5      (       d'   TR                  US   5      nTR	                  U5      4n[        R                  " U /UQ70 UD6$ ! [
         a     N&f = fNrN   r   )rz   r*   r.   __real_iter__r\   	TypeError__new__)clsr_   kwdsr  rJ   s       r   r  5__RL_SAFE_ENV__.__init__.<locals>.__rl_dict__.__new__l  sy    
4y!|JtAwt44(d1g&b !!"%'d<<)T)D))	  
s   A* *
A76A7r   N)r   r   r   r   r  r   r  s   r   __rl_dict__r  k  s    * *r   r  c                        \ rS rSrS rS rSrg)5__RL_SAFE_ENV__.__init__.<locals>.__rl_missing_func__iv  c                     Xl         g r)   r   rO   s     r   r    >__RL_SAFE_ENV__.__init__.<locals>.__rl_missing_func__.__init__w  s    Mr   c                 2    [        SU R                  -  5      e)Nzmissing global %s)r
   r   )rJ   r_   r  s      r   __call__>__RL_SAFE_ENV__.__init__.<locals>.__rl_missing_func__.__call__y  s    
%5
66r   r  N)r   r   r   r   r    r  r   r   r   r   __rl_missing_func__r  v  s    7r   r  openrh   a   None 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__r0  r/  r1  r   r  r   r   r\   __rl_max_len____rl_max_pow_digits__r[   r   c                 (   > TR                  XU5      $ r)   )r   )r^   r_   r  rJ   s      r   <lambda>*__RL_SAFE_ENV__.__init__.<locals>.<lambda>  s    d>O>OPTZ^>_r   r   r  rU   r.   powr,   r   maxminsumr|   ziphasattrfiltermapr   allsortedr   ranger-   r/   )3__rl_tmax__timeoutr3   __allowed_magic_methods__allowed_magic_methodsallowed_magic_namesbuiltinsr  __rl_gen_range__rh   r  r.   real_bir\   
bi_replacer  updatesplitrU   dircallable__rl_builtins__r0  r/  r1  r   r  r   r   r  r  r[   r   r  __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__)	rJ   r  r  r  r  r  r  _r   s	   `        r   r    __RL_SAFE_ENV__.__init__b  sJ   #/T5E5E$,*+@B[\$()<=$"..$"--$	*D 	*7 7 $,'(D $/
  eg :;!44 $ ORRZm+}m_ghopxh{_|,DA.A!.D,Dm+}}$-. #'///,#'#3#3/- "&///,!%/+(,(=(=/$%&*&9&9/"#&*&9&9/"#&*&9&9/"#&*&9&9/"#-1-G-G/)*373S3S//0.2.I.I/*+$_/.!'6/#$  $22/)'& ///&??/% ,,/& ,,/&??/%??/%??/%!%!6!6/+??/%#22/)"00/(??/%??/%??/%"00/( $ 4 4/*!../'??/%!%!6!6/+u$ ,~s   L0-L5L5c                 F    [        U5      S:X  a  [        U6 $ [        S5      e)NrN   ztype call error)rz   r   r
   )rJ   r_   s     r   r  __RL_SAFE_ENV__.__rl_type__  s"    Y\$+%!""r   c                 V    U R                  5       U R                  :  a  [        S5      eg )NzResources exceeded)__time_time____rl_limit__r
   r  s    r   r  __RL_SAFE_ENV__.__rl_check__  s*    	T...	%	&& /r   c                     U$ r)   r   )rJ   objs     r   r   __RL_SAFE_ENV__.__rl_sd__  s    	*r   c                 2    [        XR                  U 5      S9$ )N)r  )r  __weakref_ref__rJ   r  s     r   r\   __RL_SAFE_ENV__.__rl_getiter__  s    	"6"6t"<	==r   c                 n    U(       a  U/nUR                  U5        [        U R                  U5      40 UD6$ r)   )extendr  __rl_args_iter__rJ   r   r_   r  s       r   r  __RL_SAFE_ENV__.__rl_max__  3    	
3::d	T""3'	/$	//r   c                 n    U(       a  U/nUR                  U5        [        U R                  U5      40 UD6$ r)   )r"  r  r#  r$  s       r   r  __RL_SAFE_ENV__.__rl_min__  r&  r   c                 8    [        U R                  U5      U5      $ r)   )r  r#  )rJ   sequencestarts      r   r  __RL_SAFE_ENV__.__rl_sum__  s    	T""8,e	44r   c                 6    [        U R                  U5      5      $ r)   )r|   r#  rJ   seqs     r   r   __RL_SAFE_ENV__.__rl_enumerate__  s    	4((-	..r   c                     [        [        [        U5      5       Vs/ s H"  o R                  U R	                  X5      5      PM$     sn6 $ s  snf r)   )r  r  rz   r#  r   rJ   r_   is      r   r  __RL_SAFE_ENV__.__rl_zip__  sA    	ERUVZR[L\]L\q$$T%8%8%ABL\]	^^]s   )A	c                 ^     U R                  X5        g! [        [        [        4 a     gf = f)NFT)r   AttributeErrorr
   r  )rJ   r  rP   s      r   r  __RL_SAFE_ENV__.__rl_hasattr__  s5    s! 
 '9	- 
s    ,,c                 6    [        XR                  U5      5      $ r)   )r  r#  rJ   fr/  s      r   r	  __RL_SAFE_ENV__.__rl_filter__  s    	'',	--r   c                 6    [        XR                  U5      5      $ r)   )r  r#  r9  s      r   r
  __RL_SAFE_ENV__.__rl_map__  s    	Q$$S)	**r   c                 6    [        U R                  U5      5      $ r)   )r   r#  r.  s     r   r  __RL_SAFE_ENV__.__rl_any__      	T""3'	((r   c                 6    [        U R                  U5      5      $ r)   )r  r#  r.  s     r   r  __RL_SAFE_ENV__.__rl_all__  r@  r   c                 8    [        U R                  U5      40 UD6$ r)   )r  r#  )rJ   r/  r  s      r   r  __RL_SAFE_ENV__.__rl_sorted__  s    	%%c*	2T	22r   c                 6    U R                  [        U5      5      $ r)   )r#  r   r.  s     r   r  __RL_SAFE_ENV__.__rl_reversed__  s    			x}	--r   c                 8    U R                  [        U/UQ76 5      $ r)   )r\   r  )rJ   r+  r_   s      r   r  __RL_SAFE_ENV__.__rl_range__  s    			U5/$/	00r   c                 6    [        U R                  U5      5      $ r)   )r-   r#  r  s     r   r  __RL_SAFE_ENV__.__rl_set__  s    	T""2&	''r   c                 6    [        U R                  U5      5      $ r)   )r/   r#  r  s     r   r   __RL_SAFE_ENV__.__rl_frozenset__   s    	4((,	--r   c              #   R   #    U" U5       H  nU R                  XBU5      v   M     g7f)zProtect 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)r   )rJ   r  ri   	_getiter_ro   s        r   r[   +__RL_SAFE_ENV__.__rl_iter_unpack_sequence__  s(      bMb		$	$Ry	99 s   %'c                     [        U R                  U5      5      n[        U5      US   :  a  U$ US    H  u  pVU R                  XE   Xc5      XE'   M     U$ )a  Protect 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.
rv   ru   )r,   r\   rz   r   )rJ   r  ri   rN  retr   
child_specs          r   r   &__RL_SAFE_ENV__.__rl_unpack_sequence__  s^     	T  $%#
 	XY
:  >s))#(JJ38 *	*r   c                     [        U[        5      (       a[  XR                  ;  aK  U[        ;   d+  UR	                  S5      (       a+  US:w  a%  XR
                  ;  a  U(       d  g[        SU-  5      egg)zCheck 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   Fzunsafe access of %sTN)r*   strTypesr  __rl_unsafe__r   r  r
   )rJ   rP   crashs      r   __rl_is_allowed_name__&__RL_SAFE_ENV__.__rl_is_allowed_name__&  sd    
 X+++
-
DOOD$9$9
*
00
0
'$.
//
 r   c                     [        U[        5      (       a  US:X  a  [        S[        U5      -  5      eU R	                  U5        [        X/UQ76 $ )Nformatz%s.format is not implemented)r*   rU  r
   r   rX  rU   )rJ   r  ar_   s       r   r   __RL_SAFE_ENV__.__rl_getattr__4  sH    X1h;	/$s);	<<a 			r   c                    [        U5      U R                  L a?  UR                  b  X   nU$ UR                  nUR                  nUc  SnUc  XS  nU$ XU nU$ [        U[        5      (       a  U R                  U5        X   $ X   $ )Nr   )r   __slicetype__r   r+  stopr*   rU  rX  )rJ   r  r\  vr+  r`  s         r   r   __RL_SAFE_ENV__.__rl_getitem__:  s    	!W"""ffA 8 GGE66D}U|	VQ 8 
4Q
8!Hq!
&=	-r      i d   c                     [        US5      (       aA  [        US5      (       a0  [        U5      [        U5      -   U R                  :  a  [        S5      eX-   $ N__len__zexcessive lengthr  rz   r  r
   rJ   r\  bs      r   r0  __RL_SAFE_ENV__.__rl_add__Q  sH    a9 5 5	Q#a&D///	#	$$	
,r   c                     [        US5      (       a  U[        U5      -  U R                  :  d-  [        US5      (       a'  U[        U5      -  U R                  :  a  [        S5      eX-  $ rf  rh  ri  s      r   r/  __RL_SAFE_ENV__.__rl_mult__W  sY    q)SVd.A.A!A9!c!f*t/B/B"B	#	$$	
,r   c                      US:  a.  [        U[        U5      -  S-   5      U R                  :  a  [        eX-  $ !   [        U< SU< S35      e= f)Nr   rN   z**z invalid or too large)int
math_log10r  r
   ri  s      r   r1  __RL_SAFE_ENV__.__rl_pow__]  sS    8c
1Z]?1d888] 
-8	!A6	77s	   4: Ac                 B   US:X  a  U R                  X#5      $ US:X  a  X#-
  $ US:X  a  U R                  X#5      $ US:X  a  X#-  $ US:X  a  X#-  $ US:X  a  U R                  X#5      $ US:X  a  X#-  $ US:X  a  X#-	  $ US	:X  a  X#-  $ US
:X  a  X#-  $ US:X  a  X#-  $ US:X  a  X#-  $ g )Nr   r   r   r   r   r   r   r   r   r   r   r   )r0  r/  r1  )rJ   r   ra  r3  s       r   r   __RL_SAFE_ENV__.__rl_augAssign__f  s    Xdooa**XaczXd&&q++XaczXaczYtq++YqtYqtXaczXaczXaczYqtYr   c           
      F   [        USS 5      nU(       a9  [        U[        5      (       a$  UR                  S;   a  U R	                  US   5        U" U R                  U5       Vs/ s H  oUPM     sn0 UR                  5        VVs0 s H  u  pgXg_M	     snnD6$ s  snf s  snnf )N__self__)pop
setdefaultgetpopitemr   )rU   r*   r.   r   rX  r\   r  )rJ   r^   r_   r  r  r\  kra  s           r   r   __RL_SAFE_ENV__.__rl_apply__t  s    Z%#Tt}}0UUQ(	4..t454a45	W9V#!!#9V	WW59Vs   #BBc                     [        U5      S:X  aG  US   n[        U[        5      (       a  U$ [        X R                  5      (       d  U R	                  U5      $ U R	                  [        U6 5      $ r  )rz   r*   r  r  r\   rh   r2  s      r   r#   __RL_SAFE_ENV__.__rl_args_iter__{  s_    Y!^Aw1O$$H
Q,,
-
-q!!			T4[	))r   c                 6    [        U R                  U5      5      $ r)   )r,   r\   r  s     r   r  __RL_SAFE_ENV__.__rl_list__  s    	d!!"%	&&r   c                    0 nU(       d  [        XX4U(       + S9nX4$ [        R                  " XU5      n	[        S:  a  [	        S[        U	5      -  5        U" U	5      n	[        S:  a  [	        S[        U	5      -  5        [        XUS9nX4$ )N)modeflagsdont_inheritr   zpre:
%s
z	post:
%s
r  )compiler6   r"  rL  r   r  )
rJ   srcfnamer  r  inheritrE  rC   bcodeastcs
             r   __rl_compile____RL_SAFE_ENV__.__rl_compile__  s    *	3DKP5 
	 ))C
%4l	,y
&'
+4l	-	$
'(4T*5		r   c	                 @   Ub  [        U[        5      U l        Ub  [        U5      U l        U R	                  USUSS[        U R                  S9R                  S9u  pS X24;   aj  [        R                  " U5      nUc/  UR                  R                  5        VVs0 s H  u  pX_M	     snnOUnUc  UR                  R                  5       OUnOUnUnSU;   a  US   4OSnU R                  US'   U R                  5       Ub  UOU R                   -   U l        Ub  U(       a  US:X  a  [        OUO/ U l        / R$                  nU R&                  nU R(                  nU H#  u  pU" [+        UU5      5        [-        UX5        M%      [/        XU5      UR0                  n[3        U5       H  u  nu  p[-        UUUU   5        M     U(       a	  US   US'   $ $ s  snnf ! UR0                  n[3        U5       H  u  nu  p[-        UUUU   5        M     U(       a	  US   US'   f f = f)N<string>r   Tr   )r  r  r  r  rE  r  F)r3   r  r  r  r  r=   rX  rE  r  r  f_localsr  r  r  r   r  r  r  rx   r  r  rU   setattrr   ru  r|   )rJ   exprr  lr  r  r  __frame_depth__r  r  nsGnrLobisbibibirr3  s                       r   __rl_safe_eval__ __RL_SAFE_ENV__.__rl_safe_eval__  s   & +,AC\ ]4$)*=>4!!$jt1VZ
!0K0K
L
R
R " T)%	aU]
}}_%1./iqzz'')*))*Q1Yq{{A111 .! 3>	#**!N((*9LgRVR^R^_$&)> @UVZ?Z";$B 
		#||"#dawr!}
2a? 
uq/	3cNyq&1BqQ #	AAn 
/ +( 
3cNyq&1BqQ #	AAn 
s   GG AH)	r   r  r  r  r  r  r  r  r  )NNN)r   )r   )T)r  r   r   TN)NNr   N)2r   r   r   r   rG   r  weakrefrefr  r   r   r_  r    r  r  r   r\   r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r[   r   rX  r   r   r  r  r  r0  r/  r1  r  r   r#  r  r  r  r   r   r   r   r  r  ^  s    ;;eAhZ7x#'>005/_.+))3.1(.	:0& X*' ij#r   r  c                   ,    \ rS rSrSrSrS rSS jrSrg)	r  i  z&creates one environment and re-uses itr   c                     S U l         g r)   envr  s    r   r    __rl_safe_eval__.__init__  s	    $(r   Nc                     U R                   (       d  [        5       U l         U R                   R                  XX0R                  UUSUS9$ )Nr   )r  r  r  r  )r  r  r  r  )rJ   r  r  r  r  r  r  s          r   r  __rl_safe_eval__.__call__  sA    	o/48		"	"4Ayy'.*= 
# 
? ?r   r  )NNNNN)	r   r   r   r   r  r  r    r  r   r   r   r   r  r    s    -?r   r  c                       \ rS rSrSrSrg)__rl_safe_exec__i  r   r   N)r   r   r   r   r  r   r   r   r   r  r    s    r   r  c                   ^^^^^ Tc  0 mTc  0 mTR                  5       mTR                  S SSS.5        [        R                  " T5      m[        R                  " T5      m[	        U [
        5      (       a  [        R                  " U SS9n [	        U [        R                  5      (       a  U R                  n U4S jmU4S jmUUUU4S jmT" U 5      $ )	NTF)NoneTrueFalser   r  c                    > [        U [        R                  5      =(       d0    [        U [        R                  5      =(       a    U R                  T;   $ r)   )r*   r6   ry   rf   r   r  
safe_namess    r   r  *rl_extended_literal_eval.<locals>.<lambda>  s5    z!S\\2cj3886L6cQRQUQUYcQccr   c                 x   > [        U [        R                  5      (       a  U R                  $ TU R                     $ r)   )r*   r6   ry   r1   r   r  s    r   r  r    s-    Z#,,%?%?!''UZPQPTPTEUUr   c                 v  > [        U [        R                  5      (       a  U R                  $ [        U [        R                  5      (       a  [        [        TU R                  5      5      $ [        U [        R                  5      (       a  [        [        TU R                  5      5      $ [        U [        R                  5      (       a3  [        U4S j[        U R                  U R                  5       5       5      $ T	" U 5      (       a  T" U 5      $ [        U [        R                  5      (       a  [        U R                   [        R"                  [        R$                  45      (       a  [        U R&                  [        R                  [        R                  [        R(                  45      (       aA  T" U R&                  5      n[        U R                   [        R"                  5      (       a  U7$ U* $ [        U [        R(                  5      (       Ga>  [        U R                   [        R*                  [        R,                  45      (       Ga  [        U R.                  [        R                  [        R                  [        R(                  45      (       a  [        U R.                  R0                  [2        5      (       a  [        U R4                  [        R                  [        R                  [6        45      (       aU  T" U R4                  5      nT" U R.                  5      n[        U R                   [        R*                  5      (       a  X#-   $ X#-
  $ [        U [        R8                  5      (       a  [        U R:                  [        R<                  5      (       a  U R:                  R>                  T;   au  TU R:                  R>                     " U R@                   Vs/ s H  nT" U5      PM     sn0 U RB                   Vs0 s H  oURD                  T" UR                  5      _M!     snD6$ [G        S5      es  snf s  snf )Nc              3   H   >#    U  H  u  pT" U5      T" U5      4v   M     g 7fr)   r   )r   rz  ra  _converts      r   r   =rl_extended_literal_eval.<locals>._convert.<locals>.<genexpr>  s'      &	$ /3aXa[)	$s   "zBad expression)$r*   r6   ry   r1   rc   r+   r  r{   Listr,   rw   r.   r  rs   rt   UnaryOpr   UAddUSuboperandBinOpr3  Subr+  r  complexr*  astBinOpre   r^   rf   r   r_   r`   r   
ValueError)
rV   r  r*  r+  r  kwr  safe_callablessafe_extract	safe_tests
         r   r  *rl_extended_literal_eval.<locals>._convert  s   cll##
**$		""
Hdii(
))$!!
s8TYY'
(($!!
 &	TYY	$& & &
t
$$$tww388,--t||cllCKKCDDdll#7#((##99$		""tww#''*++tzzCLL#++syyABBtzz||W%%tyy3<<h?@@
499
4DJJ5#''""<<$!!tyy#((##IILLN"

&99%9ahqk9%<,0MM:Mbvvx!!M:< < 	#$$ &:s   P1;&P6)
r  r  typesMappingProxyTyper*   strr6   r"  
Expressionr   )r  r  r  r  r  r  s    ``@@@r   rl_extended_literal_evalr    s    .*ooD$?@$$Z0((8tS	4f	%$tS^^$$	$cU%% %%L 	r   c                 P    [         (       d  [        S5        [        U [         U5      $ )z$eval with our so called safe globalsz"")r  rl_safe_evalr   )r  NSs     r   rl_less_safe_evalr    s     tT&r**r   r)   rG  )?r  osr6   rer  rG   r  mathr  ro  environrx  rL  bytesr  rU  version_infor   isPy313r   r  r
   r3  r  r2  DivModr4  LShiftRShiftBitOrBitXorBitAndFloorDivMatMultr  r/   r  r3   r  rV  r  joinM__rl_unsafe_re__r;   NodeTransformerr=   r  r  r  r  log10rp  object__rl_undef__r  r  r  r  rl_safe_execr  r  r   r   r   <module>r     s   : 9 9 9 9S12
#;			"1	u	$


2A

& j 
 $$4$$%UUDTTud
$ & 	' 	   ){   F GLeg ::kCHH],CCBDDI %rc11 rh]   
 ZZ
x[ [z

? 
?' 8t  !!+r   