+
    –°³j´5 ã                   óŠ  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
HtHtHtHtHt ^ RIHtHtHtHt ^RIHt ^RIHtHtHtHt ^RIHt ]'       d   ^RIHt ]P@                  ! RR	7       ! R
 R4      4       t!]P@                  ! RR	7       ! R R4      4       t"]PF                  R¸8¼  d   R R lt$M]PF                  R¹8¼  d   R R lt$MR R lt$ ! R R4      t%]PF                  Rº8¼  d   R R lt&M]PF                  R¹8¼  d   R R lt&MR R lt&RRR]%RR/R R  llt'R! R" lt(R# R$ lt)R»R% R& llt*R' R( lt+R) R* lt,R+ R, lt-R- R. lt.R/ R0 lt/R1 R2 lt0R¼R3 R4 llt1R5 R6 lt2R7 R8 lt3R9 R: lt4R; R< lt5R= R> lt6R¼R? R@ llt7RA RB lt8RC RD lt9RE RF lt:RG RH lt;RI RJ lt<RK RL lt=RM RN lt>]PF                  R¹8¼  d   RO RP lt?]P@                  ! RR	7       ! RQ RR4      4       t@RS RT ltARU RV ltBRW RX ltCRY RZ ltDR[ R\ ltER] R^ ltFR_ R` ltGRa Rb ltH]I! ]P”                  4      tKRc Rd ltLRe Rf ltMRg Rh ltNRi Rj ltORk Rl ltPRm Rn ltQRo Rp ltRRq Rr ltSRs Rt ltTRu Rv ltURw Rx ltVRy Rz ltWR{ R| ltXR} R~ ltYRR½R€R¾R�R¿R‚RÀ/tZRƒ R„ lt[R… R† lt\R‡ Rˆ lt]R‰ RŠ lt^R‹ RŒ lt_R� RŽ lt`R� R� ltaR‘ R’ ltbR“ R” ltcR• R– ltd]I! ]PÊ                  4      tf]I! ]PÎ                  4      th]I! ]PÒ                  4      tj]I! ]PÖ                  4      tlR— R˜ ltmRÁR™ Rš lltnR› Rœ lto]Pà                  R� Rž l4       tqR¼RŸ R  lltrR¡ R¢ ltsR£ R¤ lttR¼R¥ R¦ lltuR§ R¨ ltv]Pà                  R¼R© Rª ll4       tw]Pð                  ! 4       tyR¼R« R¬ lltzR­t{]Pø                  ! R®]{ R¯24      t}R° R± lt~R² R³ ltR´ Rµ lt€RÂR¶ R· llt�R# )Ãa€  
This module provides utilities for analyzing, transforming and manipulating Python bytecode.
It includes functionality for:
- Converting between different bytecode formats and versions
- Virtualizing jumps and managing jump targets
- Handling exception tables and their entries
- Managing instruction offsets and extended arguments
- Providing a clean API for bytecode modification and transformation
- Supporting Python version-specific bytecode features
- Generating bytecode from template functions

The module is designed to work across different Python versions (3.7+) and handles
version-specific bytecode differences transparently.
N)ÚCallableÚIterableÚIteratorÚMappingÚSequence)ÚAnyÚcastÚOptionalÚTYPE_CHECKING)Úconfig)Úget_indexofÚpropagate_line_numsÚremove_extra_line_numsÚstacksize_analysis)Úis_safe_constant)ÚDynamoTracerOutputT)Úslotsc                   óP   a € ] tR t^*t o V 3R lR ltV 3R lR ltV 3R ltRtV tR# )ÚInstructionExnTabEntryc                ó    <€ V ^8„  d   QhRS[ /# ©é   Úreturn©Ústr)ÚformatÚ__classdict__s   "€Úf/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_dynamo/bytecode_transformation.pyÚ__annotate__Ú#InstructionExnTabEntry.__annotate__2   s   ø€ ÷ 
ñ 
™#ñ 
ó    c                óÞ   € R V P                   P                  4        RV P                  P                  4        RV P                  P                  4        RV P                   RV P
                   R2# )zInstructionExnTabEntry(start=ú, end=z	, target=z, depth=z, lasti=Ú))ÚstartÚshort_inst_reprÚendÚtargetÚdepthÚlasti©Úselfs   &r   Ú__repr__ÚInstructionExnTabEntry.__repr__2   sl   € à+¨D¯J©J×,FÑ,FÓ,HÐ+Ið JØ—8‘8×+Ñ+Ó-Ð.ð /Ø—k‘k×1Ñ1Ó3Ð4ð 5Ø—Z‘Z�L ¨¯©¨°Að7ð	
r    c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   Úor   ©ÚobjectÚbool)r   r   s   "€r   r   r   :   s   ø€ ÷ 	
ñ 	
™ð 	
¡4ñ 	
r    c                óf  € \        V\        4      '       g   R # V P                  VP                  J ;'       d{    V P                  VP                  J ;'       d[    V P                  VP                  J ;'       d;    V P
                  VP
                  8H  ;'       d    V P                  VP                  8H  # ©F)Ú
isinstancer   r$   r&   r'   r(   r)   )r+   r/   s   &&r   Ú__eq__ÚInstructionExnTabEntry.__eq__:   s”   € Ü˜!Ô3×4Ò4Ùà�J‰J˜!Ÿ'™'Ð!÷ &ð &Ø—‘˜AŸE™EÐ!÷&ð &à—‘˜qŸx™xÐ'÷&ð &ð —
‘
˜aŸg™gÑ%÷&ð &ð —
‘
˜aŸg™gÑ%ð	
r    c                óP   <€ V ^8„  d   Qh/ R;R&   R;R&   R;R&   S[ ;R&   S[;R&   # )r   ÚInstructionr$   r&   r'   r(   r)   ©Úintr2   )r   r   s   "€r   r   r   *   sB   ø‡ ‚ àÑñ ð 
Ññ ð Ññ	 ñ
 �Jñ ñ �Kò r    © N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r,   r6   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r   *   s    ø‡ € ÷
ð 
÷	
ð 	
÷! ƒ r    r   c                   ó”   a € ] tR t^Ft o RtRtRtRtRtRt	Rt
RtV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR ltV 3R ltRtV tR# )r9   z$A mutable version of dis.InstructionNFc                ó    <€ V ^8„  d   QhRS[ /# r   ©r;   )r   r   s   "€r   r   ÚInstruction.__annotate__X   s   ø€ ÷ ñ ™#ñ r    c                ó   € \        V 4      # ©N©Úidr*   s   &r   Ú__hash__ÚInstruction.__hash__X   s   € Ü�$‹xˆr    c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   Úotherr   r0   )r   r   s   "€r   r   rH   [   s   ø€ ÷ %ñ %™Fð %¡tñ %r    c                ó0   € \        V 4      \        V4      8H  # rJ   rK   ©r+   rP   s   &&r   r6   ÚInstruction.__eq__[   s   € Ü�$‹xœ2˜e›9Ñ$Ð$r    c                ó    <€ V ^8„  d   QhRS[ /# r   r   )r   r   s   "€r   r   rH   ^   s   ø€ ÷ Jñ J¡ñ Jr    c                ó<   € R V P                    RV P                   R2# )zInstruction(opname=z	, offset=r#   )ÚopnameÚoffsetr*   s   &r   r%   ÚInstruction.short_inst_repr^   s   € Ø$ T§[¡[ M°¸4¿;¹;¸-ÀqÐIÐIr    c                ó"   <€ V ^8„  d   QhRRRR/# )r   rP   r9   r   Nr<   )r   r   s   "€r   r   rH   a   s   ø€ ÷ )ñ ) Mð )°dñ )r    c                óJ   € VP                   V n         VP                  V n        R # rJ   )Ústarts_lineÚ	positionsrR   s   &&r   Úcopy_positionsÚInstruction.copy_positionsa   s   € Ø ×,Ñ,ˆÔØŸ™ˆŽr    c                ó   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[ R,          ;R&   S[;R&   S[ R,          ;R&   S[ R,          ;R&   S[;R&   S[R	,          ;R
&   S[R,          ;R&   S[R,          ;R&   S[R,          ;R&   # )r   ÚopcoderV   NÚargÚargvalrW   r[   Úis_jump_targetzdis.Positionsr\   r9   r'   Úexn_tab_entryÚargrepr)r;   r   r   r2   r	   r   )r   r   s   "€r   r   rH   F   s¯   ø‡ ‚ ñ �Kñ	 ñ
 �Kñ ñ 
ˆt��Oñ ñ �Kñ ñ �$�JÑñ ñ �t•Ñ"ñ ñ Ñ ñ ñ ˜Õ(Ñ/ñ ñ �]Õ#Ñ*ñ ñ *¨DÕ0Ñ7ñ ñ  �4�ZÑò! r    )r\   r[   )r=   r>   r?   r@   Ú__doc__rW   r[   rc   r\   r'   rd   re   rM   r6   r%   r]   rA   rB   rC   rD   s   @r   r9   r9   F   s^   ø‡ € á.ð €FØ"€KØ €Nà+/€Ià&*€FØ37€MØ€G÷ð ÷%ð %÷Jð J÷)ð )÷7 ƒ r    r9   c                óD   € V ^8„  d   QhR\         P                  R\        /# ©r   Úir   ©Údisr9   )r   s   "r   r   r   h   ó   € ÷ 

ñ 

œsŸ™ð 

´;ñ 

r    c           
      óÆ   € \        V P                  V P                  V P                  V P                  V P
                  V P                  V P                  V P                  4      # rJ   )	r9   r`   rV   ra   rb   rW   Úline_numberrc   r\   ©ri   s   &r   Úconvert_instructionrp   h   óI   € ÜØ�H‰HØ�H‰HØ�E‰EØ�H‰HØ�H‰HØ�M‰MØ×ÑØ�K‰Kó	
ð 		
r    c                óD   € V ^8„  d   QhR\         P                  R\        /# rh   rj   )r   s   "r   r   r   v   rl   r    c           
      óÆ   € \        V P                  V P                  V P                  V P                  V P
                  V P                  V P                  V P                  4      # rJ   )	r9   r`   rV   ra   rb   rW   r[   rc   r\   ro   s   &r   rp   rp   v   rq   r    c                óD   € V ^8„  d   QhR\         P                  R\        /# rh   rj   )r   s   "r   r   r   „   rl   r    c           
      ó²   € \        V P                  V P                  V P                  V P                  V P
                  V P                  V P                  R 4      # rJ   )r9   r`   rV   ra   rb   rW   r[   rc   ro   s   &r   rp   rp   „   sE   € ÜØ�H‰HØ�H‰HØ�E‰EØ�H‰HØ�H‰HØ�M‰MØ×ÑØó	
ð 		
r    c                   ó2   a € ] tR t^‘t o V 3R lR ltRtV tR# )Ú_NotProvidedc                ó    <€ V ^8„  d   QhRS[ /# r   r   )r   r   s   "€r   r   Ú_NotProvided.__annotate__’   s   ø€ ÷ ñ ™#ñ r    c                ó   € R # )rw   r<   r*   s   &r   r,   Ú_NotProvided.__repr__’   s   € Ùr    r<   N)r=   r>   r?   r@   r,   rB   rC   rD   s   @r   rw   rw   ‘   s   ø‡ € ÷ö r    rw   c                ó0   € V ^8„  d   QhR\         R\        /# ©r   Únamer   ©r   r2   )r   s   "r   r   r   ˜   s   € ÷ Gñ Gœsð G¤tñ Gr    c                 ó   € V R9   # )Ú	LOAD_ATTR)r�   ÚLOAD_GLOBALÚLOAD_SUPER_ATTRr<   ©r~   s   &r   Úinst_has_op_bitsr…   ˜   s   € ØÐFÑFÐFr    c                ó0   € V ^8„  d   QhR\         R\        /# r}   r   )r   s   "r   r   r   �   s   € ÷ %ñ %œsð %¤tñ %r    c                 ó   € V R 8H  # )r‚   r<   r„   s   &r   r…   r…   �   s   € Ø�}Ñ$Ð$r    c                ó0   € V ^8„  d   QhR\         R\        /# r}   r   )r   s   "r   r   r   ¢   s   € ÷ ñ œsð ¤tñ r    c                 ó   € R # r4   r<   r„   s   &r   r…   r…   ¢   s   € Ùr    ra   rb   r'   c          
      ó~   € V ^8„  d   QhR\         R\        R,          R\        R,          R\        R,          R\        /# )r   r~   ra   Nrb   r'   r   )r   r;   r   r9   )r   s   "r   r   r   ¦   sI   € ÷ 'ñ 'Ü
ð'ô 
ˆt�ð'ô �$�Jð	'ô
 ˜$Õð'ô ñ'r    c               ó8  € \        V 4      '       d   Ve   \        R4      hVf   ^ pM,VRJV\        J,           VRJ,           pV^8”  d   \        R4      hVe"   \        V\        4      '       g   \        R4      h\        \        P                  V ,          WW#R7      # )a¢  
At most one of `arg`, `argval`, and `target` can be not None/_NotProvided.
This is to prevent ambiguity, e.g. does
    create_instruction("LOAD_CONST", 5)
mean load the constant at co_consts[5], or load the constant 5?

If `arg` is not provided, it will be computed during assembly from
`argval` or `target`.

Bits in the args of instructions LOAD_GLOBAL, LOAD_ATTR (3.12+), and LOAD_SUPER_ATTR
modify the behavior of the instruction. In this case, we allow both `arg`
and `argval` to be set. The value of `arg` here is expected to be the value of
the op bits and the true value of `arg` will be computed during assembly.
If `arg` is not set, the bits are assumed to be 0.
Nz*target cannot be specified for instructionz@only one of arg, argval, and target can be not None/_NotProvidedz#instruction arg must be int or None)r`   rV   ra   rb   r'   )r…   ÚRuntimeErrorrw   r5   r;   r9   rk   Úopmap)r~   ra   rb   r'   Úcnts   &$$$ r   Úcreate_instructionr�   ¦   sœ   € ô0 ˜×ÒØÒÜÐKÓLÐLØŠ;ØˆCøà˜$ˆ 6´Ð#=Õ>À&ÐPTÐBTÕUˆØ�Œ7ÜØRóð ð ‚œz¨#¬s×3Ò3ÜÐ@ÓAÐAÜÜ�y‰y˜� t¸Vôð r    c                ó0   € V ^8„  d   QhR\         R\         /# ©r   r'   r   ©r9   )r   s   "r   r   r   Ñ   s   € ÷ 3ñ 3¤ð 3´ñ 3r    c                 óL   € \         P                  R8¼  d   RMRp\        WR7      # )é   ÚJUMP_FORWARDÚJUMP_ABSOLUTE©r'   ©r”   é   ©ÚsysÚversion_infor�   )r'   Úinsts   & r   Úcreate_jump_absoluterž   Ñ   s!   € Ü ×-Ñ-°Ô8‰>¸o€DÜ˜dÔ2Ð2r    c                ó0   € V ^8„  d   QhR\         R\        /# r‘   )r9   r2   )r   s   "r   r   r   Ö   s   € ÷ >ñ >œ[ð >¬Tñ >r    c                 ó    € V P                   R9   # )r•   )r•   r–   )rV   r—   s   &r   Úis_jump_absoluter¡   Ö   s   € Ø�=‰=Ð=Ñ=Ð=r    c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r   ÚvalÚcheckedr   )r   r2   r9   )r   s   "r   r   r   Ú   s!   € ÷ 	8ñ 	8œ3ð 	8¬ð 	8¼ñ 	8r    c                ój   € V'       d    \        V 4      '       g   \        RV  24      h\        RV R7      # )zÇ
In general we should only create `LOAD_CONST` for immutable objects, but
sometimes it's convenient _and safe_ for Dynamo create `LOAD_CONST` for
mutable objects. In such cases, use `checked=False`.
zunsafe constant Ú
LOAD_CONST©rb   )r   ÚAssertionErrorr�   )r£   r¤   s   &&r   Úcreate_load_constr©   Ú   s2   € ÷ Ü ×$Ò$Ü Ð#3°C°5Ð!9Ó:Ð:Ü˜l°3Ô7Ð7r    c                ó:   € V ^8„  d   QhR\         \        ,          /# r   ©Úlistr9   )r   s   "r   r   r   æ   s   € ÷ ñ œ4¤Õ,ñ r    c                 ó>   € ^RI Hp  \        RV R7      \        R4      .# )a  
Create instructions that trigger the bytecode debugger to stop.

Usage:
    codegen.extend_output(create_breakpoint())

