Ë
    ÃÓ^jÍ�  ã                  óÌ  — d Z ddlmZ ddlZddlZddlZddlmZmZm	Z	 ddl
mZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ e	rddlZddlmZmZ dd	lmZ dd
lm Z  dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-d&d„Z.d&d„Z/d'd„Z0	 d(	 	 	 	 	 	 	 d)d„Z1d*d„Z2 ejf                  d¬«       G d„ d«      «       Z4ejf                   G d „ d!«      «       Z5	 	 	 	 	 	 	 	 d+d"„Z6d,d#„Z7 G d$„ d%«      Z8y)-aÐ  
This module provides functionality for resuming Python execution at specific points in code,
primarily used by PyTorch Dynamo for control flow handling and optimization. It implements
bytecode transformation and execution state management to enable:

- Resuming execution at arbitrary points in Python bytecode
- Managing context managers and their state across execution boundaries
- Transforming and generating new code objects with preserved execution state
- Supporting Python 3.11+ exception handling and block management
- Restoring torch function mode stacks and other execution context

The module is critical for PyTorch Dynamo's ability to optimize code while preserving
Python semantics and execution state.
é    )ÚannotationsN)ÚAnyÚcastÚTYPE_CHECKINGé   )Úadd_push_nullÚbytecode_from_templateÚcreate_binary_subscrÚcreate_call_functionÚcreate_call_function_exÚcreate_instructionÚcreate_jump_absoluteÚcreate_load_constÚInstructionÚoverwrite_instructionÚtransform_code_objectÚ	unique_id)ÚExactWeakKeyDictionary)ÚCallableÚIterable)ÚAbstractContextManager)ÚCodeOptionsé   é   é   é   é    é@   é€   é   i   Útorch_dynamo_resume_inÚ__is_tracing_resume_prologueÚ__resume_frame_valuesc                óD   — t        d| ¬«      t        |«      t        «       gS )NÚ	LOAD_FAST©Úargval)r   r   r
   ©Úframe_values_nameÚindexs     úi/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/resume_execution.pyÚcreate_load_frame_valuer,   B   s%   € ä˜;Ð/@ÔAÜ˜%Ó ÜÓðð ó    c                óZ   — t        d «      t        d| ¬«      t        |«      t        d«      gS )Nr%   r&   ÚSTORE_SUBSCR©r   r   r(   s     r+   Úcreate_clear_frame_valuer1   J   s/   € ä˜$ÓÜ˜;Ð/@ÔAÜ˜%Ó Ü˜>Ó*ð	ð r-   c                óÀ   — t         j                  dk\  rK| j                  t        d«      «       t         j                  dk  r| j                  t        dd¬«      «       y y y )N©é   é   Ú	PUSH_NULL)r4   é   ÚSWAPr   ©Úarg)ÚsysÚversion_infoÚappendr   )Úinstss    r+   Ú_initial_push_nullr?   T   sN   € Ü
×Ñ˜7Ò"Ø�‰Ô'¨Ó4Ô5Ü×Ñ˜gÒ%Ø�L‰LÔ+¨F¸Ô:Õ;ð &ð #r-   c                ó  — t        | |¬«      }|j                  t        d«      «       |D ].  }|j                  sŒ|j                  xj                  |z  c_        Œ0 t        d„ t        |«      D «       d«      \  }}|€t        d«      ‚|€t        d«      ‚t        |t        d«      g«       ||dz      j                  dk7  rt        d	||dz      j                  › �«      ‚t        ||dz      t        d«      g«       |d |dz    ||dz   d  fS )
N©Úvarname_mapÚPOP_TOPc              3  ód   K  — | ](  \  }}|j                   d v r|j                  dk(  r||f–— Œ* y­w)©r%   ÚLOAD_FAST_BORROWÚdummyN©Úopnamer'   )Ú.0ÚiÚinsts      r+   ú	<genexpr>z5_bytecode_from_template_with_split.<locals>.<genexpr>k   s9   è ø€ ò 	
á��4Ø�{‰{Ð?Ñ?Ø—‘˜wÒ&ð �ŒIñ	
ùs   ‚.0)NNz6LOAD_FAST dummy instruction not found in template codez,LOAD_FAST dummy instruction instance is NoneÚNOPr   z,Expected POP_TOP after LOAD_FAST dummy, got )
r	   r=   r   Úexn_tab_entryÚdepthÚnextÚ	enumerateÚAssertionErrorr   rI   )ÚtemplateÚstack_indexrB   Útemplate_coderL   Ú	dummy_idxÚ
dummy_insts          r+   Ú"_bytecode_from_template_with_splitrY   \   s8  € ô
 +¨8ÀÔM€MØ×ÑÔ+¨IÓ6Ô7ð ò 4ˆØ×ÓØ×Ñ×$Ò$¨Ñ3Ö$ð4ô
 !ñ	
