
    "
3j/                       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JrJrJ	r	  S SK
JrJrJr  S SKJrJr  S SKJrJrJrJr  S SKJrJrJrJr  S SKJr  S SKJr  \S	;   a  S S
KJr   O\S;   a  O\!" \5      e " S S\"5      r#\RH                  " \%5      r& " S S\"5      r'S r(S r)S r*S r+S r,S r-S r.S r/S r0S r1S r2 " S S\"5      r3\S	;   a   " S S\45      r5g\S;   a  g\!" \5      e)    N)errorsirconfig)NotDefinedErrorUnsupportedBytecodeErrorerror_extras)get_definitionguard)	PYVERSIONBINOPS_TO_OPERATORSINPLACE_BINOPS_TO_OPERATORS_lazy_pformat)FlowAdaptDFAAdaptCFA	BlockKind)eh)unpack_single_tuple      r      r      )CALL_INTRINSIC_1_Operandr   
   r      c                   $    \ rS rSrSrS rS rSrg)_UNKNOWN_VALUE   zNRepresents an unknown value, this is for ease of debugging purposes only.
    c                     Xl         g N_varname)selfvarnames     P/home/wildlama/miniconda3/lib/python3.13/site-packages/numba/core/interpreter.py__init___UNKNOWN_VALUE.__init__#   s        c                 8    SR                  U R                  5      $ )Nz_UNKNOWN_VALUE({}))formatr)   r*   s    r,   __repr___UNKNOWN_VALUE.__repr__&   s    #**4==99r/   r(   N)__name__
__module____qualname____firstlineno____doc__r-   r3   __static_attributes__ r/   r,   r$   r$      s     :r/   r$   c                   *    \ rS rSrSrS rS rS rSrg)Assigner-   a  
This object keeps track of potential assignment simplifications
inside a code block.
For example `$O.1 = x` followed by `y = $0.1` can be simplified
into `y = x`, but it's not possible anymore if we have `x = z`
in-between those two instructions.