When the bytecode debugger is active, execution will pause at this point.
At runtime, these instructions have no effect on program state.
©ÚBREAKPOINT_MARKERr¦   r§   ÚPOP_TOP)Úbytecode_debuggerr¯   r�   r®   s    r   Úcreate_breakpointr²   æ   s&   € õ 5ô 	˜<Ð0AÔBÜ˜9Ó%ðð r    c                ó$   € V ^8„  d   QhR\         /# r   r’   )r   s   "r   r   r   ø   s   € ÷ )ñ )œñ )r    c                  ó\   € \         P                  R8¼  d   \        R^R7      # \        R4      # ©r”   ÚCOPY©ra   ÚDUP_TOPr˜   rš   r<   r    r   Úcreate_dup_topr¹   ø   s(   € Ü
×Ñ˜7Ô"Ü! &¨aÔ0Ð0Ü˜iÓ(Ð(r    c                óF   € V ^8„  d   QhR\         R\        \        ,          /# ©r   Únr   ©r;   r¬   r9   )r   s   "r   r   r   þ   s   € ÷ 0ñ 0”Cð 0œD¤Õ-ñ 0r    c                ó  € V ^8:  d   . # \         P                  R8¼  d)   \        V ^R4       Uu. uF  p\        RVR7      NK  	  up# V ^8:  d$   \        R. ROV ^,
          ,          ,           4      .# \        RV R7      .# u upi )aj  
Returns a "simple" sequence of instructions that rotates TOS to the n-th
position in the stack. For Python < 3.11, returns a single ROT_*
instruction. If no such instruction exists, an error is raised and the
caller is expected to generate an equivalent sequence of instructions.
For Python >= 3.11, any rotation can be expressed as a simple sequence of
swaps.
ÚSWAPr·   ÚROT_ÚROT_Nr˜   éÿÿÿÿ)ÚTWOÚTHREEÚFOUR)r›   rœ   Úranger�   )r¼   ri   s   & r   Úcreate_rot_nrÇ   þ   s€   € ð 	ˆA„vàˆ	ä
×Ñ˜7Ô"ô <AÀÀAÀr¼?ÓK¹?°aÔ" 6¨q×1¹?ÑKÐKàˆA„vÜ" 6Ò,DÀQÈÅUÕ,KÕ#KÓLÐMÐMÜ˜w¨AÔ.Ð/Ð/ùò	 Ls   ®A?c                ór   € V ^8„  d   QhR\         \        \         ,          ,          R\        \         ,          /# ©r   Úinst_or_instsr   ©r9   r¬   )r   s   "r   r   r     s+   € ÷ =ñ =Ü¤¤kÕ!2Õ2ð=ä	Œ+Õñ=r    c                óv  a€ \        V \        4      '       d   V .oM/\        V \        4      '       g   \        R\	        V 4       24      hV oR V3R llpR V3R llp\
        P                  R8¼  dQ   \        SR	,          P                  4      '       d   V! R	4      '       g   V! R	4       S# S\        R4      .,           o S# \
        P                  R
8¼  d�   \        SR	,          P                  4      '       d   V! R	4      '       g   V! R	4       S# S^ ,          P                  R8X  d   V! ^ 4      '       g   V! ^ 4       S# \        R4      .S,           o S# \
        P                  R8¼  dN   \        S^ ,          P                  4      '       d   V! ^ 4      '       g   V! ^ 4       S# \        R4      .S,           oS# )ag  
Appends or prepends a PUSH_NULL instruction to `inst_or_insts`,
depending on Python version. Used when you know that
`inst_or_insts` generates a callable that will be called.

NOTE: Assumes `inst_or_insts` is a single instruction or sequence of
instructions that pushes exactly 1 object to the stack that is to
be called. It is important that you include ALL instructions that
construct the callable - not just the first instruction/a prefix.

Will attempt to use the NULL push bit for instructions
with such bits (LOAD_GLOBAL 3.11+, LOAD_ATTR 3.12+, LOAD_SUPER_ATTR).
In this case, instructions WILL be modified.
ú)expected inst_or_insts to be a list, got c                ó0   € V ^8„  d   QhR\         R\        /# )r   Úidxr   r:   )r   s   "r   r   Ú#add_push_null.<locals>.__annotate__/  s   € ÷ 'ñ 'œcð '¤dñ 'r    c                 ó†   <€ SV ,          P                   f   \        RV  R24      hSV ,          P                   ^,          ^8H  # ©Núexpected insts[z].arg to be not None©ra   r¨   ©rÏ   Úinstss   &€r   Úinst_has_bit_setÚ'add_push_null.<locals>.inst_has_bit_set/  s>   ø€ Ø��:�>‰>Ò!Ü  ?°3°%Ð7KÐ!LÓMÐMØ�S�z�~‰~ Õ! QÑ&Ð&r    c                ó(   € V ^8„  d   QhR\         RR/# )r   rÏ   r   NrG   )r   s   "r   r   rÐ   4  s   € ÷ ñ œ#ð  $ñ r    c                 ó�   <€ SV ,          P                   f   \        RV  R24      hSV ,          ;P                   ^,          un         R # rÒ   rÔ   rÕ   s   &€r   Úset_inst_bitÚ#add_push_null.<locals>.set_inst_bit4  s8   ø€ Ø��:�>‰>Ò!Ü  ?°3°%Ð7KÐ!LÓMÐMØˆc�
�Š˜!Õ�r    Ú	PUSH_NULLr‚   ©r”   é   rÂ   ©r”   é   r˜   )
r5   r9   r¬   r¨   Útyper›   rœ   r…   rV   r�   )rÊ   r×   rÛ   rÖ   s   &  @r   Úadd_push_nullrã     s—  ø€ ô" �-¤×-Ò-Ø$1 ?‰ä˜-¬×.Ò.Ü Ø;¼DÀÓ<OÐ;PÐQóð ð ˆ÷'ð '÷
ð ô
 ×Ñ˜7Ô"ä˜E "�I×,Ñ,×-Ò-Ñ6FÀr×6JÒ6Jñ ˜Ôð& €Lð# Ô/°Ó<Ð=Õ=‰Eð" €Lô! 
×	Ñ	˜WÔ	$ô ˜E "�I×,Ñ,×-Ò-Ñ6FÀr×6JÒ6JÙ˜Ôð €Lð �1�X�_‰_ Ô-Ñ6FÀq×6IÒ6IÙ˜ŒOð €Lô (¨Ó4Ð5¸Õ=‰Eð €Lô 
×	Ñ	˜WÔ	$ä˜E !�HŸO™O×,Ò,Ñ5EÀa×5HÒ5HÙ˜ŒOð €Lô (¨Ó4Ð5¸Õ=ˆEØ€Lr    c                ór   € V ^8„  d   QhR\         \        \         ,          ,          R\        \         ,          /# rÉ   rË   )r   s   "r   r   r   U  s+   € ÷ !ñ !Ü¤¤kÕ!2Õ2ð!ä	Œ+Õñ!r    c                ód  € \        V \        4      '       d   V .pM/\        V \        4      '       g   \        R\	        V 4       24      hT p\
        P                  R8  d   V# \
        P                  R8¼  d   RM^ pW,          P                  R8X  dc   W,          P                  f   \        RV R24      hW,          P                  ^,          ^ 8X  d"   W,          ;P                  ^,          un        V# \
        P                  R8¼  d   V\        R4      .,           pV# \        R4      .V,           pV# )	z~Like add_push_null, but the low bit of LOAD_ATTR/LOAD_SUPER_ATTR
is not set, due to an expected CALL_FUNCTION_EX instruction.
rÍ   r‚   rÓ   z$].arg to be not None for LOAD_GLOBALrÝ   r˜   rÞ   rÂ   )
r5   r9   r¬   r¨   râ   r›   rœ   rV   ra   r�   )rÊ   rÖ   rÏ   s   &  r   Úadd_push_null_call_function_exræ   U  s  € ô �-¤×-Ò-Ø$1 ?‰ä˜-¬×.Ò.Ü Ø;¼DÀÓ<OÐ;PÐQóð ð ˆä
×Ñ˜'Ô!Øˆä× Ñ  GÔ+‰"°€CØ…z×Ñ˜MÔ)Ø�:�>‰>Ò!Ü Ø! # Ð&JÐKóð ð �:�>‰>˜AÕ Ô"Ø�J�NŠN˜aÕ�NØˆLä
×Ñ˜7Ô"ØÔ+¨KÓ8Ð9Õ9ˆð €Lô $ KÓ0Ð1°EÕ9ˆà€Lr    c                óR   € V ^8„  d   QhR\         R\        R\        \        ,          /# )r   ÚnargsÚ	push_nullr   ©r;   r2   r¬   r9   )r   s   "r   r   r   y  s&   € ÷ 4<ñ 4<¤ð 4<´ð 4<¼¼kÕ9Jñ 4<r    c                ó°  € \         P                  R8¼  dµ   . pV'       d\   VP                  \        R4      4       \         P                  R8¼  d
   V ^,           MV ^,           pVP	                  \        V4      4       \         P                  R8  d   VP                  \        RV R7      4       VP                  \        RV R7      4       V# \        RV R7      .# )	aÓ  
Creates a sequence of instructions that makes a function call.

`push_null` is used in Python 3.11+ only. It is used in codegen when
a function call is intended to be made with the NULL + fn convention,
and we know that the NULL has not been pushed yet. We will push a
NULL and rotate it to the correct position immediately before making
the function call.

`push_null` should be True if no NULL is pushed for the callable.
Conversely, `push_null` should be False if a NULL was pushed for the callable.
Prefer using `push_null=False` when possible since we will not need to rotate
NULL to the right place, which is less efficient.

Generally, you should codegen a function by using `add_push_null` then
`create_call_function` with `push_null=False`.

Example of when to set push_null False:

insts = [
    create_instruction("LOAD_GLOBAL", argval="torch"),
    create_instruction("LOAD_ATTR", argval="nn"),
    create_instruction("LOAD_ATTR", argval="functional"),
    create_instruction("LOAD_ATTR", argval="relu"),
]
insts = add_push_null(insts)
insts.append(create_instruction("LOAD_FAST", argval="x"))
insts.extend(create_call_function(1, False))

Example of when to set push_null True:

insts = [create_instruction("LOAD_FAST", x)]
for should_wrap, wrapper_name in wrappers:
    if should_wrap:
        insts.extend([
            create_instruction("LOAD_GLOBAL", argval="wrapper1"),
            create_instruction("SWAP", arg=2),
            *create_call_function(1, True),
        )
rÝ   ÚPRECALLr·   ÚCALLÚCALL_FUNCTIONr˜   rÞ   rà   )r›   rœ   Úappendr�   ÚextendrÇ   )rè   ré   ÚoutputÚrotss   &&  r   Úcreate_call_functionró   y  s¥   € ôR ×Ñ˜7Ô"ØˆßØ�M‰MÔ,¨[Ó9Ô:ä #× 0Ñ 0°GÔ ;�5˜1–9ÀÈÅˆDØ�M‰Mœ, tÓ,Ô-Ü×Ñ˜gÔ%Ø�M‰MÔ,¨Y¸EÔBÔCØ�‰Ô(¨°UÔ;Ô<ØˆÜ˜°EÔ:Ð;Ð;r    c          	      ó^   € V ^8„  d   QhR\         R\         R\         R\        \        ,          /# )r   Ú
has_kwargsré   Úignore_314_kwargs_pushr   )r2   r¬   r9   )r   s   "r   r   r   °  s7   € ÷ Iñ IÜðIÜ!%ðIÜ?CðIä	Œ+ÕñIr    c                ó  € \         P                  R8¼  dà   . p\         P                  R8¼  d-   V '       g%   V'       g   VP                  \        R4      4       Rp V'       dn   VP                  \        R4      4       \         P                  R8¼  d   \	        V 4      ^,           M\	        V 4      ^,           pVP                  \        V4      4       VP                  \        R\	        V 4      R7      4       V# \        R\	        V 4      R7      .# )a  
Assumes that in 3.14+, if has_kwargs=False, there is NOT a NULL
on the TOS for the kwargs. This utility function will add a PUSH_NULL.

If the caller has already pushed a NULL for the kwargs, then set ignore_314_kwargs_push=True
so we don't push another NULL for the kwargs.
rÝ   TÚCALL_FUNCTION_EXr·   r˜   ©r”   é   rÞ   )r›   rœ   rï   r�   r;   rð   rÇ   )rõ   ré   rö   rñ   rò   s   &&&  r   Úcreate_call_function_exrû   °  sÌ   € ô ×Ñ˜7Ô"Øˆä×Ñ Ô'ßß*à�M‰MÔ,¨[Ó9Ô:ØˆJßØ�M‰MÔ,¨[Ó9Ô:ô
 ×#Ñ# wÔ.ô �J“ !Ö#ä˜“_ qÕ(ð ð
 �M‰Mœ, tÓ,Ô-Ø�‰Ô(Ð);ÄÀZÃÔQÔRØˆÜÐ1´s¸:³ÔGÐHÐHr    c                óF   € V ^8„  d   QhR\         R\        \        ,          /# )r   rè   r   r½   )r   s   "r   r   r   Ò  s   € ÷ :ñ :œcð :¤d¬;Õ&7ñ :r    c                 óÂ   € \         P                  R8¼  d   \        RV R7      .# \         P                  R8¼  d   \        RV R7      \        RV R7      .# \        RV R7      .# )r”   rí   r·   rì   ÚCALL_METHODrà   r˜   rš   )rè   s   &r   Úcreate_call_methodrÿ   Ò  s^   € Ü
×Ñ˜7Ô"Ü" 6¨uÔ5Ð6Ð6Ü
×Ñ˜7Ô"ä˜y¨eÔ4Ü˜v¨5Ô1ð
ð 	
ô ˜}°%Ô8Ð9Ð9r    c                ó0   € V ^8„  d   QhR\         R\        /# r}   )r   r9   )r   s   "r   r   r   Ý  s   € ÷ :ñ :œSð :¤[ñ :r    c                 ób   € \         P                  R8¼  d   \        R^V R7      # \        RV R7      # )r”   r�   ©ra   rb   ÚLOAD_METHODr§   rà   rš   r„   s   &r   Úcreate_load_methodr  Ý  s,   € Ü
×Ñ˜7Ô"ä! +°1¸TÔBÐBÜ˜m°DÔ9Ð9r    c                ó0   € V ^8„  d   QhR\         R\         /# r‘   r’   )r   s   "r   r   r   ä  s   € ÷ 5ñ 5œkð 5¬kñ 5r    c                 óL   € \         P                  R8¼  d   RMRp\        WR7      # )r”   ÚBEFORE_WITHÚ
SETUP_WITHr—   r˜   rš   )r'   rV   s   & r   Úcreate_setup_withr	  ä  s!   € Ü!×.Ñ.°'Ô9‰]¸|€FÜ˜fÔ4Ð4r    c                óF   € V ^8„  d   QhR\         R\        \        ,          /# r»   r½   )r   s   "r   r   r   é  s   € ÷ +ñ +”3ð +œ4¤Õ,ñ +r    c                 ó  € \         P                  R8¼  d   \        RV R7      .# V ^8X  d   . # V ^8X  d   \        R4      .# V ^8X  d   \        R4      \        R4      .#  \        RV ^,
          R7      \        R4      \        RRR7      \        4       \        R4      \        R4      \        R4      \        RRR7      \        R	4      \        R4      \	        R
4      .\        ^ 4      O\        R4      N\        RV ^,
          R7      N# )r”   r¿   r·   ÚROT_TWOÚ	ROT_THREEÚ
BUILD_LISTr¸   r¦   r§   ÚSTORE_SUBSCRÚreverser°   ÚUNPACK_SEQUENCEr˜   rÂ   )r›   rœ   r�   Úcreate_binary_subscrr  rÿ   ©r¼   s   &r   Úcreate_swapr  é  s  € Ü
×Ñ˜7Ô"Ü" 6¨qÔ1Ð2Ð2àˆA„vØˆ	Ø	
ˆaŒÜ" 9Ó-Ð.Ð.Ø	
ˆaŒÜ" ;Ó/Ô1CÀIÓ1NÐOÐOðô& 	˜<¨Q°­UÔ3Ü˜9Ó%Ü˜<°Ô3ÜÓÜ˜;Ó'Ü˜9Ó%Ü˜;Ó'Ü˜<°Ô3Ü˜>Ó*Ü˜9Ó%Ü˜9Ó%ðô 
˜AÓ	ðô 	˜9Ó%ðô 	Ð,°!°aµ%Ô8ðð r    c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r   rV   ra   r   ©r   r;   )r   s   "r   r   r     s!   € ÷ ,>ñ ,>¤Cð ,>¬cð ,>´cñ ,>r    c                óà  € V R9   dA   V R8X  d   ^M^ p\         P                  R8¼  d   V^,           V,           # V^,           V,           # V R9   d   V R8X  d   ^M^ pV^,           V,           # V R8X  dr   \         P                  R8¼  d   ^# \         P                  R8¼  d   ^V^,          ,           # \         P                  R	8¼  d   ^V^,          ,           # ^V^,          ,           # \        RV  24      h)
aP  Return the depth of the callable from TOS for a call instruction.