ä$ ]Ó3ô	
ð 	óÑ€Iˆzð ÐÜÐUÓVÐVØÐÜÐKÓLÐLô ˜*Ô'9¸%Ó'@Ð&AÔBð �Y ‘]Ñ#×*Ñ*¨iÒ7ÜØ:¸=ÈÐUVÉÑ;W×;^Ñ;^Ð:_Ð`ó
ð 	
ô ˜-¨	°A©Ñ6Ô9KÈEÓ9RÐ8SÔTà˜˜9 q™=Ð)¨=¸ÀQ¹¸Ð+IÐIÐIr-   c                ó>   — 	 |  y #  t         j                  «        ‚ xY w©N)Ú$__import_torch_dot__dynamo_dot_utilsÚ_pop_torch_function_stack)rG   s    r+   Ú_try_except_tf_mode_templater^   …   s    € ð
ÚøðÜ,×FÑFÔHØús   ‚ …T)Úfrozenc                  ób   — e Zd ZU ded<   dZded<   	 	 	 	 	 	 d	d„Z	 	 	 	 	 	 d	d„Z	 	 	 	 	 	 d
d„Zy)ÚReenterWithÚintrU   Nztuple[Any, ...] | NoneÚtarget_valuesc                óP   — t        t        | j                  «      \  }}||z   |dd |S )z´
        Codegen based off of:
        try:
            (rest)
        except:
            (pop the torch function mode that was pushed for this context)
            raise
        N)rY   r^   rU   )ÚselfÚcode_optionsÚcleanupÚsetup_try_exceptÚepilogues        r+   Útry_except_torch_function_modez*ReenterWith.try_except_torch_function_mode–   s7   € ô &HÜ(Ø×Ñó&
Ñ"Ð˜(ð  Ñ'ˆ‘ˆ
àÐr-   c                óà  — g }| j                   r"| j                   D �cg c]  }t        |«      ‘Œ }}t        d| j                  › �«      }||d   vr|dxx   |fz  cc<   dD ]  }||d   vsŒ|dxx   |fz  cc<   Œ g }t	        |«       |j                  g |¢t        t        |«      d«      ¢t        d|¬«      ‘«       dd	„}t        || j                  d|i¬
«      \  }	}
|
|z   |dd ||	z   S c c}w )z™
        Codegen based off of:
        load args
        enter context
        try:
            (rest)
        finally:
            exit context
        Ú___context_manager_Úco_varnames©Ú	__enter__Ú__exit__Úco_namesFÚ
STORE_FASTr&   Úctxc                ó€   — | j                  «        	 | | j                  d d d «       y # | j                  d d d «       w xY wr[   rn   ©rs   rG   s     r+   Ú	_templatez*ReenterWith.try_finally.<locals>._templateÍ   s4   € Ø�M‰MŒOð/Ùà—‘˜T 4¨Õ.ø�—‘˜T 4¨Õ.ús   ’( ¨=rA   N©rs   zAbstractContextManager[Any]rG   r   ÚreturnÚNone)
rc   r   r   rU   r?   Úextendr   Úlenr   rY   )re   rf   rg   Ú	load_argsÚvalÚctx_nameÚnameÚ
create_ctxrv   Úsetup_try_finallyri   s              r+   Útry_finallyzReenterWith.try_finally«   s1  € ð ˆ	Ø×ÒØ;?×;MÑ;MÖN°CÔ*¨3Õ/ÐNˆIÐNÜÐ2°4×3CÑ3CÐ2DÐEÓFˆØ˜<¨Ñ6Ñ6Ø˜Ó'¨H¨;Ñ6Ó'Ø-ò 	4ˆDØ˜<¨
Ñ3Ò3Ø˜ZÓ(¨T¨GÑ3Ô(ð	4ð )+ˆ
Ü˜:Ô&Ø×ÑðØðä%¤c¨)£n°eÓ<ðô # <¸ÔAðô	
ó	/ô 'IØ�t×'Ñ'°e¸XÐ5Fô'
Ñ#Ð˜8ð  Ñ'ˆ‘ˆ
ØÐ-Ñ-Ð-ùò; Os   �C+c                ó  — g }| j                   r"| j                   D �cg c]  }t        |«      ‘Œ }}g }t        j                  dk  rt	        |«       |j                  g |¢t        t        |«      d«      ¢«       d
d„}t        || j                  «      \  }}||z   |dd t        d„ |D «       d«      }	|	€t        d«      ‚t        |	t        d«      g«       d„ |D «       }
t        |
d«      }t        |
d«      �t        d	«      ‚||z   |fS c c}w )zR
        Codegen based off of:
        with ctx(args):
            (rest)
        )r4   é   Fc                ó6   — | 5  | d d d «       y # 1 sw Y   y xY wr[   © ru   s     r+   rv   z'ReenterWith.__call__.<locals>._templateó   s   € Øñ Ù÷÷ ñ ús   ƒ�Nc              3  óZ   K  — | ]#  }|j                   d v r|j                  dk(  r|–— Œ% y­w)rE   rs   NrH   ©rJ   rL   s     r+   rM   z'ReenterWith.__call__.<locals>.<genexpr>ý   s1   è ø€ ò àØ—;‘;Ð"CÑCØ—K‘K 5Ò(ô ñùs   ‚)+z1LOAD_FAST ctx instruction not found in setup_withrN   c              3  ó@   K  — | ]  }|j                   d k(  sŒ|–— Œ y­w)ÚPUSH_EXC_INFON)rI   rˆ   s     r+   rM   z'ReenterWith.__call__.<locals>.<genexpr>  s    è ø€ ò 