NOTE: this is not only an optimization, but is actually necessary
due to certain limitations of Numba - such as only accepting the
returning of an array passed as function argument.
c                 n    0 U l         [        R                  " [        5      U l        [        5       U l        g r'   )dest_to_srccollectionsdefaultdictlistsrc_invalidatesetunused_destsr2   s    r,   r-   Assigner.__init__:   s)     *55d;Er/   c                    UR                   nUR                   nX@R                  ;   a=  U R                  R                  U5       H  nU R                  R                  U5        M      X0R                  ;   a  U R                  U   nUR                  (       aG  XR                  U'   U R                  U   R                  U5        U R                  R                  U5        U$ )z
Assign *srcvar* to *destvar*. Return either *srcvar* or a possible
simplified assignment source (earlier assigned to *srcvar*).
)namerD   popr@   is_tempappendrF   add)r*   srcvardestvarsrcnamedestnameds         r,   assignAssigner.assignB   s    
 ++<<*** ((,,X6  $$Q' 7&&&%%g.F??)/X&(//9!!(+r/   c                 v    XR                   ;   a  U R                   U   $ U R                  R                  U5        g)z]
Get a possible assignment source (a ir.Var instance) to replace
*destname*, otherwise None.
N)r@   rF   discard)r*   rQ   s     r,   get_assignment_sourceAssigner.get_assignment_sourceV   s8    
 '''##H--!!(+r/   )r@   rD   rF   N)	r5   r6   r7   r8   r9   r-   rS   rW   r:   r;   r/   r,   r=   r=   -   s    
"(r/   r=   c                     X   R                   R                  nX   R                  nXRR                  U   ;   a2  UR                  U   R	                  U5        X4   R                  U5        gXSU   ;  a  [        S5      eg)a  
Deletes the definition defined for old_body at index idx
from func_ir. We assume this stmt will be deleted from
new_body.

In some optimizations we may update the same variable multiple times.
In this situation, we only need to delete a particular definition once,
this is tracked in already_deleted_def, which is a map from
assignment name to the set of values that have already been
deleted.
zInconsistency found in the definitions while executing a peephole optimization. This suggests an internal error or inconsistency elsewhere in the compiler.N)targetrI   value_definitionsremoverM   r   )old_bodyidxfunc_iralready_deleted_defslhsrhss         r,   _remove_assignment_definitionrd   a   s     -


#
#C
-

C
""3''S!((-!%%c*	-	-&A
 	
 
.r/   c                     UR                   R                  5       nUR                  nUR                  5        H  u  pXU	   S   4Xi'   M     SX#'   [        XXE5        U$ )a  
Extracts the kws args passed as varkwarg
for CALL_FUNCTION_EX. This pass is taken when
n_kws <= 15 and the bytecode looks like:

    # Start for each argument
    LOAD_FAST  # Load each argument.
    # End for each argument
    ...
    BUILD_CONST_KEY_MAP # Build a map

In the generated IR, the varkwarg refers
to a single build_map that contains all of the
kws. In addition to returning the kws, this
function updates new_body to remove all usage
of the map.
   N)itemscopyvalue_indexesrd   )
r^   keyword_exprnew_bodybuildmap_idxr`   ra   kwsri   keyindexs
             r,   #_call_function_ex_replace_kws_smallrp   z   sj    2 


!
!
#C !..M#))+
u:a=)
 , "H! Jr/   c                    SXB'   [        XXW5        / nUS-   n	X::  Ga  X	   n
[        U
[        R                  5      (       a)  [        U
R                  [        R
                  5      (       d  [        U5      eU
R                  R                  nU
R                  R                  nU	S-  n	SnX::  a  U(       d  X	   n[        U[        R                  5      (       a  [        UR                  [        R                  5      (       a[  UR                  R                  S:X  aA  UR                  R                  R                  U:X  a  UR                  R                  S:X  a  SnOU	S-  n	X::  a	  U(       d  M  U(       a  X:X  a  [        U5      eX	S-      n[        U[        R                  5      (       a  [        UR                  [        R                  5      (       a  UR                  R                  S:X  a  UR                  R                  R                  WR                  R                  :X  aJ  [        UR                  R                  5      S:X  a'  UR                  R                  S	   R                  U:X  d  [        U5      eUR                  R                  S   nUR                  UU45        SXI'   SXIS-   '   [        X	XW5        [        X	S-   XW5        U	S-  n	X::  a  GM  U$ )
a  
Extracts the kws args passed as varkwarg
for CALL_FUNCTION_EX. This pass is taken when
n_kws > 15 and the bytecode looks like:

    BUILD_MAP # Construct the map
    # Start for each argument
    LOAD_CONST # Load a constant for the name of the argument
    LOAD_FAST  # Load each argument.
    MAP_ADD # Append the (key, value) pair to the map
    # End for each argument

In the IR generated, the initial build map is empty and a series
of setitems are applied afterwards. THE IR looks like:

    $build_map_var = build_map(items=[])
    $constvar = const(str, ...) # create the const key
    # CREATE THE ARGUMENT, This may take multiple lines.
    $created_arg = ...
    $var = getattr(
        value=$build_map_var,
        attr=__setitem__,
    )
    $unused_var = call $var($constvar, $created_arg)

We iterate through the IR, deleting all usages of the buildmap
from the new_body, and adds the kws to a new kws list.
Nrf   Fgetattr__setitem__Tcall   r   )rd   
isinstancer   Assignr[   Constr   rZ   rI   ExpropattrfunclenargsrL   )r^   buildmap_namerl   
search_endrk   r`   errmsgra   rm   search_start
const_stmtkey_var_namekey_valfound_getattrgetattr_stmtsetitem_stmtarg_vars                    r,   #_call_function_ex_replace_kws_larger      s   N "H! C!#L

$+
z299--:++RXX66 +622!((--""((&!#1L<33|11277;; &&))Y6 &&,,11$% !&&++}< $$ !A &!MB ) +622q 01|RYY//<--rww77""%%/""'',,&&++, L&&++,1""''*//  +622$$))!,

GW%&!%%)!"%G	
 	&Q&	
 	s 
$t Jr/   c                 :    SX#'   [        XXE5        UR                  $ )a  
Extracts the args passed as vararg
for CALL_FUNCTION_EX. This pass is taken when
n_args <= 30 and the bytecode looks like:

    # Start for each argument
    LOAD_FAST  # Load each argument.
    # End for each argument
    ...
    BUILD_TUPLE # Create a tuple of the arguments

In the IR generated, the vararg refer
to a single build_tuple that contains all of the
args. In addition to returning the args, this
function updates new_body to remove all usage
of the tuple.
N)rd   rg   )r^   
tuple_exprrk   buildtuple_idxr`   ra   s         r,   $_call_function_ex_replace_args_smallr   .  s'    4  $H!' r/   c                    Sn/ n[        U[        R                  5      (       aU  [        UR                  [        R                  5      (       a,  UR                  R
                  n	SX#'   [        XXF5        US-  nO[        S5      eX7:  GaA  X   n
[        U
[        R                  5      (       a  U
R                  R
                  U	:X  ap  [        U
R                  [        R                  5      (       aG  U
R                  R                  S:X  a-  U
R                  R                  (       d  SX#'   [        XXF5        GOX7:X  d  [        U
[        R                  5      (       a  U
R                  R
                  U	:X  ak  [        U
R                  [        R                  5      (       aB  U
R                  R                  S:X  a(  U
R                  R                  [        R                  :X  d  [        U5      eU
R                  R                   R
                  nU
R                  R"                  R
                  nXS-
     n[        U[        R                  5      (       af  [        UR                  [        R                  5      (       a=  UR                  R                  S:X  a#  [%        UR                  R                  5      S:X  d  [        U5      eUR                  R
                  U:X  a  [        S5      eUR                  R
                  U:X  a  Un	O[        U5      eUR'                  UR                  R                  S   5        SX#'   SX#S-
  '   [        XXF5        [        XS-
  XF5        US-  nSnX7:  aZ  U(       aS  X   n[        U[        R                  5      (       a  UR                  R
                  U	:X  a  S	nOUS-  nX7:  a	  U(       a  MS  X7:  a  GMA  X7:X  a  [        U5      eUSSS
2   $ )a  
Extracts the args passed as vararg
for CALL_FUNCTION_EX. This pass is taken when
n_args > 30 and the bytecode looks like:

    BUILD_TUPLE # Create a list to append to
    # Start for each argument
    LOAD_FAST  # Load each argument.
    LIST_APPEND # Add the argument to the list
    # End for each argument
    ...
    LIST_TO_TUPLE # Convert the args to a tuple.

In the IR generated, the tuple is created by concatenating
together several 1 element tuples to an initial empty tuple.
We traverse backwards in the IR, collecting args, until we
find the original empty tuple. For example, the IR might
look like:

    $orig_tuple = build_tuple(items=[])
    $first_var = build_tuple(items=[Var(arg0, test.py:6)])
    $next_tuple = $orig_tuple + $first_var
    ...
    $final_var = build_tuple(items=[Var(argn, test.py:6)])
    $final_tuple = $prev_tuple + $final_var
    $varargs_var = $final_tuple
r   Nrf   unreachablebuild_tuplebinopru   TF)rv   r   rw   r[   VarrI   rd   AssertionErrorrZ   ry   rz   rg   fnoperatorrM   r   rb   rc   r}   rL   )r^   vararg_stmtrk   r   r`   r   ra   r   
total_argstarget_nameconcat_stmtlhs_namerhs_namearg_tuple_stmtkeep_looking	next_stmts                   r,   $_call_function_ex_replace_args_larger   Q  sb   L LJ;		**{(("&&11!'',,#%'	
 	a

 ]++ 
$*{BII..""'';6;,,bgg66!!$$5%%++#'H )g  *;		22&&++"# %%rww   %%((G3%%((HLL8 /v66"((,,11H"((,,11H &1n5N>29955"(("''  #((++$% ,,223q8 /v66$$))X5$]33&&++x7& /v66$$**1- $(H '+H!^$)g *q.' !OJL,$0	y"))44!((--&' $)L( !OJ; ,U 
$P ! 'v..ddr/   c                 J   [         R                  " S5      n[        R                  " [        5      nU R
                  R                  5        GH  nSn/ n[        UR                  5       GHW  u  pg[        U[        R                  5      (       Ga  [        UR                  [        R                  5      (       Ga  UR                  R                  S:X  Ga  UR                  R                  Gb  SnUR                  nUR                   n	UR"                  n
UR$                  nUR                  nUS-
  nUnSnSnUS:  ap  U(       di  UR                  U   n[        U[        R                  5      (       a'  UR&                  R(                  UR(                  :X  a  SnOUS-  nUS:  a	  U(       d  Mi  U
(       dJ  U(       aC  [        UR                  [        R                  5      (       a  UR                  R                  S:X  d  [+        U5      eUR                  R,                  (       a%  [/        UR                  UR                  UUU U5      n
O)[1        UR                  UR(                  UUS-
  UU UU5      n
UnUGbq  U	(       a  [+        U5      eUnSnSnUS:  ap  U(       di  UR                  U   n[        U[        R                  5      (       a'  UR&                  R(                  UR(                  :X  a  SnOUS-  nUS:  a	  U(       d  Mi  U(       d  [+        U5      e[        UR                  [        R                  5      (       a?  UR                  R                  S	:X  a%  [3        UR                  UR                  UUU U5      n	Oi[        UR                  [        R                  5      (       a%  UR                  R                  S
:X  a  [+        U5      e[5        UR                  UUUU UU5      n	[        R                  R7                  UR8                  XUR:                  UR&                  S9n[=        UR                  X`U5        [        R                  " UUR&                  UR:                  5      nU R>                  UR&                  R(                     RA                  U5        GO[        U[        R                  5      (       a  [        UR                  [        R                  5      (       a  UR                  R                  S:X  a  UR                  R$                  b  UR                  nUR$                  R(                  nUU R>                  ;   ah  [C        U R>                  U   5      S:X  aL  U R>                  U   S   n[        U[        R                  5      (       a  UR                  S
:X  a  [+        U5      eURA                  U5        GMZ     U(       d  GM  UR                  RE                  5         UR                  RG                  U Vs/ s H
  nUc  M  UPM     sn5        GM     U $ s  snf )a/  
This peephole rewrites a bytecode sequence unique to Python 3.10
where CALL_FUNCTION_EX is used instead of CALL_FUNCTION_KW because of
stack limitations set by CPython. This limitation is imposed whenever
a function call has too many arguments or keyword arguments.

https://github.com/python/cpython/blob/a58ebcc701dd6c43630df941481475ff0f615a81/Python/compile.c#L55
https://github.com/python/cpython/blob/a58ebcc701dd6c43630df941481475ff0f615a81/Python/compile.c#L4442

In particular, this change is imposed whenever (n_args / 2) + n_kws > 15.

Different bytecode is generated for args depending on if n_args > 30
or n_args <= 30 and similarly if n_kws > 15 or n_kws <= 15.

This function unwraps the *args and **kwargs in the function call
and places these values directly into the args and kwargs of the call.
a  
        CALL_FUNCTION_EX with **kwargs not supported.
        If you are not using **kwargs this may indicate that
        you have a large number of kwargs and are using inlined control
        flow. You can resolve this issue by moving the control flow out of
        the function call. For example, if you have

            f(a=1 if flag else 0, ...)

        Replace that with:

            a_val = 1 if flag else 0
            f(a=a_val, ...)Frt   NTrf   r   	build_mapr   list_to_tuple)rZ   )$textwrapdedentrA   rB   rE   blocksvalues	enumeratebodyrv   r   rw   r[   ry   rz   varkwargr~   rm   varargrZ   rI   r   rg   rp   r   r   r   rt   r|   locrd   r\   rL   r}   clearextend)r`   r   ra   blkblk_changedrk   istmtrt   r~   rm   r   r   start_searchvarkwarg_lockeyword_deffound
vararg_locargs_defnew_callvararg_nameexprxs                          r,   .peep_hole_call_function_ex_to_call_function_kwr     s   ( __   F '2237~~$$& *GA4++tzz27733JJMMV+JJ''3"zzyyhh == 1u+""a'"%((<"8K";		::'..33x}}D $$) #a'  ";#4#4bgg>>'--00K? 36::$$** >#)) $,C* > $A ,	C  ,% 7v>>!-J#H!E$/%#&88J#7&x;; ( 4 4 C$(E&!OJ %/%% ! 7v>>"8>>277;;$NN-->  DHH$NN$&#0  #8>>277;;$NN--@
 7v>>0  DHH$$&#"0  77<<IIt$((4;; (  .HHa*> yy4;;A$$T[[%5%56==hG4++tzz27733JJMMV+JJ%%1
 zz"kk..7#7#77G00=>!C #//<Q?D!$00TWW5O6v>>OOD!a +d ;HHNNHHOOB1AQBCo 'p N Cs   X 
X 
c           
        ^ ^^ SnT R                   R                  5        GH  u  nm U4S jnU" 5       nUGb}  TR                  US   S   US   S    nU(       a*  [        S5        U H  n[        U5        M     [        S5        / n/ nUS   S   n	U	R                  R
                  n
U H  n[        U[        R                  5      (       d  M$  [        UR                  [        R                  5      (       d  MO  UR                  nUR                  S:X  d  Mm  UR                  R
                  U
:X  d  M  UR                  S	:X  a'  UR                  UR                  R
                  5        M  UR                  S
:X  a'  UR                  UR                  R
                  5        M   e   / mU U4S jnU	R                  nU(       a  [        S5        TR                  5         US   S   nUnU GH  n[        U[        R                  5      (       Ga  [        UR                  [        R                  5      (       Gan  UR                  nUR                  S:X  ax  UR                  R
                  U;   d  UR                  R
                  U;   a1  T R                  R!                  UR                  R
                  5        M  TR                  U5        M  UR                  S:X  Ga   UR"                  R
                  nUU;   d  UU;   Ga  UR$                  S   n[        U[        R&                  5      (       Ga?  U< SUR
                  < 3nUU;   a,  [        R                  R)                  U/UR*                  5      nO[        R,                  " S[.        UR*                  S9nUR0                  R3                  SUR*                  S9nTR                  [        R                  " UUUR*                  S95        [        R                  R5                  UU4SUR*                  S9n[        R&                  " UR0                  UUR*                  5      n[        R                  " UUUR*                  5      nU" U5        Un[        R                  R7                  [8        R:                  UUUR*                  S9n[        R                  " UUR                  UR*                  5      nU" U5        UR                  nGM  TR                  U5        GM  UR                  S:X  a  UR                  R
                  U
:X  ak  [        R                  R)                  UR                  UR*                  5      n[        R                  " UUR                  UR*                  5      nU" U5        GM  TR                  U5        GM  TR                  U5        GM  TR                  U5        GM     U" [        R                  " XR                  UR*                  5      5        U(       a  [        S5        T H  n[        U5        M     TR                  SS nUSUS   S    nTR                  US   S   S-   S nUT-   U-   nTR                  R=                  5         TR                  R?                  U5        U(       a  [        S5        TR                  5         OGM  GM     T $ )a_  
This peephole rewrites a bytecode sequence new to Python 3.9 that looks
like e.g.:

def foo(a):
    return (*a,)

41          0 BUILD_LIST               0
            2 LOAD_FAST                0 (a)
            4 LIST_EXTEND              1
            6 LIST_TO_TUPLE
            8 RETURN_VAL

essentially, the unpacking of tuples is written as a list which is appended
to/extended and then "magicked" into a tuple by the new LIST_TO_TUPLE
opcode.

This peephole repeatedly analyses the bytecode in a block looking for a
window between a `LIST_TO_TUPLE` and `BUILD_LIST` and...

1. Turns the BUILD_LIST into a BUILD_TUPLE
2. Sets an accumulator's initial value as the target of the BUILD_TUPLE
3. Searches for 'extend' on the original list and turns these into binary
   additions on the accumulator.
4. Searches for 'append' on the original list and turns these into a
   `BUILD_TUPLE` which is then appended via binary addition to the
   accumulator.
5. Assigns the accumulator to the variable that exits the peephole and the
   rest of the block/code refers to as the result of the unpack operation.
6. Patches up
Fc                    > Sn [        [        [        TR                  5      5      5       H  nTR                  U   n[	        U[
        R                  5      (       aO  UR                  n[	        U[
        R                  5      (       a$  UR                  S:X  a  UR                  S   nSn X4nU (       d  M  [	        U[
        R                  5      (       d  M  UR                  R                  W:X  d  M  WX44nUs  $    g )NFr   r   T)reversedranger}   r   rv   r   rw   r[   ry   rz   inforZ   rI   )r   r_   r   r[   target_listbtregionr   s          r,   find_postive_region4peep_hole_list_to_tuple.<locals>.find_postive_region$  s    #E#chh-$89C88C=D!$		22 $

&ubgg66 %O ;*/**Q-K$(E"%Bu%dBII66#{{//;>*,sk):'- :r/   Nrf   r   z
WINDOW: rr   r   rL   c                   > TR                  U 5        U R                  R                  TR                  ;   ac  [	        TR                  U R                  R                     5      S:X  d   eTR                  U R                  R                     R                  5         TR                  U R                  R                     R                  U R                  5        g)z-Adds to the new_hole and fixes up definitionsrf   N)rL   rZ   rI   r\   r}   r   r[   )r   r`   new_holes    r,   append_and_fix/peep_hole_list_to_tuple.<locals>.append_and_fixW  s    OOA&xx}}(<(<<  #7#7#7#FG1LLL,,QXX]];AAC((7>>qwwGr/   z
BLOCK:rt   _var_tuplerI   r[   r   $_list_extend_gv_tupler   )rZ   r[   r   r;   r   rb   rc   r   
build_listz

NEW HOLE:z
DUMP post hole:) r   rg   r   printrZ   rI   rv   r   rw   r[   ry   rz   r{   rL   dumpr\   rJ   r|   r~   r   r   r   Globalr   scoperedefinert   r   r   rM   r   r   )r`   _DEBUGoffsetr   r   	peep_holer   appendsextendsinit
const_listr   r   the_build_listt2l_agnaccfnameargtmp_namer   gv_tuple	tuple_varvarasgnnewcpyheadtailtmpr   r   s   `                            @@r,   peep_hole_list_to_tupler     s3   @ F ~~++-." )*F!HHVAYq\F1IaLA	+&&a '"Iay|![[--
 #A!!RYY//%aggrww77#$77D $9 4$(JJOOz$A $(99#8$+NN188==$A%)YY(%:$+NN188==$A$,1 #  	H "& *%HHJ !)A,$"A!!RYY//%aggrww77#$77D#ww)3$%HHMMW$<()(@ %,$8$8$<$<QXX]]$K$, %-OOA$6!%F!2(,		#(G#3u7G*.))A,C'1#rvv'>'>BGBE((4L+0G+;131D1DcVEIXX2OB 8:yy5<E48HH8.H 9<		8J8J0H48HH 9K 9.I -5OO02		;D:B8<12-. 2409C6248HH 2> 2.B /1ffSYY59XX/?/1yyS$((/K(6t(<.1 +-''--8<<<?<?<=EE +8 +CC ,.99S!((DHH+MD$24$8*.++C %-OOA$6"&''\"9$%HHMMZ$?&(gg&9&9$**dhh&O')yyahh'I .t 4 ( 2$OOA. !*[ #` ryynn)7);); = >-(%a & hhqk=F1IaL)xxq	!q 0 12Xo, $-.HHJ i  .p Nr/   c                    [        5       nU R                  R                  5        GH1  nUR                   H  n[        UR	                  5       5      nU H6  nUR
                  R                  S5      (       d  M%  UR                  U5        M8     XA-  (       d  Mc  [        U[        R                  5      (       d  M  UR                  UR                  5        M     / nUR                   H7  n[        UR	                  5       5      U-  (       a  M&  UR                  U5        M9     UR                  R                  5         UR                  R                  U5        GM4     U $ )z\
This rewrite removes variables used to store the `__exit__` function
loaded by SETUP_WITH.
z$setup_with_exitfn)rE   r   r   r   	list_varsrI   
startswithrM   rv   r   rw   rZ   rL   r   r   )r`   	dead_varsr   r   usedvrk   s          r,   peep_hole_delete_with_exitr     s    
 I~~$$&HHD t~~'(D66$$%9::MM!$ 
 dBII..MM$++.  HHD()I55%  	!) ', Nr/   c           
      
   [         R                  " S5      n[        R                  " [        5      nU R
                  R                  5        GH   n/ n0 n[        R                  " [        5      n0 nSn[        UR                  5       GH  u  pU
nSn[        U
[        R                  5      (       GaN  [        U
R                  [        R                  5      (       Ga$  U
R                  R                  S:X  a  U
R                   R"                  nXU
R                   R"                  '   XjR                   R"                     R%                  U	5        U
R                  R&                  R)                  5       XzR                   R"                  '   GOyU
R                  R                  S:X  Ga^  U	S:  GaW  U
R                  R*                  R"                  nUR                  U	S-
     nU
R                  R,                  n[        U[        R                  5      (       Ga  UR                   R"                  U:X  Ga  [        UR                  [        R                  5      (       Ga  UR                  R                  S:X  Ga  UR                  R.                  S	;   Gat  UR                  R                  R"                  nUR                  R.                  nUS
:X  a5  UU;   a/  UU   R%                  U5        UU   R1                  U	S-
  U	/5        GOUS:X  a  US   R"                  nUU;   a  UU;   a  UU   R1                  UU   5        UU   R1                  UU   5        UU   R%                  U	S-
  5        UU    H   n[3        UR                  UU U5        SUU'   M"     UU	 UU	 UU	 [3        UR                  XU5        [5        U UUR                  UU   UU   5      nUU   R7                  5         UU   R%                  U	5        SnO[9        U5      e[        U
[        R                  5      (       a  [        U
R                  [        R                  5      (       aX  U
R                  R                  S:X  a>  U
R                  R                  R"                  U;   a  U
R                  R.                  S	;   db  U
R;                  5        HN  nUR"                  U;   d  M  UR"                  U:w  d  M'  UUR"                  	 UUR"                  	 UUR"                  	 MP     UR%                  U5        GM     U(       d  GM  UR                  R7                  5         UR                  R1                  U Vs/ s H
  nUc  M  UPM     sn5        GM#     U $ s  snf )a?  
This rewrite removes d1._update_from_bytecode(d2)
calls that are between two dictionaries, d1 and d2,
in the same basic block. This pattern can appear as a
result of Python 3.10 bytecode emission changes, which
prevent large constant literal dictionaries
(> 15 elements) from being constant. If both dictionaries
are constant dictionaries defined in the same block and
neither is used between the update call, then we replace d1
with a new definition that combines the two dictionaries. At
the bytecode translation stage we convert DICT_UPDATE into
_update_from_bytecode, so we know that _update_from_bytecode
always comes from the bytecode change and not user code.

Python 3.10 may also rewrite the individual dictionaries
as an empty build_map + many map_add. Here we again look
for an _update_from_bytecode, and if so we replace these
with a single constant dictionary.

When running this algorithm we can always safely remove d2.

This is the relevant section of the CPython 3.10 that causes
this bytecode change:
https://github.com/python/cpython/blob/3.10/Python/compile.c#L4048
a  
        A DICT_UPDATE op-code was encountered that could not be replaced.
        If you have created a large constant dictionary, this may
        be an an indication that you are using inlined control
        flow. You can resolve this issue by moving the control flow out of
        the dicitonary constructor. For example, if you have

            d = {a: 1 if flag else 0, ...)

        Replace that with:

            a_val = 1 if flag else 0
            d = {a: a_val, ...)FNr   rt   r   rf   rr   )rs   _update_from_bytecoders   r   T)r   r   rA   rB   rE   r   r   rC   r   r   rv   r   rw   r[   ry   rz   rZ   rI   rL   rg   rh   r|   r~   r{   r   rd   _build_new_build_mapr   r   r   )r`   r   ra   r   rk   lit_map_def_idxlit_map_use_idxmap_updatesr   r   r   new_inststmt_build_map_out	func_namer   r~   update_map_namer{   d2_map_namelinenumr   r   s                         r,   peep_hole_fuse_dict_add_updatesr    s   D __ # $F '2237~~$$&
 &11$7 *GAH "&$		**z$**bgg/N/N::==K/)-)9)9& 9:DKK$4$45#KK$4$45<<Q?48JJ4D4D4I4I4KK 0 01ZZ]]f,Q !%

 4 4I $'88AE?L::??D"<;;(//44	A&|'9'9277CC(..11Y>(..33 8  +7*<*<*B*B*G*G+1166 M1./A'8??E ,O<CCQUAJO!%<<*.q',,K /? B#./#A !,O < C C$/$<!" !0 @ G G$3K$@!" !0 @ G GA N/>/OG$A(+(/(/(<	%& 9=HW$5 0P %4K$@$3K$@$/$< !>$'HHa:N!" ,@$+$3$'HH$3O$D$/$@," !0 @ F F H / @ G G J.2 '?v&F F 4++tzz27733JJMMY.JJ$$))_<JJOO'OO>>+C
 O3HH(::+CHH5+CHH5'1 , OOH%m +p ;HHNNHHOOB1AQBCQ 'T N Cs   U2
U2
c           	         0 n[        U R                  R                  5       5      n[        U5       GH  u  nu  pE/ n[        UR                  5       H7  u  px[        U[        R                  5      (       d  M&  UR                  U5        M9     U(       d  Md  / n	U H  n[        R                  " UR                  UR                  S9n
U
R                  R                  UR                  SU 5        U	R                  U
5        [        R                  " UR                  UR                  S9nUR                  R                  UR                  U   5        U	R                  U5        M     UnU	 HE  nXU'   US-   nUR                  R                  [        R                  " XR                  S95        UnMG     US-   [        U5      :  a$  XUS-      S   :  a  [        R                   " S5      e[        R                  " UR                  UR                  S9nUR                  R                  UR                  US   S-   S 5        XU'   GM     U R                  R#                  U5        U $ )z
Split blocks that contain ir.PopBlock.

This rewrite restores the IR structure to pre 3.11 so that withlifting
can work correctly.
r   Nrf   r   zPOP_BLOCK peephole failedr   )sortedr   rg   r   r   rv   r   PopBlockrL   Blockr   r   r   Jumpr}   r   InternalErrorupdate)r`   new_block_mapsorted_blocksblk_idxlabelr   pop_block_locsr   inst
new_blocks
before_blk
popblk_blk
prev_labelnewblk
next_labeltail_blks                   r,   peep_hole_split_at_pop_blockr    s    M7>>//12M!*=!9% *GA$,,%%a( + >J#XXciiSWW=
&&sxx|4!!*-XXciiSWW=
&&sxx{3!!*- $ J$,2j)'!^
""277:77#CD'
	 % {S//w{!;A!>> !../JKKxx		sww7HMM  .*<q*@*A!BC(0*%E ":H NN-(Nr/   c                 D   X#   nUR                   nUR                  n/ n/ n	U GH   n
U
u  p[        [        X5      n[	        U[
        R                  [
        R                  [
        R                  45      (       a  UR                  UR                  5        [        [        X5      n[	        U[
        R                  [
        R                  [
        R                  45      (       a  U	R                  UR                  5        M  U	R                  [        UR                  5      5        GM     0 n[        U5      [        U5      :X  a;  [        X5       VVs0 s H	  u  nnUU_M     nnn[        U5       H
  u  nnUX'   M     OSn[
        R                  R!                  U[        U5      UUUR"                  S9nU R$                  U   R                  U5        [
        R&                  " U[
        R(                  " UR*                  XR"                  5      UR"                  5      $ s  snnf )z[
Create a new build_map with a new set of key/value items
but all the other info the same.
Nrg   sizeliteral_valueri   r   )rZ   r[   r
   r	   rv   r   rx   r   FreeVarrL   r$   rI   r}   zipr   ry   r   r   r\   rw   r   r   )r`   rI   r^   
old_lineno	new_items
old_assign
old_targetold_bmliteral_keysr   pairkr   key_def	value_defri   r   yr  r   new_bms                        r,   r   r   	  s   
 %J""JFL F3g"))RZZ@AA..'5	i"((BIIrzz!BCCMM)//* MM.01  M
<C	N**-l*CD*C$!QA*CDl+DAq M ,  WW^##JJ  F %%f- 99z''~~>

 ) Es   Hc                      \ 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SS jrS rS rS rS rS rS rS rS rS r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rS r SS jr!S  r"SS! jr#S" r$\%S#;   a  \$r&O\%S$;   a  O\'" \%5      eS% r(S& r)S' r*S( r+S) r,S* r-S+ r.S, r/S- r0S. r1S/ r2S0 r3\%S1;   a  S2 r4O\%S3;   a  O\'" \%5      e\%S1;   a  S4 r5O\%S3;   a  O\'" \%5      eS5 r6S6 r7S7 r8S8 r9S9 r:S: r;S; r<S< r=S= r>S> r?S? r@S@ rASA rB\%SB;   a  SSC jrCO\BrC\%SB;   a
  SD rDSE rESF rFO\%SG;   a  O\'" \%5      e\%S1;   a  \CrGSH rHO\%S3;   a  O\'" \%5      e\%S#;   a  \CrI\DrJO\%S$;   a  O\'" \%5      eSI rKSJ rLSK rM\MrN\MrOSL rPSM rQSN rRSO rS\%S#;   a  SP rTO\%S$;   a  O\'" \%5      e\%SQ;   a  SR rUO\%SS;   a  ST rUO\'" \%5      eSU rV\%SQ;   a  SV rWO\%SS;   a  SW rWO\'" \%5      e\%SQ;   a  SX rX\%SQ;   a  SY rYO\%SS;   a  SZ rYO\'" \%5      eS[ rZSS\ jr[\%S#;   a  O\%S$;   a  S] r\O\'" \%5      eS^ r]S_ r^S` r_Sa r`Sb raSc rbSd rc\%SB;   a  Se rdO\%Sf:  d   eSg reSh rfSi rgSj rhSk riSl rjSm rkSn rlSo rmSp rn\%S#;   a  O\%S$;   a  Sq roO\'" \%5      eSr rpSs rqSt rrSu rsSv rtSw ruSx rvSy rwSz rxS{ ryS| rzS} r{S~ r|S r}S r~S rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\rSS jrS r\%S1;   a  S rO\%S3;   a  O\'" \%5      e\%SB;   a  S rO\%SG;   a  O\'" \%5      eS rS rS rSS jrS rS rS rS rS rS r\%S1;   a  S rS rO\%S3;   a  O\'" \%5      eS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\%SQ;   a  S rO\%SS;   a  S rO\'" \%5      eS rS rS r\%S#;   a  O\%S$;   a  S rO\'" \%5      eS rS r\%S1;   a  S rO\%S3;   a  O\'" \%5      e\%S#;   a  S rO\%S$;   a  O\'" \%5      e\%S#;   a  S rSrg\%S$;   a  Srg\'" \%5      e)Interpreteri>  z2A bytecode interpreter that builds up the IR.
    Fc                    Xl         U R                  (       a  [        UR                  5        UR                  U l        UR
                  U l        [        R                  R                  U5      =U l	        U l
        UR                  U l        0 U l        [        R                  " [        5      U l        [#        5       U l        g r'   )func_id_DEBUG_PRINTr   r|   	arg_count	arg_namesr   Locfrom_function_idr   	first_locis_generatorr   rA   rB   rC   definitionsrE   _exception_vars)r*   r/  s     r,   r-   Interpreter.__init__D  s    ',, ** **$&FF$;$;G$DD4>#00 &2248  #ur/   c           	         Xl         / U l        [        R                  " SU R                  S9nU R                  R                  U5        [        U5      nUR                  5         [        U5      U l	        [        U5      U l        [        R                  (       a  U R                  R                  5         SU l        SU l        SnU R                  R"                  R%                  5        H7  u  pVUR&                  (       d  M  [)        U[)        UR&                  5      5      nM9     X@l        [,        S;   aR  [/        U R                   R0                   Vs/ s H!  nUR2                  U R*                  :  d  M  UPM#     sn5      U l        O[,        S;   a  O[7        [,        5      e/ U l        SU l        U R                  R                  [        R                  " U R<                  U R                  S95        U R?                  5        H  u  pU RA                  X5        M     [,        S;   a  U RC                  5         O[,        S;   a  O[7        [,        5      eU RE                  5         [        RF                  " U R"                  U RH                  U RJ                  U RL                  U RN                  U RP                  U RR                  5      n
[T        RW                  [Y        U
S S	95        / n[,        S;   a  UR                  [Z        5        [,        S
;   a  UR                  [\        5        UR                  [^        5        [,        S
;   a*  UR                  [`        5        UR                  [b        5        U Re                  X5      nU$ s  snf )z 
Generate IR for this bytecode.
N)parentr   r   r   r   r!   r   r   r   r   c                 "    U R                  5       $ r'   )dump_to_stringr   s    r,   <lambda>'Interpreter.interpret.<locals>.<lambda>  s    8H8H8Jr/   )	lazy_func)r   r!   r   r   r   )3bytecodescopesr   Scoper   rL   r   runr   dfar   cfar   DUMP_CFGr   current_blockcurrent_block_offsetr   rg   r   maxlast_active_offsetr   r   exception_entriesstartactive_exception_entriesNotImplementedErrorsyntax_blocksdfainfocurrent_scope
_iter_inst	_dispatch_end_try_blocks_legalize_exception_vars
FunctionIRr6  r/  r5  r7  r1  r2  _loggerdebugr   r  r   r   r   r  post_process)r*   rD  global_scopeflowrN  _inst_blocksentryr  rm   r`   	peepholespost_processed_irs                r,   	interpretInterpreter.interpretU  s    !xxt:<(H~
D>D>??HHMMO "$(!"hhoo335NA%();),[-=-=)>&@" 6 #533,1$(MM$C$C ;$C5KK$"9"99 $C ;-<D) ,,%i002884+=+=488LM *IDNN4% +<<  "*$%i00%%'--T->-> $0@0@ $@ 	mG.JL 	M
 	<<9:EE4534EE
 KL<= --iA  _;s   M80M8c                 (    U H  nU" U5      nM     U$ r'   r;   )r*   rc  r`   peeps       r,   r]  Interpreter.post_process  s    D7mG r/   c           	      "  ^ ^ [         S;   d   eT R                  R                  nT R                  R	                  5        H  u  nmT R
                  R                  U   R                  nUR                  U5       H  u  pET R
                  R                  U   R                  n[        [        X65      5       H  u  nu  pX:w  d  M    O    [        [        U5      [        U5      5      nUU 4S jn
U
" [        XgS 5      5      (       d  M    M     M     g)a  Closes all try blocks by inserting the required marker at the
exception handler

This is only needed for py3.11 because of the changes in exception
handling. This merely maps the new py3.11 semantics back to the old way.

What the code does:

- For each block, compute the difference of blockstack to its incoming
  blocks' blockstack.
- If the incoming blockstack has an extra TRY, the current block must
  be the EXCEPT block and we need to insert a marker.

See also: _insert_try_block_end
r<  c                 0  > U (       a  U R                  5       nUS   [        S5      :X  ab  TTl        [        TR                  5      nTR                  R                  5         TR                  5         TR                  R                  U5        gU (       a  M  g g )NkindTRYT)rJ   r   rK  rC   r   r   _insert_try_block_endr   )remainentoldbodyblockr*   s      r,   	do_change.Interpreter._end_try_blocks.<locals>.do_change  sp     $jjlv;)E*::16D.&*5::&6G!JJ,,. 668!JJ--g6#' !&r/   N)r   rI  graphr   rg   rH  infos
blockstackpredecessorsr   r  minr}   rC   )r*   ru  r   cur_bsincr`  inc_bsr   r   r*  rs  rr  s   `          @r,   rX  Interpreter._end_try_blocks  s      @@@@![[..0MFEXX^^F+66F,,V4,77 "+3v+>!?IAvv "@ CKV5A
( T&*-../ 5	 1r/   c                    U R                   R                  5       nU R                  R                  5        HS  u  p#U HH  n[	        U[
        R                  5      (       d  M$  UR                  nXQ;   d  M7  UR                  U5        MJ     MU     [        [        S U5      5      nU(       aP  US   nU R                  R                  U5      R                  nSn	[        R                  " U	R!                  U5      US9eg)zcSearch for unsupported use of exception variables.
Note, they cannot be stored into user variable.
c                 .    U R                  S5      (       + $ )N$)r   r@  s    r,   rA  6Interpreter._legalize_exception_vars.<locals>.<lambda>  s    ALL,=(=r/   r   z5Exception object cannot be stored into variable ({}).r   N)r8  rh   r7  rg   rv   r   r   rI   rM   rC   filterrU  getr   r   r   r1   )
r*   excvarsr+   defnvarsr   r'  uservarfirstr   msgs
             r,   rY  $Interpreter._legalize_exception_vars  s    
 &&++-!%!1!1!7!7!9Ga((A|G,	  ": v=wGHAJE$$((/33CIC11#**U2CMM r/   c                     [        U R                  5       H5  u  p[        R                  " XU R                  S9nU R                  X25        M7     g )N)ro   rI   r   )r   r2  r   Argr   store)r*   ro   rI   vals       r,   init_first_blockInterpreter.init_first_block  s7    $T^^4KE&&uTXX>CJJs! 5r/   c              #   |  #    [        U R                  R                  5       5       GH  u  pU R                  UR                     nUR
                  S:X  a  U R                  UR                     nU R                  R                  UR                  5      U l        U R                  UR                  5        US:X  a  U R                  5         U R                  R                   HC  u  pEU R                  U   nU R                  R                  UR                  5      U l        Xe4v   ME     U R                  5         GM     g 7f)NEND_FORr   )r   rI  iterliveblocksrD  r   opnamenextr   with_linenolineno_start_new_blockr  rT  insts_end_current_block)r*   blkctrr  	firstinstr   rm   r  s          r,   rV  Interpreter._iter_inst  s     %dhh&=&=&?@LEell3I
 9, MM)..9	xx++I,<,<=DH!!%,,/z%%'#||11}}V,88//<i  2 ##%# As   D:D<c                 2   U R                   nU R                  U5        U R                  (       a  U R                  R                  OS nUb  UR                  (       d  Ubp  US   U R
                  R                  R                  5       ;   aE  [        R                  " U R                  S5      US   UU R                  S9nUR                  U5        O/[        R                  " XR                  S9nUR                  U5        U R                  R                  U R                      U l        [#        5       U l        [&        S;   a  U R(                  (       a  XR(                  S   R*                  :  as  U R(                  R-                  5       n[/        U[        R0                  5      (       a9  U R                   R                  [        R2                  " U R                  5      5        OOU R(                  (       a  M  U R                  R                  nUb  XsLa  U R5                  5         g g g [&        S;   a^  U R(                  (       aL  XR(                  S   R*                  :  a  U R(                  R-                  5         Og U R(                  (       a  MK  g g [7        [&        5      e)Nend$exception_checkcondtruebrfalsebrr   r   r<  r   r=  )rK  insert_blockrT  active_try_blockis_terminatedrI  ru  nodesr   Branchr  r   rL   r	  rH  rv  rL  r=   assignerr   rS  exitrJ   rv   Withr  _insert_try_block_beginrR  )r*   r   oldblocktryblkbranchjmpsynblk	newtryblks           r,   r  Interpreter._start_new_block  s   %%&!26,,..D(>(> !fUmtxx~~7K7K7M&M "45!%="	 ' ggf((3$ xx~~d&?&?@ 
<<$$//3888!//335F!&"''22**11"++dhh2GH $$$ 55I$*002 + % *$$$//3888&&**,	 $$$ &i00r/   c                     U R                   R                  (       d)  U R                  R                  nUb  U R	                  5         U R                  5         U R                  5         g r'   )rK  r  rT  r  _insert_exception_check_remove_unused_temporaries_insert_outgoing_phis)r*   r  s     r,   r  Interpreter._end_current_block;  sJ    !!//\\22F!,,.'')""$r/   Nc                 (   [         R                  " X!U R                  S9nU R                  XBSS9  [         R                  R                  U R                  U5      SSU R                  S9nU=(       d    SR                  U5      nU R                  XSSS9  g)ah  A helper function to inject a call to *func* which is a python
function.
Parameters
----------
func : callable
    The function object to be called.
gv_name : str
    The variable name to be used to store the function object.
res_name : str; optional
    The variable name to be used to store the call result.
    If ``None``, a name is created automatically.
r   Tr[   rI   r   r;   z$callres_{}N)r   r   r   r  ry   rt   r  r1   )r*   r|   gv_nameres_namegv_fncallress         r,   _inject_callInterpreter._inject_callE  st     		'TXX6

t
<'',,txx0"bdhh,G<}33G<

$
?r/   c                 D    U R                  [        R                  S5        g)z<Insert IR-nodes to mark the start of a `try` block.
        mark_try_blockN)r  r   r  r2   s    r,   r  #Interpreter._insert_try_block_beginX  s     	"++-=>r/   c                 D    U R                  [        R                  S5        g)z:Insert IR-nodes to mark the end of a `try` block.
        end_try_blockN)r  r   r  r2   s    r,   rn  !Interpreter._insert_try_block_end]  s     	"**O<r/   c                 l   U R                   R                  nUS   nU R                   R                  R                  U5      nU(       am  [        R
                  " SU R                  S9nU HG  nXPR                  ;   a  [        S5      eU R                  XES9  U R                  R                  U5        MI     gg)z?Insert IR-nodes to initialize the exception variables.
        r  Nr[   r   z2exception variable CANNOT be defined by other coder[   rI   )rT  r  outgoing_edgepushedr  r   rx   r   r7  r   r  r8  rM   )r*   r  endblk
edgepushed
const_noner   s         r,   _insert_exception_variables'Interpreter._insert_exception_variablesb  s     ..\\5599&A
 $((;J!***(L  


6$$((- " r/   c                 f    U R                  5         U R                  [        R                  SS5        g)zECalled before the end of a block to inject checks if raised.
        exception_checkr  N)r  r  r   r  r2   s    r,   r  #Interpreter._insert_exception_checkv  s,     	((*",,.?,	.r/   c                    / n0 nU R                   R                   GH  n[        U[        R                  [        R
                  45      (       a9  UR                  R                  U;   a  X#R                  R                     Ul        GO6[        U[        R                  5      (       Ga  UR                  R                  (       a0  UR                  R                  U R                  R                  ;   a  M  [        UR                  [        R                  5      (       aK  UR                  R                  U;   a1  X#R                  R                     Ul        UR                  U5        GMK  [        UR                  [        R                  5      (       a  UR                  R                   S:X  ai  UR                  R                  R                  U;   aE  X#R                  R                  R                     UR                  l        UR                  U5        GM  [        UR                  [        R                  5      (       Ga  UR                  R                  (       Gae  U(       Ga]  [        US   [        R                  5      (       Ga:  US   nUR                  R                  UR                  R                  :X  Ga  U R#                  UR                  R                  UR                  5      (       d  UR                  X#R                  R                  '   UR                  Ul	        U R$                  UR                  R                     R'                  UR                  5        U R$                  UR                  R                     R)                  U R$                  R+                  UR                  R                  5      5        GM  UR                  U5        GM     XR                   l        g)zJ
Remove assignments to unused temporary variables from the
current block.
exhaust_iterr   N)rK  r   rv   r   SetItemSetAttrr[   rI   rw   rZ   rK   r  rF   r   rL   ry   rz   _var_used_in_binopr7  r]   r   rJ   )r*   rk   replaced_varr  prev_assigns        r,   r  &Interpreter._remove_unused_temporaries~  s   
 &&++D 4"**bjj!9::

<7)**//:
D")),,KK'' KK,,0J0JJ tzz26622 JJOO|;!-jjoo!>DJOOD) tzz27733 JJMM^; JJ,,11\A'3JJ4D4D4I4I'JDJJ$OOD) tzz26622tzz7I7I7I$HRL")))L)L"*2,K $**//4::??B$($;$; $ 0 0+2C2C%E %E8<ZZ__5-1[[*(()9)9:AA$**M(()9)9:AA ,,00A !OOD!e ,h #+r/   c                     [        U[        R                  5      =(       aM    UR                  S;   =(       a7    XR                  R
                  :H  =(       d    XR                  R
                  :H  $ )zXreturn True if 'expr' is a binary expression and 'varname' is used
in it as an argument
)r   inplace_binop)rv   r   ry   rz   rb   rI   rc   )r*   r+   r   s      r,   r  Interpreter._var_used_in_binop  sO     4) KGG99K-IHHMM1I	Lr/   c                    U R                   R                  R                  5        H  u  pU R                  R	                  UU R
                  S9n U R                  U5      n[        R                  " XCU R
                  S9nU R                  UR                     R                  UR                  5        U R                   R"                  (       d  U R                   R                  U5        M  U R                   R%                  U5        M     g! [        R                   a3    [        S;   d   S5       e[        R                  " SU R
                  S9n Nf = f)zL
Add assignments to forward requested outgoing values
to subsequent blocks.
r   r<  zunexpected missing definitionNr  r[   rZ   r   )rT  outgoing_phisrg   rU  get_or_definer   r  r   r   r   rx   rw   r7  rI   rL   r[   rK  r  insert_before_terminator)r*   phinamer+   rZ   r  r   s         r,   r  !Interpreter._insert_outgoing_phis  s   
 !% : : @ @ BG''55g:>(( 6 DF9hhw' 993!%+DV[[)00<%%33""))$/"";;DA! !C
 %% 9 $HH 767HhhTtxx8	9s   D		AEEc                      U R                   R                  R                  U   $ ! [         a"    [	        [
        U[        R                  5      s $ f = f)zt
Get a global value from the func_global (first) or
as a builtins (second).  If both failed, return a ir.UNDEFINED.
)r/  r|   __globals__KeyErrorrr   builtinsr   	UNDEFINED)r*   rI   s     r,   get_global_valueInterpreter.get_global_value  sD    
	9<<$$0066 	98T2<<88	9s   "% )AAc                     U R                   R                  R                  U   n UR                  $ ! [         a    [
        R                  s $ f = f)zd
Get a value from the cell contained in this function's closure.
If not set, return a ir.UNDEFINED.
)r/  r|   __closure__cell_contents
ValueErrorr   r  )r*   ro   cells      r,   get_closure_valueInterpreter.get_closure_value  sH    
 ||  ,,U3	 %%% 	 <<	 s   1 AAc                      U R                   S   $ )Nr   )rE  r2   s    r,   rU  Interpreter.current_scope  s    {{2r/   c                 .    U R                   R                  $ r'   )rD  	co_constsr2   s    r,   code_constsInterpreter.code_consts  s    }}&&&r/   c                 .    U R                   R                  $ r'   )rD  co_varnamesr2   s    r,   code_localsInterpreter.code_locals      }}(((r/   c                 .    U R                   R                  $ r'   )rD  co_namesr2   s    r,   
code_namesInterpreter.code_names  s    }}%%%r/   c                 .    U R                   R                  $ r'   )rD  co_cellvarsr2   s    r,   code_cellvarsInterpreter.code_cellvars  r  r/   c                 .    U R                   R                  $ r'   )rD  co_freevarsr2   s    r,   code_freevarsInterpreter.code_freevars  r  r/   c                     U R                   (       a  [        U5        U R                  c   e[        S;   a  U R                  (       a  U R                  S   n[        U[        R                  5      (       ak  UR                  UR                  :  aQ  U R                  R                  [        R                  " U R                  S95        U R                  R                  5         O[        S;   a  O[        [        5      eSUR                  R!                  SS5      -  n [#        X5      n U" U40 UD6$ ! [$        R&                   a  nUR                  c  U R                  nOUR                  n[$        R&                  " UR(                  US9n[*        R,                  (       d  US eSU S	UR                   3n	UR/                  U	5        UR/                  U R0                  R3                  5       5        UeS nAff = f! [4         a    [        U5      ef = f)
Nr<  r   r   r=  zop_%s+r`  zhandling op: z | offset: )r0  r   rK  r   rS  rv   r   r  r   r  rL   r  r   rJ   rR  r  replacerr   r   r   rI   r   FULL_TRACEBACKSadd_contextrD  r   AttributeError)
r*   r  rm   topr   r   er   errms
             r,   rW  Interpreter._dispatch  s   $K!!---<<!!((,c277++{{chh.**11"++$((2KL**..0*$%i00$++--c377	%B$#&)) 55=((C%%C,,QVV=--4''v[FAOOA&OODMM$6$6$89I  	,%d++	,s%   G7 'D0 0G4B+G//G47Hc                 @   U(       d$  U R                   U R                  R                  ;   a3  X R                  ;  nU R                  R                  X R                  US9nO#U R                  R                  X R                  S9n[        U[        R                  5      (       a  U R                  R                  X5      n[        R                  " XU R                  S9nU R                  R                  U5        U R                   UR"                     R                  U5        U$ )zt
Store *value* (a Expr or Var instance) into the variable named *name*
(a str object). Returns the target variable.
)r   renamer   r  )rL  rI  backboner  rU  r   r   r  rv   r   r   r  rS   rw   rK  rL   r7  rI   )r*   r[   rI   r   r  rZ   r   s          r,   r  Interpreter.store0  s    
 t00DHH4E4EE"4"44F''00888> 1 @F ''55d5IFeRVV$$MM((7EyyuB!!$'%,,U3r/   c                     US   S:X  a,  USS R                  5       (       a  SR                  USS 5      nU R                  R                  U5      nUc  U R                  R                  U5      nU$ )z:
Get the variable (a Var instance) with the given *name*.
r   .rf   Nz
implicit{})isdigitr1   r  rW   rU  r  )r*   rI   r   s      r,   r  Interpreter.getB  so     7c>d12h..00&&tABx0D mm11$7;$$((.C
r/   c                     U=(       d    U R                   nU=(       d    U R                  n[        R                  " X#S9nX@R                  U'   X@l        Xl        U$ )N)r   r   )rU  r   r   r  r   rK  rL  )r*   r   r   r   r   s        r,   r  Interpreter.insert_blockT  sJ    +++oTXXhhU,!F $*!
r/   c                     g r'   r;   r*   r  s     r,   op_NOPInterpreter.op_NOP_      r/   )r   )r   r!   r   r   c                     g r'   r;   r   s     r,   	op_RESUMEInterpreter.op_RESUMEj  r#  r/   c                     g r'   r;   r   s     r,   op_CACHEInterpreter.op_CACHEm  r#  r/   c                     g r'   r;   r   s     r,   
op_PRECALLInterpreter.op_PRECALLp  r#  r/   c                     g r'   r;   r   s     r,   op_PUSH_NULLInterpreter.op_PUSH_NULLs  r#  r/   c                     g r'   r;   r   s     r,   op_RETURN_GENERATORInterpreter.op_RETURN_GENERATORv  r#  r/   c                    U R                  U5      n[        R                  " S[        U R                  S9nU R                  XSS9  [        R                  R                  U R                  U5      U4SU R                  S9nU R                  XdS9  g Nr   r   r  r;   )r  r   r   r   r   r  ry   rt   )r*   r  itemprintvarresprintgvrt   s          r,   op_PRINT_ITEMInterpreter.op_PRINT_ITEMy  sj    xx~))GU9


0ww||DHHX.|J


(r/   c                     [         R                  " S[        U R                  S9nU R	                  XBS9  [         R
                  R                  U R                  U5      SSU R                  S9nU R	                  XSS9  g r4  )r   r   r   r   r  ry   rt   r  )r*   r  r6  r7  r8  rt   s         r,   op_PRINT_NEWLINEInterpreter.op_PRINT_NEWLINE  s[    ))GU9


0ww||DHHX.BDHH|E


(r/   c                 d   [        U5      n[        R                  R                  U R	                  U5      U R
                  US9nU R                  XFS9  [        U5       HO  u  px[        R                  R                  U R	                  U5      US U R
                  S9n	U R                  X5        MQ     g )N)r[   r   count)rI   r[   )ro   	index_varr   )	r}   r   ry   r  r  r   r  r   static_getitem)
r*   r  iterablestorestupleobjr?  tupr   str   s
             r,   op_UNPACK_SEQUENCEInterpreter.op_UNPACK_SEQUENCE  s    Fgg""();). # 0


, v&EA77))$((8*<01T.2hh * 8D JJt 	 'r/   c                 &    U R                  XX45      $ r'   )op_FORMAT_VALUE)r*   r  r[   r7  strvars        r,   op_FORMAT_SIMPLEInterpreter.op_FORMAT_SIMPLE  s    ##D==r/   c                    U R                  U5      n[        R                  " S[        U R                  S9nU R                  XTS9  [        R                  R                  U R                  U5      U4SU R                  S9nU R                  XcS9  g)z
FORMAT_VALUE(flags): flags argument specifies format spec which is not
supported yet. Currently, str() is simply called on the value.
https://docs.python.org/3/library/dis.html#opcode-FORMAT_VALUE
strr   r  r;   N)r  r   r   rO  r   r  ry   rt   )r*   r  r[   r7  rK  strgvrt   s          r,   rJ  Interpreter.op_FORMAT_VALUE  sl     		%$((3


,ww||DHHV,uh|I


(r/   c                    UR                   nUS:X  a4  [        R                  " SU R                  S9nU R	                  XSS   5        gU R                  US   5      n[        USS U5       Ho  u  pxU R                  U5      n[        R                  R                  [        R                  XgU R                  S9n	U R	                  X5        U R                  U5      nMq     g)z
BUILD_STRING(count): Concatenates count strings.
Required for supporting f-strings.
https://docs.python.org/3/library/dis.html#opcode-BUILD_STRING
r   r   r   r   Nrf   rb   rc   r   )r   r   rx   r   r  r  r  ry   r   r   rM   )
r*   r  stringstmpsr?  constprevotherr   r   s
             r,   op_BUILD_STRINGInterpreter.op_BUILD_STRING  s     A:HHRTXX.EJJu2h'xx
#gabk40JEHHUOE77==$txx ! D JJt!88C=D 1r/   c                    U R                  U5      nU R                  U5      n[        R                  " S[        U R                  S9nU R                  XvS9  Uc;  [        R                  R                  U R                  U5      X#4SU R                  S9nOLU R                  U5      n[        R                  R                  U R                  U5      X#U4SU R                  S9nU R                  XS9  g Nslicer   r  r;   )r  r   r   r]  r   r  ry   rt   )	r*   r  rP  stopstepr7  slicevarslicegv	sliceinsts	            r,   op_BUILD_SLICEInterpreter.op_BUILD_SLICE  s    xx~))GU9


0<TXXh%7%)- % 3I 88D>DTXXh%7%t9L%'TXX % 7I


-r/   r   c                    U R                  U5      nU R                  U5      n[        R                  " S[        U R                  S9nU R                  XS9  [        R                  R                  U R                  U5      X#4SU R                  S9n	U R                  XS9  U R                  U5      n
U R                  U5      n[        R                  R                  XU R                  S9nU R                  X5        g )Nr]  r   r  r;   ro   r   	r  r   r   r]  r   r  ry   rt   getitem)r*   r  rP  r  	containerr7  r`  temp_resra  rb  ro   rZ   r   s                r,   op_BINARY_SLICEInterpreter.op_BINARY_SLICE  s    HHUOE((3-CiiDHH=GJJWJ4TXXh%7%r)- % 3IJJYJ6HHX&EXXi(F77??6DHH?EDJJt!r/   r   c                    U R                  U5      nU R                  U5      n[        R                  " S[        U R                  S9nU R                  XS9  [        R                  R                  U R                  U5      X#4SU R                  S9n	U R                  XS9  U R                  U5      n
U R                  U5      nU R                  U5      n[        R                  " XUU R                  S9nU R                  R                  U5        g )Nr]  r   r  r;   rZ   ro   r[   r   r  r   r   r]  r   r  ry   rt   r  rK  rL   )r*   r  rP  r  ri  r[   r7  r`  ra  rb  ro   rZ   r   s                r,   op_STORE_SLICEInterpreter.op_STORE_SLICE  s    HHUOE((3-CiiDHH=GJJWJ4TXXh%7%r)- % 3IJJYJ1HHSMEXXi(FHHUOE::V"&((,D%%d+r/   c                 (   U R                  U5      n[        R                  " S[        U R                  S9nU R                  XtS9  [        R                  " S U R                  S9nU R                  XS9  U R                  U5      n	[        R                  R                  U R                  U5      X4SU R                  S9n
U R                  XS9  [        R                  R                  X R                  U5      U R                  S9nU R                  XS9  g r\  )
r  r   r   r]  r   r  rx   ry   rt   rh  )r*   r  baser7  r`  indexvarnonevarra  nonegvnonero   r   s               r,   
op_SLICE_0Interpreter.op_SLICE_0  s    xx~))GU9


0$DHH-


.xx TXXh/$rtxxP


.wwtXXh%7TXXF


(r/   c                 J   U R                  U5      nU R                  U5      n[        R                  " S U R                  S9nU R	                  XS9  U R                  U5      n	[        R
                  " S[        U R                  S9n
U R	                  XS9  [        R                  R                  U R                  U5      X94SU R                  S9nU R	                  XS9  [        R                  R                  X R                  U5      U R                  S9nU R	                  XS9  g Nr   r  r]  r;   
r  r   rx   r   r  r   r]  ry   rt   rh  )r*   r  rs  rP  ru  r7  r`  rt  rv  rw  ra  ro   r   s                r,   
op_SLICE_1Interpreter.op_SLICE_1  s    xx~$DHH-


.xx ))GU9


0TXXh/%!%  +


.wwtXXh%7TXXF


(r/   c                 J   U R                  U5      nU R                  U5      n[        R                  " S U R                  S9nU R	                  XS9  U R                  U5      n	[        R
                  " S[        U R                  S9n
U R	                  XS9  [        R                  R                  U R                  U5      X4SU R                  S9nU R	                  XS9  [        R                  R                  X R                  U5      U R                  S9nU R	                  XS9  g r{  r|  )r*   r  rs  ru  r^  r7  r`  rt  rv  rw  ra  ro   r   s                r,   
op_SLICE_2Interpreter.op_SLICE_2  s    xx~xx~$DHH-


.xx ))GU9


0TXXh/$!%  +


.wwtXXh%7TXXF


(r/   c                    U R                  U5      nU R                  U5      nU R                  U5      n[        R                  " S[        U R                  S9nU R                  XS9  [        R                  R                  U R                  U5      X44SU R                  S9n	U R                  XS9  [        R                  R                  X R                  U5      U R                  S9n
U R                  XS9  g r\  rg  )r*   r  rs  rP  r^  r7  r`  rt  ra  ro   r   s              r,   
op_SLICE_3Interpreter.op_SLICE_3'  s    xx~xx~))GU9


0TXXh/%!%  +


.wwtXXh%7TXXF


(r/   c                 N   U R                  U5      n[        R                  " S[        U R                  S9nU R                  XtS9  [        R                  " S U R                  S9nU R                  XS9  U R                  U5      n	[        R                  R                  U R                  U5      X4SU R                  S9n
U R                  XS9  [        R                  " X R                  U5      U R                  U5      U R                  S9nU R                  R                  U5        g r\  )r  r   r   r]  r   r  rx   ry   rt   r  rK  rL   )r*   r  rs  r[   r`  rt  ru  ra  rv  rw  ro   r   s               r,   op_STORE_SLICE_0Interpreter.op_STORE_SLICE_06  s    xx~))GU9


0$DHH-


.xx TXXh/$rtxxP


.zz$ 2DHHUO"hh(!!$'r/   c                 p   U R                  U5      nU R                  U5      n[        R                  " S U R                  S9nU R	                  XS9  U R                  U5      n	[        R
                  " S[        U R                  S9n
U R	                  XS9  [        R                  R                  U R                  U5      X94SU R                  S9nU R	                  XS9  [        R                  " X R                  U5      U R                  U5      U R                  S9nU R                  R                  U5        g r{  r  r   rx   r   r  r   r]  ry   rt   r  rK  rL   )r*   r  rs  rP  ru  r[   r`  rt  rv  rw  ra  ro   r   s                r,   op_STORE_SLICE_1Interpreter.op_STORE_SLICE_1G  s    xx~$DHH-


.xx ))GU9


0TXXh/%!%  +


.zz$ 2DHHUO"hh(!!$'r/   c                 p   U R                  U5      nU R                  U5      n[        R                  " S U R                  S9nU R	                  XS9  U R                  U5      n	[        R
                  " S[        U R                  S9n
U R	                  XS9  [        R                  R                  U R                  U5      X4SU R                  S9nU R	                  XS9  [        R                  " X R                  U5      U R                  U5      U R                  S9nU R                  R                  U5        g r{  r  )r*   r  rs  ru  r^  r[   r`  rt  rv  rw  ra  ro   r   s                r,   op_STORE_SLICE_2Interpreter.op_STORE_SLICE_2[  s    xx~xx~$DHH-


.xx ))GU9


0TXXh/$!%  +


.zz$ 2DHHUO"hh(!!$'r/   c                    U R                  U5      nU R                  U5      nU R                  U5      n[        R                  " S[        U R                  S9nU R                  XS9  [        R                  R                  U R                  U5      X44SU R                  S9n	U R                  XS9  [        R                  " X R                  U5      U R                  U5      U R                  S9n
U R                  R                  U
5        g r\  ro  )r*   r  rs  rP  r^  r[   r`  rt  ra  ro   r   s              r,   op_STORE_SLICE_3Interpreter.op_STORE_SLICE_3o  s    xx~xx~))GU9


0TXXh/%!%  +


.zz$ 2DHHUO"hh(!!$'r/   c                 .   U R                  U5      n[        R                  " S[        U R                  S9nU R                  XcS9  [        R                  " S U R                  S9nU R                  XuS9  U R                  U5      n[        R                  R                  U R                  U5      X4SU R                  S9n	U R                  XS9  [        R                  " X R                  U5      U R                  S9n
U R                  R                  U
5        g r\  )r  r   r   r]  r   r  rx   ry   rt   DelItemrK  rL   )r*   r  rs  r`  rt  ru  ra  rv  rw  ro   r   s              r,   op_DELETE_SLICE_0Interpreter.op_DELETE_SLICE_0  s    xx~))GU9


0$DHH-


.xx TXXh/$rtxxP


.zz$ 2A!!$'r/   c                 P   U R                  U5      nU R                  U5      n[        R                  " S U R                  S9nU R	                  XtS9  U R                  U5      n[        R
                  " S[        U R                  S9n	U R	                  XS9  [        R                  R                  U R                  U5      X84SU R                  S9n
U R	                  XS9  [        R                  " X R                  U5      U R                  S9nU R                  R                  U5        g r{  r  r   rx   r   r  r   r]  ry   rt   r  rK  rL   )r*   r  rs  rP  ru  r`  rt  rv  rw  ra  ro   r   s               r,   op_DELETE_SLICE_1Interpreter.op_DELETE_SLICE_1  s    xx~$DHH-


.xx ))GU9


0TXXh/%!%  +


.zz$ 2A!!$'r/   c                 P   U R                  U5      nU R                  U5      n[        R                  " S U R                  S9nU R	                  XsS9  U R                  U5      n[        R
                  " S[        U R                  S9n	U R	                  XS9  [        R                  R                  U R                  U5      X4SU R                  S9n
U R	                  XS9  [        R                  " X R                  U5      U R                  S9nU R                  R                  U5        g r{  r  )r*   r  rs  ru  r^  r`  rt  rv  rw  ra  ro   r   s               r,   op_DELETE_SLICE_2Interpreter.op_DELETE_SLICE_2  s    xx~xx~$DHH-


.xx ))GU9


0TXXh/$!%  +


.zz$ 2A!!$'r/   c                    U R                  U5      nU R                  U5      nU R                  U5      n[        R                  " S[        U R                  S9nU R                  XuS9  [        R                  R                  U R                  U5      X44SU R                  S9nU R                  XS9  [        R                  " X R                  U5      U R                  S9n	U R                  R                  U	5        g r\  )r  r   r   r]  r   r  ry   rt   r  rK  rL   )
r*   r  rs  rP  r^  r`  rt  ra  ro   r   s
             r,   op_DELETE_SLICE_3Interpreter.op_DELETE_SLICE_3  s    xx~xx~))GU9


0TXXh/%!%  +


.zz$ 2A!!$'r/   c                 t    U R                   UR                     nU R                  U R                  U5      US9  g Nr  )r  r   r  r  )r*   r  r7  rP   s       r,   _op_LOAD_FASTInterpreter._op_LOAD_FAST  s/    ""488,

'*
5r/   r   r   c                 X    U(       a  U R                  X5        g U R                  X5        g r'   )op_LOAD_DEREFr  )r*   r  r7  as_load_derefs       r,   op_LOAD_FASTInterpreter.op_LOAD_FAST  s!    ""4-""4-r/   c                     UR                   nUS-	  nUS-  nU R                  U R                  U   5      nU R                  U R                  U   5      nU R                  XrS9  U R                  XS9  g N      r  )r   r  r  r  )	r*   r  res1res2opargoparg1oparg2src1src2s	            r,   op_LOAD_FAST_LOAD_FAST"Interpreter.op_LOAD_FAST_LOAD_FAST  sk    HHEaZFRZF88D,,V45D88D,,V45DJJTJ-JJTJ-r/   c                     UR                   nUS-	  nUS-  nU R                  U   nU R                  U5      nU R                  XS9  U R                  U R                  U   5      n	U R                  XS9  g r  )r   r  r  r  )
r*   r  store_valueload_resr  r  r  dstname	dst_value	src_values
             r,   op_STORE_FAST_LOAD_FAST#Interpreter.op_STORE_FAST_LOAD_FAST  sp    HHEaZFRZF&&v.G-IJJYJ5!1!1&!9:IJJYJ6r/   c                     UR                   nUS-	  nUS-  nU R                  U   nU R                  U R                  U5      US9  U R                  U   nU R                  U R                  U5      US9  g r  )r   r  r  r  )r*   r  value1value2r  r  r  r  s           r,   op_STORE_FAST_STORE_FAST$Interpreter.op_STORE_FAST_STORE_FAST  so    HHEaZFRZF&&v.GJJTXXf-GJ<&&v.GJJTXXf-GJ<r/   )r   r!   r   c                     U R                   UR                     nU R                  U R                  U5      US9  g ! [         a9    [
        R                  R                  U R                  S9nU R                  XBS9   g f = f)Nr  r   rI   )	r  r   r  r  r   r   ry   undefr   )r*   r  r7  rP   r  s        r,   op_LOAD_FAST_AND_CLEAR"Interpreter.op_LOAD_FAST_AND_CLEAR  si    ,**4884

'!2
=" ,$((3

5
+,s   8; A A>=A>c                 v    U R                   UR                     nU R                  U5      nU R                  X#S9  g r  )r  r   r  r  )r*   r  r[   r  s       r,   op_STORE_FASTInterpreter.op_STORE_FAST	  s1    ""488,


-r/   c                     U R                   UR                     nU R                  R                  [        R
                  " X R                  S95        g Nr   )r  r   rK  rL   r   Delr   )r*   r  r  s      r,   op_DELETE_FASTInterpreter.op_DELETE_FAST	  s7    ""488,!!"&&hh"?@r/   c                 j    [        X#5       H$  u  pEU R                  U R                  U5      US9  M&     g r  )r  r  r  )r*   r  origdupedsrcdsts         r,   op_DUP_TOPXInterpreter.op_DUP_TOPX	  s+    D(HCJJTXXc]J5 )r/   c                     U R                   UR                     n[        R                  " U R	                  U5      U R	                  U5      X@R
                  S9nU R                  R                  U5        g )N)rZ   r[   r{   r   )r   r   r   r  r  r   rK  rL   )r*   r  rZ   r[   r{   sas         r,   op_STORE_ATTRInterpreter.op_STORE_ATTR 	  sR    txx(ZZtxx/txx!xx1!!"%r/   c                     U R                   UR                     n[        R                  " U R	                  U5      X0R
                  S9nU R                  R                  U5        g )N)rZ   r{   r   )r   r   r   DelAttrr  r   rK  rL   )r*   r  rZ   r{   r  s        r,   op_DELETE_ATTRInterpreter.op_DELETE_ATTR&	  sE    txx(ZZtxx/dI!!"%r/   c                 L   U R                  U5      n[        S;   a  U R                  UR                  S-	     nO3[        S;   a  U R                  UR                     nO[	        [        5      e[
        R                  R                  X$U R                  S9nU R                  XS5        g )Nr   rf   r   r   )
r  r   r   r   rR  r   ry   rr   r   r  )r*   r  r5  r7  r{   rr   s         r,   op_LOAD_ATTRInterpreter.op_LOAD_ATTR+	  sz    xx~33??488q=1D,,??488,D%i00''//$$((/;

7 r/   c                    ^ ^ U 4S jmUU 4S jnT R                   UR                     n[        U[        5      (       a/  [        R
                  R                  U" U5      T R                  S9nO[        U[        5      (       a/  [        R
                  R                  U" U5      T R                  S9nO=[        U[        5      (       a	  T" U5      nO[        R                  " UT R                  S9nT R                  XR5        g )Nc                   > TR                  [        R                  " U R                  TR                  S9SU R                   3SS9nTR                  [        R                  " U R
                  TR                  S9SU R
                   3SS9nTR                  [        R                  " S[        TR                  S9SSS9nU R                  c  X4nOITR                  [        R                  " U R                  TR                  S9SU R                   3SS9nXU4n[        R                  R                  X4STR                  S9$ )	Nr   $const_TrI   r   r]  z$const_slicer  r;   )r  r   rx   rP  r   r^  r   r]  r_  ry   rt   )r[   rP  r^  r`  paramsr_  r*   s         r,   process_slice0Interpreter.op_LOAD_CONST.<locals>.process_slice;	  s   JJrxxB&-ekk]$;d  LE::bhhuzztxx@%,UZZL#9D  JD zz		'56:hh)@'5 " FH zz!zz"((5::488"D)0'= " Nt,77<<"$((<CCr/   c           
        > / nU  H  n[        U[        5      (       a(  UR                  TR                  T" U5      SSS95        M@  UR                  TR                  [        R
                  " UTR                  S9SU 3SS95        M     U$ )Nz$const_my_sliceTr  r   r  )rv   r]  rL   r  r   rx   r   )r[   rF  r   r  r*   s      r,   process_args/Interpreter.op_LOAD_CONST.<locals>.process_argsN	  s    Ba''IIdjjq)9.?26 ) 8 9 IIdjj!)B07sm26 ) 8 9  Ir/   r   )r  r   rv   r   r   ry   r   r   	frozenset	build_setr]  rx   r  )r*   r  r7  r  r[   rV  r  s   `     @r,   op_LOAD_CONSTInterpreter.op_LOAD_CONST6	  s    
	D&	   *eU##GG''U(;'JEy))GG%%l5&9txx%HEu%%!%(EHHU1E

5r/   c                 z    UR                   n[        R                  " X0R                  S9nU R	                  XB5        g r  )r   r   rx   r   r  )r*   r  r7  r[   rV  s        r,   op_LOAD_SMALL_INTInterpreter.op_LOAD_SMALL_INTi	  s)    HHEHHU1EJJu"r/   r<  c                     U R                   U   nU R                  U5      n[        R                  " XEU R                  S9nU R                  Xc5        g r  )r   r  r   r   r   r  )r*   r  r_   r7  rI   r[   gls          r,   op_LOAD_GLOBALInterpreter.op_LOAD_GLOBALs	  s@    ??3'D))$/E4DHH5BJJrr/   r=  c                     U R                   UR                     nU R                  U5      n[        R                  " X4U R
                  S9nU R                  XR5        g r  )r   r   r  r   r   r   r  )r*   r  r7  rI   r[   r  s         r,   r  r  y	  sD    ??488,D))$/E4DHH5BJJrr/   c                     g r'   r;   r   s     r,   op_COPY_FREE_VARSInterpreter.op_COPY_FREE_VARS	  r#  r/   c                    U R                   R                  R                  R                  UR                  5      nX0R
                  ;   a   U R                  U5      nOZX0R                  ;   aK  U R                  R                  U5      nU R                  U5      n[        R                  " XcXpR                  S9nU R                  WU5        g ! [         a    Sn[        U5      ef = fN,Unsupported use of cell variable encounteredr   r/  r|   __code___varname_from_opargr   r  r  r   rR  r  ro   r  r   r  r   r  r*   r  r7  rI   r  r  r_   r[   s           r,   r  Interpreter.op_LOAD_DEREF	  s    <<$$--AA$((KD)))3$B +++((..t4..s3ZZ5hh?JJr3 ' 3HC-c223s   
C	 	C!c                 b   [        U R                  5      nUR                  U:  a+  U R                  UR                     nU R                  U5      nONUR                  U-
  nU R                  U   nU R                  U5      n[        R                  " XdXpR                  S9nU R                  XR5        g r  )
r}   r  r   r  r  r  r   r  r   r  )r*   r  r7  
n_cellvarsrI   r  r_   r[   s           r,   r  r  	  s    T//0Jxx*$))$((3XXd^hh+))#...s3ZZ5hh?JJrr/   c                     g r'   r;   r   s     r,   op_MAKE_CELLInterpreter.op_MAKE_CELL	  s    r/   c                     U R                   R                  R                  R                  UR                  5      nU R                  U5      nU R                  X#S9  g r  )r/  r|   r   r  r   r  r  )r*   r  r[   rI   s       r,   op_STORE_DEREFInterpreter.op_STORE_DEREF	  sA    <<$$--AA$((KDHHUOEJJUJ.r/   c                     [        U R                  5      nUR                  U:  a  U R                  UR                     nOU R                  UR                  U-
     nU R	                  U5      nU R                  X$S9  g r  )r}   r  r   r  r  r  )r*   r  r[   r  r  s        r,   r
  r  	  sf    T//0Jxx*$,,TXX6,,TXX
-BCHHUOEJJUJ1r/   c                     U R                   UR                     U R                  L d   e[        R                  " UR                  UR
                  UR                  -   S9nU R                  R                  U5        g )Nr  )	r   r   rK  r   Loopr  r   rS  rL   )r*   r  loops      r,   op_SETUP_LOOPInterpreter.op_SETUP_LOOP	  sX    {{4;;'4+=+====wwt{{$))dhh*>@!!$'r/   c           	         U R                   UR                     U R                  L d   eUR                  UR                  -   n[
        R                  " UR                  US9nU R                  R                  U5        U R                  U5      nU R                  R                  [
        R                  " UUR                  X@R                  S95        [
        R                  " S U R                  S9nU R                  XsS9  g Nr  contextmanagerbeginr  r   r   r  )r   r   rK  r  r   r   r  rS  rL   r  	EnterWithr   rx   r  )r*   r  r  exitfnexitptwthctxmgrexit_fn_objs           r,   op_SETUP_WITHInterpreter.op_SETUP_WITH	  s    {{4;;'4+=+====TXX%ggdkk/!!#&.)!!",,f59[[39xx#J 	K
 hht2


2r/   c           	         U R                   UR                     U R                  L d   e[        S;   aR  X@R                  :  aB  [        U R                   Vs/ s H!  nUR                  U:X  d  M  UR                  PM#     sn5      nO[        S;   a  O[        [        5      e[        R                  " UR                  US9nU R                  R                  U5        U R                  U5      nU R                  R                  [        R                  " UUR                  X@R                   S95        [        R"                  " S U R                   S9nU R%                  XS9  g s  snf )N)r   r   r   r  r  r   r  )r   r   rK  r   rN  rM  rQ  rZ   r  rR  r   r  rS  rL   r  r  r   rx   r  )	r*   r  r  r  r  exr  r  r  s	            r,   op_BEFORE_WITHInterpreter.op_BEFORE_WITH	  s   ;;t{{+t/A/AAAA..0000M0M 40M""$))s"2  &rvv0M 4 5C00))44''$++C0C%%c*XXn-F%%bll&9=7:'K L
 ((4TXX6KJJ[J6!4s   E-Ec                 $    U R                  5         g r'   )r  r   s     r,   op_SETUP_FINALLYInterpreter.op_SETUP_FINALLY	  s    $$&r/   c                     gzno-opNr;   r   s     r,   op_WITH_CLEANUPInterpreter.op_WITH_CLEANUP	      r/   c                     gr(  r;   r   s     r,   op_WITH_CLEANUP_START!Interpreter.op_WITH_CLEANUP_START	  r+  r/   c                     gr(  r;   r   s     r,   op_WITH_CLEANUP_FINISH"Interpreter.op_WITH_CLEANUP_FINISH	  r+  r/   c                     gr(  r;   r   s     r,   op_END_FINALLYInterpreter.op_END_FINALLY	  r+  r/   c                     [         R                  " S U R                  S9nU H-  nU R                  X4S9  U R                  R                  U5        M/     g )Nr   r  )r   rx   r   r  r8  rM   )r*   r  tempsr  r   s        r,   op_BEGIN_FINALLYInterpreter.op_BEGIN_FINALLY	  sB    XXd1
CJJzJ,  $$S) r/   c           	         U R                  U5      nU Vs/ s H  o`R                  U5      PM     nnUbL  [        S:  d   eU R                  U   n[        [	        Xs[        U5      * S  5      5      nUS [        U5      *  nOSn[        R                  R                  X#XR                  S9n	U R                  X5        g s  snf )Nr   r;   r   )r  r   r  rC   r  r}   r   ry   rt   r   r  )
r*   r  r|   r~   kw_namesr7  r   nameskwargsr   s
             r,   op_CALLInterpreter.op_CALL
  s    xx~%)*TT*w&&&$$X.E#e3u:+,%789F#e*%DFww||DHH|=

4 +s   B=c           	         U R                  U5      nU Vs/ s H  o`R                  U5      PM     nn[        UR                  SS5      S   5      nU R                  U   n[	        [        X[        U5      * S  5      5      n	US [        U5      *  n[        R                  R                  X#XR                  S9n
U R                  X5        g s  snf )Nr  ru   r   r   )r  intrsplitr  rC   r  r}   r   ry   rt   r   r  )r*   r  r|   r~   r:  r7  r   constir;  r<  r   s              r,   
op_CALL_KWInterpreter.op_CALL_KW
  s    88D>D)-.AHHQKD.a045F$$V,E#e3u:+,%789F#e*%D77<<F<ADJJt! /s   C	r   c                     U R                  U5      nU Vs/ s H  oPR                  U5      PM     nn[        R                  R                  X#SU R                  S9nU R                  Xd5        g s  snf )Nr;   r   r  r   ry   rt   r   r  )r*   r  r|   r~   r7  r   r   s          r,   op_CALL_FUNCTIONInterpreter.op_CALL_FUNCTION
  sV    xx~%)*TT*ww||D|9

4 +s   A-c                 X   U R                  U5      nU Vs/ s H  o`R                  U5      PM     nnU R                  U5      nU R                  R                   H  n[        U[        R
                  5      (       d  M$  UR                  UL d  M5  U R                  R                  U5        / nUR                  R                   Hx  nU R                  R                  S S S2    HU  nXhR                  :X  d  M  U R                  R                  U5        UR                  UR                  R                  5          Mv     Mz     Un	  O   [        W	5      n
US U
*  nX:* S  n[        [        X5      5      n[        R                  R                  X+XR                   S9nU R#                  X5        g s  snf )Nr   r   )r  rK  r   rv   r   rw   rZ   r]   r[   rg   rL   r}   rC   r  ry   rt   r   r  )r*   r  r|   r~   r;  r7  r   named_itemsr*  keysnkeysposvalskwvals	keyvaluesr   s                  r,   op_CALL_FUNCTION_KWInterpreter.op_CALL_FUNCTION_KW!
  sS   xx~%)*TT*&&++D$		**t{{e/C""))$/ !))A!//44TrT:= ..55a8'..qww}}=!	 ; * # , D	w-fgT*+	ww||D9((|C

41 +s   F'c           	          U R                  U5      nU R                  U5      nUb  U R                  U5      n[        R                  R                  U/ / U R                  X4S9nU R                  Xe5        g )N)r   r   r   rF  )r*   r  r|   r   r   r7  r   s          r,   op_CALL_FUNCTION_EXInterpreter.op_CALL_FUNCTION_EX=
  se    xx~&!xx)Hww||"bdhhv  
 	

4r/   c                 R   U R                  US   5      nU(       a  Sn[        R                  " U[        U R                  S9nU R                  XvSS9  [        R                  R                  U R                  U5      U4SU R                  S9nU R                  XS   5        g U R                  n	[        [        U R                   USS  5      U5       H  u  p[        R                  " S	[        U	S
9nU R                  USSS9n[        R                  R                  X4SU	S9nU R                  USSS9n[        R                  R                  [        R                  XPR                  UR                  5      U R                  S9nU R                  UU5        U R                  U5      nM     g )Nr   r   r   Tr  r;   r~   rm   r   rf   r   r   r   )r   z	$_tuplifyr   )r  r   r   r   r   r  ry   rt   r  mapr   r   r   rM   rI   )r*   r  tuplesr6  	is_assignr  r  r  excr   rX  r   r   r   tuplify_valtuplify_varouts                    r,   _build_tuple_unpackInterpreter._build_tuple_unpackG
  sw   # ,GIIg':JEJJU4J@'',,txx0xR#'88  .CJJs!H%((C!#dhhqr
";UC
99  !JJ6 ' 	 !ggllx +  #jjk26 ) 8ggmm||HH[=M=M4N $  

3$) Dr/   c                 (    U R                  XX45        g r'   r^  r*   r  rX  r6  rY  s        r,   op_BUILD_TUPLE_UNPACK_WITH_CALL+Interpreter.op_BUILD_TUPLE_UNPACK_WITH_CALLk
  s      u@r/   c                 (    U R                  XX45        g r'   ra  rb  s        r,   op_BUILD_TUPLE_UNPACK!Interpreter.op_BUILD_TUPLE_UNPACKo
  s      u@r/   c                 z    [         R                  R                  SU4U R                  S9nU R	                  XC5        g )Nr   r   )r   ry   dummyr   r  )r*   r  r   r7  r   s        r,   op_LIST_TO_TUPLEInterpreter.op_LIST_TO_TUPLEr
  s,    ww}}_zm}J

4r/   c           	        ^  T R                  U5      nT R                  R                   H  n[        U[        R
                  5      (       d  M$  UR                  UL d  M5  T R                  R                  U5        / nUR                  R                   Hx  nT R                  R                  S S S2    HU  n	XR                  :X  d  M  T R                  R                  U	5        UR                  U	R                  R                  5          Mv     Mz     Un
  O   [        W
5      [        U5      :X  d   eU
 Vs/ s H"  n[        R                  " UT R                  S9PM$     nn[        X5       H  u  pT R                  X5        M     [!        [        [#        T R                   U5      [#        T R                   U5      5      5      n/ nU Hd  nT R$                  U   n[        U5      S:w  a    OEUS   n[        U[        R                  5      (       d    OUR                  UR                  5        Mf     U 4S jn[        U5      [        U5      :w  a'  [        X5       VV	s0 s H  u  pUU" U	5      _M     nnn	O[        X5       VV	s0 s H  u  pX_M	     nnn	0 n['        U
5       H  u  nnUUU'   M     [        R(                  R+                  USUUT R                  S9nT R                  UU5        g s  snf s  sn	nf s  sn	nf )Nr   r  rf   r   c                 0  > TR                   U    n[        U5      S:w  a$  [        TR                  U 5      R                  5      $ US   n[        U[        R                  5      (       d$  [        TR                  U 5      R                  5      $ UR                  $ Nrf   r   )	r7  r}   r$   r  rI   rv   r   rx   r[   )r   defnsdefnr*   s      r,   resolve_const9Interpreter.op_BUILD_CONST_KEY_MAP.<locals>.resolve_const
  st    $$Q'E5zQ%dhhqk&6&6778DdBHH--%dhhqk&6&677::r/   ru   r  )r  rK  r   rv   r   rw   rZ   r]   r[   rg   rL   r}   rx   r   r  r  rC   rW  r7  r   ry   r   )r*   r  rK  keytmpsr   r7  keyvarrJ  r   r*  keytup	keyconstskvalr   rg   literal_itemsr   ro  rp  rq  literal_dictri   r   r'  r   s   `                        r,   op_BUILD_CONST_KEY_MAP"Interpreter.op_BUILD_CONST_KEY_MAPv
  s    $&&++D$		**t{{f/D""))$/ !))A!//44TrT:= ..55a8'..qww}}=!	 ; * % , 6{c&k)))>DEfRXXA4884f	EY0IDJJt! 1STXXw/TXXv1FGH A$$Q'E5zQ8DdBHH--  , 	 }V,/1/ 59AA}Q///  1L -0,FG,FDAAC,FLG f%DAq M! & ww  u&'/;/<%)XX	 ! / 	

4[ F41 Hs   1)K(K-=K3c                     [         R                  R                  U R                  U5      U R                  S9nU R                  XC5        g )Nr  )r   ry   getiterr  r   r  r*   r  r[   r7  r   s        r,   op_GET_ITERInterpreter.op_GET_ITER
  s0    wwTXXe_$((C

4r/   c                    UR                   U R                  ;   d   S5       eU R                  U5      n[        R                  R                  X`R                  S9nU R                  Xs5        [        R                  R                  U R                  U5      U R                  S9nU R                  X5        [        R                  R                  U R                  U5      U R                  S9n	U R                  X5        [        R                  " U R                  U5      UR                  UR                  5       U R                  S9n
U R                  R                  U
5        g)z*
Assign new block other this instruction.
zFOR_ITER must be block headr  r  N)r   r   r  r   ry   iternextr   r  
pair_firstpair_secondr  r  get_jump_targetrK  rL   )r*   r  iteratorr&  indvalpredr  pairvalr  isvalidbrs              r,   op_FOR_ITERInterpreter.op_FOR_ITER
  s    {{dkk)H+HH) hhx ''""((";

7!77%%DHHTN%I

8$''%%DHHTN%I

7! YYDHHTN499#33588% 	!!"%r/   c                     U R                  U5      nU R                  U5      n[        R                  R                  X#U R                  S9nU R                  XT5        g )Nrf  )r  r   ry   rh  r   r  )r*   r  rZ   ro   r7  r   s         r,   op_BINARY_SUBSCRInterpreter.op_BINARY_SUBSCR
  sC    HHUOEXXf%F77??6DHH?EDJJt!r/   c                     U R                  U5      nU R                  U5      nU R                  U5      n[        R                  " X#UU R                  S9nU R                  R                  U5        g )Nrn  )r  r   r  r   rK  rL   )r*   r  rZ   ro   r[   r   s         r,   op_STORE_SUBSCRInterpreter.op_STORE_SUBSCR
  sW    &!zzE"hh(!!$'r/   c                     U R                  U5      nU R                  U5      n[        R                  " X#U R                  S9nU R                  R                  U5        g )N)rZ   ro   r   )r  r   r  r   rK  rL   )r*   r  rZ   ro   r   s        r,   op_DELETE_SUBSCRInterpreter.op_DELETE_SUBSCR
  sE    &!zz$((C!!$'r/   c                     [         R                  R                  U Vs/ s H  o@R                  U5      PM     snU R                  S9nU R                  XS5        g s  snf N)rg   r   )r   ry   r   r  r   r  r*   r  rg   r7  r   r   s         r,   op_BUILD_TUPLEInterpreter.op_BUILD_TUPLE
  sK    ww""u)Eu!((1+u)E'+xx # 1

4 *F   Ac                     [         R                  R                  U Vs/ s H  o@R                  U5      PM     snU R                  S9nU R                  XS5        g s  snf r  )r   ry   r   r  r   r  r  s         r,   op_BUILD_LISTInterpreter.op_BUILD_LIST
  sK    ww!!e(De!e(D&*hh " 0

4 )Er  c                     [         R                  R                  U Vs/ s H  o@R                  U5      PM     snU R                  S9nU R                  XS5        g s  snf r  )r   ry   r  r  r   r  r  s         r,   op_BUILD_SETInterpreter.op_BUILD_SET
  sK    ww  U'CUU'C%)XX ! /

4 (Dr  c                 J   U R                  U5      nU R                  U5      n[        R                  R                  USU R                  S9nU R                  XdS9  [        R                  R                  U R                  U5      U4SU R                  S9nU R                  XuS9  g )NrM   r   r  r;   r  r   ry   rr   r   r  rt   )r*   r  r[   rZ   addvarr7  addattraddinsts           r,   
op_SET_ADDInterpreter.op_SET_ADD
  s~    &!''//&%TXX/>


.'',,txx/%BDHH,M


+r/   c                 J   U R                  U5      nU R                  U5      n[        R                  R                  USU R                  S9nU R                  XdS9  [        R                  R                  U R                  U5      U4SU R                  S9nU R                  XuS9  g )Nr  r   r  r;   r  r*   r  rZ   r[   	updatevarr7  
updateattr
updateinsts           r,   op_SET_UPDATEInterpreter.op_SET_UPDATE      &!WW__VX488_D



4WW\\$((9"5x&*hh " 0



.r/   c                 J   U R                  U5      nU R                  U5      n[        R                  R                  USU R                  S9nU R                  XdS9  [        R                  R                  U R                  U5      U4SU R                  S9nU R                  XuS9  g )Nr   r   r  r;   r  r  s           r,   op_DICT_UPDATEInterpreter.op_DICT_UPDATE  s    &! WW__+ % 

 	


4WW\\$((9"5x&*hh " 0



.r/   c           	        ^  U VVs/ s H'  u  pVT R                  U5      T R                  U5      4PM)     nnnU 4S jnU" S U 5       5      n	U" S U 5       5      n
[        U	5      [        U5      :H  n[        U
5      [        U5      :H  n0 nU(       d
  U(       d  S nOU(       aN  U(       dG  [        X5       VVs0 s H  u  nnU[        US   5      _M     nnn[	        U	5       H
  u  nnUX'   M     O:[        X5       VVs0 s H	  u  nnUU_M     nnn[	        U	5       H
  u  nnUX'   M     [
        R                  R                  XsUUT R                  S9nT R                  UU5        g s  snnf s  snnf s  snnf )Nc                 X  > / nU  Vs/ s H  nTR                  UR                  5      PM      nnU Hp  nTR                  UR                     n[        U5      S:w  a    U$ US   n[	        U[
        R                  5      (       d    U$ UR                  UR                  5        Mr     U$ s  snf rn  )	r  rI   r7  r}   rv   r   rx   rL   r[   )rZ   rx  r   r   ro  rp  r*   s         r,   get_literals.Interpreter.op_BUILD_MAP.<locals>.get_literals%  s    M0671dhhqvv&F7((0u:?
 ! 	 Qx!$11   $$TZZ0  !  8s   %B'c              3   *   #    U  H	  oS    v   M     g7f)r   Nr;   .0r   s     r,   	<genexpr>+Interpreter.op_BUILD_MAP.<locals>.<genexpr>2  s     #<)QaD)   c              3   *   #    U  H	  oS    v   M     g7f)rf   Nr;   r  s     r,   r  r  3  s     %>IqdIr  rf   r  )
r  r}   r  r$   r   r   ry   r   r   r  )r*   r  rg   r  r7  r'  r   	got_itemsr  r%  literal_valueshas_literal_keyshas_literal_valuesri   ry  r   r*  r   r   s   `                  r,   op_BUILD_MAPInterpreter.op_BUILD_MAP  sq   <ABEDAdhhqk488A;/E	B
	! $#<)#<<%%>I%>>|,I> 0C	NB(:L&88:8 9=1A~ad338  :!,/1#$  0 .1-NO-NTQAqD-NLO!,/1#$  0 ww  y/;/<%)XX ! / 	

4S C8:
 Ps   .E)9E/ E5c                     [         R                  " U R                  U5      U R                  U5      U R                  U5      U R                  S9nU R                  R                  U5        g )N)dctrn   r[   r   )r   StoreMapr  r   rK  rL   )r*   r  r  rn   r[   r   s         r,   op_STORE_MAPInterpreter.op_STORE_MAPK  sJ    {{txx}$((3-!%%dhh@!!$'r/   c                     U R                  U5      n[        R                  R                  SX R                  S9nU R                  XC5      $ )N-r  r  r   ry   unaryr   r  r~  s        r,   op_UNARY_NEGATIVEInterpreter.op_UNARY_NEGATIVEP  8    ww}}S88}<zz$$$r/   c                     U R                  U5      n[        R                  R                  SX R                  S9nU R                  XC5      $ )Nr  r  r  r~  s        r,   op_UNARY_POSITIVEInterpreter.op_UNARY_POSITIVEU  r  r/   c                     U R                  U5      n[        R                  R                  SX R                  S9nU R                  XC5      $ )N~r  r  r~  s        r,   op_UNARY_INVERTInterpreter.op_UNARY_INVERTZ  r  r/   c                     U R                  U5      n[        R                  R                  SX R                  S9nU R                  XC5      $ )Nnotr  r  r~  s        r,   op_UNARY_NOTInterpreter.op_UNARY_NOT_  s8    ww}}U%XX}>zz$$$r/   c                     [         U   nU R                  U5      nU R                  U5      n[        R                  R	                  XX0R
                  S9nU R                  XT5        g )NrS  )r   r  r   ry   r   r   r  )r*   rz   rb   rc   r7  r   s         r,   _binopInterpreter._binopd  sL     $hhsmhhsmww}}Rcxx}@

4r/   c                     [         U   n[        US-      nU R                  U5      nU R                  U5      n[        R                  R                  XX#U R                  S9nU R                  Xd5        g )N=rS  )r   r   r  r   ry   r  r   r  )r*   rz   rb   rc   r7  immuopr   s          r,   _inplace_binopInterpreter._inplace_binopk  sd    $R((c2hhsmhhsmww$$RS)- % 3

4r/   c                 &   US:X  a\  U R                  U5      nU R                  U5      n[        R                  R                  X4U R                  S9nU R                  Xe5        g SU;   a  U R                  US S X4U5        g U R                  X#XE5        g )Nz[]rf  r  r   )r  r   ry   rh  r   r  r  r  )r*   r  rz   rb   rc   r7  r   s          r,   op_BINARY_OPInterpreter.op_BINARY_OPt  sv    :((3-C((3-C77??3txx?@DJJt!BY3B37KK*r/   c                 *    U R                  SX#U5        g Nr  r  r*   r  rb   rc   r7  s        r,   op_BINARY_ADDInterpreter.op_BINARY_ADD      C3'r/   c                 *    U R                  SX#U5        g Nr  r  r  s        r,   op_BINARY_SUBTRACTInterpreter.op_BINARY_SUBTRACT  r  r/   c                 *    U R                  SX#U5        g N*r  r  s        r,   op_BINARY_MULTIPLYInterpreter.op_BINARY_MULTIPLY  r  r/   c                 *    U R                  SX#U5        g Nz/?r  r  s        r,   op_BINARY_DIVIDEInterpreter.op_BINARY_DIVIDE      D#C(r/   c                 *    U R                  SX#U5        g N/r  r  s        r,   op_BINARY_TRUE_DIVIDE!Interpreter.op_BINARY_TRUE_DIVIDE  r  r/   c                 *    U R                  SX#U5        g Nz//r  r  s        r,   op_BINARY_FLOOR_DIVIDE"Interpreter.op_BINARY_FLOOR_DIVIDE  r  r/   c                 *    U R                  SX#U5        g N%r  r  s        r,   op_BINARY_MODULOInterpreter.op_BINARY_MODULO  r  r/   c                 *    U R                  SX#U5        g Nz**r  r  s        r,   op_BINARY_POWERInterpreter.op_BINARY_POWER  r  r/   c                 *    U R                  SX#U5        g N@r  r  s        r,   op_BINARY_MATRIX_MULTIPLY%Interpreter.op_BINARY_MATRIX_MULTIPLY  r  r/   c                 *    U R                  SX#U5        g Nz<<r  r  s        r,   op_BINARY_LSHIFTInterpreter.op_BINARY_LSHIFT  r  r/   c                 *    U R                  SX#U5        g Nz>>r  r  s        r,   op_BINARY_RSHIFTInterpreter.op_BINARY_RSHIFT  r  r/   c                 *    U R                  SX#U5        g N&r  r  s        r,   op_BINARY_ANDInterpreter.op_BINARY_AND  r  r/   c                 *    U R                  SX#U5        g N|r  r  s        r,   op_BINARY_ORInterpreter.op_BINARY_OR  r  r/   c                 *    U R                  SX#U5        g N^r  r  s        r,   op_BINARY_XORInterpreter.op_BINARY_XOR  r  r/   c                 *    U R                  SX#U5        g r  r  r  s        r,   op_INPLACE_ADDInterpreter.op_INPLACE_ADD      C3/r/   c                 *    U R                  SX#U5        g r  r,  r  s        r,   op_INPLACE_SUBTRACTInterpreter.op_INPLACE_SUBTRACT  r/  r/   c                 *    U R                  SX#U5        g r  r,  r  s        r,   op_INPLACE_MULTIPLYInterpreter.op_INPLACE_MULTIPLY  r/  r/   c                 *    U R                  SX#U5        g r  r,  r  s        r,   op_INPLACE_DIVIDEInterpreter.op_INPLACE_DIVIDE      D#C0r/   c                 *    U R                  SX#U5        g r  r,  r  s        r,   op_INPLACE_TRUE_DIVIDE"Interpreter.op_INPLACE_TRUE_DIVIDE  r/  r/   c                 *    U R                  SX#U5        g r  r,  r  s        r,   op_INPLACE_FLOOR_DIVIDE#Interpreter.op_INPLACE_FLOOR_DIVIDE  r9  r/   c                 *    U R                  SX#U5        g r  r,  r  s        r,   op_INPLACE_MODULOInterpreter.op_INPLACE_MODULO  r/  r/   c                 *    U R                  SX#U5        g r  r,  r  s        r,   op_INPLACE_POWERInterpreter.op_INPLACE_POWER  r9  r/   c                 *    U R                  SX#U5        g r  r,  r  s        r,   op_INPLACE_MATRIX_MULTIPLY&Interpreter.op_INPLACE_MATRIX_MULTIPLY  r/  r/   c                 *    U R                  SX#U5        g r  r,  r  s        r,   op_INPLACE_LSHIFTInterpreter.op_INPLACE_LSHIFT  r9  r/   c                 *    U R                  SX#U5        g r  r,  r  s        r,   op_INPLACE_RSHIFTInterpreter.op_INPLACE_RSHIFT  r9  r/   c                 *    U R                  SX#U5        g r  r,  r  s        r,   op_INPLACE_ANDInterpreter.op_INPLACE_AND  r/  r/   c                 *    U R                  SX#U5        g r"  r,  r  s        r,   op_INPLACE_ORInterpreter.op_INPLACE_OR  r/  r/   c                 *    U R                  SX#U5        g r'  r,  r  s        r,   op_INPLACE_XORInterpreter.op_INPLACE_XOR  r/  r/   c                     [         R                  " UR                  5       U R                  S9nU R                  R                  U5        g r  r   r	  r  r   rK  rL   r*   r  r  s      r,   op_JUMP_ABSOLUTEInterpreter.op_JUMP_ABSOLUTE  3    ggd**,$((;!!#&r/   c                     [         R                  " UR                  5       U R                  S9nU R                  R                  U5        g r  rY  rZ  s      r,   op_JUMP_FORWARDInterpreter.op_JUMP_FORWARD  r]  r/   c                     [         R                  " UR                  5       U R                  S9nU R                  R                  U5        g r  rY  rZ  s      r,   op_JUMP_BACKWARDInterpreter.op_JUMP_BACKWARD  r]  r/   c                     Uc  U R                   R                  5         g US:X  a:  [        R                  " U R                  S9nU R
                  R                  U5        g US:X  a  U R                  5         g g )Nwithr   try)rS  rJ   r   r  r   rK  rL   rn  )r*   r  rl  rR   s       r,   op_POP_BLOCKInterpreter.op_POP_BLOCK  s^    <""$V^)A%%a(U]&&( r/   c                 $   U R                  [        R                  R                  U R	                  U5      U R
                  S9U5        [        R                  " U R	                  U5      U R
                  S9nU R                  R                  U5        g r  )	r  r   ry   castr  r   ReturnrK  rL   )r*   r  retvalcastvalrets        r,   op_RETURN_VALUEInterpreter.op_RETURN_VALUE  s_    

277<< 0dhh<?Iii)txx8!!#&r/   c                    U R                   UR                     n[        R                  " X@R                  S9nU R                  XR5        U R                  [        R                  R                  U R                  U5      U R                  S9U5        [        R                  " U R                  U5      U R                  S9nU R                  R                  U5        g r  )r  r   r   rx   r   r  ry   rj  r  rk  rK  rL   )r*   r  rl  rm  r[   rV  rn  s          r,   op_RETURN_CONSTInterpreter.op_RETURN_CONST  s    $$TXX.EHHU1EJJu%JJrww||DHHV$4$((|CWM))DHHW-488<C%%c*r/   c                 F    U R                  U R                  U5      U5        g r'   )r  r  )r*   r  r  r7  s       r,   
op_TO_BOOLInterpreter.op_TO_BOOL  s    JJtxx}c*r/   c                    [         S;   a!  [        R                  UR                  S-	     nOb[         S;   a!  [        R                  UR                  S-	     nO7[         S;   a  [        R                  UR                     nO[	        [         5      eUS:X  d  US:X  a  X2p2US:X  a^  U R                  SX#U5        U R                  U5      n[        R                  R                  SX`R                  S	9nU R                  Xt5        g US
:X  a  [        R                  " S[        R                  U R                  S9nSn	U R                  XSS9  U R                  U5      nU R                  U5      n[        R                  R                  U R                  U	5      X#4SU R                  S9n
U R                  X5        g U R                  XRX45        g )Nr     )r   r  r   inznot inr  r  zexception matchexception_matchr   
$exc_matchTr  r;   rV  )r   discmp_opr   rR  r  r  r   ry   r  r   r  r   r   rz  rt   )r*   r  rb   rc   r7  rz   r   r]  r  exc_match_namerZ  s              r,   op_COMPARE_OPInterpreter.op_COMPARE_OP  se   **DHHM*B*$DHHM*B,,DHH%B%i00:x>KKc,((3-C''--Shh-?CJJs $$II!2#5#5488E *NJJU$JG((3-C((3-C'',,(zrtxx  C JJs KK*r/   c                 P    UR                   S:X  a  SOSnU R                  XRX45        g )Nrf   is notis)r   r  )r*   r  rb   rc   r7  rz   s         r,   op_IS_OPInterpreter.op_IS_OP'  s!    QXDBS&r/   c                     X2p2U R                  SX#U5        UR                  S:X  aK  U R                  U5      n[        R                  R                  SXPR                  S9nU R                  Xd5        g g )Nry  rf   r  r  )r  r   r  r   ry   r  r   r  )r*   r  rb   rc   r7  r   r]  s          r,   op_CONTAINS_OPInterpreter.op_CONTAINS_OP,  sZ    SD#C(88q=((3-C''--Shh-?CJJs  r/   c                     Uc<  U R                   S   n[        U[        R                  5      (       d   eUR                  n[        R
                  " X R                  S9nU R                  R                  U5        g )Nr   )rZ   r   )	rS  rv   r   r  r  r	  r   rK  rL   )r*   r  r  r  r  s        r,   op_BREAK_LOOPInterpreter.op_BREAK_LOOP5  s]    ;%%b)DdBGG,,,,))CggShh/!!#&r/   c                     UR                  5       UR                  S.nXC   nXC(       +    nSUR                  -  n[        R                  " S[
        U R                  S9nU R                  XS9  [        R                  R                  U R                  U5      U R                  U5      4SU R                  S9n	SUR                  -  n
U R                  XS9n[        R                  " XUU R                  S9nU R                  R                  U5        g )	N)TFz$bool%sboolr   r  r;   z$%spredr  )r  r  r   r   r   r  r   r  ry   rt   r  r  rK  rL   )r*   r  r  iftruebrsr  r  rI   r  r  pname	predicatebras                r,   _op_JUMP_IFInterpreter._op_JUMP_IF=  s    &&(99
 j/DKK(		&$DHH5


*'',,txx~/@"#'88  - T[[)JJWJ9	iiYw HH&!!#&r/   c                 $    U R                  XSS9  g NFr  r  r  r*   r  r  s      r,   op_JUMP_IF_FALSEInterpreter.op_JUMP_IF_FALSER      7r/   c                 $    U R                  XSS9  g NTr  r  r  s      r,   op_JUMP_IF_TRUEInterpreter.op_JUMP_IF_TRUEU      6r/   c                 \   UR                   nUR                  5       nU(       d
  [        S   nO	[        S   nU R                  [        R
                  " S U R                  S9SUR                   3S9nU R                  U5      n[        R                  R                  XhXpR                  S9n	SUR                   3n
U R                  XS9  SUR                   3n[        R                  " S	[        U R                  S9nU R                  XS9  [        R                  R                  U R                  U5      U R                  U
5      4S
U R                  S9nSUR                   3nU R                  XS9n[        R                  " UUUU R                  S9nU R                  R!                  U5        g )Nr  r  r   z
$constNoner  rS  z
$maybeNonez$boolr  r;   z$predr  )r  r  r   r  r   rx   r   r   r  ry   r   r   r  rt   r  rK  rL   )r*   r  r  r  r  r  rz   rc   rb   isnone	maybeNonerI   r  r  r  r  r  s                    r,   _jump_if_noneInterpreter._jump_if_noneX  sj   &&( $T*B$X.Bjjrxx$((; *4;;-8  :hhtnrB .	


0t{{m$		&$DHH5


*'',,txx~0C/Er#'88  - }%JJWJ9		"(#*#xx) 	!!&)r/   c                 (    U R                  XS5        g NTr  r  s      r,   op_POP_JUMP_FORWARD_IF_NONE'Interpreter.op_POP_JUMP_FORWARD_IF_NONEz      4t,r/   c                 (    U R                  XS5        g NFr  r  s      r,   op_POP_JUMP_FORWARD_IF_NOT_NONE+Interpreter.op_POP_JUMP_FORWARD_IF_NOT_NONE}      4u-r/   c                 (    U R                  XS5        g r  r  r  s      r,   op_POP_JUMP_IF_NONEInterpreter.op_POP_JUMP_IF_NONE  s    t40r/   c                 (    U R                  XS5        g r  r  r  s      r,   op_POP_JUMP_IF_NOT_NONE#Interpreter.op_POP_JUMP_IF_NOT_NONE  s    t51r/   c                 (    U R                  XS5        g r  r  r  s      r,   op_POP_JUMP_BACKWARD_IF_NONE(Interpreter.op_POP_JUMP_BACKWARD_IF_NONE  r  r/   c                 (    U R                  XS5        g r  r  r  s      r,    op_POP_JUMP_BACKWARD_IF_NOT_NONE,Interpreter.op_POP_JUMP_BACKWARD_IF_NOT_NONE  r  r/   c                 $    U R                  XSS9  g r  r  r  s      r,   op_POP_JUMP_FORWARD_IF_FALSE(Interpreter.op_POP_JUMP_FORWARD_IF_FALSE  r  r/   c                 $    U R                  XSS9  g r  r  r  s      r,   op_POP_JUMP_FORWARD_IF_TRUE'Interpreter.op_POP_JUMP_FORWARD_IF_TRUE  r  r/   c                 $    U R                  XSS9  g r  r  r  s      r,   op_POP_JUMP_BACKWARD_IF_FALSE)Interpreter.op_POP_JUMP_BACKWARD_IF_FALSE  r  r/   c                 $    U R                  XSS9  g r  r  r  s      r,   op_POP_JUMP_BACKWARD_IF_TRUE(Interpreter.op_POP_JUMP_BACKWARD_IF_TRUE  r  r/   c                 $    U R                  XSS9  g r  r  r  s      r,   op_POP_JUMP_IF_FALSE Interpreter.op_POP_JUMP_IF_FALSE  r  r/   c                 $    U R                  XSS9  g r  r  r  s      r,   op_POP_JUMP_IF_TRUEInterpreter.op_POP_JUMP_IF_TRUE  r  r/   c                 $    U R                  XSS9  g r  r  r  s      r,   op_JUMP_IF_FALSE_OR_POP#Interpreter.op_JUMP_IF_FALSE_OR_POP  r  r/   c                 $    U R                  XSS9  g r  r  r  s      r,   op_JUMP_IF_TRUE_OR_POP"Interpreter.op_JUMP_IF_TRUE_OR_POP  r  r/   c                 ^   [         R                  " S[        R                  U R                  S9nSnU R                  XVSS9  U R                  U5      nU R                  U5      n[         R                  R                  U R                  U5      Xx4SU R                  S9n	U R                  X5        g )Nrz  r   r{  Tr  r;   rV  )	r   r   r   rz  r   r  r  ry   rt   )
r*   r  r  tostos1r  r~  rb   rc   rZ  s
             r,   op_CHECK_EXC_MATCHInterpreter.op_CHECK_EXC_MATCH  s    		r11txx
 &

d
ChhtnhhsmggllHH^$C:2488  
 	

3r/   c                    UR                   nUR                  5       n[        R                  " S[        R
                  U R                  S9nSnU R                  XxSS9  U R                  U5      n	U R                  U5      n
[        R                  R                  U R                  U5      X4SU R                  S9nU R                  X5      n[        R                  " XUU R                  S9nU R                  R                  U5        g )	Nrz  r   r{  Tr  r;   rV  r  )r  r  r   r   r   rz  r   r  r  ry   rt   r  rK  rL   )r*   r  r  r  r  r  r  r  r~  rb   rc   rZ  r  r  s                 r,   op_JUMP_IF_NOT_EXC_MATCH$Interpreter.op_JUMP_IF_NOT_EXC_MATCH  s    &&(		r11txx
 &

d
ChhtnhhsmggllHH^$C:2488  
 JJs)	iiYw HH&!!#&r/   c                    U R                   R                  nUb  [        R                  " S U R                  S9nU R
                  R                  U5        U R                  5         U R
                  R                  [        R                  " US   U R                  S95        g S[        S    3n[        R                  " [        U4U R                  5      nU R
                  R                  U5        g )N	exceptionr   r  r   z8Unreachable condition reached (op code RERAISE executed)
reportable)rT  r  r   TryRaiser   rK  rL   rn  r	  r   StaticRaiser   )r*   r  rZ  r  r   r  s         r,   
op_RERAISEInterpreter.op_RERAISE  s    ..;;488<D%%d+&&(%%bggfUm&JK N"<013C>>.3&$((CD%%d+r/   c                    Ub  U R                  U5      nU R                  R                  nUb  [        R                  " X R
                  S9nU R                  R                  U5        U R                  5         U R                  R                  [        R                  " US   U R
                  S95        g [        R                  " X R
                  S9nU R                  R                  U5        g )Nr  r  r   )r  rT  r  r   r  r   rK  rL   rn  r	  Raise)r*   r  rZ  r  r   s        r,   op_RAISE_VARARGSInterpreter.op_RAISE_VARARGS  s    ?((3-C..;;((;D%%d+&&(%%bggfUm&JK 88cxx8D%%d+r/   c                     S n[         R                  " U R                  U5      X@R                  S9nU R	                  X5      $ )N)r[   ro   r   )r   Yieldr  r   r  )r*   r  r[   r7  ro   s        r,   op_YIELD_VALUEInterpreter.op_YIELD_VALUE  s2    xxdhhuoUIzz$$$r/   c
                 p   Ub  Sn
[        U
5      eU(       aQ  [        U[        5      (       a+  [        U Vs/ s H  o R                  U5      PM     sn5      nOU R                  U5      nU R                  U   S   n[        U[
        R                  5      (       d   Sn
[        R                  " XR                  S9eUR                  nW(       a  U R                  U5      nU(       a  U R                  U5      n[
        R                  R                  X,XHU R                  5      nU R                  X5        g s  snf )Nz3op_MAKE_FUNCTION with kwdefaults is not implementedr   z_Unsupported use of closure. Probably caused by complex control-flow constructs; e.g. try-exceptr   )rR  rv   r   r  r7  r   rx   r   r   r   r[   ry   make_functionr  )r*   r  rI   codeclosureannotationsannotate
kwdefaultsdefaultsr7  r  assume_code_constfcoder   s                 r,   op_MAKE_FUNCTIONInterpreter.op_MAKE_FUNCTION  s     !GC%c**(E** X!FXT((4.X!FG88H- ,,T215+RXX66" 
 11#88DD!''88D>Dhhw'Gww$$T'TXXN

4% "Gs   D3c	           
      .    U R                  XX4UXgU5        g r'   )r  )	r*   r  rI   r  r  r  r  r  r7  s	            r,   op_MAKE_CLOSUREInterpreter.op_MAKE_CLOSURE  s    d$(C	9r/   c                    U R                   R                  R                  R                  UR                  5      nX0R
                  ;   a   U R                  U5      nObX0R                  ;   aL  U R                  R                  U5      nU R                  U5      n[        R                  " XcXpR                  S9nO S5       eU R                  XB5        g ! [         a    Sn[        U5      ef = f)Nr  r   r   r  r  s           r,   op_LOAD_CLOSUREInterpreter.op_LOAD_CLOSURE  s    <<$$--AA$((KD)))3$B +++((..t4..s3ZZ5hh?'-'qJJr ' 3HC-c223s   
C C(c                    [        U R                  5      nUR                  U:  a,  U R                  UR                     n U R                  U5      nONUR                  U-
  nU R                  U   nU R                  U5      n[        R                  " XtXR                  S9nU R                  XR5        g ! [         a    Sn[        U5      ef = fr  )r}   r  r   r  r   rR  r  r  r   r  r   r  )	r*   r  r7  r  rI   r  r  r_   r[   s	            r,   r  r  "  s    T//0Jxx*$))$((33$B
 hh+))#...s3ZZ5hh?JJr ' 3HC-c223s    B2 2C
c                 J   U R                  U5      nU R                  U5      n[        R                  R                  USU R                  S9nU R                  XdS9  [        R                  R                  U R                  U5      U4SU R                  S9nU R                  XuS9  g )NrL   r   r  r;   r  )r*   r  rZ   r[   	appendvarr7  
appendattr
appendinsts           r,   op_LIST_APPENDInterpreter.op_LIST_APPEND4  r  r/   c                 |   U R                  U5      nU R                  U5      nSnU R                  R                  (       d  [        R                  " U5      eU R                  R                  S   n[        UR                  [        R                  5      =(       a    UR                  R                  S:H  nS n	U(       a  [        U R                  R                  S S 5       H  n[        U[        R                  5      (       d  Sn  O[        UR                  [        R                  5      (       a  MQ  [        UR                  [        R                  5      (       a/  UR                  U:X  a  Un	UR                  R                  (       + n  OSn  O   U(       a  U	c  [        R                  " U5      eU(       a  U R                  R                  n
U R                  R                  S   nU
R                  U
R!                  U
R#                  U	5      5      5        UR                  nU	R                  nUR                  Ul        g [        R                  R%                  USU R&                  S9nU R)                  XS9  [        R                  R+                  U R                  U5      U4SU R&                  S9nU R)                  XS9  g )	NzAn unsupported bytecode sequence has been encountered: op_LIST_EXTEND at the start of a block.

This could be due to the use of a branch in a tuple unpacking statement.r   r   Fr   r   r  r;   )r  rK  r   r   r   rv   r[   r   ry   rz   r   rw   rx   rZ   rg   rL   rJ   ro   rr   r   r  rt   )r*   r  rZ   r[   	extendvarr7  r  r   okbuild_empty_liststmtsbuild_tuple_asgnr   r   
extendattr
extendinsts                   r,   op_LIST_EXTENDInterpreter.op_LIST_EXTEND=  s   &!L !!&&11#66 !!&&r*

BGG,O-1O   !3!3!8!8"!=>!$		22B djj"((33  

BGG449N'+$ "ZZ---BB' ?( "*11#66&&++E#1166r:LL5;;/?#@AB*00K)//J*00J txxHJJJZJ8dhhy&9E8R*.(( & 4JJJZJ2r/   c                 l   U R                  U5      nU R                  U5      nU R                  U5      n[        R                  R                  USU R                  S9nU R                  XuS9  [        R                  R                  U R                  U5      X44SU R                  S9nU R                  XS9  g )Nrs   r   r  r;   r  )	r*   r  rZ   rn   r[   
setitemvarr7  setitemattrr  s	            r,   
op_MAP_ADDInterpreter.op_MAP_ADD~  s    &!hhsmggoofmoJ


6WW\\$((:"6r&*hh " 0



.r/   c                 j    [         R                  " S[        U R                  S9nU R	                  X2S9  g Nr   r   r  )r   r   r   r   r  )r*   r  r7  r  s       r,   op_LOAD_ASSERTION_ERROR#Interpreter.op_LOAD_ASSERTION_ERROR  s'    II.DHHMEJJUJ-r/   c                 (    U R                   " U0 UD6  g r'   )r  r*   r~   rm   s      r,   op_LOAD_METHODInterpreter.op_LOAD_METHOD  s    4'3'r/   c                 (    U R                   " U0 UD6  g r'   )rG  r  s      r,   op_CALL_METHODInterpreter.op_CALL_METHOD  s    t+s+r/   c                 d   U[         R                  :X  aB  [        R                  " [        SU R                  5      nU R
                  R                  U5        g U[         R                  :X  a  U R                  " U40 UD6  g U[         R                  :X  a  U R                  " U40 UD6  g [        U5      e)Nr;   )ci1opINTRINSIC_STOPITERATION_ERRORr   r  r   rK  rL   UNARY_POSITIVEr  INTRINSIC_LIST_TO_TUPLErj  rR  )r*   r  operandr<  r   s        r,   op_CALL_INTRINSIC_1Interpreter.op_CALL_INTRINSIC_1  s    %===~~&CR&*hh0""))$/E000&&t6v6E999%%d5f5)'22r/   c           	      x   U R                   UR                     U R                  L d   eX@R                  :  aB  [	        U R
                   Vs/ s H!  nUR                  U:X  d  M  UR                  PM#     sn5      n[        R                  " UR                  US9nU R                  R                  U5        U R                  U5      nU R                  R                  [        R                  " UUR                  X@R                  S95        [        R                  " S U R                  S9nU R!                  XS9  g s  snf r  )r   r   rK  rN  rM  rQ  rZ   r  r   r  rS  rL   r  r  r   rx   r  )	r*   r  r  exit_method	block_endr!  r  r  r  s	            r,   op_LOAD_SPECIALInterpreter.op_LOAD_SPECIAL  s    ;;t{{+t/A/AAAA 222$2O2O !<2OB$&II$: "(2O !< =	 ''$++I6C%%c*XXn-F%%F#';;!*;< ((4TXX6KJJ[J;!<s   D7#D7c                     [         R                  U   [        :X  a4  [        R                  " S[        U R
                  S9nU R                  XBS9  g [        er  )r|  _common_constantsr   r   r   r   r  rR  )r*   r  r7  r_   r  s        r,   op_LOAD_COMMON_CONSTANT#Interpreter.op_LOAD_COMMON_CONSTANT  sF    $$S)^;		"2"0&*hh0 


1))r/   )r8  rQ  r1  r2  r  r   rD  rI  rK  rL  r7  rH  rT  r5  r/  r6  rN  r   rE  rS  r'   )F)NN)r5   r6   r7   r8   r9   r0  r-   re  r]  rX  rY  r  rV  r  r  r  r  rn  r  r  r  r  r  r  r  propertyrU  r  r  r   r  r  rW  r  r  r  r!  r   op_NOT_TAKENrR  r%  r(  r+  r.  r1  r9  r<  rG  rL  rJ  rY  rc  rk  rp  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  op_LOAD_FAST_CHECKr  op_LOAD_FAST_BORROW$op_LOAD_FAST_BORROW_LOAD_FAST_BORROWr  r  r  
op_DUP_TOPop_DUP_TOP_TWOr  r  r  r  r  r  r  r  r  r
  r  r  r"  r%  r)  r-  r0  r3  r7  r=  rC  rG  rP  rS  r^  rc  rf  rj  rz  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   r  r	  r  r  r  r  r  r$  r)  r-  r1  r4  r7  r;  r>  rA  rD  rG  rJ  rM  rP  rS  rV  r[  r_  rb  op_JUMP_BACKWARD_NO_INTERRUPTrg  ro  rr  ru  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  r  r  r  r  r  r  r  r  r  r  r  r'  r,  r0  r:   r;   r/   r,   r-  r-  >  sH    L%"L!\
-^N,"&(21h%@&?
=
.(.;+zLB.9	    ' ' ) ) & & ) ) ) )%R$$ K	:	:!),,))!>
)!,.  //	" 
(	(!),,//	,  
(	(!),,) )$)$)("((((( ( ($($(6 &&	. %&&	.
	7	= 
1	1!),,//)	, 
(	(!),,J*/E,	:	:!),,.
A6 J N&&
	!/b K	# 
:	:!),,88	 
 
j	 	  "),, 88	  
j	 
	  "),,88	 88	/ 
j	 	2 "),,(
3  K	:	:	70 "),,'* &&	" 7"""8"&HAAAF&0 J	:	:	" "),,((


,// *X(
%
%
%
%

+((()()()())(((00010101011000''' %5!)'
 //	+ 
(	(!),,&&	+ 
1	1!),,+B'
!''*87 *D-. //	1	2	(	(!),,-.87878787'$,,%>9
 88	   
j	 	   "),,/?3B/ K	:	:	. "),,(, //	3 
(	(!),,K	<, 
:	:!),,K	* 
:	:!),,r/   r-  c                       \ rS rSrSrg)r#  i  r;   N)r5   r6   r7   r8   r:   r;   r/   r,   r#  r#    s    r/   r#  )6r  rA   r|  r   loggingr   
numba.corer   r   r   numba.core.errorsr   r   r   numba.core.ir_utilsr	   r
   numba.core.utilsr   r   r   r   numba.core.byteflowr   r   r   r   numba.core.unsafer   numba.cpython.unsafe.tupler   r   r"  rR  objectr$   	getLoggerr5   r[  r=   rd   rp   r   r   r   r   r   r   r  r  r   r-  r   r#  r;   r/   r,   <module>rE     s     
    ) ) 
 6K K C C   : ++E$$
i
((:V : 

H
%1v 1h
2&RHV FiX|~[|@[|.b2j_"-& _"-DE ++ $$
i
((r/   