Depth is 1-indexed: TOS = 1, below-TOS = 2, etc.  This encodes the
per-version stack layouts for every call instruction variant.

Note: on 3.11-3.12, CPython's CALL can have either NULL or self at the
bottom depending on function vs method call.  Dynamo's LOAD_METHOD
normalizes method calls to NULL + bound_method, so the bottom is always
NULL and the callable is always at depth arg + 1.

Stack layouts (bottom-to-top within the call's frame):
  CALL (3.13+):            callable  NULL  arg0 ... argN-1
  CALL (3.11-3.12):        NULL  callable  arg0 ... argN-1
  CALL_KW (3.13+):         callable  NULL  arg0 ... argN-1  kw_names
  CALL_FUNCTION (3.10):    callable  arg0 ... argN-1
  CALL_FUNCTION_KW (3.10): callable  arg0 ... argN-1  kw_names
  CALL_FUNCTION_EX:
    3.14+:                 callable  NULL  args_tuple  kwargs_or_null
    3.13:                  callable  NULL  args_tuple [kwargs_dict]
    3.11-3.12:             NULL  callable  args_tuple [kwargs_dict]
    3.10:                  callable  args_tuple [kwargs_dict]
ÚCALL_KWÚCALL_FUNCTION_KWrø   znot a call instruction: )rí   r  rÞ   )rî   r  rù   r˜   )r›   rœ   Ú
ValueError)rV   ra   Úkw_extras   && r   Úget_call_callable_depthr    sã   € ð. Ð$Ô$Ø )Ô+‘1°ˆÜ×Ñ˜wÔ&Ø˜•7˜XÕ%Ð%ð ˜•7˜XÕ%Ð%Ø	Ð8Ô	8ØÐ"4Ô4‘1¸!ˆØ�Q�w˜Õ!Ð!Ø	Ð%Ô	%Ü×Ñ˜wÔ&ÙÜ×Ñ Ô(Ø˜˜a�•=Ð Ü×Ñ Ô(Ø˜˜a�•=Ð à˜˜a�•=Ð äÐ3°F°8Ð<Ó=Ð=r    c          	      óz   € V ^8„  d   QhR\         R,          R\         R,          R\        R\        \        ,          /# )r   r$   Nr&   Ústorer   rê   )r   s   "r   r   r   F  s9   € ÷ 
ñ 
Ü��:ð
Ü $�Jð
Ü/3ð
ä	Œ+Õñ
r    c                ó„  € \         P                  R8¼  d4   V'       d   \        R4      M	\        4       p\	        \        W4      4      V.# \         P                  R8¼  d-   V'       d   RMRp\	        V 4      \	        V4      \        V4      .# V'       d   RMRp\	        V 4      \	        V4      \        R^R7      \        V4      .# )	zI
BINARY_SLICE and STORE_SLICE (if `set` is True) for all Python versions
r  ÚSTORE_SLICEÚBINARY_SLICEÚBINARY_SUBSCRÚBUILD_SLICEr·   rù   rà   )r›   rœ   r�   r  r©   Úslice)r$   r&   r  Úsubscr_instÚ	inst_names   &&&  r   Úcreate_binary_slicer'  F  s¶   € ô ×Ñ˜7Ô"ç27Ô˜~Ô.Ô=QÓ=Sð 	ô œe EÓ/Ó0Øð
ð 	
ô 
×	Ñ	˜WÔ	$ß%*‘M°ˆ	ä˜eÓ$Ü˜cÓ"Ü˜yÓ)ð
ð 	
÷ ',‘N°ˆ	ä˜eÓ$Ü˜cÓ"Ü˜}°!Ô4Ü˜yÓ)ð	
ð 	
r    c                óF   € V ^8„  d   QhR\         R\        \        ,          /# rh   r½   )r   s   "r   r   r   e  s   € ÷ ñ ”3ð œ4¤Õ,ñ r    c                 óÖ   € \         P                  R8¼  d   \        RV R7      .# V ^8X  d   \        R4      .# . \        V 4      O\	        4       N\        V ^,           4      O\        ^4      O# rµ   )r›   rœ   r�   r  r¹   ro   s   &r   Úcreate_copyr*  e  sw   € Ü
×Ñ˜7Ô"Ü" 6¨qÔ1Ð2Ð2ØˆA„vÜ" 9Ó-Ð.Ð.ðÜ	�Q‹ðäÓðô 
�Q˜•UÓ	ðô 
�Q‹ð	ð r    c                óF   € V ^8„  d   QhR\         R\        \        ,          /# )r   r(   r   r½   )r   s   "r   r   r   y  s   € ÷ ñ ¤ð ¬¬kÕ):ñ r    c                 óº   € . \        \        R \        R7      4      O\        T \        P
                  R8¼  d   ^M^,           4      O\        ^R4      O\        R4      N# )r¦   r§   Fr°   r˜   )rã   r�   Úprintr*  r›   rœ   ró   )r(   s   &r   Úcreate_print_on_stackr.  y  sb   € ðÜ	Ô)¨,¼uÔEÓ	Fðä	�U¤3×#3Ñ#3°wÔ#>™aÀAÕFÓ	Gðô 
˜a Ó	'ðô 	˜9Ó%ð	ð r    c                óF   € V ^8„  d   QhR\         R\        \        ,          /# )r   Úvaluer   )r   r¬   r9   )r   s   "r   r   r   ƒ  s   € ÷ ñ œcð ¤d¬;Õ&7ñ r    c                 ó‚   € . \        \        R \        R7      4      O\        R V R7      N\        ^R4      O\        R4      N# )r¦   r§   Fr°   )rã   r�   r-  ró   )r0  s   &r   Úcreate_print_valuer2  ƒ  sP   € ðÜ	Ô)¨,¼uÔEÓ	Fðä˜<°Ô6ðô 
˜a Ó	'ðô 	˜9Ó%ð	ð r    c                ó$   € V ^8„  d   QhR\         /# r   r’   )r   s   "r   r   r   Œ  s   € ÷ 3ñ 3œkñ 3r    c                  ó\   € \         P                  R8  d   \        R4      # \        R^R7      # )r”   r"  Ú	BINARY_OPr·   rù   rš   r<   r    r   r  r  Œ  s(   € Ü
×Ñ˜'Ô!Ü! /Ó2Ð2ä˜k¨rÔ2Ð2r    c                ó0   € V ^8„  d   QhR\         R\        /# r»   )r;   r9   )r   s   "r   r   r   “  s   € ÷ 4ñ 4œ#ð 4¤+ñ 4r    c                 ój   € \         P                  R8¼  d   V ^ 8X  d   \        R4      # \        RV R7      # )r”   ÚBUILD_TUPLEr·   rù   r<   )r›   rœ   r©   r�   r  s   &r   Úcreate_build_tupler9  “  s.   € Ü
×Ñ˜7Ô" q¨A¤vÜ  Ó$Ð$Ü˜m°Ô3Ð3r    c          	      ó´   € V ^8„  d   QhR\         R\        \        \         ,          \        \         \         .R3,          \        \         .R3,          3,          /# ©r   Úfirst_linenor   N)r;   Útupler¬   r   )r   s   "r   r   r   ™  sE   € ÷ &"ñ &"Üð&"ä
Œ4”�9”h¤¤S˜z¨4Ð/Õ0´(¼C¸5À$¸;Õ2GÐGÕHñ&"r    c                óâ   aaaaa€ \         P                  R,          R	8w  d$   \        R\         P                  R,           24      h. oV o^ o^ oR V3R lloR VVVV3R llpR VVV3R llpSW3# )
z»
Used to create typing.CodeType.co_linetable
See https://github.com/python/cpython/blob/3.10/Objects/lnotab_notes.txt
This is the internal format of the line number table for Python 3.10
:Nr   Nz+linetable_writer requires Python 3.10, got c                ó4   € V ^8„  d   QhR\         R\         RR/# )r   Úbyteno_deltaÚlineno_deltar   NrG   )r   s   "r   r   Ú&linetable_writer.<locals>.__annotate__ª  s&   € ÷ @ñ @œcð @´ð @¸ñ @r    c                 ó  <€ V ^ 8w  g   V^ 8w  dq   \        ^ \        V ^þ4      4      p\        R\        V^4      4      pV^ 8X  d   V^ 8X  d   \        R4      hW,          p W,          pSP                  W#^ÿ,          34       K~  R# )é    z,byte_offset and line_offset cannot both be 0Ni�ÿÿÿ)ÚmaxÚminr¨   rð   )r@  rA  Úbyte_offsetÚline_offsetÚ	linetables   &&  €r   Ú_updateÚ!linetable_writer.<locals>._updateª  s~   ø€ Ø˜aÔ <°1Ô#4Ü˜a¤ \°3Ó!7Ó8ˆKÜ˜d¤C¨°cÓ$:Ó;ˆKØ˜aÔ K°1Ô$4Ü$Ð%SÓTÐTØÕ'ˆLØÕ'ˆLØ×Ñ˜k¸Õ+=Ð>Ö?ñ $5r    c                ó4   € V ^8„  d   QhR\         R\         RR/# )r   Ú
lineno_newÚ
byteno_newr   NrG   )r   s   "r   r   rB  ´  s!   € ÷ ñ œ3ð ¬Cð °Dñ r    c                 óF   <€ VS,
          pVoS! VS4       V S,
          oV oR # rJ   r<   )rM  rN  r@  rJ  ÚbytenoÚlinenorA  s   && €€€€r   ÚupdateÚ linetable_writer.<locals>.update´  s+   ø€ à! FÕ*ˆØˆÙ�˜lÔ+Ø! FÕ*ˆØŠr    c                ó(   € V ^8„  d   QhR\         RR/# )r   Útotal_bytesr   NrG   )r   s   "r   r   rB  ¼  s   € ÷ 4ñ 4œð 4 ñ 4r    c                 ó(   <€ S! V S,
          S4       R # rJ   r<   )rU  rJ  rP  rA  s   &€€€r   r&   Úlinetable_writer.<locals>.end¼  s   ø€ Ù�˜fÕ$ lÖ3r    )r”   é
   ©r›   rœ   r¨   )r<  rR  r&   rJ  rP  rQ  rA  rI  s   &  @@@@@r   Úlinetable_writerrZ  ™  s~   ü€ ô ×Ñ˜Õ˜wÔ&ÜØ9¼#×:JÑ:JÈ2Õ:NÐ9OÐPó
ð 	
ð €IØ€FØ€LØ€F÷@ð @÷ó ÷4ò 4ð �fÐ!Ð!r    c                óF   € V ^8„  d   QhR\         R\        \         ,          /# r»   ©r;   r¬   )r   s   "r   r   r   Â  s   € ÷ ñ ”Sð œT¤#�Yñ r    c                óÔ   € V ^ 8  d   \        RV  24      hV ^?,          .pV ^,          p V ^ 8”  d9   VR;;,          ^@,          uu&   VP                  V ^?,          4       V ^,          p K?  V# )zr
6-bit chunk encoding of an unsigned integer
See https://github.com/python/cpython/blob/3.11/Objects/locations.md
z+encode_varint requires non-negative n, got rÂ   )r¨   rï   )r¼   Úbs   & r   Úencode_varintr_  Â  sd   € ð
 	ˆ1„uÜÐJÈ1È#ÐNÓOÐOØ	
ˆR�ˆ€AØˆ!…G€AØ
ˆaŒ%Ø	ˆ"���‹Ø	�‰��R•ÔØ	ˆa�ŠØ€Hr    c                ó°   € V ^8„  d   QhR\         R\        \        \         ,          \        \        P
                  R,          \         .R3,          3,          /# r;  )r;   r=  r¬   r   rk   Ú	Positions)r   s   "r   r   r   Ô  sB   € ÷ >!ñ >!Üð>!ä	Œt”C�yœ(¤C§M¡M°DÕ$8¼#Ð#>ÀÐ#DÕEÐEÕ	Fñ>!r    c                óŒ   aa€ \         P                  R8  d   \        R\         P                   24      h. oV oR VV3R llpSV3# )z·
Used to create typing.CodeType.co_linetable
See https://github.com/python/cpython/blob/3.11/Objects/locations.md
This is the internal format of the line number table for Python 3.11
z0linetable_311_writer requires Python 3.11+, got c                óV   € V ^8„  d   QhR\         P                  R,          R\        RR/# )r   r\   NÚ	inst_sizer   )rk   ra  r;   )r   s   "r   r   Ú*linetable_311_writer.<locals>.__annotate__ã  s*   € ÷ -	-ñ -	-œcŸm™m¨dÕ2ð -	-¼sð -	-Àtñ -	-r    c                 ó´   <a € S '       d   S P                   MR pR VV 3R llpVf   ^ pMVS,
          pVoV^8”  d   V! V^4       V^,          pK  V! WA4       R # )Nc                ó4   € V ^8„  d   QhR\         R\         RR/# )r   ÚdeltaÚsizer   NrG   )r   s   "r   r   Ú:linetable_311_writer.<locals>.update.<locals>.__annotate__ç  s!   € ÷ 7ñ 7œsð 7¬#ð 7°$ñ 7r    c                 óŠ  <€ ^ Tu;8  d   ^8:  g   M \        RV 24      hRpS'       d›   SP                  e�   SP                  e   SP                  eq   SP                  ec   SP                  ^ðV,           ^,
          4       SP                  SP                  ,
          SP                  ^,           SP                  ^,           3pMSP                  ^èV,           ^,
          4       V ^ 8  d   V ) ^,          ^,          p M	V ^,          p SP                  \        V 4      4       V F  pSP                  \        V4      4       K  	  R# )rD  z"size must be in range (0, 8], got Nr<   )r¨   rQ  Ú
end_linenoÚ
col_offsetÚend_col_offsetrï   rð   r_  )rh  ri  Úother_varintsr¼   rI  r\   s   &&  €€r   rJ  Ú5linetable_311_writer.<locals>.update.<locals>._updateç  s  ø€ Ø˜Dž AžÜ(Ð+MÈdÈVÐ)TÓUÐUð 24�çØ!×(Ñ(Ò4Ø!×,Ñ,Ò8Ø!×,Ñ,Ò8Ø!×0Ñ0Ò<à×$Ñ$ \°DÕ%8¸1Õ%<Ô=ð "×,Ñ,¨y×/?Ñ/?Õ?Ø!×,Ñ,¨qÕ0Ø!×0Ñ0°1Õ4ð%‘Mð ×$Ñ$ \°DÕ%8¸1Õ%<Ô=à˜1”9Ø$˜f¨�]¨aÕ/‘Eà˜a•K�Eà× Ñ ¤¨uÓ!5Ô6Û&�AØ×$Ñ$¤]°1Ó%5Ö6ó 'r    )rQ  )r\   rd  rM  rJ  rA  rQ  rI  s   f&   €€r   rR  Ú$linetable_311_writer.<locals>.updateã  s[   ù€ ç-6˜×)Ò)¸DˆJ÷7ñ 7ðB Ò!Ø ‘à)¨FÕ2�Ø#�Ø˜a”-Ù˜ aÔ(Ø˜Q•’	Ù�LÖ,r    r˜   rY  )r<  rR  rQ  rI  s   & @@r   Úlinetable_311_writerrr  Ô  sU   ù€ ô ×Ñ˜gÔ%Ü ØBÄ3×CSÑCSÐBTÐUóð ð ˆ	Øˆ÷-	-ñ -	-ð^ ˜&Ð Ð r    c                   ó,   a € ] tR tRt o V 3R ltRtV tR# )ÚExceptionTableEntryi  c                óV   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[;R&   # )r   r$   r&   r'   r(   r)   r:   )r   r   s   "€r   r   Ú ExceptionTableEntry.__annotate__  s?   ø‡ ‚ á�Jñ ñ 
�Hñ ñ �Kñ	 ñ
 �Jñ ñ �Kò r    r<   N)r=   r>   r?   r@   rA   rB   rC   rD   s   @r   rt  rt    s   ø‡ ‡ „ r    rt  c                óF   € V ^8„  d   QhR\         R\        \         ,          /# r»   r\  )r   s   "r   r   r     s   € ÷ ñ ¤Sð ¬T´#­Yñ r    c                ó6  € V ^ 8  d   \        RV  24      hV ^?,          .pV ^,          p V ^ 8”  d$   VP                  V ^?,          4       V ^,          p K*  VP                  4        \        \	        V4      ^,
          4       F  pW;;,          ^@,          uu&   K  	  V# )zJ
Similar to `encode_varint`, but the 6-bit chunks are ordered in reverse.
z;encode_exception_table_varint requires non-negative n, got )r¨   rï   r  rÆ   Úlen)r¼   r^  ri   s   &  r   Úencode_exception_table_varintrz    sˆ   € ð 	ˆ1„uÜØIÈ!ÈÐMó
ð 	
ð 
ˆR�ˆ€AØˆ!…G€AØ
ˆaŒ%Ø	�‰��R•ÔØ	ˆa�ŠØ‡I�I„KÜ”3�q“6˜A•:ÖˆØ	���
�ñ à€Hr    c                óF   € V ^8„  d   QhR\         \        ,          R\        /# )r   Ú
bytes_iterr   )r   r;   )r   s   "r   r   r   1  s   € ÷ 
ñ 
¬h´s­mð 
Äñ 
r    c                ó–   € \        V 4      pV^?,          pV^@,          '       d&   V^,          p\        V 4      pW!^?,          ,          pK4  V# )z-
Inverse of `encode_exception_table_varint`.
)Únext)r|  r^  r£   s   &  r   Údecode_exception_table_varintr  1  sC   € ô 	ˆZÓ€AØ
ˆb�&€CØ
ˆb�&Œ&Ø��	ˆÜ�ÓˆØ�2�v�ŠØ€Jr    c                ó>   € V ^8„  d   QhR\         \        ,          RR/# )r   Útabr   N)r¬   rt  )r   s   "r   r   r   >  s    € ÷ ñ œtÔ$7Õ8ð ¸Tñ r    c                óL  € \        \        V 4      ^,
          4       EF  pW,          P                  W,          P                  8:  df   W,          P                  W^,           ,          P                  8  d8   W^,           ,          P                  W^,           ,          P                  8:  d   K�  \	        RV RV RW,          P                   RW,          P                   RV^,            RW^,           ,          P                   RW^,           ,          P                   R24      h	  R# )z†