Ø¨¯©¸Ó)GŒDñ
ùs   ‚—z)Expected only 1 PUSH_EXC_INFO in epiloguerw   )rc   r   r;   r<   r?   rz   r   r{   rY   rU   rQ   rS   r   r   )re   rf   rg   r|   r}   r€   rv   Ú
setup_withri   Úload_fast_ctx_instÚpush_exc_info_genÚpush_exc_info_insts               r+   Ú__call__zReenterWith.__call__Ú   sC  € ð ˆ	Ø×ÒØ;?×;MÑ;MÖN°CÔ*¨3Õ/ÐNˆIÐNà(*ˆ
ä×Ñ˜gÒ%Ü˜zÔ*Ø×ÑðØðä%¤c¨)£n°eÓ<ðô	
ó	ô  BØ�t×'Ñ'ó 
Ñˆ
�Hð  Ñ'ˆ‘ˆ
ä!ñà&ôð ó
Ðð Ð%Ü Ð!TÓUÐUäÐ0Ô3EÀeÓ3LÐ2MÔNñ
Ø%ô
Ðô "Ð"3°TÓ:ÐäÐ! 4Ó(Ð4Ü Ð!LÓMÐMà˜JÑ&Ð(:Ð:Ð:ùò[ Os   �D)rf   r   rg   úlist[Instruction]rx   r�   )rf   údict[str, Any]rg   r�   rx   z,tuple[list[Instruction], Instruction | None])Ú__name__Ú
__module__Ú__qualname__Ú__annotations__rc   rj   r‚   r�   r†   r-   r+   ra   ra   ‘   sk   … àÓØ,0€MÐ)Ó0ð Ø'ð Ø2Cð à	ó ð*-.Ø'ð-.Ø2Cð-.à	ó-.ð^9;Ø*ð9;Ø5Fð9;à	5ô9;r-   ra   c                  ó¶   — e Zd ZU ded<    ej
                  e¬«      Zded<   dZded<    ej
                  e¬«      Z	d	ed
<    ej
                  e
¬«      Zded<   y)ÚResumeFunctionMetadataútypes.CodeTypeÚcode)Údefault_factoryr�   ÚinstructionsFÚboolÚ
boxed_callz	list[int]Ú prefix_block_target_offset_remapz%dict[tuple[int, int], dict[int, int]]Úblock_target_offset_remapN)r’   r“   r”   r•   ÚdataclassesÚfieldÚlistr›   r�   rž   ÚdictrŸ   r†   r-   r+   r—   r—     si   … à
ÓØ&7 k×&7Ñ&7ÈÔ&M€LÐ#ÓMØ€J�Óð 3D°+×2CÑ2CØô3Ð$ ió ð
 	ˆ×Ñ¨$Ô/ð ÐDô r-   r—   c                ó´   — t        |«      }g }	 t        |«      }| D ](  } |||«      sŒ|j                  |«       t        |«      }Œ* 	 |S # t        $ r Y |S w xY w)z®
    Two-pointer conditional filter.
    e.g. _filter_iter(insts, sorted_offsets, lambda i, o: i.offset == o)
    returns the instructions with offsets in sorted_offsets
    )ÚiterrQ   r=   ÚStopIteration)Úl1Úl2ÚcondÚitÚresÚcurr}   s          r+   Ú_filter_iterr­   )  sl   € ô 
ˆb‹€BØ€CðÜ�2‹hˆØò 	ˆCÙ�C˜�~Ø—
‘
˜3”Ü˜2“h‘ñ	ð €Jøô ò ØØ€Jðús   �A
 ©A
 Á
	AÁAc                ó˜   — g }t        |«       |j                  d„ | D «       «       |j                  t        t        | «      d«      «       |S )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr[   )r   )rJ   r}   s     r+   rM   z'_load_tuple_and_call.<locals>.<genexpr>C  s   è ø€ Ò7¨CÔ" 3×'Ñ7ùs   ‚F)r?   rz   r   r{   )Útupr>   s     r+   Ú_load_tuple_and_callr±   @  s>   € Ø!€EÜ�uÔØ	‡L�LÑ7°3Ô7Ô7Ø	‡L�LÔ%¤c¨#£h°Ó6Ô7Ø€Lr-   c                  óò   — e Zd Z e«       Z e«       Ze	 	 	 	 	 	 	 	 	 	 dd„«       Ze	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Zed	d„«       Z	e
d
d„«       Ze	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Zy)ÚContinueExecutionCachec                óâ   — || j                   vri | j                   |<   t        |«      }|| j                   |   vr% | j                  |||g|¢­Ž | j                   |   |<   | j                   |   |   S r[   )ÚcacheÚtupleÚgenerate)Úclsr™   ÚlinenoÚinit_offsetÚkeys        r+   ÚlookupzContinueExecutionCache.lookupL  so   € ð �s—y‘yÑ Ø ˆC�I‰I�d‰OÜ�C‹jˆØ�c—i‘i ‘oÑ%Ø#/ 3§<¡<°°f¸kÐ#PÈCÒ#PˆC�I‰I�d‰O˜CÑ Ø�y‰y˜‰˜sÑ#Ð#r-   c                óú  ‡ ‡‡‡‡‡‡‡	‡
‡‡‡‡‡‡‡— ‰€t        d«      ‚|j                  t        t        z  t        z  t
        z  z  rt        d«      ‚|j                  t        z  st        d«      ‚|t        j                  v r‰ j                  |‰|‰‰‰‰‰‰	‰