Verifies that a list of ExceptionTableEntries will make a well-formed
jump table: entries are non-empty, sorted, and do not overlap.
z5exception table entries are not well-formed at index z: entry[z	]=(start=r"   z	), entry[r#   N)rÆ   ry  r$   r&   r¨   )r�  ri   s   & r   Úcheck_exception_tablerƒ  >  sÚ   € ô
 ”3�s“8˜a•<× ˆà�F�L‰L˜C�FŸJ™JÔ&Ø•—
‘
˜S Q¥�Z×-Ñ-Ô-Ø˜•E•
× Ñ  C¨A­¥J§N¡NÖ2ä ØGÈÀsð KØ˜˜9 S¥V§\¡\ N°&¸½¿¹¸ð EØ˜Q�˜˜y¨°­U­×)9Ñ)9Ð(:¸&ÀÈÅUÅÇÁÐ@PÐPQðSóð ó !r    c                óF   € V ^8„  d   QhR\         R\        \        ,          /# )r   Úexntabr   )Úbytesr¬   rt  )r   s   "r   r   r   P  s    € ÷ ñ ¤%ð ¬DÔ1DÕ,Eñ r    c           	     ón  € \        V 4      p. p  \        V4      ^,          p\        V4      ^,          pW4,           ^,
          p\        V4      ^,          p\        V4      pV^,	          p\        V^,          4      p	VP                  \	        W5WhV	4      4       KŠ    \
         d    \        T4       Tu # i ; i)zy
Parse the exception table according to
https://github.com/python/cpython/blob/3.11/Objects/exception_handling_notes.txt
)Úiterr  r2   rï   rt  ÚStopIterationrƒ  )
r…  Úexntab_iterr�  r$   Úlengthr&   r'   Údlr(   r)   s
   &         r   Úparse_exception_tabler�  P  s¥   € ô
 �v“,€KØ
€CðØÜ1°+Ó>ÀÕBˆEÜ2°;Ó?À!ÕCˆFØ•. 1Õ$ˆCÜ2°;Ó?À!ÕCˆFÜ.¨{Ó;ˆBØ˜!•GˆEÜ˜˜a�“LˆEØ�J‰JÔ*¨5°vÀeÓLÖMøÜô Ü˜cÔ"ØŠ
ðús   �B
B ÂB4Â3B4c                óF   € V ^8„  d   QhR\         \        ,          R\        /# )r   r�  r   )r¬   rt  r†  )r   s   "r   r   r   f  s    € ÷ ñ ¤$Ô':Õ";ð Äñ r    c                ó  € . pV  Fó  p\        VP                  ^,          4      pV^ ;;,          ^€,          uu&   VP                  V4       VP                  VP                  ,
          ^,           pVP                  \        V^,          4      4       VP                  \        VP                  ^,          4      4       VP
                  ^,          VP                  ,           pVP                  \        V4      4       Kõ  	  \        V4      # )zX
Inverse of parse_exception_table - encodes list of exception
table entries into bytes.
)rz  r$   rð   r&   r'   r(   r)   r†  )r�  r^  ÚentryÚfirst_entryr‹  rŒ  s   &     r   Úassemble_exception_tabler’  f  s¼   € ð
 	€AÛˆÜ3°E·K±KÀ1Õ4DÓEˆØ�A�˜&Õ ‹Ø	�‰�ÔØ—‘˜UŸ[™[Õ(¨1Õ,ˆØ	�‰Ô.¨v¸­{Ó;Ô<Ø	�‰Ô.¨u¯|©|¸qÕ/@ÓAÔBØ�k‰k˜QÕ %§+¡+Õ-ˆØ	�‰Ô.¨rÓ2Ö3ñ ô �‹8€Or    c                ót   € V ^8„  d   QhR\         \        ,          R\        R\        \        \        3,          /# )r   ÚinstructionsÚfirstlinenor   )r¬   r9   r;   r=  r†  )r   s   "r   r   r   x  s0   € ÷ #&ñ #&œ4¤Õ,ð #&¼3ð #&Ä5ÌÔPUÈÕCVñ #&r    c                óÒ  € . p\         P                  R8¼  Ed/   \        V4      w  r4^ p\        V 4       EF  w  rgVP                  R8X  dT   ^pV^,          pR FA  p	WV	,           ,          P                  R8w  g   K#  WV	,           ,          P
                  Vn         M	  M\        V4      ^,          V,           p^ pV! VP
                  V4       ^ pVP                  ;'       g    ^ p
VP                  VP                  V
^ÿ,          34       \        \        V4      ^,          ^,
          4       F  pVP                  R4       K  	  EK  	  MŒ\        V4      w  r4pV  Fg  pVP                  e   V! VP                  \        V4      4       VP                  ;'       g    ^ p
VP                  VP                  V
^ÿ,          34       Ki  	  V! \        V4      4       \        V4      \        V4      3# )z)Do the opposite of dis.get_instructions()ÚEXTENDED_ARGr˜   ©é   r   r”   )rD  rD  )r›   rœ   rr  Ú	enumeraterV   r\   Úinstruction_sizera   rð   r`   rÆ   rZ  r[   ry  r†  )r”  r•  ÚcodeÚlnotabÚupdate_linenoÚnum_extri   r�   rd  Újra   Ú_r&   s   &&           r   Úassembler¢  x  sŒ  € à€DÜ
×Ñ˜7Õ"Ü 4°[Ó AÑˆØˆÜ  ×.‰GˆAØ�{‰{˜nÔ,Ø�	Ø˜1•�ã"�AØ#¨¥EÕ*×1Ñ1°^ÖCØ)5¸!µeÕ)<×)FÑ)F˜œÙò #ô
 -¨TÓ2°aÕ7¸'ÕA�	Ø�Ù˜$Ÿ.™.¨)Ô4ØˆGØ—(‘(—-�-˜aˆCØ�K‰K˜Ÿ™ c¨D¥jÐ1Ô2ÜÔ+¨DÓ1°QÕ6¸Õ:Ö;�Ø—‘˜FÖ#ô <ò! /ô& &6°kÓ%BÑ"ˆ˜sã ˆDØ×ÑÒ+Ù˜d×.Ñ.´°D³	Ô:Ø—(‘(—-�-˜aˆCØ�K‰K˜Ÿ™ c¨D¥jÐ1Ö2ñ	 !ñ 	ŒC�‹IŒä�‹;œ˜f›Ð%Ð%r    c                ól   € V ^8„  d   QhR\         \        \        3,          R\        R\        R,          /# )r   Úoffset_to_instrW   r   N)Údictr;   r9   )r   s   "r   r   r   ž  s3   € ÷ 	ñ 	ÜœœkÐ)Õ*ð	Ü47ð	ä�4Õñ	r    c                ó’   € R F@  pWV,           ,          P                   \        P                  8w  g   K1  WV,           ,          u # 	  R# )zM
Get the instruction located at a given offset, accounting for EXTENDED_ARGs
N)rD  r   é   é   ©r`   rk   r—  )r¤  rW   r¼   s   && r   Ú_get_instruction_by_offsetrª  ž  s;   € ó ˆØ 1�*Õ%×,Ñ,´×0@Ñ0@Ö@Ø!¨1¥*Õ-Ò-ñ ñ r    c                ó>   € V ^8„  d   QhR\         \        ,          RR/# ©r   r”  r   N)r   r9   )r   s   "r   r   r   ª  s#   € ÷ Pñ P¤8¬KÕ#8ð P¸Tñ Pr    c                ó,  € V  Uu/ uF  qP                   f   K  VP                   VbK!  	  ppV  F]  pVP                  \        P                  9   g"   VP                  \        P                  9   g   KC  \        W!P                  4      Vn        K_  	  R# u upi )z9Replace jump targets with pointers to make editing easierN)rW   r`   rk   ÚhasjabsÚhasjrelrª  rb   r'   )r”  r�   Újump_targetss   &  r   Úvirtualize_jumpsr±  ª  sp   € ñ '3óÙ&2˜d·k±kÔˆ�‰�TÒ¡lð ð ó ˆØ�;‰;œ#Ÿ+™+Ô%¨¯©¼¿¹Ö)CÜ4°\Ç;Á;ÓOˆDŽKó ùò	s
   …B™Bc                ó(   € V ^8„  d   QhR\         RR/# )r   Úinstructionr   Nr’   )r   s   "r   r   r   ¸  s   € ÷ 
ñ 
¤[ð 
°Tñ 
r    c                 óÐ  € \         P                  R8  d   \        R4      hRV P                  9   d#   V P                  P	                  RR4      V n        M>RV P                  9   d#   V P                  P	                  RR4      V n        M\        R4      h\        P                  V P                  ,          V n        V P                  \        9  d   \        RV P                   R24      hR# )	r”   z+Cannot flip jump direction in Python < 3.11ÚFORWARDÚBACKWARDz-Instruction is not a forward or backward jumpz	expected z" to be a relative jump instructionNr˜   )r›   rœ   rŒ   rV   ÚreplaceÚAttributeErrorrk   r�   r`   Ú
_REL_JUMPSr¨   )r³  s   &r   Úflip_jump_directionrº  ¸  sÅ   € Ü
×Ñ˜'Ô!ÜÐHÓIÐIØ�K×&Ñ&Ô&Ø(×/Ñ/×7Ñ7¸	À:ÓNˆÕØ	�{×)Ñ)Ô	)Ø(×/Ñ/×7Ñ7¸
ÀIÓNˆÕäÐLÓMÐMÜŸ™ ;×#5Ñ#5Õ6€KÔØ×Ñ¤Ô+ÜØ˜×*Ñ*Ð+Ð+MÐNó
ð 	
ñ ,r    c                óR   € V ^8„  d   QhR\         \        ,          R\        R\        /# )r   r”  rÏ   r   ©r¬   r9   r;   )r   s   "r   r   r   È  s&   € ÷ ñ ¬¬kÕ):ð Äð Ìñ r    c                ó°   € W,          pR FG  pW8¼  d>   WV,
          ,          P                   \        P                  8X  d   WV,
          ,          pKF   V# 	  V# )zd
i.e. get the first EXTENDED_ARG instruction (if any) when targeting
instructions[idx] with a jump.
r˜  r©  )r”  rÏ   r'   rW   s   &&  r   Ú_get_instruction_frontr¾  È  sP   € ð
 Õ€FÛˆØŒ=˜\°­,Õ7×>Ñ>Ä#×BRÑBRÔRØ!¨¥,Õ/ŠFàØ€Mñ ð
 €Mr    c                ó>   € V ^8„  d   QhR\         \        ,          RR/# r¬  r«   )r   s   "r   r   r   Ö  s   € ÷ >1ñ >1¤T¬+Õ%6ð >1¸4ñ >1r    c           	     ó¢  € \        \        P                  4      P                  \        \        P                  4      4      pV  EFU  pVP
                  V9   g   K  VP
                  \        P                  9  g   K8  VP                  f   \        RVP                   R24      hVP                  P                  f   \        RVP                   R24      hVP                  f   \        RVP                   R24      hVP                  P                  VP                  8  dC   \        P                  R8  d   \        R4      hRVP                  9   d   \        V4       EK  EK  \        P                  R8¼  g   EK6  RVP                  9   g   EKJ  \        V4       EKX  	  \        V 4       \        V 4      pV  EF–  pVP
                  V9   g   K  VP                  f   \        RVP                   R24      h\!        WVP                  ,          4      pVP
                  \        P                  9   d\   \        P                  R8  d<   VP                  f   \        R	4      h\#        VP                  ^,          4      Vn        M¨\        R
4      hVP                  f   \        R4      hVP                  f   \        RVP                   R24      h\'        \#        VP                  VP                  ,
          \)        V4      ,
          4      4      Vn        V;P$                  ^,          un        VP                  Vn        RVP                   2Vn        EK™  	  R# )zJFill in args for virtualized jump target after instructions may have movedNzjump instruction z has no targetzjump target for z has no offsetz*Got negative jump offset for Python < 3.11rµ  r¶  z"absolute jump target has no offsetz+Python 3.11+ should not have absolute jumpsz"relative jump target has no offsetzrelative jump instruction zto r˜   )Úsetrk   r®  Úunionr¯  r`   r'   r¨   rV   rW   r›   rœ   rŒ   rº  Úupdate_offsetsr   r¾  r;   ra   Úabsr›  rb   re   )r”  Újumpsr�   Úindexofr'   s   &    r   Údevirtualize_jumpsrÇ  Ö  s…  € ä”—‘Ó×"Ñ"¤3¤s§{¡{Ó#3Ó4€Eô ˆØ�;‰;˜%ÖØ�{‰{¤#§+¡+Ö-Ø—;‘;Ò&Ü(Ø+¨D¯K©K¨=¸ÐGóð ð —;‘;×%Ñ%Ò-Ü(Ð+;¸D¿K¹K¸=ÈÐ)WÓXÐXØ—;‘;Ò&Ü(Ø+¨D¯K©K¨=¸ÐGóð ð —;‘;×%Ñ%¨¯©Ô3Ü×'Ñ'¨'Ô1Ü*Ð+WÓXÐXà  D§K¡KÔ/Ü+¨D×1ò 0ô ×'Ñ'¨7×2°zÀTÇ[Á[×7PÜ+¨D×1ñ- ô2 �<Ô Ü˜,Ó'€Gô ˆØ�;‰;˜%ÖØ�{‰{Ò"Ü$Ð'8¸¿¹¸À^Ð%TÓUÐUÜ+¨LÀ$Ç+Á+Õ:NÓOˆFØ�{‰{œcŸk™kÔ)Ü×#Ñ# gÔ-ð —}‘}Ò,Ü,Ð-QÓRÐRÜ" 6§=¡=°1Õ#4Ó5�D•Hä&Ð'TÓUÐUð —=‘=Ò(Ü(Ð)MÓNÐNØ—;‘;Ò&Ü(Ø4°T·[±[°MÀÐPóð ô Ü˜Ÿ™¨¯©Õ3Ô6FÀtÓ6LÕLÓMó�”ð —’˜Q••Ø Ÿ-™-ˆDŒKØ  §¡ Ð0ˆD�Ló9 r    c                óJ   € V ^8„  d   QhR\         R\        \        ,          RR/# )r   Úexn_tab_bytesr”  r   N)r†  r¬   r9   )r   s   "r   r   r     s)   € ÷ 0ñ 0Üð0Ü(,¬[Õ(9ð0à	ñ0r    c                ó<  aaa	a
€ \        V 4      pV Uu/ uF  p\        \        VP                  4      VbK   	  upo	\	        S	P                  4       4      o
^ o\        V4      o R VVV	V
3R llpV! 4       w  rVV Fˆ  pVP                  f   \        RVP                   R24      hVP                  VP                  8”  d   V! 4       w  rVK&  VP                  VP                  8¼  g   Km  \        P                  ! V4      Vn        KŠ  	  R# u upi   \         d     R# i ; i)zDReplace exception table entries with pointers to make editing easierc                óF   € V ^8„  d   QhR\         \        \        3,          /# r   )r=  rt  r   )r   s   "r   r   Ú0virtualize_exception_table.<locals>.__annotate__"  s   € ÷ 	%ñ 	%”eÔ/Ô1GÐGÕHñ 	%r    c                  ót  <€ \        S4      p S\        S4      8  d$   SS,          V P                  8:  d   S^,          oK3  S^ 8:  d   \        R4      hSS^,
          ,          p\	        \        SV P                  4      \        SV4      \        SV P                  4      V P                  V P                  4      pW3# )r™  zAend_offset_idx must be positive in exception table virtualization)
r~  ry  r&   r¨   r   rª  r$   r'   r(   r)   )r�  Ú
end_offsetÚ
inst_entryÚend_offset_idxÚexn_tab_iterr¤  Úoffsetss      €€€€r   ÚstepÚ(virtualize_exception_table.<locals>.step"  s§   ø€ ä˜Ó&ˆEð ¤ W£Ô-°'¸.Õ2IÈUÏYÉYÔ2Và !Õ#’Ø Ô"Ü$ØWóð ð ! °!Õ!3Õ4ˆJÜ/Ü*¨>¸5¿;¹;ÓGÜ*¨>¸:ÓFÜ*¨>¸5¿<¹<ÓHØ—‘Ø—‘óˆJð Ð$Ð$r    Núinstruction z4 has no offset during exception table virtualization)r�  r   r;   rW   ÚsortedÚkeysrˆ  r¨   rV   r&   r$   Úcopyrd   r‰  )rÉ  r”  Úexn_tabr�   rÓ  r�  rÏ  rÐ  rÑ  r¤  rÒ  s   &&     @@@@r   Úvirtualize_exception_tablerÚ    s   û€ ô $ MÓ2€GÙ?KÓL¹|°t”dœ3 §¡Ó,¨dÒ2¹|ÑL€NÜ�^×(Ñ(Ó*Ó+€GØ€NÜ˜“=€Lð'÷	%ó 	%ñ2 !›FÑˆÛ ˆDØ�{‰{Ò"Ü$Ø" 4§;¡; -ð 0+ð +óð ð —+‘+ §	¡	Ô)Ù$(£FÑ!�‘zØ�{‰{˜eŸk™kÖ)Ü%)§Y¢Y¨zÓ%:�Ö"ó !ùòA MøôT ô Úðús   ”$DÁ"A?D Ã&D ÄDÄDc                ó\   € V ^8„  d   QhR\         \        ,          R\         \        ,          /# ©r   r”  r   )r¬   r9   rt  )r   s   "r   r   r   J  s+   € ÷ [ñ [Ü”{Õ#ð[ä	Ô
Õñ[r    c           	     ó¶  aaaa€ / o\        V 4      pV  EFb  pVP                  '       g   K  \        WVP                  P                  ,          4      P                  pVf   \        R4      h\        \        VP                  P                  P                  4      \        VP                  P                  4      ,           ^,
          pVf   \        R4      h\        WVP                  P                  ,          4      P                  pVf   \        R4      hW43pWRP                  P                  VP                  P                  3pVS9   d*   SV,          V8w  d   \        RV RSV,           RV 24      hVSV&   EKe  	  \        SP                  4       R R7      p^ o. o. oR	 VVVV3R
 llp	V EF  pS'       d&   SR,          ^,          V^ ,          8  d
   V	! 4        K-  S'       dÄ   SR,          ^ ,          V^ ,          u;8:  d%   V^,          u;8:  d   SR,          ^,          8:  g   M \        RV RSR,           24      h\        SSR,          ^ ,          4      p
W¦^ ,          8  d9   SP!                  \#        W¦^ ,          ^,
          .SSR,          ,          O5!  4       V^ ,          oSP!                  V4       EK  	  S'       d
   V	! 4        K  \%        S4       S# )zMCompute exception table in list format from instructions with exn_tab_entriesz5exception table entry start instruction has no offsetz3exception table entry end instruction has no offsetz6exception table entry target instruction has no offsetz.conflicting exception table entries for range z: z vs c                 ó(   € V ^ ,          V ^,          ) 3# ©rD  r<   ©Úts   &r   Ú<lambda>Ú)compute_exception_table.<locals>.<lambda>|  s   € ¸¸1½ÀÀ!Å¸u¹r    ©Úkeyc                ó   € V ^8„  d   QhRR/# )r   r   Nr<   )r   s   "r   r   Ú-compute_exception_table.<locals>.__annotate__ƒ  s   € ÷ #ñ #�ñ #r    c                 óô   <€ S'       do   SP                  4       p SV ^,          8:  dO   SP                  \        \        V ^ ,          S4      V ^,          .SV ,          O5!  4       V ^,          ^,           oR# R# R# )zD
Pop the key_stack and append an exception table entry if possible.
N)Úpoprï   rt  rE  )rå  Úexn_dictrÙ  Ú	key_stackÚnextis    €€€€r   ré  Ú$compute_exception_table.<locals>.popƒ  se   ø€ ÷
 Ø—-‘-“/ˆCØ˜˜A�ŒØ—‘Ü'¬¨C°­F°EÓ(:¸CÀ½FÐSÀXÈcÅ]ÓSôð ˜A� �
’ñ	 ñ r    zexception table key ú& is not properly nested within parent rÂ   )r   rd   r¾  r$   rW   r¨   r   r;   r&   r›  r'   r(   r)   rÖ  r×  rE  rï   rt  rƒ  )r”  rÆ  r�   r$   r&   r'   rå  r£   Úkeys_sortedré  Úleftrê  rÙ  rë  rì  s   &          @@@@r   Úcompute_exception_tablerñ  J  s�  û€ ð >@€HÜ˜,Ó'€GäˆØ××Òä*Ø d×&8Ñ&8×&>Ñ&>Õ?óç‰fð ð Š}Ü$ØKóð ô
 ”S˜$×,Ñ,×0Ñ0×7Ñ7Ó8Ü" 4×#5Ñ#5×#9Ñ#9Ó:õ;àõð ð
 Š{Ü$ØIóð ô ,Ø d×&8Ñ&8×&?Ñ&?Õ@óç‰fð ð Š~Ü$ØLóð ð �,ˆCØ×-Ñ-×3Ñ3°T×5GÑ5G×5MÑ5MÐNˆCØ�hŒØ˜C•= CÔ'Ü(ØHØ˜%˜r (¨3¥- °°S°Eð;óð ð  ˆH�SŒMñG ôV ˜Ÿ™›Ñ.EÔF€Kà€Eà')€IØ)+€G÷#ó #ô ˆç˜I b�M¨!Õ,¨s°1­vÔ5ÙŽEßà˜b•M !Õ$¨¨A­ÖL°#°aµ&ÖL¸IÀb½MÈ!Õ<LÖLÜ$Ø*¨3¨%ð 0Ø'¨�m˜_ð.óð ô �u˜i¨�m¨AÕ.Ó/ˆDØ˜!•fŒ}Ø—‘Ü'¨°!­f°q­jÐS¸8ÀIÈbÅMÕ;RÓSôð ˜•FˆEØ×Ñ˜×ñ# ÷$ ÙŽÜ˜'Ô"Ø€Nr    c                ól   € V ^8„  d   QhR\         \        ,          R\        \        \        3,          RR/# )r   r�  rÆ  r   N)r¬   r   r¥  r9   r;   )r   s   "r   r   r   ¨  s4   € ÷  ñ  Ü	Ô$Õ	%ð Ü04´[Ä#Ð5EÕ0Fð à	ñ r    c                ó¸  € . pV  FÑ  pWP                   ,          WP                  ,          3pV'       d/   VR,          ^,          V^ ,          8  d   VP                  4        K6  V'       d\   VR,          ^ ,          V^ ,          u;8:  d%   V^,          u;8:  d   VR,          ^,          8:  g   M \        RV RVR,           24      hVP	                  V4       KÓ  	  R# )zÆ
Checks `tab` is a properly sorted list of nested InstructionExnTabEntry's,
i.e. no entries partially overlap.
"Properly sorted" means entries are sorted by increasing starts, then
decreasing ends.
zexception table entry rî  NrÂ   )r$   r&   ré  r¨   rï   )r�  rÆ  Úentry_stackr�  rå  s   &&   r   Ú!check_inst_exn_tab_entries_nestedrõ  ¨  s³   € ð *,€KÛˆØ—{‘{Õ# W¯Y©YÕ%7Ð8ˆß˜k¨"�o¨aÕ0°3°qµ6Ô9Ø�O‰OÖßØ •O AÕ&¨#¨a­&ÖP°C¸µFÖP¸kÈ"½oÈaÕ>PÖPÜ$Ø,¨S¨Eð 2%Ø%0°¥_Ð$5ð7óð ð 	×Ñ˜3Öó r    c                ó>   € V ^8„  d   QhR\         \        ,          RR/# r¬  r«   )r   s   "r   r   r   ¿  s   € ÷ =ñ =´4¼Õ3Dð =Èñ =r    c                ó†  € \        V 4      p/ pV  Fˆ  pVP                  '       g   K  WP                  P                  ,          WP                  P                  ,          3pWB9   d&   VP                  W$,          8w  d   \	        RV 24      hVP                  W$&   KŠ  	  \        VP                  4       R R7       Uu. uF  qBV,          NK  	  pp\        WQ4       V F^  p\        WP                  ,          WP                  ,          ^,           4       F$  p\        P                  ! V4      W,          n        K&  	  K`  	  R# u upi )zr
Copies exception table entries to all instructions in an entry's range.
Supports nested exception table entries.
z1conflicting exn_tab_entry for instruction at key c                 ó(   € V ^ ,          V ^,          ) 3# rß  r<   rà  s   &r   râ  Ú2propagate_inst_exn_table_entries.<locals>.<lambda>Ó  s   € ÀaÈÅdÈQÈqÍTÈEÁ]r    rä  N)
r   rd   r$   r&   r¨   rÖ  r×  rõ  rÆ   rØ  )r”  rÆ  Úentriesr�   rå  Úsorted_entriesr�  ri   s   &       r   Ú propagate_inst_exn_table_entriesrü  ¿  s  € ô
 ˜,Ó'€GØ=?€GÛˆØ××Òà×*Ñ*×0Ñ0Õ1Ø×*Ñ*×.Ñ.Õ/ðˆCð Œ~Ø×%Ñ%¨­Ô5Ü(ØKÈCÈ5ÐQóð ð  ×-Ñ-ˆG‹Lñ ô !' w§|¡|£~Ñ;RÕ SóÙ S˜��ˆÑ Sð ð ô & nÔ>ó  ˆÜ�wŸ{™{Õ+¨W·Y±YÕ-?À!Õ-CÖDˆAÜ,0¯IªI°eÓ,<ˆL�OÖ)ó Eó  ùòs   Â:D>c                ó>   € V ^8„  d   QhR\         \        ,          RR/# r¬  r«   )r   s   "r   r   r   Ý  s   € ÷ &ñ &´4¼Õ3Dð &Èñ &r    c           
     óè  € \        V 4      p\        4       p\        V 4       EFL  w  r4VP                  '       g   K  \        P
                  R8  d   \        R4      h\        VP                  4      V9   d   \        RV 24      hVP                  \        VP                  4      4       VP                  pVP                  V9  d   \        R4      hVP                  V9  d   \        R4      hVP                  V9  d   \        R4      hWP                  ,          Tu;8:  d   WP                  ,          8:  d   EK  M \        RV RWP                  ,           RWP                  ,           R	24      h	  R
# )a.  
Checks that exn_tab_entries of instructions are valid.
An entry's start, end, and target must be in instructions.
Instructions with an exn_tab_entry are located within
the entry's start and end instructions.
Instructions do not share exn_tab_entries.

Implicitly checks for no duplicate instructions.
z/exn_tab_entry is only supported in Python 3.11+z-duplicate exn_tab_entry at instruction index z9exn_tab_entry start instruction not found in instructionsz7exn_tab_entry end instruction not found in instructionsz:exn_tab_entry target instruction not found in instructionszinstruction at index z% is outside its exn_tab_entry range [z, Ú]Nr˜   )r   rÁ  rš  rd   r›   rœ   r¨   rL   Úaddr$   r&   r'   )r”  rÆ  Úexn_tab_entry_setri   r�   r�  s   &     r   Ú check_inst_exn_tab_entries_validr  Ý  sR  € ô ˜,Ó'€GÜ›ÐÜ˜\×*‰ˆØ××ÒÜ×Ñ 'Ô)Ü$Ð%VÓWÐWÜ�$×$Ñ$Ó%Ð):Ô:Ü$ØCÀAÀ3ÐGóð ð ×!Ñ!¤" T×%7Ñ%7Ó"8Ô9Ø×&Ñ&ˆEØ�{‰{ 'Ô)Ü$ØOóð ð �y‰y Ô'Ü$ØMóð ð �|‰| 7Ô*Ü$ØPóð ð ŸK™KÕ(¨AÖC°¿¹Õ1C×CÑCÜ$Ø+¨A¨3ð /Ø%§k¡kÕ2Ð3°2°g¿i¹iÕ6HÐ5IÈðLóð ó/ +r    c                ó>   € V ^8„  d   QhR\         \        ,          RR/# r¬  r«   )r   s   "r   r   r     s#   € ÷ Pñ P¤d¬;Õ&7ð P¸Dñ Pr    c                 óz   € V  Uu. uF%  qP                   \        P                  8w  g   K#  VNK'  	  upV R &   R# u upi )ºNNNNr©  )r”  ri   s   & r   Ústrip_extended_argsr    s.   € Ù".ÓO¡,˜Q·(±(¼c×>NÑ>NÑ2N—q�q¡,ÑO€L�ƒOùÒOs   … 8ª8c                óh   € V ^8„  d   QhR\         R\        \         ,          R\        \         ,          /# )r   Úold_instÚ	new_instsr   rË   )r   s   "r   r   r     s.   € ÷ &ñ &Üð&Ü&*¬;Õ&7ð&ä	Œ+Õñ&r    c                 óH  € V P                   '       dC   V P                   P                  V J d)   \        V4      ^8”  d   VR,          V P                   n        VR,           F9  p\        P                  ! V P                   4      Vn         V P                  Vn        K;  	  V^ ,          P
                  V n        V^ ,          P                  V n        V^ ,          P                  V n        V^ ,          P                  V n        V^ ,          P                  V n	        V .VR,          ,           # )r™  :r™  NNrÂ   )
rd   r&   ry  rØ  r\   r`   rV   ra   rb   r'   )r  r	  r�   s   && r   Úoverwrite_instructionr    sÞ   € ð
 	××ÐØ×"Ñ"×&Ñ&¨(Ó2Ü�	‹N˜QÔà%.¨r¥]ˆ×ÑÔ"à˜"—�ˆÜ!ŸYšY x×'=Ñ'=Ó>ˆÔØ!×+Ñ+ˆŽñ ð   •l×)Ñ)€H„OØ •l×)Ñ)€H„OØ˜Q•<×#Ñ#€H„LØ •l×)Ñ)€H„OØ •l×)Ñ)€H„OØˆ:˜	 "�Õ%Ð%r    c                ó\   € V ^8„  d   QhR\         \        ,          R\         \        ,          /# rÜ  r«   )r   s   "r   r   r   &  s$   € ÷ ñ ¬$¬{Õ*;ð ÄÄ[Õ@Qñ r    c                ó  € \         P                  R8¼  d   \        R4      hRRRR/pV  FS  pVP                  V9   g   K  WP                  ,          Vn        \        P
                  VP                  ,          Vn        KU  	  V # )zFLOAD_METHOD puts a NULL on the stack which causes issues, so remove itz<remove_load_call_method should not be called on Python 3.11+r  r�   rþ   rî   r˜   )r›   rœ   r¨   rV   rk   r�   r`   )r”  Úrewritesr�   s   &  r   Úremove_load_call_methodr  &  sp   € ä
×Ñ˜7Ô"ÜØJó
ð 	
ð ˜{¨M¸?ÐK€HÛˆØ�;‰;˜(Ö"Ø"§;¡;Õ/ˆDŒKÜŸ)™) D§K¡KÕ0ˆDŽKñ ð Ðr    c                ó>   € V ^8„  d   QhR\         \        ,          RR/# r¬  r«   )r   s   "r   r   r   4  s   € ÷  ñ  ¤d¬;Õ&7ð  ¸Dñ  r    c                 óÖ  € . pV  FÜ  pR VP                   9   d¸   \        R\        RVP                   9   4      R7      pVP                  Vn        \
        P                  R8  d,   \        RVP                   9   d   RMRVP                  R7      pM\        RVP                  R7      p\        R	R