‰‰‰‰‰«      S t        j                  dk\  Št        |«      Š	 	 	 	 	 	 dˆˆˆˆ ˆ
ˆˆˆˆˆˆˆˆˆˆ	ˆfd„}t        ||«      \  }}‰t        j                  |<   |S )Nzresume_offset must not be NonezLCannot generate resume function for generator, coroutine, or async generatorz+Code object must have CO_OPTIMIZED flag setr3   c                óä  •‡‡ — t        j                  | «      ‰(_        t        ˆ-fd„| D «       «      }t	        ‰!«      Š ‰ j                  d„ t        ‰*«      D «       «       t        ˆ ˆ-fd„| D «       «      ‰(_        ddgŠ‰(j                  r‰j                  t        «       n9‰t        ‰*«      D �cg c]  }d|› �‘Œ	 c}z  Š‰j                  ˆfd„‰!D «       «       t        |d   xs g «      t        |d	   xs g «      z   }t        t        |«      «      }t        › d
|d   › d‰'› �|d<   ‰&rk|d   j                  dd¬«      }t!        |«      dk(  r	|d   |d<   n>t!        |«      dk7  rt#        dt!        |«      › �«      ‚|\  }}|› dt        › d
|› d‰'› �|d<   ‰'|d<   d|d<   ||d	<   t!        ‰«      |d<   d|d<   d|d<   ‰!D �cg c]	  }|‰vsŒ|‘Œ }	}‰#D �cg c]  }|‰vsŒ||	vsŒ|‘Œ }
}t        ‰|	z   |
z   |d   D �cg c]  }|‰vr
||	vr||
vr|‘Œ c}z   t$        gz   «      |d<   |d   t&        t(        z   z  |d<   g }‰&rC|r%|j                  t+        dt!        |«      ¬«      «       |j                  t+        dd¬«      «       |j                  t+        dd¬ «      t+        d!t$        ¬ «      g«       g }‰/D �ci c]  }|j,                  |“Œ }}t/        ‰/«      D ��ci c]  \  }}|j,                  ‰.|   “Œ }}}| D �ci c]  }|j0                  |“Œ }}i }d}d}t3        ‰0«      }t        ‰*t!        ‰+«      z   «      D �]8  }|t!        ‰+«      k  r(‰+|   |k(  r |j                  t+        d"«      «       |dz  }n’‰(j                  r?|j                  t5        t        |«      «       |j                  t7        t        |«      «       n|j                  t+        d#d|› �¬ «      «       ‰%r!||v r|j                  t9        ||   «      «       |dz  }||v sŒÑ|j;                  |«      } |||«      \  }}|j                  |«       ‰&s�Œ|j;                  |«      }||   }‰(j<                  j                  |«       |||<   �Œ; ‰&r#t?        tA        ‰(j<                  «      «      ‰(_        |rt#        d$|› �«      ‚‰(j                  rrt/        ‰!«      D ]d  \  }}‰*|z   }|j                  t5        t        |«      «       |j                  t+        d!|¬ «      «       |j                  t7        t        |«      «       Œf ‰%r\‰"D ]W  \  }}|j                  t+        d#|¬ «      «       |j                  t9        |«      «       |j                  t+        d!|¬ «      «       ŒY ‰#rptB        jD                  d%k  rt#        d&tB        jD                  › �«      ‚‰#D ]<  }|‰v rt#        d'|›d(�«      ‚|j                  t+        d"«      t+        d!|¬ «      g«       Œ> ‰)�r¬‰$jG                  ‰)d)   «      }|j                  g tI        t+        d#d¬ «      t+        dd)¬ «      tK        «       g«      ¢t+        d#d¬ «      ‘t+        dd)¬ «      ‘t+        d*«      ‘t+        d#d¬ «      ‘t+        d#d¬ «      ‘t+        d+d¬«      ‘«       |r?|j                  t+        d#d¬ «      t+        dd)¬ «      tK        «       t+        d,d¬«      g«       n>|j                  t+        d#d¬ «      t+        dd)¬ «      tK        «       t+        d-d¬«      g«       |j                  t+        d#d¬ «      t+        dd)¬ «      t+        d*«      t+        d.d¬ «      t+        d.d¬ «      t+        dd/¬ «      t+        d!t$        ¬ «      gtM        d/d/«      ¢«       ‰,rH|j                  t+        d0«      «       n-|j                  t+        dd/¬ «      t+        d!t$        ¬ «      g«       |j                  tO        |«      «       | D ]?  }|j0                  |j0                  k(  r n$d |_(        tB        jD                  d1k\  sŒ9d |_)        ŒA |r1|j                  |«       |j                  ‰$jU                  |«      «       |rb‰&st#        d2«      ‚| D ]P  }|jV                  sŒ|jV                  jX                  |v sŒ)||jV                  jX                     |jV                  _,        ŒR || z   | d d  y c c}w c c}w c c}w c c}w c c}w c c}}w c c}w )3Nc              3  óB   •K  — | ]  }|j                   ‰k(  sŒ|–— Œ y ­wr[   ©Úoffset)rJ   rK   Úresume_offsets     €r+   rM   zBContinueExecutionCache.generate.<locals>.update.<locals>.<genexpr>”  s   øè ø€ ÒO °Q·X±XÀÓ5Nœ!ÑOùó   ƒ˜c              3  ó&   K  — | ]	  }d |› �–— Œ y­w)Ú___stackNr†   )rJ   rK   s     r+   rM   zBContinueExecutionCache.generate.<locals>.update.<locals>.<genexpr>™  s   è ø€ Ò$K¸ x°¨s¤^Ñ$Kùs   ‚c              3  óž   •K  — | ]D  }|j                   d k(  xr/ |j                  ‰v xr |j                  duxr |j                  ‰k\  –— ŒF y­w)ÚDELETE_FASTN)rI   r'   rÁ   )rJ   rL   Úframe_value_namesrÂ   s     €€r+   rM   zBContinueExecutionCache.generate.<locals>.update.<locals>.<genexpr>š  s_   øè ø€ ò "ð
 ð	 —‘˜}Ñ,ò 1Ø—K‘KÐ#4Ð4ò1à—K‘K tÐ+ò1ð —K‘K =Ñ0ó1ñ"ùs   ƒA