R7      VV.pVP                  \        W%4      4       KË  VP                  V4       KÞ  	  WR&   R
# )Ú_NONEÚIS_OPÚNOTr·   rµ  ÚPOP_JUMP_FORWARD_IF_TRUEÚPOP_JUMP_BACKWARD_IF_TRUEr—   ÚPOP_JUMP_IF_TRUEr¦   Nr§   r  rà   )rV   r�   r;   ra   rb   r›   rœ   r'   rð   r  rï   )r”  r	  r�   Úis_opÚjump_opÚreplace_instss   &     r   Úremove_jump_if_noner  4  sÐ   € Ø€IÛˆØ�d—k‘kÔ!Ü& w´C¸ÀÇÁÑ8LÓ4MÔNˆEà Ÿ9™9ˆEŒLä×Ñ 'Ô)Ü,ð %¨¯©Ô3ñ 3à8àŸ;™;ô‘ô -Ð-?ÈÏÉÔT�ô # <¸Ô=ØØðˆMð
 ×ÑÔ2°4ÓGÖHà×Ñ˜TÖ"ñ3 ð4  �ƒOr    c                ó>   € V ^8„  d   QhR\         \        ,          RR/# r¬  r«   )r   s   "r   r   r   S  s   € ÷  ñ  ¬D´Õ,=ð  À$ñ  r    c                 ó„  € . pV  EF2  pVP                  V4       VP                  R9   g   K(  \        P                  R8¼  d   VP                  R 8X  d   \	        4       pM%\        VP                  P                  RR4      4      pVP                  '       d+   VP                  P                  VJ d   W2P                  n        \        P                  ! VP                  4      Vn        VP                  Vn
        \        P                  R,          Vn        RVn        ^Vn        ^Vn        VP                  V4       EK5  	  WR&   R# )r!  ÚSLICEÚSUBSCRr#  r  N)r!  r   rù   )rï   rV   r›   rœ   r  r�   r·  rd   r&   rØ  r\   rk   r�   r`   ra   rb   )r”  r	  r�   r%  s   &   r   Úremove_binary_store_slicer   S  sò   € Ø€IÜˆØ×Ñ˜ÔØ�;‰;Ð9Ö9ä×Ñ 7Ô*¨t¯{©{¸nÔ/LÜ2Ó4‘ä0°·±×1DÑ1DÀWÈhÓ1WÓX�Ø×!×!Ð! d×&8Ñ&8×&<Ñ&<ÀÓ&DØ)4×"Ñ"Ô&Ü(,¯	ª	°$×2DÑ2DÓ(EˆKÔ%Ø$(§N¡NˆKÔ!äŸ)™) MÕ2ˆDŒKØ'ˆDŒKØˆDŒHØˆDŒKØ×Ñ˜[×)ñ# ð$  �ƒOr    c                ó>   € V ^8„  d   QhR\         \        ,          RR/# r¬  r«   )r   s   "r   r   r   j  s   € ÷  ñ  ´$´{Õ2Cð  Èñ  r    c                ó¸  € . pV  FÍ  pVP                   R8X  d©   VP                  e›   VP                  ^,          '       d‚   \        RVP                  R,          VP                  R7      \        R4      .p\        P
                  R	8  d   VP                  \        R^R7      4       VP                  \        W#4      4       K¼  VP                  V4       KÏ  	  WR&   R# )
a@  On 3.12+, LOAD_ATTR with arg%2==1 is the method variant that pushes 2
values (NULL/self + method).  Normalize it to a non-method LOAD_ATTR
(1 value) followed by PUSH_NULL (+ SWAP on 3.12 where NULL goes below
the callable).  This lets break_graph_if_unsupported handle LOAD_ATTR
uniformly as a single-output instruction.r�   Nr  rÝ   r¿   r·   r  éþÿÿÿrÞ   )	rV   ra   r�   rb   r›   rœ   rï   rð   r  ©r”  r	  r�   r  s   &   r   Úremove_load_attr_method_variantr%  j  s¬   € ð $&€IÛˆØ�;‰;˜+Ô%¨$¯(©(Ò*>À4Ç8Á8ÈaÇ<Ä<ä" ;°D·H±H¸rµMÈ$Ï+É+ÔVÜ" ;Ó/ðˆMô ×Ñ 'Ô)Ø×$Ñ$Ô%7¸ÀAÔ%FÔGØ×ÑÔ2°4ÓGÖHà×Ñ˜TÖ"ñ ð  �ƒOr    ÚLOAD_FAST_LOAD_FASTÚ!LOAD_FAST_BORROW_LOAD_FAST_BORROWÚSTORE_FAST_STORE_FASTÚSTORE_FAST_LOAD_FASTc                ó>   € V ^8„  d   QhR\         \        ,          RR/# r¬  r«   )r   s   "r   r   r   ‡  s   € ÷  ñ  ¬$¬{Õ*;ð  Àñ  r    c                 ó&  € . pV  F„  pVP                   \        9   d\   \        VP                   ,          w  r4VP                  w  rV\        W5R 7      \        WFR 7      .pVP	                  \        W'4      4       Ks  VP                  V4       K†  	  WR&   R# )r§   r  N)rV   ÚFUSED_INSTSrb   r�   rð   r  rï   )r”  r	  r�   Úinst0Úinst1Úargval0Úargval1r  s   &       r   Úremove_fused_load_storer1  ‡  s   € Ø€IÛˆØ�;‰;œ+Ô%Ü& t§{¡{Õ3‰LˆEØ#Ÿ{™{ÑˆGô # 5Ô9Ü" 5Ô9ðˆMð ×ÑÔ2°4ÓGÖHà×Ñ˜TÖ"ñ ð  �ƒOr    c                ó>   € V ^8„  d   QhR\         \        ,          RR/# r¬  r«   )r   s   "r   r   r   š  s   € ÷  ñ  ´t¼KÕ7Hð  ÈTñ  r    c                 óü   € . pV  Fo  pR VP                   9   dK   \        RRR7      \        VP                   VP                  R7      .pVP                  \	        W#4      4       K^  VP                  V4       Kq  	  WR&   R# )ÚRETURNÚNOPÚGRAPH_BREAK_IF_LEAFr§   r  N)rV   r�   rb   rð   r  rï   r$  s   &   r   Ú$add_graph_break_if_leaf_instructionsr7  š  sn   € Ø€IÛˆØ�t—{‘{Ô"ä" 5Ð1FÔGÜ" 4§;¡;°t·{±{ÔCðˆMð ×ÑÔ2°4ÓGÖHà×Ñ˜TÖ"ñ ð  �ƒOr    c                ó>   € V ^8„  d   QhR\         \        ,          RR/# r¬  r«   )r   s   "r   r   r   ¨  s    € ÷  ñ  ¼$¼{Õ:Kð  ÐPTñ  r    c                 ó6  € . p\         P                  ! V 4       EF_  w  r#VP                  R 8X  Ed7   VP                  R8X  Ed%   VP                  P	                  R4      '       Ed   \        \        V 4      4       Fç  pW,          P                  VJ d   W0V,          n        W,          P                  '       g   K@  W,          P                  P                  VJ d   W0V,          P                  n	        W,          P                  P                  VJ d   W0V,          P                  n
        W,          P                  P                  VJ g   KÐ  W0V,          P                  n        Ké  	  EKN  VP                  V4       EKb  	  VP                  V R,          4       WR&   R# )r5  r6  r4  r  NrÂ   )Ú	itertoolsÚpairwiserV   rb   Ú
startswithrÆ   ry  r'   rd   r$   r&   rï   )r”  r	  r�   Ú	next_instri   s   &    r   Ú'remove_graph_break_if_leaf_instructionsr>  ¨  s,  € Ø€IÜ$×-Ò-¨l×;‰ˆà�K‰K˜5Õ Ø—‘Ð4Õ4Ø× Ñ ×+Ñ+¨H×5Ó5ô œ3˜|Ó,Ö-�Ø•?×)Ñ)¨TÓ1Ø-6 •OÔ*Ø•?×0×0Ò0ð $•×4Ñ4×:Ñ:¸dÓBØ>G Q�×5Ñ5Ô;Ø#•×4Ñ4×8Ñ8¸DÓ@Ø<E Q�×5Ñ5Ô9Ø#•×4Ñ4×;Ñ;¸tÕCØ?H Q�×5Ñ5Ö<ô .ð ×Ñ˜T×"ñ) <ð* ×Ñ�\ "Õ%Ô&Ø�ƒOr    c                ó^   € V ^8„  d   QhR\         P                  R\        \        ,          RR/# )r   rœ  r”  r   N)ÚtypesÚCodeTyper¬   r9   )r   s   "r   r   r   Ã  s*   € ÷ &ñ &œŸ™ð &´t¼KÕ7Hð &ÈTñ &r    c                ó   € V P                   ;'       g    RV P                  ;'       g    R,           p\        V P                  4      '       g   R# . p\	        V4       EF©  w  rEVP                  V4       VP                  R8X  g   K*  VP                  R8X  g   K=  W^,           ,          pVP                  ^ 8X  g   K_  \        P                  R8¼  d   VP                  R8X  gf   \        P                  R8¼  d'   \        P                  R8  d   VP                  R8X  g+   \        P                  R8  g   K×  VP                  R8X  g   Kê  RV9  d   \        R4      hVP                  \        R	RR
7      4       V P                  ^ ,          pWr9   d   VP                  \        R	VR
7      4       MVP                  \        RVR
7      4       ^Vn        ^Vn        VP                  R8X  g   EKŒ  W^,           ,          p^Vn        ^Vn        EK¬  	  W1R&   R# )z3convert super() with no args into explicit arg formNr‚   Úsuperrí   rì   rî   Ú	__class__z5__class__ not found in cell_and_free for super() callÚ
LOAD_DEREFr§   Ú	LOAD_FASTr  r<   rà   r˜   )Úco_cellvarsÚco_freevarsry  Úco_varnamesrš  rï   rV   rb   ra   r›   rœ   r¨   r�   )	rœ  r”  Úcell_and_freerñ   rÏ   r�   rì  Ú	first_varÚ	call_insts	   &&       r   Úexplicit_superrM  Ã  s�  € à×%Ñ%×+Ð+¨°×0@Ñ0@×0FÐ0FÀBÕG€MÜˆt×Ñ× Ò áØ€FÜ˜|×,‰	ˆØ�‰�dÔØ�;‰;˜-Ö'¨D¯K©K¸7Ö,BØ  q¥Õ)ˆEØ�y‰y˜AŽ~Ü×!Ñ! WÔ,°·±ÀÔ1Gä×$Ñ$¨Ô/Ü×(Ñ(¨7Ô2ØŸ™¨	Ô1ä×$Ñ$ wÖ.°5·<±<À?Ö3Rà mÔ3Ü(ØOóð ð —‘Ô0°ÀkÔRÔSØ ×,Ñ,¨QÕ/�	ØÔ-Ø—M‘MÔ"4°\È)Ô"TÕUà—M‘MÔ"4°[ÈÔ"SÔTØ�”	Ø �”Ø—<‘< 9×,à ,°1­WÕ 5�IØ$%�I”MØ'(�I×$ñ; -ð> �ƒOr    c                óF   € V ^8„  d   QhR\         \        ,          R\        /# rÜ  r¼  )r   s   "r   r   r   ì  s   € ÷ "ñ "¤D¬Õ$5ð "¼#ñ "r    c                ó4  a€ . oR V3R llpV  EFÎ  pVP                   \        P                  8X  d
   ^ Vn        EM‘VP                  '       d¢   VP                  R8”  d‘   V! ^4       SP	                  \        RVP                  ^,	          R7      4       SP	                  \        RVP                  ^,	          R7      4       SP	                  \        RVP                  ^,	          R7      4       MÞVP                  '       du   VP                  R8”  dd   V! ^4       SP	                  \        RVP                  ^,	          R7      4       SP	                  \        RVP                  ^,	          R7      4       MXVP                  '       dG   VP                  ^ÿ8”  d6   V! ^4       SP	                  \        RVP                  ^,	          R7      4       SP	                  V4       EKÑ  	  \        S4      \        V 4      ,
          pV^ 8  d   \        RV R24      hSV R	&   V# )
z,Fill in correct argvals for EXTENDED_ARG opsc                ó(   € V ^8„  d   QhR\         RR/# )r   r¼   r   NrG   )r   s   "r   r   Ú'fix_extended_args.<locals>.__annotate__ð  s   € ÷ ñ ”sð ˜tñ r    c                 ó°   <€ \        V 4       FE  pS'       g   K  SR,          P                  \        P                  8X  g   K5  SP	                  4        KG  	  R# )r™  NrÂ   )rÆ   r`   rk   r—  ré  )r¼   r¡  rñ   s   & €r   Úmaybe_pop_nÚ&fix_extended_args.<locals>.maybe_pop_nð  s6   ø€ Ü�q–ˆAß‰v˜& �*×+Ñ+¬s×/?Ñ/?Ö?Ø—
‘
–ó r    iÿÿÿ r—  r·   iÿÿ  z.fix_extended_args removed instructions (added=z), expected non-negativer  )r`   rk   r—  ra   rï   r�   ry  r¨   )r”  rS  r�   Úaddedrñ   s   &   @r   Úfix_extended_argsrV  ì  s†  ø€ à "€F÷ð ô
 ˆØ�;‰;œ#×*Ñ*Ô*àˆDŽHØ�X�XˆX˜$Ÿ(™( XÔ-Ù˜ŒNØ�M‰MÔ,¨^ÀÇÁÈRÅÔPÔQØ�M‰MÔ,¨^ÀÇÁÈRÅÔPÔQØ�M‰MÔ,¨^ÀÇÁÈQÅÔOÕPØ�X�XˆX˜$Ÿ(™( VÔ+Ù˜ŒNØ�M‰MÔ,¨^ÀÇÁÈRÅÔPÔQØ�M‰MÔ,¨^ÀÇÁÈQÅÔOÕPØ�X�XˆX˜$Ÿ(™( Tœ/Ù˜ŒNØ�M‰MÔ,¨^ÀÇÁÈQÅÔOÔPØ�‰�d×ñ! ô$ �‹Kœ#˜lÓ+Õ+€EØˆq„yÜØ<¸U¸Gð D$ð $ó
ð 	
ð €L��OØ€Lr    c                ó0   € V ^8„  d   QhR\         R\        /# )r   r�   r   )r9   r;   )r   s   "r   r   r     s   € ÷ ñ œ;ð ¬3ñ r    c                 óÊ   € ^ RI p\        P                  R8¼  dJ   ^VP                  P                  P
                  P                  V P                  ,          ^,           ,          # ^# )rD  Nr˜   )Útorchr›   rœ   Ú_CÚ_dynamoÚ
eval_frameÚpy_opcode_cachesr`   )r�   rY  s   & r   r›  r›    sF   € Ûä
×Ñ˜7Ô"Ø�E—H‘H×$Ñ$×/Ñ/×@Ñ@ÀÇÁÕMÐPQÕQÕRÐRÙr    c                ó>   € V ^8„  d   QhR\         \        ,          RR/# r¬  ©r   r9   )r   s   "r   r   r     s   € ÷ )ñ )¤¬Õ 5ð )¸$ñ )r    c           	      ó²   € ^ pV  FN  pVP                   V8w  d)   \        RVP                   RVP                    RV 24      hV\        V4      ,          pKP  	  R# )rD  rÕ  z has offset z, expected N)rW   r¨   rV   r›  ©r”  rW   r�   s   &  r   Úcheck_offsetsrb    s[   € Ø€FÛˆØ�;‰;˜&Ô Ü Ø˜tŸ{™{˜m¨<¸¿¹°}ÀKÐPVÈxÐXóð ð 	Ô" 4Ó(Õ(Šó r    c                ó>   € V ^8„  d   QhR\         \        ,          RR/# r¬  r_  )r   s   "r   r   r   #  s   € ÷ )ñ )¤¬+Õ!6ð )¸4ñ )r    c                 óL   € ^ pV  F  pWn         V\        V4      ,          pK  	  R# )rD  N)rW   r›  ra  s   &  r   rÃ  rÃ  #  s&   € Ø€FÛˆØŒàÔ" 4Ó(Õ(Šó r    c                ó0   € V ^8„  d   QhR\         R\        /# )r   Úargsr   )r†  r   )r   s   "r   r   r   +  s   € ÷ 	2ñ 	2”uð 	2¤ñ 	2r    c            	      óz  € \        \        \        \        V 4      4      4      pV.\	        V 4      ,           \        V R,          V R,          4       UUu. uF  w  r#\        W#8g  4      NK  	  upp.,            Uu. uF  pRP                  R V 4       4      NK  	  ppRRP                  V4      ,           # u uppi u upi )r™  Ú c              3   ó(   "  € T F  qR  x € K
  	  R# 5i)Ú03Nr<   )Ú.0Úxs   & r   Ú	<genexpr>Údebug_bytes.<locals>.<genexpr>.  s   é € Ð(¡C˜q�b�6”£Cùs   ‚zbytes mismatch