AÚ__nested_resume_fnsÚ__nested_frame_valuesrÅ   c              3  ó,   •K  — | ]  }|‰vsŒ|–— Œ y ­wr[   r†   )rJ   ÚvÚargss     €r+   rM   zBContinueExecutionCache.generate.<locals>.update.<locals>.<genexpr>§  s   øè ø€ ÒA !°1¸D²=œAÑAùs   ƒ	�Úco_cellvarsÚco_freevarsÚ_Úco_nameÚ_at_Úco_qualnameú.r   )Úmaxsplitr   z-Expected qualified path to have 2 parts, got Úco_firstlinenor†   Úco_argcountr   Úco_posonlyargcountÚco_kwonlyargcountrm   Úco_flagsÚCOPY_FREE_VARSr9   ÚRESUMEÚ
LOAD_CONSTTr&   rr   r6   r%   zUnprocessed hooks remaining: )r4   é   z)argnames_null requires Python 3.12+, got zargnames_null variable z should not be in argséÿÿÿÿÚDELETE_SUBSCRÚ
BUILD_LISTÚLIST_APPENDÚLIST_EXTENDrÇ   FrC   r3   z+old_hook_target_remap requires Python 3.11+)-ÚcopyÚdeepcopyr›   rQ   ÚsetÚupdateÚrangeÚanyr�   r=   ÚRESUME_FRAME_VALUES_VARNAMErz   r¶   ÚsortedÚTORCH_DYNAMO_RESUME_IN_PREFIXÚrsplitr{   rS   Ú"IS_TRACING_RESUME_PROLOGUE_VARNAMEÚ
CO_VARARGSÚCO_VARKEYWORDSr   rU   rR   rÁ   r£   r,   r1   r±   Úpoprž   r¢   Úreversedr;   r<   Úuses_boxed_callr   r
   r   r   Ústarts_lineÚ	positionsÚunreachable_codesrO   Útarget)1r›   rf   r÷   rK   ÚfreevarsÚqualified_pathÚmodule_namerÑ   rÌ   Úlocal_argnamesÚnull_local_argnamesÚprefixrg   ÚfnÚhooksÚhook_target_offsetsrL   Úoffset_to_instÚold_hook_target_remapÚstack_iÚnull_iÚstack_ctx_vars_dÚhookÚ
hook_instsÚ
exn_targetÚhook_target_offsetÚold_hook_targetr   Úframe_value_indexÚvalsÚnested_uses_boxed_callrÍ   rÈ   ÚargnamesÚargnames_ctx_varsÚargnames_nullr¸   Úhandle_inactive_ctxÚis_py311_plusr¹   ÚmetaÚnested_code_objsÚnstackÚ
null_idxesÚpop_nested_resume_resultrÂ   Úsetup_fn_target_offsetsÚ	setup_fnsÚstack_ctx_varss1                                  @@€€€€€€€€€€€€€€€€r+   rç   z/ContinueExecutionCache.generate.<locals>.update�  s½	  ú€ ô !%§¡¨lÓ ;ˆDÔäÓO \ÔOÓOˆFô !$ H£ÐØ×$Ñ$Ñ$K¼UÀ6»]Ô$KÔKÜ!ô "ð
 )ô"ó ˆDŒOð *Ð+BÐCˆDØ�ŠØ—‘Ô7Õ8à´°v³Ö?¨A˜8 A 3šÒ?Ñ?�Ø—‘ÓA xÔAÔAÜ˜\¨-Ñ8Ò>¸BÓ?Ä%Ø˜]Ñ+Ò1¨róCñ ˆHô œV HÓ-Ó.ˆHä0Ð1°°<À	Ñ3JÐ2KÈ4ÐPVÈxÐXð ˜Ñ#ñ Ø!-¨mÑ!<×!CÑ!CÀCÐRSÐ!CÓ!T�Ü�~Ó&¨!Ò+Ø2>¸yÑ2I�L Ò/ä˜>Ó*¨aÒ/Ü,ØKÌCÐP^ÓL_ÐK`Ðaóð ð ,:Ñ(�K à&˜- qÔ)FÐ(GÀqÈÈ	ÐQUÐV\ÐU]Ð^ð ! Ñ/ð .4ˆLÐ)Ñ*Ø*,ˆL˜Ñ'Ø*2ˆL˜Ñ'Ü*-¨d«)ˆL˜Ñ'Ø12ˆLÐ-Ñ.Ø01ˆLÐ,Ñ-Ø)1ÖC A°Q¸d²]šaÐCˆNÐCà(ö#Ø¨A°TªM¸aÀ~Ò>U’ð#Ðð #ô +0ØØ ñ!à%ñ&ð
 *¨-Ñ8öàØ ‘}Ø Ñ/ØÐ!4Ñ4ò	 òñ	ô 6Ð6ñ