Ú
rÂ   r#  )rÆ   rE  Úmapry  r¬   Úzipr;   Újoin)rf  ÚindexÚar^  ra   Úresults   *     r   Údebug_bytesrv  +  s­   € Ü”#”cœ#˜t“nÓ%Ó&€Eð �7Ü
ˆt‹*õä$'¨¨R­°$°rµ(Ô$;Ô<Ñ$;™D˜AŒC�‘ŽKÑ$;Ò<Ð
=ö>óñ>ˆCð 	�‰Ñ(¡CÓ(Ö(ñ>ð ð ð  §	¡	¨&Ó 1Õ1Ð1ùó =ùò	s   ÁB2Á7!B8c                ó<   € V ^8„  d   QhR\         P                  RR/# )r   rœ  r   N)r@  rA  )r   s   "r   r   r   7  s"   € ÷ Fñ F”u—~‘~ð F¨$ñ Fr    c                ó°   € \        V R RR7      w  rV P                  VP                  8w  d*   \        \        V P                  VP                  4      4      hR# )z<Make sure our assembler produces same bytes as we start withc                 ó   € R # rJ   r<   )rl  Úys   &&r   râ  Údebug_checks.<locals>.<lambda>9  s   € ±tr    T)ÚsafeN)Útransform_code_objectÚco_coder¨   rv  )rœ  Údoder¡  s   &  r   Údebug_checksr€  7  sB   € ä# DÑ*;À$ÔG�G€DØ‡|�|�t—|‘|Ô#Üœ[¨¯©°t·|±|ÓDÓEÐEñ $r    c                ó^   € V ^8„  d   QhR\         \        \        3,          R\        R\        /# )r   Úcode_optionsr£   r   )r¥  r   r   r;   )r   s   "r   r   r   I  s)   € ÷ 	.ñ 	.¤$¤s¬C x¥.ð 	.´sð 	.¼sñ 	.r    c                 ó¨   € \        V R ,          4       F  w  r#WJ g   K  Vu # 	  V R ;;,          V3,          uu&   \        V R ,          4      ^,
          # )Ú	co_consts)rš  ry  )r‚  r£   ri   Úvs   &&  r   Úget_const_indexr†  I  sM   € Ü˜, {Õ3Ö4‰ˆð
 �8ØŠHñ 5ð �× # Õ'ÓÜˆ|˜KÕ(Ó)¨AÕ-Ð-r    c                ó    € V ^8„  d   QhR\         \        ,          R\        \        \        3,          R\
        R\        3,          R,          RR/# )r   r”  r‚  Úvarname_from_oparg.Nr   )r¬   r9   r¥  r   r   r   )r   s   "r   r   r   U  sQ   € ÷ R*ñ R*Ü”{Õ#ðR*ä”sœC�x•.ðR*ô ! ¤c Õ*¨TÕ1ðR*ð 
ñ	R*r    c           
      ó  a aa
aaa€ \        SR ,          4       UUu/ uF  w  r4WCbK	  	  uppoR VV3R llp\        P                  R8  dk   Ve   \        R4      h\        SR,          4       UUu/ uF  w  r4WCbK	  	  uppo\        SR,          SR,          ,           4       UUu/ uF  w  r4WCbK	  	  uppo
M”\	        V4      '       g   \        R4      h/ p\
        P                  ! 4        F  p V! V4      pW6V&   K  	  SR,           Uu/ uF  qDWd,          bK  	  upoSR,          SR,          ,            Uu/ uF  pWFV,          bK  	  upo
\        \        S 4      4       EFu  oR	 VV 3R
 llpS S,          P                  R8X  dß   S S,          P                  \        J d   \        R4      h\        P                  R8¼  d|   S S,          P                  f   \        R4      hV! S S,          P                  4      ^,          \        \        S S,          P                  4      ^,          ,           S S,          n        KÜ  V! S S,          P                  4      S S,          n        EK  S S,          P                  R8X  dà   S S,          P                  \        J d   \        R4      h\        P                  R8¼  d}   S S,          P                  f   \        R4      hV! S S,          P                  4      ^,          \        \        S S,          P                  4      ^,          ,           S S,          n        EKÓ  V! S S,          P                  4      S S,          n        EKû  S S,          P                  R8X  dª   S S,          P                  f   \        R4      hS S,          P                  \        J d   \        R4      hV! S S,          P                  4      ^,          \        \        S S,          P                  4      ^,          ,           ^,           S S,          n        EK¼  S S,          P                  \         9   Ed€   \        P                  R8  d!   \        RS S,          P                   R24      h\#        S S,          P                  \$        4      '       g=   \        RS S,          P                   R\'        S S,          P                  4       24      h\        S S,          P                  4      ^8w  d=   \        RS S,          P                   R\        S S,          P                  4       24      h\$        ;QJ d)    . V
V3R lS S,          P                   4       F  NK  	  5M"! V
V3R lS S,          P                   4       4      pV^ ,          ^,          V^,          ^,          ,           S S,          n        EKX  S S,          P(                  \*        9   d�   V! 4       '       d€   \        P                  R8¼  dB   S S,          P                  S9  d*   S
S S,          P                  ,          S S,          n        EK×  SS S,          P                  ,          S S,          n        EK   EK  S S,          P(                  \,        9   dz   V! 4       '       dj   V! S S,          P                  4      p	\        P                  R8¼  d+   S S,          P                  R8X  d   V	^,          p	V	^,          p	V	S S,          n        EK•  EK˜  S S,          P(                  \.        9   d:   V! 4       '       d*   S
S S,          P                  ,          S S,          n        EKê  EKí  S S,          P(                  \0        9   g   EK  S S,          P                  e   EK$  \3        SS S,          P                  4      pV^ 8  d    \        RS S,          P                   24      hVS S,          n        EKx  	  R# u uppi u uppi u uppi   \         d      EKÿ  i ; iu upi u upi )Úco_namesc                ó0   € V ^8„  d   QhR\         R\        /# r}   r  )r   s   "r   r   Úfix_vars.<locals>.__annotate__]  s   € ÷ ñ œSð ¤Sñ r    c           	      ó  <€  SV ,          pV#   \          dq    \        S4      ;pST &   . SR ,          OT N5SR &   \        SR ,          4      \        S4      8w  d,   \        R\        SR ,          4       R\        S4       24      Rh T# i ; i)rŠ  zco_names length z" does not match names dict length N)ÚKeyErrorry  r¨   )r~   rÏ   r‚  Únamess   & €€r   Úget_name_indexÚ fix_vars.<locals>.get_name_index]  s®   ø€ ð
	Ø˜•+ˆCð ˆ
øô ô 	ä # E£
Ð*ˆC�%˜‘+Ø'H¨°jÕ)AÐ'HÀ4Ñ'HˆL˜Ñ$Ü�< 
Õ+Ó,´°E³
Ô:Ü$Ø&¤s¨<¸
Õ+CÓ'DÐ&Eð F/Ü/2°5«z¨lð<óð ðð ;ð
 ˆ
ð	ús   ƒ	 ŽA7B	ÂB	Nz3varname_from_oparg should be None for Python < 3.11rI  rG  rH  z4varname_from_oparg must be callable for Python 3.11+c                ó$   € V ^8„  d   QhR\         /# r   )r2   )r   s   "r   r   rŒ  †  s   € ÷ 	>ñ 	>¤Dñ 	>r    c                  ó6   <€ SS ,          P                   \        J# rJ   )rb   rw   )ri   r”  s   €€r   Úshould_compute_argÚ$fix_vars.<locals>.should_compute_arg†  s   ø€ à •?×)Ñ)´Ð=Ð=r    r‚   z,LOAD_GLOBAL instruction must have argval setz9LOAD_GLOBAL instruction must have arg set in Python 3.11+r�   z*LOAD_ATTR instruction must have argval setz7LOAD_ATTR instruction must have arg set in Python 3.12+rƒ   z-LOAD_SUPER_ATTR instruction must have arg setz0LOAD_SUPER_ATTR instruction must have argval setzfused instruction z requires Python 3.13+z argval must be a tuple, got z  argval must have length 2, got c              3   óV   <"  € T F  pVS9   d
   SV,          MSV,          x € K   	  R # 5irJ   r<   )rk  r~   Ú	freenamesÚvarnamess   & €€r   rm  Úfix_vars.<locals>.<genexpr>À  s,   øé € ð á2�Dð #'¨(Ô"2�˜–¸	À$½ÔGÛ2ùs   ƒ&)ÚIMPORT_NAMEz"failed to find constant index for r˜   rà   rÞ   )r”   é   )rš  r›   rœ   r¨   Úcallabler:  ÚcountÚ
IndexErrorrÆ   ry  rV   rb   rw   ra   r   r;   r,  r5   r=  râ   r`   Ú	HAS_LOCALÚHAS_NAMEÚHAS_FREEÚ	HAS_CONSTr†  )r”  r‚  rˆ  rÏ   r~   r�  Úallnamesr”  Ú	arg_tuplera   r—  ri   r�  r˜  s   ff&       @@@@r   Úfix_varsr¥  U  s¬  ý€ ô )2°,¸zÕ2JÔ(KÔLÑ(K™9˜3ˆTŠYÑ(KÒL€E÷ñ ô ×Ñ˜'Ô!ØÒ)Ü Ð!VÓWÐWÜ/8¸ÀmÕ9TÔ/UÔVÑ/U¡) #�D’IÑ/UÒVˆô 'Ø˜]Õ+¨l¸=Õ.IÕIôô
ñ‘	�ð ŠIñò
‰	ô Ð*×+Ò+Ü Ð!WÓXÐXØˆÜ—?’?Ö$ˆCðÙ)¨#Ó.�Ø!$˜“ñ %ð 6BÀ-Ö5PÓQÑ5P¨T˜(�.Ò(Ñ5PÑQˆð % ]Õ3°lÀ=Õ6QÖQó
áQ�ð ˜4•.Ò ÙQñ
ˆ	ô ”3�|Ó$×%ˆ÷	>ñ 	>ð ˜�?×!Ñ! ]Ô2à˜A�×%Ñ%¬Ó5Ü$Ð%SÓTÐTÜ×Ñ 7Ô*Ø •?×&Ñ&Ò.Ü(ØSóð ñ (6°lÀ1µo×6LÑ6LÓ'MÐQRÕ'RÜœ˜l¨1�o×1Ñ1Ó2°QÕ6õ'�˜Q•Ö#ñ '5°\À!µ_×5KÑ5KÓ&L�˜Q•×#Ø˜!�_×#Ñ# {Ô2à˜A�×%Ñ%¬Ó5Ü$Ð%QÓRÐRÜ×Ñ 7Ô*Ø •?×&Ñ&Ò.Ü(ØQóð ñ (6°lÀ1µo×6LÑ6LÓ'MÐQRÕ'RÜœ˜l¨1�o×1Ñ1Ó2°QÕ6õ'�˜Q•×#ñ '5°\À!µ_×5KÑ5KÓ&L�˜Q•×#Ø˜!�_×#Ñ#Ð'8Ô8Ø˜A�×"Ñ"Ò*Ü$Ð%TÓUÐUØ˜A�×%Ñ%¬Ó5Ü$Ð%WÓXÐXñ   ¨Q¥× 6Ñ 6Ó7¸1Õ<Üœ˜\¨!�_×0Ñ0Ó1°AÕ5õ7àõð ˜�O×ð
 ˜!�_×#Ñ#¤{Õ2Ü×Ñ 'Ô)Ü$Ø(¨°a­×)?Ñ)?Ð(@Ð@VÐWóð ô ˜l¨1�o×4Ñ4´e×<Ò<Ü$Ø(¨°a­×)?Ñ)?Ð(@ð AÜ ¨Q¥× 6Ñ 6Ó7Ð8ð:óð ô �< •?×)Ñ)Ó*¨aÔ/Ü$Ø(¨°a­×)?Ñ)?Ð(@ð A%Ü%(¨°a­×)?Ñ)?Ó%@Ð$AðCóð ÷ œõ à(¨�O×2Ò2óŸ™õ à(¨�O×2Ò2óó ˆIð $-¨Q¥<°1Õ#4¸À1½ÈÕ9JÕ"KˆL˜�O×Ø˜!�_×#Ñ#¤yÔ0Ù!×#Ò#ä×$Ñ$¨Ô/Ø$ Q�×.Ñ.°hÔ>ð +4°LÀµO×4JÑ4JÕ*K�L •O×'à*2°<Àµ?×3IÑ3IÕ*J�L •O×'ò $ð ˜!�_×#Ñ#¤xÔ/Ù!×#Ò#Ù$ \°!¥_×%;Ñ%;Ó<�ä×$Ñ$¨Ô/Ø$ Q�×.Ñ.°-Ô?à˜A•I�Cà˜4•K�CØ&)�˜Q•×#ò $ð ˜!�_×#Ñ#¤xÔ/Ù!×#Ò#Ø&/°¸Qµ×0FÑ0FÕ&G�˜Q•×#ò $à˜!�_×#Ñ#¤y×0ð ˜A�×"Ñ"Õ*ä% l°LÀµO×4JÑ4JÓK�Ø˜”7Ü(Ø<¸\È!½_×=SÑ=SÐ<TÐUóð ð '*�˜Q•×#óG &ùóS Mùó& Wùó
øô ô ÜðüâQùò
s/   œ_Á0_ Â$_&Ã-_,Ä` Ä5`ß,_=ß<_=c                ó>   € V ^8„  d   QhR\         \        ,          RR/# r¬  r«   )r   s   "r   r   r   ê  s   € ÷ ñ ¬¬kÕ):ð ¸tñ r    c                 ó$  € V  F‰  pVP                   \        Jg   K  VP                  \        9   gB   VP                  \        9   g-   VP                  \
        9   g   VP                  \        9   g   Ko  VP                  R9  g   K‚  RVn        K‹  	  R# )r‚   N)r‚   r�   rƒ   )	rb   rw   r`   rŸ  r   r¡  r¢  rV   ra   )r”  r�   s   & r   Úclear_instruction_argsr¨  ê  s^   € ó ˆà�K‰Kœ|Õ+à—‘œyÔ(Ø—;‘;¤(Ô*Ø—;‘;¤(Ô*Ø—;‘;¤)Ö+à—‘Ð#RÖRàˆDŽHó r    c                ó:   € V ^8„  d   QhR\         \        ,          /# r   )r¬   r   )r   s   "r   r   r   ü  s   € ÷ !ñ !”tœC•yñ !r    c                  óV  € R .p V P                  R4       V P                  . RO4       \        P                  R	8¼  d   V P                  R4       V P                  R4       V P                  R4       \        P                  R	8¼  d   V P                  R4       V P                  RR.4       V # )
Úco_argcountÚco_posonlyargcountÚco_qualnameÚco_firstlinenoÚco_linetableÚco_exceptiontablerH  rG  )
Úco_kwonlyargcountÚ
co_nlocalsÚco_stacksizeÚco_flagsr~  r„  rŠ  rI  Úco_filenameÚco_namer˜   )rï   rð   r›   rœ   )r×  s    r   Úget_code_keysr·  û  s—   € ð
 ˆ?€DØ‡K�KÐ$Ô%Ø‡K�Kò	
ôô ×Ñ˜7Ô"Ø�‰�MÔ"Ø‡K�KÐ Ô!Ø‡K�K�ÔÜ
×Ñ˜7Ô"à�‰Ð'Ô(Ø‡K�KàØð	
ôð €Kr    c                ó  € V ^8„  d   QhR\         P                  R\        \        \        ,          \
        \        \        3,          .\        R,          3,          R\        R\        \         P                  \        R,          3,          /# )r   rœ  Útransformationsr   r|  r   )r@  rA  r   r¬   r9   r¥  r   r   r	   r2   r=  )r   s   "r   r   r      sm   € ÷ #ñ #Ü
�.‰.ð#äÜ	ŒkÕ	œD¤¤c �NÐ+¬XÐ6JÕ-KÐKõð#ô
 ð#ô Œ5�>‰>œ8Ð$8Õ9Ð9Õ:ñ#r    c                 ó>  € \        4       pV Uu/ uF  qD\        W4      bK  	  pp\        VR ,          4      VR,          8w  d)   \        R\        VR ,          4       RVR,           24      h\	        W4      p\        V4       V! We4      p\        WcV4      w  r‰W—3# u upi )rI  r²  zco_varnames length z does not match co_nlocals )r·  Úgetattrry  r¨   Úcleaned_instructionsr   Úclean_and_assemble_instructions)
rœ  r¹  r|  r×  Úkr‚  r”  Útracer_outputr¡  Úbytecodes
   &&&       r   r}  r}     s­   € ô ‹?€DÙ15Ó6±¨A”w˜tÓ'Ò'±€LÐ6Ü
ˆ<˜Õ&Ó'¨<¸Õ+EÔEÜØ!¤# l°=Õ&AÓ"BÐ!Cð D Ø ,¨\Õ :Ð;ð=ó
ð 	
ô
 (¨Ó3€Lä˜Ô%á# LÓ?€MÜ1°,ÀlÓS�K€AØÐ"Ð"ùò 7s   �Bc          
      óâ   € V ^8„  d   QhR\         \        ,          R\         \        ,          R\        \        \        3,          R\
        \         \        ,          \        P                  3,          /# )r   r”  r×  r‚  r   )r¬   r9   r   r¥  r   r=  r@  rA  )r   s   "r   r   r   8  sV   € ÷ (Jñ (JÜ”{Õ#ð(JÜ+/´­9ð(JÜDHÌÌcÈÅNð(Jä
Œ4”ÕœeŸn™nÐ,Õ-ñ(Jr    c           	      ó–  € \        V 4       \        V 4       \        VR ,          4      VR&   Rp\        P                  R8¼  d7   \
        P                  ! V Uu. uF  qBV,          NK  	  up!  pVP                  p\        WVR7       RpV'       d-   \        V 4       \        V 4       \        \        V 4      4      pK4  \        V 4       \        WR,          4      w  rxW‚R&   WrR&   \        V 4      VR&   \!        V4      R	0,
          \!        VP#                  4       4      R	0,
          8w  dB   \%        R
\!        V4      R	0,
           R\!        VP#                  4       4      R	0,
           24      h\        P                  R8¼  d   \'        \)        V 4      4      VR&   T \
        P                  ! V Uu. uF  qBV,          NK  	  up!  3# u upi u upi )rI  r²  N)rˆ  Tr®  r¯  r~  r³  r¬  z%code_options keys mismatch: expected z, got r°  r˜   )r>  r  ry  r›   rœ   r@  rA  Ú_varname_from_opargr¥  rÃ  rÇ  r2   rV  r   r¢  r   rÁ  r×  r¨   r’  rñ  )	r”  r×  r‚  rˆ  r¾  Útmp_codeÚdirtyrÀ  r�  s	   &&&      r   r½  r½  8  s³  € ô ,¨LÔ9ä$ \Ô2ä!$ \°-Õ%@Ó!A€L�ÑØÐÜ
×Ñ˜7Ô"ä—>’>¹TÓ#B¹T¸°§O O¹TÑ#BÑCˆØ%×9Ñ9ÐÜˆ\Ð<NÕOà€Eß
Ü�|Ô$Ü˜<Ô(äÔ& |Ó4Ó5Šä˜<Ô(Ü Ð;KÕ.LÓMÑ€Hà#)�Ñ Ø&�ÑÜ#5°lÓ#C€L�Ñ Ü
ˆ4ƒyÐ(Ð)Õ)¬S°×1BÑ1BÓ1DÓ-EØðIõ .ô ô Ø3´C¸³IÐAUÐ@VÕ4VÐ3Wð XÜ�|×(Ñ(Ó*Ó+Ð/CÐ.DÕDÐEðGó
ð 	
ô ×Ñ˜7Ô"Ü,DÜ# LÓ1ó-
ˆÐ(Ñ)ð œŸšÁ4Ó)HÁ4¸a°q¯/¨/Á4Ñ)HÑIÐIÐIùò; $Cùò: *Is   ÁGÆ*G
c                óJ   € V ^8„  d   QhR\         \        ,          R\        RR/# )r   r”  Úconstsr   N)r   r9   r   )r   s   "r   r   r   c  s'   € ÷ +ñ +¬8´KÕ+@ð +Ì#ð +ÐRVñ +r    c                 ól   € V  F-  pVP                   R 8X  g   K  WP                  ,          Vn        K/  	  R# )ÚKW_NAMESN)rV   ra   rb   )r”  rÇ  r�   s   && r   Úpopulate_kw_names_argvalrÊ  c  s&   € ÛˆØ�;‰;˜*Ö$Ø §¡Õ*ˆDŽKó r    c                óf   € V ^8„  d   QhR\         P                  R\        R\        \        ,          /# ©r   rœ  r|  r   )r@  rA  r2   r¬   r9   )r   s   "r   r   r   k  s*   € ÷ -ñ -œuŸ~™~ð -´Tð -ÄdÌ;ÕFWñ -r    c                 ó.   € \        W4      p\        V4      # rJ   )Ú_cached_cleaned_instructionsÚ_clone_instructions©rœ  r|  r”  s   && r   r¼  r¼  k  s   € Ü/°Ó;€Lô ˜|Ó,Ð,r    c                ó\   € V ^8„  d   QhR\         \        ,          R\        \        ,          /# rÜ  )r   r9   r¬   )r   s   "r   r   r   s  s$   € ÷ "ñ "¤h¬{Õ&;ð "ÄÄ[Õ@Qñ "r    c                 ó‚  € V  Uu. uF†  p\        VP                  VP                  VP                  VP                  VP
                  VP                  VP                  VP                  VP                  VP                  VP                  4      NKˆ  	  pp\        \        W4      4      pR VR &   V Fˆ  pW1P                  ,          Vn	        VP                  ;p'       g   K0  \        W4P                  ,          W4P                   ,          W4P                  ,          VP"                  VP$                  4      Vn
        KŠ  	  V# u upi rJ   )r9   r`   rV   ra   rb   rW   r[   rc   r\   r'   rd   re   r¥  rq  r   r$   r&   r(   r)   )r”  ri   ÚcopiedÚremapr�  s   &    r   rÏ  rÏ  s  s  € ñ" óñ ˆAô 	Ø�H‰HØ�H‰HØ�E‰EØ�H‰HØ�H‰HØ�M‰MØ×ÑØ�K‰KØ�H‰HØ�O‰OØ�I‰Iö	
ñ ð ð ô" ”�\Ó*Ó+€Eà€Eˆ$�KãˆØŸ™•?ˆŒØ—O‘OÐ#ˆ5×#Ð#Ü4Ø—k‘kÕ"Ø—i‘iÕ Ø—l‘lÕ#Ø—‘Ø—‘óˆAŽOñ ð €Mùò?s   …BD<c                óf   € V ^8„  d   QhR\         P                  R\        R\        \        ,          /# rÌ  )r@  rA  r2   r   r9   )r   s   "r   r   r   ™  s-   € ÷ ñ Ü
�.‰.ðÜ $ðäŒkÕñr    c                 ó6  € \        \        \        \        P                  ! V 4      4      4      p\        V4       \        V4       \        P                  R8¼  d,   \        W P                  4       \        V P                  V4       \        V4       \        V4       V'       gÍ   \        P                  R8  d   \        V4       \        P                  R8  d   \!        W4       \        P                  R8¼  dW   \#        V4       \        P                  R8¼  d   \%        V4       \'        V4       \        P                  R8¼  d   \)        V4       \*        P,                  '       d   \/        V4       \        P                  R8¼  d   \1        V4       \3        V4       V# )r”   r˜   rà   rÞ   )r¬   rp  rp   rk   Úget_instructionsr   rb  r›   rœ   rÊ  r„  rÚ  r°  r±  r  r  rM  r  r   r%  r1  r   Ú&debug_force_graph_break_on_leaf_returnr7  rÃ  rÇ  rÐ  s   && r   rÎ  rÎ  ˜  s  € ô œÔ/´×1EÒ1EÀdÓ1KÓLÓM€Lä˜Ô%Ü�,ÔÜ
×Ñ˜7Ô"Ü  ¯~©~Ô>Ü" 4×#9Ñ#9¸<ÔHÜ�\Ô"Ü˜Ô%ßÜ×Ñ˜gÔ%Ü# LÔ1Ü×Ñ˜gÔ%Ü˜4Ô.Ü×Ñ˜wÔ&Ü Ô-Ü×Ñ 7Ô*Ü)¨,Ô7Ü/°Ô=Ü×Ñ 7Ô*Ü'¨Ô5Ü×8×8Ð8Ü0°Ô>Ü
×Ñ˜7Ô"Ü�|Ô$Ü˜<Ô(ØÐr    c                ó<   € V ^8„  d   QhR\         R\        R\         /# )r   r~   Ú	with_uuidr   r   )r   s   "r   r   r   ¼  s!   € ÷ ñ ”Cð ¤Dð ´Sñ r    c                 óœ   € V  R \        \        4       2pV'       d0   VR \        P                  ! 4        2P	                  RR 4      ,          pV# )r¡  Ú-)r~  Ú_unique_id_counterÚuuidÚuuid4r·  )r~   rÚ  Úrets   && r   Ú	unique_idrá  ¼  sE   € ØˆF�!”DÔ+Ó,Ð-Ð
.€CßØ�”4—:’:“<�.Ð!×)Ñ)¨#¨sÓ3Õ3ˆØ€Jr    Ú__compiled_fnÚ^zB_\d+_[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$c                ó$   € V ^8„  d   QhR\         /# r   r   )r   s   "r   r   r   Ê  s   € ÷ 9ñ 9œsñ 9r    c                  ó$   € \        \        R R7      # )T)rÚ  )rá  ÚCOMPILED_FN_PREFIXr<   r    r   Úmake_compiled_fn_namerç  Ê  s   € ÜÔ'°4Ô8Ð8r    c                ó0   € V ^8„  d   QhR\         R\        /# r}   r   )r   s   "r   r   r   Î  s   € ÷ <ñ <œcð <¤dñ <r    c                 ó0   € \         P                  V 4      R J# rJ   )Ú_COMPILED_FN_NAME_REÚ	fullmatchr„   s   &r   Úis_compiled_fn_namerì  Î  s   € Ü×)Ñ)¨$Ó/°tÐ;Ð;r    c                óD   € V ^8„  d   QhR\         P                  R\        /# )r   rœ  r   )r@  rA  r2   )r   s   "r   r   r   Ò  s   € ÷ .ñ .”u—~‘~ð .¬$ñ .r    c                 ó2   € ^ pV P                   V,          ^ 8„  # )é    )r´  )rœ  Úco_generators   & r   Úis_generatorrñ  Ò  s   € Ø€LØ�M‰M˜LÕ(¨AÑ-Ð-r    c                ó´   € V ^8„  d   QhR\         R\        3,          R\        \        \        3,          R,          R\        R\        R\        \
        ,          /# )r   Úfn.Úvarname_mapNÚnoreturnÚnoprefixr   )r   r   r   r2   r¬   r9   )r   s   "r   r   r   ×  s]   € ÷ gñ gÜ�”c�Õðgäœœc˜Õ" TÕ)ðgô ðgô ð	gô
 
Œ+Õñgr    c                óz  € \        V P                  4      p\        V4       V'       d3   \        V4       F#  w  rVVP                  R8X  g   K  WE^,           R p M	  V FE  pRVn        RVn        V'       g   K  VP                  V9   g   K.  WP                  ,          Vn        KG  	  V'       Ed   \        P                  R8¼  d€   . pV Fu  pVP                  R8X  dQ   \        P                  R,          Vn        RVn        VP                  V4       VP                  \        R4      4       Kd  VP                  V4       Kw  	  Tp. pV F'  pVP                  R8X  g   K  VP                  V4       K)  	  \        V4      ^8X  d(   V^ ,          VR,          J d   VP!                  R4       V# \        V4      ^ 8”  Ed   VR,          VR,          J dd   RVR,          n        \        P                  R,          VR,          n        RVR,          n        \$        VR,          n        VP!                  R4       MVP                  \        R4      4       V Fj  p\'        VR,          4      p	V	P                  Vn        V	P                  Vn        V	P"                  Vn        V	P                  Vn        V	P(                  Vn        Kl  	  V# )	a7  Generates bytecode from a template function `fn` for use in
dynamo bytecode generation.

For example, we can generate Python-version-independent bytecode
for looping through a dictionary and copying the values to a new dictionary.

def template(d1, d2):
    for k, v in d1.items():
        d2[k] = v


or a try block:

def template():
    try:
        dummy1
    except:
        dummy2
        raise
    dummy3

Args:
    fn: a function template to generate bytecode from
    varname_map: a mapping of `fn`'s varnames to new names. This
        map will be applied to the generated bytecode's varnames.
        For example, local variables in `fn` can be replaced with
        new names that are generated by `OutputGraph.new_var`.
    noreturn: remove all RETURN_* bytecodes and replace them with a jump
        to the end of the bytecode. NOTE: any items pushed to the stack
        for return WILL remain on the stack! Append a POP_TOP if you don't want
        that item to be present.
    noprefix: remove prefix bytecodes (all bytecode before the first RESUME, inclusive).
ÚRESUMENÚRETURN_CONSTr¦   ÚRETURN_VALUEr5  rà   rÂ   )r¼  Ú__code__r¨  rš  rV   r[   r\   rb   r›   rœ   rk   r�   r`   rï   r�   ry  ré  ra   rw   rž   r'   )
ró  rô  rõ  rö  rÖ   ri   r�   r	  ÚreturnsÚ	jump_insts
   &&&&      r   Úbytecode_from_templaterþ  ×  s3  € ôN ! §¡Ó-€EÜ˜5Ô!çÜ  Ö'‰GˆAØ�{‰{˜hÖ&Ø !�e˜g˜�Ùñ (ó
 ˆð  ˆÔØˆŒß‰;˜4Ÿ;™;¨+Ö5Ø%§k¡kÕ2ˆDŽKñ ÷ €xÜ×Ñ˜wÔ&àˆIÛ�Ø—;‘; .Ô0Ü"%§)¡)¨LÕ"9�D”KØ".�D”KØ×$Ñ$ TÔ*à×$Ñ$Ô%7¸Ó%GÖHà×$Ñ$ TÖ*ñ ð ˆEð ˆÛˆDØ�{‰{˜nÖ,Ø—‘˜tÖ$ñ ô ˆw‹<˜1Ô ¨¥¨u°R­yÓ!8à�I‰I�bŒMð0 €Lô/ �‹\˜AÕð �R�y˜G B�KÓ'Ø#(��b•	Ô Ü#&§9¡9¨UÕ#3��b•	Ô Ø $��b•	”Ü#/��b•	Ô Ø—‘˜B•à—‘Ô/°Ó6Ô7ó  �ô 1°°rµÓ;�	Ø'×.Ñ.�”Ø'×.Ñ.�”Ø$Ÿ=™=�”Ø'×.Ñ.�”Ø'×.Ñ.�–ñ  ð €Lr    rÞ   r˜   rà   )Tr4   )rF  rF  )ÚLOAD_FAST_BORROWrÿ  )Ú
STORE_FASTr   )r   rF  rJ   )NTT)‚rf   rØ  Údataclassesrk   Ú	functoolsr:  Úrer›   r@  rÞ  Úcollections.abcr   r   r   r   r   Útypingr   r   r	   r
   Ú r   Úbytecode_analysisr   r   r   r   Úutilsr   Úoutput_graphr   Ú	dataclassr   r9   rœ   rp   rw   r…   r�   rž   r¡   r©   r²   r¹   rÇ   rã   ræ   ró   rû   rÿ   r  r	  r  r  r'  r*  r.  r2  r  r9  rZ  r_  rr  rt  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,  r1  r7  r>  rM  rV  r›  rb  rÃ  rv  r€  ÚhaslocalrŸ  Úhasnamer   Úhasfreer¡  Úhasconstr¢  r†  r¥  r¨  Ú	lru_cacher·  r}  r½  rÊ  r¼  rÏ  rÎ  r�  rÝ  rá  ræ  Úcompilerê  rç  rì  rñ  rþ  r<   r    r   Ú<module>r     s«  ðñó Û Û 
Û Û Û 	Û 
Û Û ß KÕ Kß 5Ó 5å ÷ó õ $÷ Ý0ð ×Ò˜TÔ"÷
ð 
ó #ð
ð6 ×Ò˜TÔ"÷)ð )ó #ð)ð> ×Ñ�wÔö

ð 	×Ñ˜Ô ö

õ

÷ñ ð
 ×Ñ�wÔöGð 	×Ñ˜Ô ö%õ
ð'ð ð'ð &ð	'ð
 "&÷'õV3õ
>÷	8õõ$)õ0õ.=õ@!õH4<÷nIõD:õ:õ5õ
+õ\,>÷^
õ>õ(õõ3õ4õ&"õRð  ×Ñ�wÔõ>!ðB ×Ò˜TÔ"÷ð ó #ðõõ&
õõ$õ,õ$#&õL	õPñ �—‘Ó€
õ
õ õ>1õB0õf[õ| õ.=õ<&õRPõ&õ.õ õ> õ. ð, Ð5Ø'Ð)QØÐ9ØÐ7ð	€õ õ& õ õ6&õR"õJõ)õ)õ	2õFñ �—‘Ó€	Ùˆs�{‰{Ó€Ùˆs�{‰{Ó€Ù�—‘Ó€	õ	.÷R*õjð" ×Ñô!ó ð!÷H#õ0(JõV+÷-õ"ðJ ×Ñöó ðð@ —_’_Ó&Ð ÷ð %Ð Ø—z’zØÐ	Ðð Eð EóÐ õ9õ<õ.÷
gñ gr    