7ó+ˆL˜Ñ'ð (4°JÑ'?Üœ^Ñ+ðCñ (ˆL˜Ñ$ð ˆFÙÙØ—M‘MÜ*Ð+;ÄÀXÃÔOôð —‘Ô0°¸qÔAÔBð
 �M‰Mä& |¸DÔAÜ&Ø$Ô-Oôðôð *,ˆGØ2;Ö<¨B�R—^‘^ RÑ'Ð<ˆEÐ<ô ' yÓ1÷#á�A�rð —‘Ð 7¸Ñ :Ñ:ð#Ðñ #ð =IÖI°D˜dŸk™k¨4Ñ/ÐIˆNÐIð %'Ð!ØˆGØˆFÜ# NÓ3ÐÜ˜6¤C¨
£OÑ3Ó4ó "L�ØœC 
›OÒ+°
¸6Ñ0BÀaÒ0GØ—M‘MÔ"4°[Ó"AÔBØ˜a‘K‘Fà—’ØŸ™Ü3Ü ;¸Wóôð
 Ÿ™Ü4Ü ;¸Wóõð Ÿ™Ü.¨{ÀXÈgÈYÐCWÔXôñ +¨wÐ:JÑ/Jð Ÿ™Ô&:Ð;KÈGÑ;TÓ&UÔVØ˜q‘L�Gà˜’:Ø Ÿ9™9 Q›<�DÙ-1°,ÀÓ-HÑ*�J 
Ø—M‘M *Ô-Û$Ø-@×-DÑ-DÀQÓ-GÐ*Ø*8Ð9KÑ*L˜Ø×=Ñ=×DÑDÐEWÔXØAKÐ-¨oÓ>ðE"LñH ô 9=Ü˜T×BÑBÓCó9�Ô5ñ Ü$Ð'DÀUÀGÐ%LÓMÐMà�ŠÜ(¨Ó2ò ‘G�A�tØ(.°©
Ð%Ø—M‘MÜ/Ü7Ð9Jóôð
 —M‘MÔ"4°\È$Ô"OÔPØ—M‘MÜ0Ü7Ð9Jóõðñ  #Ø"3ò Q‘J�D˜$Ø—M‘MÔ"4°[ÈÔ"NÔOØ—M‘MÔ"6°tÓ"<Ô=Ø—M‘MÔ"4°\È$Ô"OÕPðQñ Ü×#Ñ# gÒ-Ü(ØCÄC×DTÑDTÐCUÐVóð ð 'ò 
�AØ˜D‘yÜ,Ø5°a°UÐ:PÐQóð ð —M‘Mä.¨{Ó;Ü.¨|ÀAÔFðõð
ò  Ø),×)<Ñ)<Ð=MÈbÑ=QÓ)RÐ&Ø—‘ðä&ä 2Ø$/Ð8Mô!"ô !3°<ÈÔ KÜ 4Ó 6ðóðô +¨;Ð?TÔUðô +¨<ÀÔCðô +¨?Ó;ðô  +¨;Ð?TÔUð!ô" +¨;Ð?VÔWð#ô$ +¨<¸QÔ?ð%ôñ, *Ø—M‘Mô /Ø +Ð4Kôô /¨|ÀBÔGÜ0Ó2Ü.¨}À!ÔDðõ
ð —M‘Mô /Ø +Ð4Kôô /¨|ÀBÔGÜ0Ó2ô /¨}À!ÔDðôð  —‘ô +¨;Ð?VÔWÜ*¨<ÀÔCÜ*¨?Ó;ä*¨=ÐAVÔWÜ*Ø)Ð2Iôô
 +¨<ÀÔFÜ*Ø(Ô1Sôðô" 1°¸Ó>ð#ôñ* ,à—M‘MÔ"4°YÓ"?Õ@ð —‘ä*¨<ÀÔFÜ*Ø(Ô1Sôðôð �M‰MÔ.¨vÓ6Ô7ð
 %ò *�Ø—;‘; &§-¡-Ò/ÙØ#'�Ô Ü×#Ñ# wÓ.Ø%)�D•Nð*ñ Ø—‘˜gÔ&Ø—‘˜c×3Ñ3°LÓAÔBñ %á$Ü(Ð)VÓWÐWØ(ò �Dà×*Ó*Ø ×.Ñ.×5Ñ5Ð9NÒNà4IØ ×.Ñ.×5Ñ5ñ5˜×*Ñ*Õ1ðð % |Ñ3ˆL™‰OùòC	 @ùò8 Dùò#ùòùòD =ùó#ùò Js<   Â,cÆ<	cÇcÇ	cÇcÇcÇ8c
Ê2c"Ëc'Ë7c-©r›   r�   rf   r‘   rx   ry   )rS   rÚ   ÚCO_GENERATORÚCO_COROUTINEÚCO_ITERABLE_COROUTINEÚCO_ASYNC_GENERATORÚCO_OPTIMIZEDr³   Úgenerated_code_metadataÚ&generate_based_on_original_code_objectr;   r<   r—   r   )r¸   r™   r¹   rº   rÂ   r  r  r  r  r  r  r  r  r  r  r  rç   Únew_coderÐ   r  r  s   ` ` ````````````   @@r+   r·   zContinueExecutionCache.generateW  s%  ÿÿ€ ð0 Ð Ü Ð!AÓBÐBØ�=‰=Üœ<Ñ'Ô*?Ñ?ÔBTÑTò
ô !Ø^óð ð —‘¤Ò,Ü Ð!NÓOÐOØÔ)×AÑAÑAØ×=Ñ=ØØØØØ'ØØØØØ#ØØ!ØØ Ø(óð ô$ ×(Ñ(¨GÑ3ˆÜ% dÓ+ˆðx	4Ø+ðx	4Ø;Iðx	4à÷x	4÷ x	4ô x	4ôt	 ,¨D°&Ó9‰ˆ�!ØCGÔ×6Ñ6°xÑ@Øˆr-   c                ój   — | j                   j                  |«      }t        |xr |j                  «      S r[   )r!  Úgetrœ   r�   )r¸   r™   r  s      r+   ró   z&ContinueExecutionCache.uses_boxed_callÍ  s,   € à×*Ñ*×.Ñ.¨tÓ4ˆÜ�DÒ,˜TŸ_™_Ó-Ð-r-   c                ó2   — t        d«      t        dd¬«      gS )zACodegen a `raise None` to make analysis work for unreachable codeNÚRAISE_VARARGSr   r9   r0   )rf   s    r+   rö   z(ContinueExecutionCache.unreachable_codesÒ  s    € ô ˜dÓ#Ü˜°AÔ6ð
ð 	
r-   c                ó’  ‡‡‡‡‡— t         j                  ‰   Šdˆˆfd„} ||«      } ||«      }	|	dk  rt        d«      ‚t        j                  dk\  rR||	fŠ‰‰j
                  vr+i xŠ‰j
                  ‰<   	 	 	 	 	 	 dˆˆˆfd„}
t        ‰|
«       t        ˆˆfd„‰D «       «      Št        j                  ‰j                  |||	‰g|¢­Ž S )	a>  
        This handles the case of generating a resume into code generated
        to resume something else.  We want to always generate starting
        from the original code object so that if control flow paths
        converge we only generated 1 resume function (rather than 2^n
        resume functions).
        c                óD   •‡ ‡— dŠ	 	 	 	 	 	 dˆ ˆˆfd„}t        ‰|«       ‰S )Nrß   c           	     ó²  •‡— ˆfd„| D «       \  Št        ˆfd„t        t        | «      t        ‰j                  «      «      D «       «      }|sy t	        |«      dk7  rt        dt	        |«      › �«      ‚|d   }‰j                  |j                  k7  r%t        d‰j                  › d|j                  › �«      ‚|j                  €t        d«      ‚|j                  Šy )	Nc              3  óB   •K  — | ]  }|j                   ‰k(  sŒ|–— Œ y ­wr[   rÀ   )rJ   rK   Ú
cur_offsets     €r+   rM   zŽContinueExecutionCache.generate_based_on_original_code_object.<locals>.find_orig_offset.<locals>.find_orig_offset_transform.<locals>.<genexpr>÷  s   øè ø€ ÒO 1¸¿¹ÀJÓ8NœQÑOùrÃ   c              3  ó0   •K  — | ]  \  }}|‰u r|–— Œ y ­wr[   r†   )rJ   Úi1Úi2r÷   s      €r+   rM   zŽContinueExecutionCache.generate_based_on_original_code_object.<locals>.find_orig_offset.<locals>.find_orig_offset_transform.<locals>.<genexpr>ù  s&   øè ø€ ò )á˜˜Bð ˜V‘|ô	 ñ)ùs   ƒr   z(Expected exactly 1 matching target, got r   zOpcode mismatch: target has z, new_target has z"new_target.offset must not be None)r¶   Úziprò   r›   r{   rS   ÚopcoderÁ   )r›   rf   Únew_target_tupleÚ
new_targetr÷   r,  r  Úorig_offsets       @€€€r+   Úfind_orig_offset_transformz{ContinueExecutionCache.generate_based_on_original_code_object.<locals>.find_orig_offset.<locals>.find_orig_offset_transformó  sì   ù€ ó P¨ÔO‘	�ä#(ó )ä"%Ü  Ó.´¸×9JÑ9JÓ0Kó#ô)ó $Ð ñ (ð äÐ'Ó(¨AÒ-Ü(ØBÄ3ÐGWÓCXÐBYÐZóð ð .¨aÑ0�
à—=‘= J×$5Ñ$5Ò5Ü(Ø6°v·}±}°oð F*Ø*4×*;Ñ*;Ð)<ð>óð ð ×$Ñ$Ð,Ü(Ð)MÓNÐNØ(×/Ñ/‘r-   r  )r   )r,  r5  r4  r™   r  s   ` @€€r+   Úfind_orig_offsetzWContinueExecutionCache.generate_based_on_original_code_object.<locals>.find_orig_offsetð  s9   ú€ ØˆKð!0Ø/ð!0Ø?Mð!0à÷!0ôF " $Ð(BÔCØÐr-   rß   z>resume instruction not found in original code - this is a bug.r3   c           
     óŠ  •‡
— g }| D ]F  }t        |«      t        ‰j                  «      k(  r n#|j                  dk(  sŒ6|j                  |«       ŒH t	        |‰j                  «      D ]"  \  }}|‰t        t        |j                  «      <   Œ$ |rt        t        |d   j                  «      ndŠ
t        ˆ
fd„‰D «       «      }t        | |d„ «      }t        t        t	        t        | «      t        ‰j                  «      «      t        |«      d„ «      «      }t	        ||«      D ]!  \  }}	|d   j                  ‰|	j                  <   Œ# y )NrŠ   rß   c              3  ó.   •K  — | ]  }|‰kD  sŒ	|–— Œ y ­wr[   r†   )rJ   ÚnÚcur_start_offsets     €r+   rM   zmContinueExecutionCache.generate_based_on_original_code_object.<locals>.remap_block_offsets.<locals>.<genexpr>T  s   øè ø€ ò .Ø¸aÐBRÓ>Rœñ.ùs   ƒ
Žc                ó    — | j                   |k(  S r[   rÀ   )rL   Úos     r+   ú<lambda>zlContinueExecutionCache.generate_based_on_original_code_object.<locals>.remap_block_offsets.<locals>.<lambda>X  s   € ÈÏÉÐWXÑHX€ r-   c                ó   — | d   |u S )Nr   r†   )Úv1Úv2s     r+   r=  zlContinueExecutionCache.generate_based_on_original_code_object.<locals>.remap_block_offsets.<locals>.<lambda>a  s   € ¨2¨a©5°B¨;€ r-   r   )r{   rž   rI   r=   r0  r   rb   rÁ   rë   r­   rò   r›   )r›   rf   Úprefix_blocksrL   r<  Úcur_inst_offsetsÚtargetsÚorig_targetsÚorigr¬   r:  rŸ   r  r  s             @€€€r+   Úremap_block_offsetszZContinueExecutionCache.generate_based_on_original_code_object.<locals>.remap_block_offsets4  sX  ù€ ð 8:�MØ ,ò 
7˜ô
 ˜}Ó-´Ø ×AÑAó2ò ñ "ØŸ;™;¨/Ó9Ø)×0Ñ0°Õ6ð
7ô $'Ø% t×'LÑ'Ló$ò N™˜˜að MNÐ1´$´s¸D¿K¹KÓ2HÒIðNñ @MœœS -°Ñ"3×":Ñ":Ô;ÐRTð %ô (.ó .Ø#:ô.ó (Ð$ô +Ø$Ð&6Ñ8Xó�Gô $,Ü$Ü¤¨Ó 6¼À×ARÑARÓ8SÓTÜ$ WÓ-Ù6óó$�Lô &)¨°wÓ%?ò O™	˜˜cØ@DÀQÁÇÁÐ1°#·*±*Ò=ñOr-   c              3  óB   •K  — | ]  }‰j                   ‰   |   –— Œ y ­wr[   )rŸ   )rJ   r9  r  Ú
offset_keys     €€r+   rM   zPContinueExecutionCache.generate_based_on_original_code_object.<locals>.<genexpr>k  s)   øè ø€ ò ,àð ×.Ñ.¨zÑ:¸1Õ=ñ,ùs   ƒ)r,  rb   rx   rb   r  )
r³   r!  rS   r;   r<   rŸ   r   r¶   r¼   r™   )r¸   r™   r¹   rº   rÂ   r  rÍ   r6  Úorig_init_offsetÚorig_resume_offsetrF  rŸ   r  rH  s    `   `     @@@r+   r"  z=ContinueExecutionCache.generate_based_on_original_code_objectÚ  s  ü€ ô$ (>×'UÑ'UØñ(
ˆö'	ñR ,¨KÓ8Ðñ .¨mÓ<ÐØ Ò#Ü ØPóð ô ×Ñ˜wÒ&ð
 +Ð,>Ð?ˆJð  ×!?Ñ!?Ñ?ð ðÐ)¨D×,JÑ,JØñ-ð
1OØ"3ð1OØCQð1Oà÷1Oôf & dÐ,?Ô@ô ',ô ,à0ô,ó 'Ð#ô &×,Ñ,Ø�I‰IØØØØ#ð
ð ò
ð 	
r-   N)
r™   r˜   r¹   rb   rº   rb   r»   r   rx   r˜   ) r™   r˜   r¹   rb   rº   rb   rÂ   rb   r  útuple[int, ...]r  rb   r  útuple[str, ...]r  rL  r  ztuple[ReenterWith, ...]r  rœ   r  z'tuple[tuple[int, tuple[Any, ...]], ...]r  z'tuple[tuple[str, tuple[Any, ...]], ...]r  rK  r  ztuple[types.CodeType]r  rœ   rx   r˜   )r™   r˜   rx   rœ   )rf   r‘   rx   r�   )r™   r˜   r¹   rb   rº   rb   rÂ   rb   r  rK  rÍ   r   rx   r˜   )r’   r“   r”   r   rµ   r!  Úclassmethodr¼   r·   ró   Ústaticmethodrö   r"  r†   r-   r+   r³   r³   H  s�  „ Ù"Ó$€EÙ4Ó6Ðàð$Ø!ð$Ø+.ð$Ø=@ð$ØHKð$à	ò$ó ð$ð ðsàðsð ðsð ð	sð
 ðsð "1ðsð ðsð "ðsð 'ðsð +ðsð "ðsð @ðsð Cðsð $ðsð" 0ð#sð* #'ð+sð, 
ò-só ðsðj ò.ó ð.ð ò
ó ð
ð ð[
àð[
ð ð[
ð ð	[
ð
 ð[
ð "1ð[
ð ð[
ð 
ò[
ó ñ[
r-   r³   )r)   Ústrr*   rb   rx   r�   )r>   r�   rx   ry   r[   )rT   zCallable[..., Any]rU   rb   rB   zdict[str, Any] | Nonerx   z+tuple[list[Instruction], list[Instruction]])rG   r   rx   ry   )r§   úIterable[Any]r¨   rP  r©   zCallable[[Any, Any], bool]rx   z	list[Any])r°   ztuple[Any, ...]rx   r�   )9Ú__doc__Ú
__future__r   rä   r    r;   Útypingr   r   r   Úbytecode_transformationr   r	   r
   r   r   r   r   r   r   r   r   r   Úutilsr   ÚtypesÚcollections.abcr   r   Ú
contextlibr   Úoutput_graphr   r   ÚCO_NEWLOCALSrï   rð   Ú	CO_NESTEDr  Ú	CO_NOFREEr  r  r  rì   rî   rê   r,   r1   r?   rY   r^   Ú	dataclassra   r—   r­   r±   r³   r†   r-   r+   ú<module>r^     s]  ðñõ #ã Û Û 
ß +Ñ +÷÷ ÷ ó õ *ñ Ûß2Ý1å)ð €Ø€Ø€
Ø€Ø€	Ø€Ø€	Ø€ØÐ ØÐ ð !9Ð Ø%CÐ "Ø5Ð óóó<ð *.ð&JØ ð&Jàð&Jð 'ð&Jð 1ó	&JóR	ð €×Ñ˜dÔ#÷A;ð A;ó $ðA;ðH ×Ñ÷ð ó ðð$Øðàðð %ðð ó	ó.÷n
ò n
r-   