Ë
    L²jâ" ã                   óL  — U d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZ ddlmZmZ ddl	mZmZ ddlmZmZmZmZmZmZ ddlmZ ddlmZ ddlZdd	lmZ dd
lm Z  ddl!m"Z" ddl#m$Z$m%Z%m&Z&m'Z' ddl(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE ddlFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN ddlOmPZPmQZQmRZRmSZS ddlTmUZU ddlVmWZW 	 ddlXmYZY er4ddl[m\Z\ ddl]m^Z^m_Z_m`Z`maZa ddlbmcZc ddldmeZemfZf ddlgmhZh ddlimjZjmkZk ddllmmZm  eded ef   ¬!«      Znd"Zod#Zp eqh d$£«      Zr eqd%h«      Zsd&Zt e«       Zueeef   evd'<    G d(„ d)ew«      Zxejò                  d*e=fd+„«       Zz G d,„ d-«      Z{d.ed*e{fd/„Z|d.ed0d1d2e dz  d3ee   d4e}e~ef   d*e}e~eSf   fd5„Z	 d�d0d1d6ed7e dz  d*eSfd8„Z€d0d1d9e}e~ef   d*dfd:„Z�d;d1d9e}e~eSf   d<e	�j                  d*dfd=„Zƒd<e	�j                  d>e}e~ef   d?e~d@e„e…d f   dz  dAe„e   dz  dBe}e~ef   dz  dCe}e~ef   dz  d*e	j                   fdD„Z†h dE£Z‡d0d1dFe…d7e dz  d?e~d*eSf
dG„Zˆ G dH„ dIeS«      Z‰ G dJ„ dKe‰«      ZŠ G dL„ dMeŠ«      Z‹ G dN„ dOe‰«      ZŒ G dP„ dQe‰«      Z� G dR„ dSeS«      ZŽ G dT„ dUeŽ«      Z� G dV„ dWe‰«      Z� G dX„ dYe�«      Z‘ G dZ„ d[eŠ«      Z’ G d\„ d]e’«      Z“ G d^„ d_eŠ«      Z”d0d1dFed ef   d?e~d3eeS   d4e}e~eSf   d*eSfd`„Z• G da„ dbe‰«      Z– G dc„ dde–«      Z— G de„ dfeS«      Z˜ G dg„ dhe˜«      Z™ G di„ dje‰«      Zš G dk„ dleš«      Z›d*e}eef   fdm„Zœd0d1dFed ef   d*e=fdn„Z� G do„ dpeŠ«      Zž G dq„ dreŠ«      ZŸ G ds„ dteS«      Z  G du„ dveS«      Z¡ G dw„ dxeS«      Z¢ddyldm£Z£m¤Z¤m¥Z¥m¦Z¦  G dz„ d{e¦«      Z§ e§«       Z¨ G d|„ d}eS«      Z© G d~„ deS«      Zª G d€„ d�eS«      Z« G d‚„ dƒeS«      Z¬ G d„„ d…eS«      Z­ G d†„ d‡eŠ«      Z® G dˆ„ d‰eŠ«      Z¯ G dŠ„ d‹e˜«      Z°d0d1dŒeg df   d?e~d*dfd�„Z± G dŽ„ d�eS«      Z²y# eZ$ r dZYY �Œ/w xY w)‘aŽ  
Function-related variable tracking classes for Dynamo's symbolic execution.

This module contains classes that track different types of functions during graph
compilation, including:
- User-defined functions and methods
- Built-in functions and methods
- Wrapped functions (e.g. from decorators)
- Special function types (e.g. functools.partial)
- Triton kernels and related function types

These classes are responsible for:
- Tracking function calls and their arguments
- Managing function closures and cell variables
- Handling function attributes and special methods
- Maintaining guards for function identity and closure contents
- Supporting function inlining and specialization
- Enabling proper symbolic execution of different function types

The variable trackers here work together with the rest of Dynamo to enable
accurate graph capture while handling Python's various function-related behaviors.
é    N)Ú
namedtuple)ÚCallableÚSequence)ÚCellTypeÚFunctionType)ÚAnyÚcastÚLiteralÚOptionalÚTYPE_CHECKINGÚTypeVar)ÚNever)ÚWeakKeyDictionary)Úget_stack_above_dynamo)ÚSource)Úis_namedtuple_classé   )ÚconfigÚgraph_break_hintsÚ	polyfillsÚ	variables)Úcreate_call_functionÚcreate_rot_nÚis_generator)Úformat_frame_infoÚget_dynamo_observed_exceptionÚhandle_observed_exceptionÚInfiniteGeneratorErrorÚObservedExceptionÚObservedGeneratorExitÚObservedUserStopIterationÚraise_observed_exceptionÚraise_type_errorÚStepUnsupportedÚunimplementedÚUnsupported)ÚGuardBuilderÚinstall_guard)	Ú
AttrSourceÚCellContentsSourceÚClosureSourceÚConstantSourceÚDefaultsSourceÚGetItemSourceÚImportSourceÚSkipGuardSourceÚ
TypeSource)Úcheck_constant_argsÚcheck_unspec_or_constant_argsÚcmp_name_to_op_mappingÚidentityÚis_functionÚis_wrapper_or_member_descriptorÚistypeÚ	make_cellé   )Ú#AsPythonConstantNotImplementedErrorÚAttributeMutationNewÚValueMutationNewÚVariableTracker©ÚConstantVariable)ÚUserDefinedObjectVariable)Ú_fsdp_param_group)Ú	PyCodegen)Ú&InliningGeneratorInstructionTranslatorÚInliningInstructionTranslatorÚInstructionTranslatorÚInstructionTranslatorBase)ÚContextWrappingVariable)ÚTritonGridTypeÚTritonKernelType)ÚDunderDictVariable)ÚBaseListVariableÚListVariable)ÚTensorVariableÚ_F.)Úboundé   é   >   Úis_leafÚ	namespaceÚnone_is_leafrS   zihttps://github.com/pytorch/pytorch/issues/new?&labels=oncall%3A+pt2&projects=&template=pt2-bug-report.ymlÚ_spec_cachec                   ó   — e Zd Zy)ÚClosureConversionErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    ú`/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_dynamo/variables/functions.pyrX   rX   ƒ   s   „ Ør]   rX   Úreturnc            	      óT   — t        t        t        t        d«      d«      d«      d«      S )NÚtorchÚutilsÚ_pytreeÚSUPPORTED_NODES)r)   r/   r\   r]   r^   Ú!get_pytree_SUPPORTED_NODES_sourcere   ‡   s(   € äÜ”:œl¨7Ó3°WÓ=¸yÓIØóð r]   c                   ó,   — e Zd Zdeddfd„Zdeddfd„Zy)ÚFunctionSpecÚfuncr_   Nc                 óp  — |j                   }|j                  }|j                  | _        |j                  | _        |j                  | _        |d | j                   | _        || j                  | j
                   | _	        | j                  | j                  z   | _
        || j
                  | j
                  | j                  z    | _        | j
                  | j                  z   }|j                  t        z  r||   nd | _        || j                  rdndz  }|j                  t        z  r||   | _        y d | _        y ©Nr:   r   )Ú__code__Úco_varnamesÚco_posonlyargcountÚposonly_countÚco_argcountÚ	arg_countÚco_kwonlyargcountÚkwonly_countÚposonly_namesÚpos_or_kw_namesÚall_pos_namesÚkwonly_namesÚco_flagsÚ
CO_VARARGSÚvarargs_nameÚCO_VARKEYWORDSÚ
varkw_name)Úselfrh   ÚcodeÚvnÚoffs        r^   Ú__init__zFunctionSpec.__init__�   s  € Ø�}‰}ˆØ×Ñˆà!×4Ñ4ˆÔØ×)Ñ)ˆŒØ ×2Ñ2ˆÔàÐ 4 $×"4Ñ"4Ð5ˆÔØ! $×"4Ñ"4°t·~±~ÐFˆÔØ!×/Ñ/°$×2FÑ2FÑFˆÔØ˜tŸ~™~°·±À×ARÑARÑ0RÐSˆÔà�n‰n˜t×0Ñ0Ñ0ˆØ'+§}¡}´zÒ'A˜B˜sšGÀtˆÔØ�D×%Ò%‰q¨1Ñ,ˆØ%)§]¡]´^Ò%C˜"˜S™'ˆ�Èˆ�r]   c           
      ó  — |j                   xs d| _        |j                  xs i | _        t	        t        | j                  t        | j                  «       d  t        t        | j                  «      «      «      «      | _	        y ©Nr\   )
Ú__defaults__ÚdefaultsÚ__kwdefaults__Ú
kwdefaultsÚdictÚzipru   ÚlenÚrangeÚpos_default_map)r|   rh   s     r^   Úupdate_defaultszFunctionSpec.update_defaults¢   si   € ð ×)Ñ)Ò/¨RˆŒØ×-Ñ-Ò3°ˆŒô  $Ü�×"Ñ"¤C¨¯©Ó$6Ð#6Ð#8Ð9¼5ÄÀTÇ]Á]ÓASÓ;TÓUó 
ˆÕr]   )rY   rZ   r[   r   r€   rŒ   r\   r]   r^   rg   rg   �   s+   „ ðN˜\ð N¨dó Nð$	
 Lð 	
°Tô 	
r]   rg   rh   c                 ó\   — t         j                  | «      }|€t        | «      }|t         | <   |S ©N)rV   Úgetrg   )rh   Úspecs     r^   Ú	_get_specr‘   ®   s.   € Ü�?‰?˜4Ó €DØ€|Ü˜DÓ!ˆØ Œ�DÑØ€Kr]   ÚtxrF   Ú	fn_sourceÚargsÚkwargsc           
      óÒ  — t        | «      }t        |«      |j                  k(  rh| j                  s\|sZ|j                  sN|j
                  sB|j                  s6t        |j                  «      D ��ci c]  \  }}|t        |||   «      “Œ c}}S |j                  | «       i }t        |«      }	|j                  j                  «       D ]d  \  }}
d }|r>t        j                  |j                   |
   «      rt"        j$                  st'        ||
«      }t        ||j                   |
   |«      ||<   Œf t        |j                  «      D ]i  \  }}|t        |«      k  rt        |||   «      ||<   Œ'||	v r-||j(                  vrt        ||	j+                  |«      «      ||<   ŒX||vsŒ]t-        d|› �«      ‚ |t        |j                  «      d  }|j                  r#t        |t/        |«      «      ||j                  <   n/|r-t-        dt        |«      › dt        |j                  «      › �«      ‚|j                  D ]p  }||	v rt        ||	j+                  |«      «      ||<   Œ&||j0                  v r0d }|rt'        ||d¬«      }t        ||j0                  |   |«      ||<   Œdt-        d|› �«      ‚ |j
                  rt        ||	«      ||j
                  <   |S |	rt-        dt3        |	«      › �«      ‚|S c c}}w )Nz&missing required positional argument: z#Too many positional arguments: got z, expected T)Úis_kwz(Missing required keyword-only argument: zUnexpected keyword arguments: )r‘   r‰   rp   rƒ   ry   r{   rv   Ú	enumerateru   Úwrap_bound_argrŒ   r‡   r‹   Úitemsr@   Ú
is_literalr„   r   Ú%skip_guards_on_constant_func_defaultsr-   rs   ÚpopÚ	TypeErrorÚtupler†   Úlist)rh   r’   r“   r”   r•   r�   ÚiÚnameÚbaÚrem_kwÚidxÚdefault_sourceÚextraÚkwdefault_sources                 r^   Úbind_args_cachedr©   ¶   sæ  € ô �T‹?€Dô
 	ˆD‹	�T—^‘^Ò#Ø×!Ò!ÙØ×!Ò!Ø—’Ø×!Ò!ô % T×%7Ñ%7Ó8÷
á��4ð ”.  T¨!¡WÓ-Ñ-ó
ð 	
ð 	×Ñ˜ÔØ	€BÜ�&‹\€Fð ×)Ñ)×/Ñ/Ó1ò J‰	ˆˆcØˆÙÜ×'Ñ'¨¯©°cÑ(:Ô;Ü×<Ò<ä+¨I°sÓ;ˆNÜ! " d§m¡m°CÑ&8¸.ÓIˆˆ4ŠðJô ˜T×/Ñ/Ó0ò M‰ˆˆ4ØŒs�4‹yŠ=ä% b¨$¨q©'Ó2ˆBˆtŠHØ�V‰^ð ˜×*Ñ*Ñ*ô & b¨&¯*©*°TÓ*:Ó;ˆBˆtŠHØ˜Š^ÜÐDÀTÀFÐKÓLÐLð!Mð& ”�T×'Ñ'Ó(Ð*Ð+€EØ×ÒÜ .¨r´5¸³<Ó @ˆˆ4×ÑÒÙ	ÜØ1´#°d³)°¸KÌÈD×L^ÑL^ÓH_ÐG`Ðaó
ð 	
ð
 ×!Ñ!ò 	OˆØ�6‰>Ü% b¨&¯*©*°TÓ*:Ó;ˆBˆtŠHØ�T—_‘_Ñ$Ø#ÐÙÜ#1°)¸TÈÔ#NÐ Ü% b¨$¯/©/¸$Ñ*?ÐAQÓRˆBˆtŠHäÐFÀtÀfÐMÓNÐNð	Oð ‡‚Ü,¨R°Ó8ˆˆ4�?‰?Ñð €Iñ 
ÜÐ8¼¸f»¸ÐGÓHÐHà€IùóE
s   Á.K#ÚvalÚsourcec                 ó–   — t        |t        «      r|S |st        j                  | |«      S t        j                  j                  ||«      S rŽ   )Ú
isinstancer>   Úbuildr   ÚLazyVariableTrackerÚcreate)r’   rª   r«   s      r^   r™   r™     sD   € ô �#”Ô'Øˆ
ÙÜ×$Ñ$ R¨Ó-Ð-ô ×,Ñ,×3Ñ3°C¸Ó@Ð@r]   Úresultc                 ó’   — t        |j                  «       «      D ]+  \  }}t        |t        t        f«      sŒt        | |«      ||<   Œ- y rŽ   )r    rš   r­   rŸ   r‡   r™   )r’   r±   ÚkÚvs       r^   Úwrap_args_kwargsrµ     s>   € Ü�V—\‘\“^Ó$ò .‰ˆˆ1Ü�aœ%¤˜Õ'ä& r¨1Ó-ˆF�1ŠIñ.r]   Úparentr}   c                 óÆ   — | j                   j                  }|j                  D ]<  }|j                  «       }||v r!|j	                  ||j                  |«      «       |||<   Œ> y)zÇ
    Update `result` to add mapping from local name to new cells created
    directly by `code`, or update SideEffects in `parent` if the a local cell is
    already in `result` (cell argument).
    N)ÚoutputÚside_effectsÚco_cellvarsÚtrack_cell_newÚ
store_cellr�   )r¶   r±   r}   r¹   r¢   Únew_cells         r^   Úinit_cellvarsr¾   #  sa   € ð —=‘=×-Ñ-€Là× Ñ ò  ˆØ×.Ñ.Ó0ˆØ�6‰>ð ×#Ñ# H¨f¯j©j¸Ó.>Ô?ØˆˆtŠñ r]   Ú	f_globalsr¢   r„   Úclosurer†   Úannotationsc                 ó¼   — ddl m}  || ||||«      }||_        t        |t        «      rddlm}	 t         |	|«      «      }|�t        |t        «      sJ ‚||_        |S )Nr   ©r   ©Úpairwise)	Útypesr   r…   r­   rŸ   Ú	itertoolsrÅ   r‡   Ú__annotations__)
r}   r¿   r¢   r„   rÀ   r†   rÁ   r   rh   rÅ   s
             r^   Ú_create_nested_fnrÉ   8  sa   € õ #á˜˜i¨¨x¸ÓA€DØ$€DÔä�+œuÔ%Ý&ä™8 KÓ0Ó1ˆð Ð¤*¨[¼$Ô"?Ð?Ð?Ø&€DÔà€Kr]   >	   Ú__doc__rk   rY   rZ   Ú__closure__Ú__globals__rƒ   r…   rÈ   Úfnc                 óN  — |xr t        ||«      }|r|dk(  rt        |«      }d }	 t        j                  ||«      }|t        v rt        ||«      }|r t        j                  j                  ||«      S t        j                  | |«      S # t        $ r t        t        | «       Y Œgw xY w)NrÈ   )r)   r0   ÚinspectÚgetattr_staticÚAttributeErrorr"   Úfn_known_dunder_attrsÚgetattrr   r¯   r°   r>   r®   )r’   rÍ   r«   r¢   Úsubobjs        r^   Úfn_var_getattrrÕ   _  s«   € ð Ò0œ
 6¨4Ó0€Fá�$Ð+Ò+ô ! Ó(ˆà€Fð5Ü×'Ñ'¨¨DÓ1ˆð Ô$Ñ$Ü˜˜TÓ"ˆÙÜ×,Ñ,×3Ñ3°F¸FÓCÐCÜ× Ñ   VÓ,Ð,øô ò 5ô 	!¤°Ö4ð5ús   ¦B ÂB$Â#B$c            
       ó�  ‡ — e Zd Z	 ddddeddfˆ fd„Zdedz  fd„Zdd
„Zdd	dede	e
   deee
f   de
f
ˆ fd„Zdefd„Zdefd„Zdefd„Zdedz  fd„Zdeeef   fd„Zdej&                  fd„Zdefd„Zdej.                  fd„Zdefd„Zdd	defd„Zdd	de	e
   deee
f   de
fd„Zdd	dedefd„Zdd	deee
f   fd„Zdefd„Zˆ xZ S )ÚBaseUserFunctionVariableNÚdict_vtzDunderDictVariable | Noner•   r_   c                 ó2   •— t        ‰| �  di |¤Ž || _        y r‚   )Úsuperr€   rØ   )r|   rØ   r•   Ú	__class__s      €r^   r€   z!BaseUserFunctionVariable.__init__}  s   ø€ ô 	‰ÑÑ"˜6Ò"Ø29ˆ�r]   c                 ó   — | j                   S rŽ   ©r«   ©r|   s    r^   Ú
get_sourcez#BaseUserFunctionVariable.get_sourceƒ  ó   € Ø�{‰{Ðr]   r’   rF   c                 ó|   — | j                   €%t        j                  j                  || «      | _         | j                   S rŽ   )rØ   r   rK   r°   ©r|   r’   s     r^   Úget_dict_vtz$BaseUserFunctionVariable.get_dict_vt†  s0   € Ø�<‰<ÐÜ$×7Ñ7×>Ñ>¸rÀ4ÓHˆDŒLØ�|‰|Ðr]   r¢   r”   c                 óþ   •— |dk(  r,| j                  |«      j                  |dt        |«      |«      S |dk(  r,| j                  |«      j                  |dt        |«      i «      S t        ‰| �  ||t        |«      |«      S )NÚ__setattr__Ú__setitem__Ú__delattr__Ú__delitem__)rã   Úcall_methodr    rÚ   ©r|   r’   r¢   r”   r•   rÛ   s        €r^   ré   z$BaseUserFunctionVariable.call_method‹  sƒ   ø€ ð �=Ò Ø×#Ñ# BÓ'×3Ñ3Ø�M¤4¨£:¨vóð ð �]Ò"Ø×#Ñ# BÓ'×3Ñ3°B¸ÄtÈDÃzÐSUÓVÐVÜ‰wÑ" 2 t¬T°$«Z¸Ó@Ð@r]   c                 ó6   — | j                  «       j                  S rŽ   ©Úget_codeÚco_filenamerÞ   s    r^   Úget_filenamez%BaseUserFunctionVariable.get_filenameš  ó   € Ø�}‰}‹×*Ñ*Ð*r]   c                 ó6   — | j                  «       j                  S rŽ   ©rí   Úco_namerÞ   s    r^   Úget_namez!BaseUserFunctionVariable.get_name�  ó   € Ø�}‰}‹×&Ñ&Ð&r]   c                 ó|   — t         j                  dk\  r| j                  «       j                  S | j	                  «       S )N)é   é   )ÚsysÚversion_inforí   Úco_qualnamerô   rÞ   s    r^   Úget_qualnamez%BaseUserFunctionVariable.get_qualname   s.   € Ü×Ñ˜wÒ&Ø—=‘=“?×.Ñ.Ð.à—=‘=“?Ð"r]   c                 ó<   — | j                  «       j                  d   S ©Nr   )rí   Ú	co_constsrÞ   s    r^   Úget_docz BaseUserFunctionVariable.get_doc¦  s   € à�}‰}‹×(Ñ(¨Ñ+Ð+r]   c                 ó   — t         ‚rŽ   ©ÚNotImplementedErrorrÞ   s    r^   Úget_globalsz$BaseUserFunctionVariable.get_globalsª  ó   € Ü!Ð!r]   c                 ó   — t         ‚rŽ   r  rÞ   s    r^   rí   z!BaseUserFunctionVariable.get_code­  r  r]   c                 ó   — t         ‚rŽ   r  rÞ   s    r^   Úhas_selfz!BaseUserFunctionVariable.has_self°  r  r]   c                 ó   — t         ‚rŽ   r  rÞ   s    r^   Úget_functionz%BaseUserFunctionVariable.get_function³  r  r]   c                 ó(   — | j                  «       d   S )NrY   )r  rÞ   s    r^   Ú
get_modulez#BaseUserFunctionVariable.get_module¶  s   € Ø×ÑÓ! *Ñ-Ð-r]   c                 óä  — | j                  |«      }|dv rr t        | d|dd › �«      «       }|j                  |«      r|j                  |«      S t	        j
                  || j                  xr t        | j                  |«      ¬«      S |dk(  r|S |dk(  r|j                  |d„ «      S |d	k(  r|j                  |d
„ «      S |j                  |«      r|j                  |«      S t        t        |«       y )N)rY   r[   rÊ   rZ   rk   Úget_r   éþÿÿÿrÝ   Ú__dict__rÈ   c                  ó@   — t        j                  i t        «       ¬«      S ©N©Úmutation_type)r   ÚConstDictVariabler=   r\   r]   r^   ú<lambda>z6BaseUserFunctionVariable.var_getattr.<locals>.<lambda>É  s   € œ	×3Ñ3ØÜ"2Ó"4ô€ r]   Ú__type_params__c                  ó@   — t        j                  g t        «       ¬«      S r  )r   ÚTupleVariabler=   r\   r]   r^   r  z6BaseUserFunctionVariable.var_getattr.<locals>.<lambda>Ñ  s   € œ	×/Ñ/ØÜ"2Ó"4ô€ r]   )rã   rÓ   ÚcontainsÚgetitemr@   r°   r«   r)   Úgetitem_or_defaultr"   rÑ   )r|   r’   r¢   Úfn_dictrª   s        r^   Úvar_getattrz$BaseUserFunctionVariable.var_getattr¹  s  € Ø×"Ñ" 2Ó&ˆð ÐTÑTØ4”'˜$ $ t¨A¨b z lÐ 3Ó4Ó6ˆCØ×Ñ Ô%Ø—‘ tÓ,Ð,Ü#×*Ñ*Ø˜DŸK™KÒI¬J°t·{±{ÀDÓ,Iôð ð �ZÒØˆNØÐ&Ò&Ø×-Ñ-Øñóð ð Ð&Ò&Ø×-Ñ-Øñóð ð ×Ñ Ô%Ø—‘ tÓ,Ð,ä(¬¸Õ<r]   c                 óÚ   — | j                  «       dk(  r4| j                  «       j                  d«      rt        j                  d «      S |j                  | g | j                  «       ¢|¢|«      S )NÚpatch_track_step_calledztorch/optim/lr_scheduler.py)rô   rï   Úendswithr@   r°   Úinline_user_function_returnÚ	self_args©r|   r’   r”   r•   s       r^   Úcall_functionz&BaseUserFunctionVariable.call_functionÜ  sd   € ð �M‰M‹OÐ8Ò8Ø×!Ñ!Ó#×,Ñ,Ð-JÔKä#×*Ñ*¨4Ó0Ð0Ø×-Ñ-¨dÐ4N°d·n±nÓ6FÐ4NÈÐ4NÐPVÓWÐWr]   c                 óª   — d}|t         v s|dk(  rd}n	 t        | j                  «       |«      }t	        j
                  ||«      S # t        $ r d}Y Œ#w xY w)NFr  T)rÒ   Úhasattrr
  r  r>   r®   ©r|   r’   r¢   r±   s       r^   Úcall_obj_hasattrz)BaseUserFunctionVariable.call_obj_hasattrë  sc   € ð ˆàÔ(Ñ(¨D°JÒ,>Ø‰FðÜ  ×!2Ñ!2Ó!4°dÓ;�ô ×$Ñ$ R¨Ó0Ð0øô 'ò Ø’ðús   ”A ÁAÁAc                 ó   — i S rŽ   r\   râ   s     r^   Úclosure_varsz%BaseUserFunctionVariable.closure_varsù  ó   € Øˆ	r]   c                  ó   — y©NTr\   rÞ   s    r^   Ú should_allow_nested_graph_breaksz9BaseUserFunctionVariable.should_allow_nested_graph_breaksÿ  ó   € Ør]   rŽ   )r’   rF   r_   rK   )!rY   rZ   r[   r   r€   r   rß   rã   Ústrr   r>   r‡   ré   rï   rô   rü   r   r  rÆ   ÚCodeTyperí   Úboolr  r   r
  r  r  r%  r@   r)  r+  r/  Ú__classcell__©rÛ   s   @r^   r×   r×   |  sŸ  ø„ à59ñ:Ø2ð:ØEHð:à	õ:ð˜F T™Mó óð
Aà#ðAð ðAð �Ñ'ð	Að
 �S˜/Ð)Ñ*ðAð 
õAð+˜có +ð'˜#ó 'ð#˜có #ð,˜˜t™ó ,ð"˜T # s (™^ó "ð"˜%Ÿ.™.ó "ð"˜$ó "ð"˜e×0Ñ0ó "ð.˜Có .ð!=Ð5ð !=¸Só !=ðFXà#ðXð �Ñ'ðXð �S˜/Ð)Ñ*ð	Xð
 
óXð1Ø)ð1Ø14ð1à	ó1ðÐ6ð ¸4ÀÀ_Ð@TÑ;Uó ð°$÷ r]   r×   c                   óF  ‡ — e Zd ZdZej
                  Zddhej                  £Z e	h d£«      Z
edededd fd„«       Z	 d-dej
                  ej                  j                   z  ded	edd
fˆ fd„Zdefˆ fd„Zdefˆ fd„Zdee   fd„Zdej
                  fd„Zdej2                  fd„Zdefd„Zdefd„Zdeeef   fd„Z de!fd„Z"ddde#e   d	eeef   deeef   fd„Z$dddedefˆ fd„Z%dddede&fd„Z'ddde#e   d	eeef   defˆ fd„Z(ddde#e   d	eeef   ded
z  fd„Z)defd„Z*defd „Z+defd!„Z,ddde#e   d	eeef   de-d e#e   eeef   f   d
z  fd"„Z.dej
                  d
z  fd#„Z/d$ede-ed%f   d
z  fd&„Z0dedee   d
z  fd'„Z1de2d(   fd)„Z3de4fd*„Z5d+e6defd,„Z7ˆ xZ8S ).ÚUserFunctionVariablez-Some unsupported user-defined global functionrÍ   Úis_constant>   ú
optree.opsútorch.utils._pytreeútorch.utils._cxx_pytreeÚoptreeÚvaluer«   r_   c                 óf   — t        |j                  t        j                  «      «        | ||¬«      S ©NrÝ   ©r(   Ú
make_guardr'   ÚCLOSURE_MATCH©Úclsr=  r«   s      r^   Úcreate_with_sourcez'UserFunctionVariable.create_with_source  s(   € ä�f×'Ñ'¬×(BÑ(BÓCÔDÙ�5 Ô(Ð(r]   r•   Nc                 óB  •— t        ‰| �  d	i |¤Ž t        |dd«      rd| _        nd| _        t	        |t
        j                  t        j                  j                  f«      s!t        d|› ddgt        j                  ¢¬«       t        j                  |d|«      }|| _        y )
NÚ_dynamo_marked_constantFTz1can't handle functions not implemented in python z2Dynamo can only handle functions defined in pythonz9Move usage of this function out of `torch.compile` region©Úgb_typeÚcontextÚexplanationÚhintsÚ_torchdynamo_inliner\   )rÚ   r€   rÓ   r8  r­   rÆ   r   ra   ÚjitÚScriptFunctionr%   r   ÚINFERENCE_MODErÏ   rÐ   rÍ   ©r|   rÍ   r8  r•   rÛ   s       €r^   r€   zUserFunctionVariable.__init__  sš   ø€ ô 	‰ÑÑ"˜6Ò"Ü�2Ð0°%Ô8à#ˆDÕà$ˆDÔô ˜"œu×1Ñ1´5·9±9×3KÑ3KÐLÔMÜØKØ˜$ØPàOðä&×5Ñ5ðõ	ô ×#Ñ# BÐ(=¸rÓBˆØˆ�r]   c                 óX   •— t        | t        «      r| j                  S t        ‰| �  «       S rŽ   )r8   r7  rÍ   rÚ   Úas_python_constant©r|   rÛ   s    €r^   rS  z'UserFunctionVariable.as_python_constant<  s%   ø€ Ü�$Ô,Ô-Ø—7‘7ˆNä‰wÑ)Ó+Ð+r]   c                 óX   •— t        | t        «      r| j                  S t        ‰| �  «       S rŽ   )r8   r7  rÍ   rÚ   Úget_real_python_backed_valuerT  s    €r^   rV  z1UserFunctionVariable.get_real_python_backed_valueB  s%   ø€ Ü�$Ô,Ô-Ø—7‘7ˆNÜ‰wÑ3Ó5Ð5r]   c                 ó   — g S rŽ   r\   rÞ   s    r^   r#  zUserFunctionVariable.self_argsG  r,  r]   c                 ó   — | j                   S rŽ   ©rÍ   rÞ   s    r^   r
  z!UserFunctionVariable.get_functionJ  ó   € Ø�w‰wˆr]   c                 ó.   — | j                   j                  S rŽ   )rÍ   rk   rÞ   s    r^   rí   zUserFunctionVariable.get_codeM  s   € Ø�w‰w×ÑÐr]   c                 ó"   — t         j                  S rŽ   ©rÆ   r   rÞ   s    r^   Úpython_typez UserFunctionVariable.python_typeP  ó   € Ü×!Ñ!Ð!r]   c                 ó4   — t        | j                  dd «      d uS )NÚ__self__)rÓ   rÍ   rÞ   s    r^   r  zUserFunctionVariable.has_selfS  s   € Ü�t—w‘w 
¨DÓ1¸Ð=Ð=r]   c                 ó.   — | j                   j                  S rŽ   )rÍ   rÌ   rÞ   s    r^   r  z UserFunctionVariable.get_globalsV  s   € Ø�w‰w×"Ñ"Ð"r]   c                 ón   — | j                   }|r&t        | t        j                  «      r| j                  }|S rŽ   )r«   r­   r   ÚUserMethodVariableÚ	source_fn)r|   r«   s     r^   rß   zUserFunctionVariable.get_sourceY  s+   € Ø—‘ˆá”j ¤y×'CÑ'CÔDØ—^‘^ˆFØˆr]   r¶   rF   r”   c                 ó*  — | j                   rJ ‚| j                  }t        |t        «      st	        d«      ‚|j
                  j                  }| j                  «       }t        |||||«      }t        |||j                  «       | j                  j                  xs d}t        |«      t        | j                  j                  j                  «      k(  sJ ‚t        t        j                   «       | j                  j                  j                  |«      D ]º  \  }	}
}|j
                  j"                  }||v r||   }n�|rYt%        t'        |«      |	«      }t)        |d|
¬«      }	 t+        j,                  ||j.                  |«      }|j7                  |||«      }n4	 t+        j,                  ||j.                  «      }|j7                  d||«      }|||
<   Œ¼ |S # t0        $ r t3        j4                  «       }Y Œpw xY w# t0        $ r t3        j4                  «       }Y Œ^w xY w)z—
        Assume `args` and `kwargs` are VariableTracker arguments for a call to
        this function, create new bindings for initial locals.
        z'Only supports regular Python functions.r\   Úcell_contents)Úfreevar_nameN)r8  rÍ   r­   r   rž   r¸   Úroot_txrß   r©   r¾   rk   rË   r‰   Úco_freevarsrˆ   rÇ   Úcountr¹   r.   r+   r*   r>   r®   rg  Ú
ValueErrorr   ÚDeletedVariableÚtrack_cell_existing)r|   r¶   r”   r•   rÍ   ri  r«   r±   rÀ   r¥   r¢   Úcellr¹   Úcell_varÚclosure_cellÚclosure_cell_contentsÚcontents_vars                    r^   Ú	bind_argszUserFunctionVariable.bind_args`  sé  € ð ×#Ò#Ð#Ð#à!%§¡ˆä˜"œlÔ+ÜÐEÓFÐFØ—-‘-×'Ñ'ˆà—‘Ó"ˆÜ! " g¨v°t¸VÓDˆä�f˜f b§k¡kÔ2Ø—'‘'×%Ñ%Ò+¨ˆÜ�7‹|œs 4§7¡7×#3Ñ#3×#?Ñ#?Ó@Ò@Ð@Ð@Ü"Ü�O‰OÓ˜tŸw™w×/Ñ/×;Ñ;¸Wó 
ò "	$‰OˆC��tð "Ÿ=™=×5Ñ5ˆLØ�|Ñ#Ø'¨Ñ-‘áÜ,¬]¸6Ó-BÀCÓH�Ü(:Ø  /Àô)Ð%ð?Ü#2×#8Ñ#8Ø × 2Ñ 2Ð4Ió$�Lð (×;Ñ;Ø  $¨ó‘ð?Ü#2×#8Ñ#8¸À×ASÑASÓ#T�Lð (×;Ñ;¸DÀ$ÈÓU�à#ˆF�4ŠLðE"	$ðH ˆøô' "ò ?ä#,×#<Ñ#<Ó#>’Lð?ûô "ò ?ä#,×#<Ñ#<Ó#>’Lð?ús$   Å!GÆ G2ÇG/Ç.G/Ç2HÈHr’   r¢   c           
      óø   •— |dk(  rt         ‰| �  ||«      S |t        v r5t        j                  | |t        t        | j                  |«      «      ¬«      S | j                  «       }t        || j                  ||«      S )Nr  ©Úpy_type)
rÚ   r  r4   r   ÚGetAttrVariableÚtyperÓ   rÍ   rß   rÕ   )r|   r’   r¢   r«   rÛ   s       €r^   r  z UserFunctionVariable.var_getattrž  ss   ø€ Ø�:ÒÜ‘7Ñ& r¨4Ó0Ð0ØÔ+Ñ+Ü×,Ñ,Ø�d¤D¬°·±¸$Ó)?Ó$@ôð ð —‘Ó"ˆÜ˜b $§'¡'¨6°4Ó8Ð8r]   c                 óZ   — t        | j                  |«      }t        j                  ||«      S rŽ   )r'  rÍ   r>   r®   r(  s       r^   r)  z%UserFunctionVariable.call_obj_hasattr¨  s'   € ô ˜Ÿ™ $Ó'ˆÜ×$Ñ$ R¨Ó0Ð0r]   c           
      ó*  •— | j                   t        j                  j                  u r�	 |D �cg c]  }|j	                  «       ‘Œ }}|j                  «       D ��ci c]  \  }}||j	                  «       “Œ }}}t        j                  j                  |i |¤Žj                  }	t        j                  |	«      S | j                   t        j                  j                  u rt	  t        j                  | j                   «      j                  |i |¤Ž}|j                  d   j	                  «       }t!        |t"        «      sJ ‚t        j$                  |«      S | j                   t        j                  j(                  u r´	  t        j                  | j                   «      j                  |i |¤Ž}|j+                  «        |j                  d   }|j                  d   }t!        |t,        «      r|j	                  «       }t!        |t,        «      r|j	                  «       }t        j.                  ||«      S | j                   t        j                  j0                  j2                  u r0d|j4                  _        t        j8                  j;                  d «      S | j                   t        j                  j<                  u �r" t        j                  | j                   «      j                  |i |¤Ž}|j>                  d	   }t!        |t@        «      sS|jC                  «       }d
|jD                  › d�}tG        dd| jH                  › d|› d|› d�|g tJ        jL                  ¢¬«       t!        |tN        «      s,|jQ                  «       }d|› d�}tG        d| › |d|› d�dg¬«       |j                   }t        jR                  |t        j                  jT                  jV                  ¬«      S | jX                  r't[        || j                   | jQ                  «       ||«      S |j4                  j\                  j^                  st| j                   t        j                  j`                  jb                  u rDt        j                  jd                  jg                  |«      5  th        ‰| �Õ  |||«      cd d d «       S tm        |j4                  j\                  dd «      dk(  r‘|j4                  j\                  jn                  sq	 d	dl8m9} |�h| j                   |jt                  |jv                  fv rDt        j                  jd                  jo                  |«      5  th        ‰| �Õ  |||«      cd d d «       S | jy                  |||«      }|�|S th        ‰| �Õ  |||«      S c c}w c c}}w # t        $ r}
t        d|› d|› �«      |
‚d }
~
ww xY w# t&        $ r}
t        d|› d|› �«      |
‚d }
~
ww xY w# t&        $ r}
t        d|› d|› �«      |
‚d }
~
ww xY w# 1 sw Y   �Œ[xY w# t&        $ r d }Y �Œ!w xY w# 1 sw Y   ŒÄxY w)NzˆCannot convert patch_dynamo_config args/kwargs to constants. Please fix your call to patch_dynamo_config by using simpler inputs. args: ú
, kwargs: Úerror_on_graph_breakz\Improper error_on_graph_break() call. Please fix your call to error_on_graph_break(). args: ÚfwdÚbwdzZImproper override_cudagraphs() call. Please fix your call to override_cudagraphs(). args: Tr   z=`nonstrict_trace` expects a callable, but got value of type <ú>zTypeError from user codezcall_function(ú, ú)rH  z(Applying `nonstrict_trace` to function <zk>; however, `nonstrict_trace` currently requires the function to be defined outside `torch.compile` region.zLimitation of `nonstrict_tracezmake sure definition of z is outside z`torch.compile` region©ÚkindÚdescriptionz!torch.utils.checkpoint.checkpoint)Ú	FSDPState)=rÍ   ra   Ú_dynamoÚpatch_dynamo_configrS  rš   Úchangesr   ÚDynamoConfigPatchVariabler;   ÚRuntimeErrorr}  rÏ   Ú	signatureÚbindÚ	argumentsr­   r3  ÚErrorOnGraphBreakVariableÚ	ExceptionÚoverride_cudagraphsÚapply_defaultsr>   ÚCudagraphOverrideVariableÚbytecode_debuggerÚ
breakpointr¸   Ú_emit_debugger_breakpointr@   r°   Únonstrict_tracer”   r×   r^  rY   r%   r=  r   Ú
USER_ERRORr7  rô   ÚTorchInGraphFunctionVariableÚAllowInGraphKindÚNONSTRICT_TRACEr8  Úinvoke_and_store_as_constantÚcurrent_tracerÚ,unsafe_allow_externally_visible_side_effectsrb   Ú8_disable_side_effect_safety_checks_for_current_subtracerr¹   Ú2allow_externally_visible_side_effects_in_subtracerrÚ   r%  rÓ   Úallow_side_effects_in_hopÚ/torch.distributed.fsdp._fully_shard._fsdp_stater†  Ú_pre_forwardÚ_post_forwardÚ_maybe_call_tree_map_fastpath)r|   r’   r”   r•   ÚargÚ
args_constÚkeyrª   Úkwargs_constr‰  ÚerP   r}  r~  r  Úfn_varÚtypÚmsgÚfn_namerÍ   r†  Útree_map_resultrÛ   s                         €r^   r%  z"UserFunctionVariable.call_function®  s¹  ø€ ð �7‰7”e—m‘m×7Ñ7Ñ7ðØBFÖG¸3˜c×4Ñ4Õ6ÐG�
ÐGàBHÇ,Á,Ã.÷ Ù6>°c¸3�C˜×/Ñ/Ó1Ñ1ð �ñ  ô  Ÿ-™-×;Ñ;ØðØ#/ñç‘'ð ô !×:Ñ:¸7ÓCÐCð �W‰WœŸ™×:Ñ:Ñ:ðØ7œ×)Ñ)¨$¯'©'Ó2×7Ñ7¸ÐHÀÑH�Ø',§¡Ø*ñ(ç$Ñ$Ó&ð %ô "Ð"6¼Ô=Ð=Ð=Ü ×:Ñ:Ð;OÓPÐPð �W‰WœŸ™×9Ñ9Ñ9ðØ7œ×)Ñ)¨$¯'©'Ó2×7Ñ7¸ÐHÀÑH�Ø×$Ñ$Ô&Ø—o‘o eÑ,�Ø—o‘o eÑ,�Ü˜c¤?Ô3Ø×0Ñ0Ó2�CÜ˜c¤?Ô3Ø×0Ñ0Ó2�CÜ ×:Ñ:¸3ÀÓDÐDð �W‰WœŸ™×7Ñ7×BÑBÑBØ26ˆB�I‰IÔ/Ü×-Ñ-×4Ñ4°TÓ:Ð:à�W‰WœŸ™×5Ñ5Ò5Ø3”G×%Ñ% d§g¡gÓ.×3Ñ3°TÐD¸VÑDˆEØ—Z‘Z ‘]ˆFÜ˜fÔ&>Ô?Ø×(Ñ(Ó*�ØUÐVY×VbÑVbÐUcÐcdÐe�ÜØ6Ø,¨T¯Z©Z¨L¸¸4¸&ÀÀ6À(È!ÐLØ #ðÜ*×5Ñ5ðõ	ô ˜fÔ&:Ô;Ø Ÿ/™/Ó+�Ø@ÀÀ	ð  Juð  v�ÜØ<Ø#˜fØ #à2°7°)¸<ÐHØ0ðõ	ð —‘ˆBÜ×9Ñ9ØœŸ™×9Ñ9×IÑIôð ð ×ÒÜ/Ø�D—G‘G˜TŸ]™]›_¨d°Fóð ð
 —	‘	×(Ñ(×UÒUØ—‘Ü�}‰}×"Ñ"×[Ñ[ñ\ô —‘×+Ñ+×^Ñ^Øóñ ?ô ‘wÑ,¨R°°vÓ>÷?ñ ?ô �B—I‘I×,Ñ,¨m¸TÓBØ2ò3à—I‘I×,Ñ,×FÒFð!ÝUð Ð$¨¯©Ø×&Ñ&Ø×'Ñ'ð5ñ *ô —]‘]×/Ñ/×IÑIÈ"ÓMñ CÜ ™7Ñ0°°T¸6ÓB÷Cñ Cð ×<Ñ<¸RÀÀvÓNˆØÐ&Ø"Ð"ä‰wÑ$ R¨¨vÓ6Ð6ùòg Hùó øô 7ò Ü"ðà!˜F *¨V¨Hð6óð ð	ûðûô ò Ü"ðØ!˜F *¨V¨Hð6óð ðûðûô  ò Ü"ðØ!˜F *¨V¨Hð6óð ðûðú÷h?ñ ?ûô ò !Ø “	ð!ú÷Cð Cús‘   ©V ­U6ÁV ÁU;Á4A V ÃA2V$ Å6B2W Ñ>W*ÓW7 Ô3X	Õ6V Ö	V!Ö
VÖV!Ö$	WÖ-V?Ö?W×	W'×W"×"W'×*W4×7XØXØ	Xc                 óˆ  — | j                  |||«      }|�|\  }}}n| }|}|}t        |t        «      xr |j                  «       }t        |t        «      xr |j	                  «       }	|s|	sy h |£t
        z
  ry t        |«      dk  ry |d   }
|d   }|dd  }|	r|j                  |||
||d¬«      S |j                  |||
||«      S )Nr   r   r:   r\   )Úkeypath)	Ú_rewrite_tree_map_only_callr­   r7  Ú_is_tree_map_functionÚ_is_tree_map_with_path_functionÚ_SUPPORTED_TREE_MAP_KWARGSr‰   Úcall_tree_map_with_pathÚcall_tree_map)r|   r’   r”   r•   ÚrewriteÚtree_map_fnÚtree_map_argsÚtree_map_kwargsÚis_tree_mapÚis_tree_map_with_pathÚmap_fnÚ
first_treeÚrests                r^   r¥  z2UserFunctionVariable._maybe_call_tree_map_fastpath,  s  € ð ×2Ñ2°2°t¸VÓDˆØÐØ:AÑ7ˆK˜©àˆKØ ˆMØ$ˆOô �{Ô$8Ó9ò 4Ø×1Ñ1Ó3ð 	ô
 �{Ô$8Ó9ò >Ø×;Ñ;Ó=ð 	ñ
 Ñ4ØØˆ_ÐÔ :Ò:ØÜˆ}Ó Ò!Øà˜qÑ!ˆØ" 1Ñ%ˆ
Ø˜Q˜RÐ ˆá Ø×5Ñ5ØØØØØØð 6ó ð ð ×+Ñ+ØØØØØóð r]   c                 ó€   — t        | j                  dd «      dk(  xr# t        | j                  dd «      | j                  v S )NrY   Útree_maprZ   ©rÓ   rÍ   Ú_TREE_MAP_MODULESrÞ   s    r^   r³  z*UserFunctionVariable._is_tree_map_function`  s=   € ä�D—G‘G˜Z¨Ó.°*Ñ<ò OÜ˜Ÿ™ ¨tÓ4¸×8NÑ8NÐNð	
r]   c                 ó€   — t        | j                  dd «      dk(  xr# t        | j                  dd «      | j                  v S )NrY   Útree_map_with_pathrZ   rÃ  rÞ   s    r^   r´  z4UserFunctionVariable._is_tree_map_with_path_functionf  s>   € ä�D—G‘G˜Z¨Ó.Ð2FÑFò OÜ˜Ÿ™ ¨tÓ4¸×8NÑ8NÐNð	
r]   c                 ó€   — t        | j                  dd «      dk(  xr# t        | j                  dd «      | j                  v S )NrY   Útree_map_onlyrZ   rÃ  rÞ   s    r^   Ú_is_tree_map_only_functionz/UserFunctionVariable._is_tree_map_only_functionl  s=   € ä�D—G‘G˜Z¨Ó.°/ÑAò OÜ˜Ÿ™ ¨tÓ4¸×8NÑ8NÐNð	
r]   c           	      ó2  — | j                  «       sy t        |«      dk7  ry h |£t        z
  ry |\  }}}| j                  |«      }|€y | j	                  «       }|€y t        ||t        |dd «      ¬«      }	t        j                  ||«      }
|
|	|gt        |«      fS )Nr÷   r«   rÝ   )
rÉ  r‰   Ú_TREE_MAP_ONLY_SUPPORTED_KWARGSÚ_extract_tree_map_only_typesÚ_lookup_tree_map_functionÚTreeMapOnlyFunctionVariablerÓ   r>   r®   r‡   )r|   r’   r”   r•   Útype_selectorr¾  Útree_argÚallowed_typesÚtree_map_callableÚwrapped_map_fnÚtree_map_variables              r^   r²  z0UserFunctionVariable._rewrite_tree_map_only_callr  s¶   € ð ×.Ñ.Ô0Øäˆt‹9˜Š>ØØˆVˆ9Ô6Ò6Øà*.Ñ'ˆ�v˜xØ×9Ñ9¸-ÓHˆØÐ Øà ×:Ñ:Ó<ÐØÐ$Øä4ØØÜ˜6 8¨TÓ2ô
ˆô
 ,×1Ñ1°"Ð6GÓHÐØ  >°8Ð"<¼dÀ6»lÐJÐJr]   c                 óÎ   — t        | j                  dd «      }|sy t        j                  j	                  |«      }|€y t        |dd «      }t        |t        j                  «      r|S y )NrZ   rÂ  )rÓ   rÍ   rù   Úmodulesr�   r­   rÆ   r   )r|   Úmodule_nameÚmodulerÂ  s       r^   rÍ  z.UserFunctionVariable._lookup_tree_map_function˜  sZ   € Ü˜dŸg™g |°TÓ:ˆÙØÜ—‘—‘ Ó-ˆØˆ>ØÜ˜6 :¨tÓ4ˆÜ�h¤× 2Ñ 2Ô3ØˆOØr]   Úselector.c                 óî   — |j                  «       sy 	 |j                  «       }| j                  |«      }|sy t	        d„ |D «       «      sy t        t        j                  |«      «      S # t        $ r Y y w xY w)Nc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wrŽ   )r­   ry  )Ú.0r¬  s     r^   ú	<genexpr>zDUserFunctionVariable._extract_tree_map_only_types.<locals>.<genexpr>±  s   è ø€ Ò>¨S”:˜c¤4×(Ñ>ùó   ‚)Úis_python_constantrS  r  Ú_flatten_type_specÚallrŸ   r‡   Úfromkeys)r|   rÙ  Ú	raw_valueÚ	flatteneds       r^   rÌ  z1UserFunctionVariable._extract_tree_map_only_types¤  sw   € ð ×*Ñ*Ô,Øð	Ø ×3Ñ3Ó5ˆIð ×+Ñ+¨IÓ6ˆ	ÙØÜÑ>°IÔ>Ô>ØÜ”T—]‘] 9Ó-Ó.Ð.øô #ò 	Ùð	ús   “A( Á(	A4Á3A4c                 ó`  — t        |t        «      r|gS t        |t        «      r1g }|D ](  }| j                  |«      }|€ y |j	                  |«       Œ* |S t        t        dd «      }|�Gt        ||«      r;g }|j                  D ](  }| j                  |«      }|€ y |j	                  |«       Œ* |S y )NÚ	UnionType)r­   ry  rŸ   rà  ÚextendrÓ   rÆ   Ú__args__)r|   r=  Ú	collectedÚentryÚflatÚ
union_types         r^   rà  z'UserFunctionVariable._flatten_type_specµ  sÅ   € Ü�eœTÔ"Ø�7ˆNÜ�eœUÔ#Ø$&ˆIØò '�Ø×.Ñ.¨uÓ5�Ø�<ÙØ× Ñ  Õ&ð	'ð
 ÐÜœU K°Ó6ˆ
ØÐ!¤j°¸
Ô&CØˆIØŸ™ò '�Ø×.Ñ.¨uÓ5�Ø�<ÙØ× Ñ  Õ&ð	'ð
 ÐØr]   Tc                  ó   — yr.  r\   rÞ   s    r^   Úis_python_hashablez'UserFunctionVariable.is_python_hashableË  r0  r]   c                 ó,   — t        | j                  «      S rŽ   )ÚhashrÍ   rÞ   s    r^   Úget_python_hashz$UserFunctionVariable.get_python_hashÎ  s   € Ü�D—G‘G‹}Ðr]   Úotherc                 ój   — t        |t        j                  «      xr | j                  |j                  u S rŽ   )r­   r   r7  rÍ   ©r|   rò  s     r^   Úis_python_equalz$UserFunctionVariable.is_python_equalÑ  s*   € Ü˜%¤×!?Ñ!?Ó@ÒXÀTÇWÁWÐPU×PXÑPXÐEXÐXr]   ©F)9rY   rZ   r[   rÊ   rÆ   r   Ú_cpython_typer×   Ú_nonvar_fieldsÚ	frozensetrÄ  Úclassmethodr   rE  ra   rN  rO  r3  r€   rS  rV  r    r>   r#  r
  r2  rí   ry  r^  r  r‡   r1  r  r   rß   r   rt  r  r@   r)  r%  r¥  r³  r´  rÉ  rŸ   r²  rÍ  rÌ  rà  r
   rî  Úintrñ  Úobjectrõ  r4  r5  s   @r^   r7  r7    sK  ø„ Ù7ð ×&Ñ&€Mð 	Øðð 
"×	0Ñ	0ð€Nñ "ò	
óÐð ð) sð )°Cð )Ð<Rò )ó ð)ð "ñà×Ñ §¡×!9Ñ!9Ñ9ðð ðð ð	ð
 
õð>, Cõ ,ð6¨cõ 6ð
˜4 Ñ0ó ð˜e×0Ñ0ó ð ˜%Ÿ.™.ó  ð"˜Tó "ð>˜$ó >ð#˜T # s (™^ó #ð˜Fó ð<à'ð<ð �Ñ'ð<ð �S˜/Ð)Ñ*ð	<ð
 
ˆc�?Ð"Ñ	#ó<ð|9Ð5ð 9¸Sð 9À_õ 9ð1Ø)ð1Ø14ð1à	ó1ð|7à#ð|7ð �Ñ'ð|7ð �S˜/Ð)Ñ*ð	|7ð
 
õ|7ð|2à#ð2ð �Ñ'ð2ð �S˜/Ð)Ñ*ð	2ð
 
˜4Ñ	ó2ðh
 tó 
ð
°ó 
ð
¨Dó 
ð$Kà#ð$Kð �Ñ'ð$Kð �S˜/Ð)Ñ*ð	$Kð 	Ø"Ø�_Ñ%Ø��oÐ%Ñ&ð(ñ	
ð
 ñ	ó$KðL
¨5×+=Ñ+=ÀÑ+Dó 
ð/Ø'ð/à	ˆt�SˆyÑ	˜DÑ	 ó/ð"¨ð °°T±
¸TÑ0Aó ð, G¨D¡Mó ð ó ðY Vð Y°÷ Yr]   r7  c                   óD   ‡ — e Zd ZdZdddee   deeef   defˆ fd„Zˆ xZ	S )ÚInspectSignatureVariablea¿  
    Variable tracker for inspect.signature with caching support.

    inspect.Signature is expensive to trace. When inspect.signature is called
    repeatedly on the same function during tracing, we cache the result to avoid
    retracing the signature construction each time. Although this is different
    from CPython behavior, it is safe to do so because inspect.signature does
    not change across different calls to the same function.
    r’   rF   r”   r•   r_   c                 ó^  •— t        |«      dk(  rŽ|sŒ|d   }d }t        |t        t        f«      r|j	                  «       }|�]||j
                  j                  v r|j
                  j                  |   S t        ‰| �!  |||«      }||j
                  j                  |<   |S t        ‰| �!  |||«      S rj   )	r‰   r­   r7  rd  r
  r¸   Úsignature_cacherÚ   r%  )r|   r’   r”   r•   Ú
target_argÚ	cache_keyr±   rÛ   s          €r^   r%  z&InspectSignatureVariable.call_functionà  s¬   ø€ ô ˆt‹9˜Š>¡&Ø˜a™ˆJØˆIä˜*Ô';Ô=OÐ&PÔQØ&×3Ñ3Ó5�	àÐ$Ø §	¡	× 9Ñ 9Ñ9ØŸ9™9×4Ñ4°YÑ?Ð?ä™Ñ.¨r°4¸Ó@�Ø7=�—	‘	×)Ñ)¨)Ñ4Ø�ä‰wÑ$ R¨¨vÓ6Ð6r]   ©
rY   rZ   r[   rÊ   r   r>   r‡   r1  r%  r4  r5  s   @r^   rþ  rþ  Õ  sG   ø„ ñð7à#ð7ð �Ñ'ð7ð �S˜/Ð)Ñ*ð	7ð
 
÷7ñ 7r]   rþ  c                   óœ   ‡ — e Zd Zdhej                  £Zdeedf   dededdfˆ fd„Z	defd„Z
d	edefd
„Zdddee   deeef   defd„Zˆ xZS )rÎ  rÑ  .r¾  r•   r_   Nc                 ó@   •— t        ‰| �  di |¤Ž || _        || _        y r‚   )rÚ   r€   rÑ  r¾  )r|   rÑ  r¾  r•   rÛ   s       €r^   r€   z$TreeMapOnlyFunctionVariable.__init__ÿ  s$   ø€ ô 	‰ÑÑ"˜6Ò"Ø*ˆÔØˆ�r]   c                 ó   — t         S rŽ   rÃ   rÞ   s    r^   r^  z'TreeMapOnlyFunctionVariable.python_type	  s   € ÜÐr]   Únodec                 ó€   ‡— 	 |j                  «       Št        ˆfd„| j                  D «       «      S # t        $ r Y yw xY w)NFc              3   ó6   •K  — | ]  }t        ‰|«      –— Œ y ­wrŽ   )Ú
issubclass)rÜ  ÚallowedÚ	node_types     €r^   rÝ  zDTreeMapOnlyFunctionVariable._matches_allowed_type.<locals>.<genexpr>  s   øè ø€ ÒT°g”:˜i¨×1ÑTùs   ƒ)r^  r  ÚanyrÑ  )r|   r  r  s     @r^   Ú_matches_allowed_typez1TreeMapOnlyFunctionVariable._matches_allowed_type  sC   ø€ ð	Ø×(Ñ(Ó*ˆIô ÓTÀ×ASÑASÔTÓTÐTøô #ò 	Ùð	ús   ƒ1 ±	=¼=r’   rF   r”   c                 ó  — |s| j                   j                  |||«      S |d   }| j                  |«      r| j                   j                  |||«      S t        |«      dk7  s|r| j                   j                  |||«      S |S )Nr   r:   )r¾  r%  r  r‰   )r|   r’   r”   r•   Úleafs        r^   r%  z)TreeMapOnlyFunctionVariable.call_function  s}   € ñ Ø—;‘;×,Ñ,¨R°°vÓ>Ð>Ø�A‰wˆØ×%Ñ% dÔ+Ø—;‘;×,Ñ,¨R°°vÓ>Ð>Üˆt‹9˜Š>™Vð —;‘;×,Ñ,¨R°°vÓ>Ð>Øˆr]   )rY   rZ   r[   r×   rø  rŸ   ry  r>   r   r€   r^  r3  r  r   r‡   r1  r%  r4  r5  s   @r^   rÎ  rÎ  ù  s«   ø„ àðà	!×	0Ñ	0ð€Nð
à˜T 3˜YÑ'ðð  ðð ð	ð
 
õð˜Tó ðU¨/ð U¸dó Uðà#ðð �Ñ'ðð �S˜/Ð)Ñ*ð	ð
 
÷r]   rÎ  c            	       ó–   ‡ — e Zd Z	 ddej                  dededdfˆ fd„Zdefd„Z	e
dedefd	„«       Zd
ddee   deeef   defd„Zˆ xZS )ÚBuiltinMethodVariablerÍ   r8  r•   r_   Nc                 ój   •— t        ‰| �  di |¤Ž t        |t        j                  «      sJ ‚|| _        y r‚   )rÚ   r€   r­   rÆ   ÚBuiltinMethodTyperÍ   rQ  s       €r^   r€   zBuiltinMethodVariable.__init__&  s2   ø€ ô 	‰ÑÑ"˜6Ò"Ü˜"œe×5Ñ5Ô6Ð6Ð6Øˆ�r]   c                 ó"   — t         j                  S rŽ   )rÆ   r  rÞ   s    r^   r^  z!BuiltinMethodVariable.python_type-  s   € Ü×&Ñ&Ð&r]   Úobjc                 ó„   — | j                   }| j                  }|t        u xr |dk(  xs t        |«      t        u xr |dk(  S )NÚ__new__Ú__contains__)ra  rY   rŸ   ry  rù  )r  Úmethod_selfÚmethod_names      r^   Úis_supported_builtin_methodz1BuiltinMethodVariable.is_supported_builtin_method0  sI   € à—l‘lˆØ—l‘lˆð œuÐ$ÒA¨¸	Ñ)Aò 
Ü�Ó¤Ð*ÒL¨{¸nÑ/Lð	
r]   r’   rF   r”   c                 óü   — | j                   j                  }| j                   j                  }| j                  xr t	        | j                  d«      }t        j                  |||d¬«      }|j                  ||||«      S )Nra  T)Úrealize)rÍ   ra  rY   r«   r)   r>   r®   ré   )r|   r’   r”   r•   r  r¢   Ú
obj_sourceÚobj_vts           r^   r%  z#BuiltinMethodVariable.call_function;  sh   € ð —g‘g×&Ñ&ˆØ�w‰w×ÑˆØ—[‘[ÒH¤Z°·±¸ZÓ%Hˆ
Ü ×&Ñ& r¨;¸
ÈDÔQˆØ×!Ñ! " d¨D°&Ó9Ð9r]   rö  )rY   rZ   r[   rÆ   r  r3  r   r€   ry  r^  Ústaticmethodr  r   r>   r‡   r1  r%  r4  r5  s   @r^   r  r  %  s™   ø„ à?DñØ×)Ñ)ðØ8<ðØPSðà	õð'˜Tó 'ð ð
¨ð 
°ò 
ó ð
ð
:à#ð
:ð �Ñ'ð
:ð �S˜/Ð)Ñ*ð	
:ð
 
÷
:r]   r  c            
       óè  ‡ — e Zd Zej                  Zdej                  deee	f   ddde	ddf
ˆ fd„Z
dej                  fd	„Zdefd
„Zdefd„Zdefd„Zdefd„Zdefd„Z defd„ZeZd&d„Zdeee	f   fd„Zdefd„Zdddefd„Zdddedefd„Zdddefd„Zdddefd„Zdddee   fd„Zddde ege	f   ddfd„Z!de"d   fd„Z#ddd eddfd!„Z$defd"„Z%defd#„Z&ddded$ee   deeef   def
ˆ fd%„Z'ˆ xZ(S )'ÚLocalGeneratorObjectVariabler}   r¿   Úinline_tracerrD   r•   r_   Nc                 óN   •— t        ‰| �  di |¤Ž || _        || _        || _        y r‚   )rÚ   r€   r}   r¿   r$  )r|   r}   r¿   r$  r•   rÛ   s        €r^   r€   z%LocalGeneratorObjectVariable.__init__L  s+   ø€ ô 	‰ÑÑ"˜6Ò"ØˆŒ	Ø"ˆŒØ*ˆÕr]   c                 ó   — | j                   S rŽ   )r}   rÞ   s    r^   rí   z%LocalGeneratorObjectVariable.get_codeX  s   € Ø�y‰yÐr]   c                 ó6   — | j                  «       j                  S rŽ   rì   rÞ   s    r^   rï   z)LocalGeneratorObjectVariable.get_filename[  rð   r]   c                 ó6   — | j                  «       j                  S rŽ   rò   rÞ   s    r^   rô   z%LocalGeneratorObjectVariable.get_name^  rõ   r]   c                 ó   — t        d«      ‚)Nr
  r  rÞ   s    r^   r
  z)LocalGeneratorObjectVariable.get_functiona  s   € Ü! .Ó1Ð1r]   c                  ó   — y©NFr\   rÞ   s    r^   r  z%LocalGeneratorObjectVariable.has_selfd  ó   € Ør]   c                 ó"   — | j                  «       S rŽ   )rô   rÞ   s    r^   rY   z%LocalGeneratorObjectVariable.__name__g  s   € Ø�}‰}‹Ðr]   c                 óV   — | j                   j                  › d| j                  «       › d�S )Nú(r‚  )rÛ   rY   rô   rÞ   s    r^   Ú__str__z$LocalGeneratorObjectVariable.__str__j  s'   € Ø—.‘.×)Ñ)Ð*¨!¨D¯M©M«OÐ+<¸AÐ>Ð>r]   c                 óª  — ddl m} ddlm}m} |j
                  } ||«      } ||«      } ||«      }|5  |5  |5  | j                  }	|	j                  s| j                  |«      | _	        t        j                  | j                  «      j                  |«       d d d «       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nr   )Ú"disallow_side_effects_in_generator)Ú save_and_restart_speculation_logÚ(temporarely_allow_writes_to_output_graph)Útorch._dynamo.side_effectsr2  Útorch._dynamo.symbolic_convertr3  r4  r’   r$  Úgenerator_exhaustedÚforce_unpack_var_sequenceÚremaining_itemsr   ÚListIteratorVariableÚreconstruct)
r|   Úcodegenr2  r3  r4  r’   ÚsaveÚdisallowÚtempÚtracers
             r^   r;  z(LocalGeneratorObjectVariable.reconstructo  sË   € ÝQ÷	
ð
 �Z‰ZˆÙ/°Ó3ˆÙ5°bÓ9ˆÙ7¸Ó;ˆàñ 	V�8ñ 	V˜Tñ 	VØ×'Ñ'ˆFØ×-Ò-Ø'+×'EÑ'EÀbÓ'I�Ô$Ü×*Ñ*¨4×+?Ñ+?Ó@×LÑLÈWÔU÷		V÷ 	V÷ 	V÷ 	Vñ 	Vú÷ 	Vð 	Vú÷ 	Vð 	Vús:   µC	¸B=»AB1ÂB=Â C	Â1B:Â6B=Â=C	ÃC	Ã	Cc                 ó   — | j                   S rŽ   ©r¿   rÞ   s    r^   r  z(LocalGeneratorObjectVariable.get_globals�  ó   € Ø�~‰~Ðr]   c                 ó"   — t         j                  S rŽ   )rÆ   ÚGeneratorTyperÞ   s    r^   r^  z(LocalGeneratorObjectVariable.python_type„  s   € Ü×"Ñ"Ð"r]   r’   rG   c           	      ó  — | j                   }| j                  «       rt        t        |«       	 |j	                  «       S # t
        $ r}d|_        |‚d }~wt        $ r+ t        ddddt        › d�gt        j                  ¢¬«       Y y t        $ rq}t        j                  j                  j!                  | j#                  «       «       d|_        |j&                  s!|j(                  s|xj*                  dz  c_        ‚ d }~ww xY w)	NTzinfinite generator detectedÚ z}Dynamo traced the YIELD_VALUE bytecode too many times. This could mean that we have attempted to trace an infinite generator.zLIf you are sure that your generator is not infinite, please report a bug at ú.rH  zA

Skipping frame due to graph break in a generator's next() call.)r$  Ú_is_generator_exhaustedr"   ÚStopIterationÚinline_call_r   r7  r   r%   ÚPT2_ISSUE_TRACKER_URLr   r˜  r&   ra   r‡  Ú
eval_frameÚ	skip_coderí   Ú
skip_frameÚ	one_graphr}  r­  )r|   r’   r@  rª  s       r^   Únext_variablez*LocalGeneratorObjectVariable.next_variable‡  sè   € Ø×#Ñ#ˆà×'Ñ'Ô)Ü$¤]°BÔ7ð	ð ×&Ñ&Ó(Ð(øÜ ò 	Ø)-ˆFÔ&ØˆGûÜ%ò 	äØ5ØðIð cÔcxÐbyÐyzÐ{ðä&×1Ñ1ð÷	ô ò 	Ü�M‰M×$Ñ$×.Ñ.¨t¯}©}«Ô?ØˆAŒLØ—<’<¨×(?Ò(?Ø—’Ð^Ñ^•Øûð	ús(   ®> ¾	C?Á	AÁ4C?ÂC?ÂA,C:Ã:C?rF   r¢   c                 óŽ   — || j                  «       j                  v rt        j                  d«      S t        j                  d«      S ©NTF)r^  r  r@   r°   ©r|   r’   r¢   s      r^   r)  z-LocalGeneratorObjectVariable.call_obj_hasattr¨  s=   € ð �4×#Ñ#Ó%×.Ñ.Ñ.Ü#×*Ñ*¨4Ó0Ð0Ü×&Ñ& uÓ-Ð-r]   c                  ó   — yr+  r\   râ   s     r^   Úhas_unpack_var_sequencez4LocalGeneratorObjectVariable.has_unpack_var_sequence¯  r,  r]   c                  ó   — yr.  r\   râ   s     r^   Úhas_force_unpack_var_sequencez:LocalGeneratorObjectVariable.has_force_unpack_var_sequence²  r0  r]   c                 óB   — g }| j                  ||j                  «       |S rŽ   )Úforce_apply_to_var_sequenceÚappend)r|   r’   r±   s      r^   r8  z6LocalGeneratorObjectVariable.force_unpack_var_sequenceµ  s"   € ð )+ˆØ×(Ñ(¨¨V¯]©]Ô;Øˆr]   rÍ   c                 ój   — 	 	  || j                  |«      «       Œ# t        $ r t        |«       Y y w xY wrŽ   )rQ  r!   r   )r|   r’   rÍ   s      r^   rZ  z8LocalGeneratorObjectVariable.force_apply_to_var_sequence¼  s@   € ð ðÙ�4×%Ñ% bÓ)Ô*ð øô -ò Ü)¨"Ô-Ùðús   ƒ ›2±2Fc                  ó   — yr+  r\   rÞ   s    r^   r/  z=LocalGeneratorObjectVariable.should_allow_nested_graph_breaksÇ  r,  r]   Úexcc                 óŽ   — | j                   }	 |j                  |«       y # t        $ r}|j                  |«       Y d }~y d }~ww xY wrŽ   )r$  Ú_raise_exception_variabler   Úexception_handler)r|   r’   r^  r@  rª  s        r^   Ú_setup_exceptionz-LocalGeneratorObjectVariable._setup_exceptionÊ  sE   € ð ×#Ñ#ˆð	(Ø×,Ñ,¨SÕ1øÜ ò 	(ð ×$Ñ$ Q×'Ñ'ûð	(ús   Ž   	A©?¿Ac                 óT   — | j                   d u xs | j                   j                  dk(  S rþ   )r$  Úinstruction_pointerrÞ   s    r^   Ú_is_generator_just_startedz7LocalGeneratorObjectVariable._is_generator_just_startedÕ  s*   € Ø×!Ñ! TÐ)ÒX¨T×-?Ñ-?×-SÑ-SÐWXÑ-XÐXr]   c                 ó0   — t        | j                  dd«      S )Nr7  F)rÓ   r$  rÞ   s    r^   rI  z4LocalGeneratorObjectVariable._is_generator_exhaustedØ  s   € Ü�t×)Ñ)Ð+@À%ÓHÐHr]   r”   c                 óà  •— |dk(  r| j                  |«      S |dk(  r| S |dk(  rk| j                  «       r-t        |«      r"t        d„ |D «       «      st	        t
        |«       | j                  }|j                  |«       | j                  |«      S |dk(  rò| j                  }| j                  «       s| j                  «       r&d|_	        t        j                  j                  d «      S 	 | j                  |t        j                  t        g «      «       t         j"                  dk\  r?|j$                  j&                  dk(  r&d|_	        t        j                  j                  d «      S 	 | j                  |«      rt	        t*        |«       n§|d	k(  r¢| j                  }	 | j                  |t        |«      d
k(  r|d   n|d   «       | j                  |«      }t3        dt4        fi «      }	 | j                  |t        j                  |g «      «       | j                  |«       t	        t*        |«       |S t8        ‰| �u  ||||«      S # t(        $ r) d|_	        t        j                  j                  d «      cY S w xY w# t(        $ r) d|_	        t        j                  j                  d «      cY S t,        $ r |j.                  €J ‚|j.                  cY S w xY w# t0        $ r ‚ w xY w# t7        |«      $ r Y |S w xY w)NÚ__next__Ú__iter__Úsendc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrŽ   )Úis_constant_none©rÜ  r¦  s     r^   rÝ  z;LocalGeneratorObjectVariable.call_method.<locals>.<genexpr>î  s   è ø€ ÒB°c˜3×/Ñ/×1ÑBùrÞ  ÚcloseT)r÷   é   ÚCALL_INTRINSIC_1Úthrowr÷   r:   r   Ú__InternalThrowException)rQ  re  r‰   rá  r"   rž   r$  Ú	push_manyrI  r7  r   r@   r°   rb  ÚExceptionVariableÚGeneratorExitrù   rú   Únext_instructionÚopnamer    r‹  r!   Úsymbolic_resultr   ry  r�  r   rÚ   ré   )	r|   r’   r¢   r”   r•   r@  ÚretvalÚexc_typerÛ   s	           €r^   ré   z(LocalGeneratorObjectVariable.call_methodÛ  sÕ  ø€ ð �:ÒØ×%Ñ% bÓ)Ð)Ø�ZÒàˆKØ�VŠ^ð ×.Ñ.Ô0´S¸´Yô ÑB¸TÔBÔBÜ,¬Y¸Ô;Ø×'Ñ'ˆFØ×Ñ˜TÔ"Ø×%Ñ% bÓ)Ð)Ø�WŠ_ð ×'Ñ'ˆFØ×.Ñ.Ô0°D×4PÑ4PÔ4RØ-1�Ô*Ü ×1Ñ1×8Ñ8¸Ó>Ð>ð?Ø×%Ñ%Øœ	×3Ñ3´MÀ2ÓFôô( ×$Ñ$¨Ò/Ø×/Ñ/×6Ñ6Ð:LÒLà15�FÔ.Ü$×5Ñ5×<Ñ<¸TÓBÐBð.à×%Ñ% bÔ)Ü,¬\¸2Ô>øð �WŠ_ð ×'Ñ'ˆFðð
 ×%Ñ% b´S¸³YÀ!²^¨$¨qª'ÈÈaÉÔQð
 ×'Ñ'¨Ó+ˆFô| Ð6¼¸ÀbÓIˆHð?Ø×%Ñ% b¬)×*EÑ*EÀhÐPRÓ*SÔTØ×"Ñ" 2Ô&ô
 )¬°vÔ>ØˆMä‰wÑ" 2 t¨T°6Ó:Ð:øôa )ò ?à-1�Ô*Ü ×1Ñ1×8Ñ8¸Ó>Ò>ð?ûô )ò ?Ø-1�Ô*Ü ×1Ñ1×8Ñ8¸Ó>Ò>Ü,ò .ð
 ×-Ñ-Ð9Ð9Ð9Ø×-Ñ-Ò-ð.ûô, %ò àðûôN 1°Ó:ò àð ˆMðúsI   Ã'A;H? Å$!I4 Æ(K Ç$7K È?/I1É0I1É4/K
Ê%"K
Ë	K
ËKËK-Ë,K-©r<  rC   r_   N))rY   rZ   r[   rÆ   rE  r÷  r2  r‡   r1  r   r€   rí   rï   rô   r   r
  r3  r  r0  Ú__repr__r;  r  ry  r^  r>   rQ  r@   r)  rV  rX  r    r8  r   rZ  r
   r/  rb  re  rI  ré   r4  r5  s   @r^   r#  r#  H  s  ø„ à×'Ñ'€Mð
+à�n‰nð
+ð ˜˜S˜‘>ð
+ð @ð	
+ð
 ð
+ð 
õ
+ð˜%Ÿ.™.ó ð+˜có +ð'˜#ó 'ð2˜eó 2ð˜$ó ð˜#ó ð?˜ó ?ð €HóVð$˜T # s (™^ó ð#˜Tó #ðÐ ;ð Àó ðB.Ø)ð.Ø14ð.à	ó.ðÐ*Að Àdó ðÐ0Gð ÈDó ðØ-ðà	ˆoÑ	óðØ-ðØ3;¸_Ð<MÈsÐ<RÑ3Sðà	óð°'¸%±.ó ð	(Ø)ð	(Ø0?ð	(à	ó	(ðY¨Dó YðI¨ó Iðw;à#ðw;ð ðw;ð �?Ñ#ð	w;ð
 �S˜/Ð)Ñ*ðw;ð 
÷w;ñ w;r]   r#  c                   ó   — e Zd ZdZy)Ú4ContextlibContextManagerLocalGeneratorObjectVariablezö
    .. note::

        This is only used when the function is annotated with @contextlib.contextmanager

        It is a special case of a generator function as we do not allow return a context manager
        from a torch.compile function.
    N)rY   rZ   r[   rÊ   r\   r]   r^   r~  r~  •  s   „ òr]   r~  c            	       óô   ‡ — e Zd ZdZdefd„Zedœdedededdfˆ fd	„Z	d
e
defd„Zdej                  fd„Zdee
ef   fd„Zdefd„Zdddee   dee
ef   ddfd„Zdddee   dee
ef   defd„Zdefd„Zˆ xZS )ÚLocalGeneratorFunctionVariablezxfunctions that behaves like iterators

    .. note::

        This is a wrapper around (Nested)UserFunctionVariable
    r_   c                 ó"   — t         j                  S rŽ   r]  rÞ   s    r^   r^  z*LocalGeneratorFunctionVariable.python_typeª  r_  r]   )Úgenerator_clsÚvtr‚  r•   Nc                ó@   •— t        ‰| �  di |¤Ž || _        || _        y r‚   )rÚ   r€   rƒ  r‚  )r|   rƒ  r‚  r•   rÛ   s       €r^   r€   z'LocalGeneratorFunctionVariable.__init__­  s$   ø€ ô 	‰ÑÑ"˜6Ò"ØˆŒØ*ˆÕr]   r¢   c                 óv   — || j                   j                  v rt        | |«      S t        | j                  |«      S rŽ   )rÛ   r  rÓ   rƒ  )r|   r¢   s     r^   Ú__getattr__z*LocalGeneratorFunctionVariable.__getattr__¸  s2   € Ø�4—>‘>×*Ñ*Ñ*Ü˜4 Ó&Ð&Ü�t—w‘w Ó%Ð%r]   c                 ó6   — | j                   j                  «       S rŽ   )rƒ  rí   rÞ   s    r^   rí   z'LocalGeneratorFunctionVariable.get_code¾  ó   € Ø�w‰w×ÑÓ!Ð!r]   c                 ó6   — | j                   j                  «       S rŽ   )rƒ  r  rÞ   s    r^   r  z*LocalGeneratorFunctionVariable.get_globalsÁ  s   € Ø�w‰w×"Ñ"Ó$Ð$r]   c                 ó6   — | j                   j                  «       S rŽ   )rƒ  r  rÞ   s    r^   r  z'LocalGeneratorFunctionVariable.has_selfÄ  rˆ  r]   r’   rG   r”   rE   c                 ó8   — ddl m}  |j                  || ||«      S )Nr   )rE   )r6  rE   Úbuild_inline_tracer)r|   r’   r”   r•   rE   s        r^   Ú_build_inline_tracerz3LocalGeneratorFunctionVariable._build_inline_tracerÇ  s*   € õ 	Qà@Ð,×@Ñ@ØØØØó	
ð 	
r]   rF   c                 óŠ  — t        | j                  j                  «       «      s2t        dt	        | j                  j                  «       «      dddg¬«       | j                  |t        |«      |«      }| j                  j                  «       }| j                  j                  «       }| j                  |||| j                  ¬«      S )Nz'non-generator contextlib.contextmanagerzvCannot compile function decorated with `@contextlib.contextmanager` that is not a generator, i.e. does not use `yield`z5Use `yield` in the function body instead of `return`.z2Remove the `@contextlib.contextmanager` decorator.rH  rÝ   )
r   rƒ  rí   r%   r1  r�  r    r  r‚  r«   )r|   r’   r”   r•   r$  r}   r¿   s          r^   r%  z,LocalGeneratorFunctionVariable.call_functionÖ  s´   € ô ˜DŸG™G×,Ñ,Ó.Ô/ÜØAÜ˜DŸG™G×,Ñ,Ó.Ó/ð.ð LØHðõ	ð ×1Ñ1°"´d¸4³jÀ&ÓIˆØ�w‰w×ÑÓ!ˆØ—G‘G×'Ñ'Ó)ˆ	ð ×!Ñ!ØØØØ—;‘;ð	 "ó 
ð 	
r]   c                 ó6   — | j                   j                  «       S rŽ   )rƒ  rV  rÞ   s    r^   rV  z;LocalGeneratorFunctionVariable.get_real_python_backed_valueô  s   € Ø�w‰w×3Ñ3Ó5Ð5r]   )rY   rZ   r[   rÊ   ry  r^  r#  r×   r   r€   r1  r†  rÆ   r2  rí   r‡   r  r3  r  r    r>   r�  r   r%  rü  rV  r4  r5  s   @r^   r€  r€  ¢  s  ø„ ñð"˜Tó "ð ;ò		+à$ð	+ð ð		+ð
 ð	+ð 
õ	+ð& ð &¨ó &ð"˜%Ÿ.™.ó "ð%˜T # s (™^ó %ð"˜$ó "ð
à'ð
ð �?Ñ#ð
ð �S˜/Ð)Ñ*ð	
ð
 
)ó
ð
à#ð
ð �Ñ'ð
ð �S˜/Ð)Ñ*ð	
ð
 
ó
ð<6¨f÷ 6r]   r€  c                   ó\   ‡ — e Zd ZdZdededdfˆ fd„Zddd	ee   de	e
ef   dd
fˆ fd„Zˆ xZS )Ú3FunctionDecoratedByContextlibContextManagerVariablezm
    .. note::

        This is only used when the function is annotated with @contextlib.contextmanager
    rƒ  r•   r_   Nc                 ó2   •— t        ‰| �  |fdt        i|¤Ž y )Nr‚  )rÚ   r€   r~  )r|   rƒ  r•   rÛ   s      €r^   r€   z<FunctionDecoratedByContextlibContextManagerVariable.__init__  s%   ø€ Ü‰ÑØñ	
äNð	
ð ó	
r]   r’   rG   r”   rD   c                 ó˜   •— t         ‰| �  |||«      }t        |t        j                  j
                  j                  «      sJ ‚d|_        |S r.  )rÚ   r�  r­   ra   r‡  Úsymbolic_convertrD   Úis_generator_from_ctx_manager)r|   r’   r”   r•   r@  rÛ   s        €r^   r�  zHFunctionDecoratedByContextlibContextManagerVariable._build_inline_tracer  sO   ø€ ô ‘Ñ-¨b°$¸Ó?ˆÜØÜ�M‰M×*Ñ*×QÑQô
ð 	
ð 
ð 04ˆÔ,Øˆr]   )rY   rZ   r[   rÊ   r×   r   r€   r    r>   r‡   r1  r�  r4  r5  s   @r^   r‘  r‘  ø  sb   ø„ ñð
Ð3ð 
¸sð 
Àtõ 
ðà'ðð �?Ñ#ðð �S˜/Ð)Ñ*ð	ð
 
2÷ñ r]   r‘  c                   óø   ‡ — e Zd ZdZej
                  Z	 ddedef   de	de
dz  deddf
ˆ fd	„Zdefd
„Zdee	   fd„Zdeej
                     fd„Zdddee	   deee	f   de	fˆ fd„Zdddede	fˆ fd„Zdefd„Zˆ xZS )rd  z$Some unsupported user-defined methodNrÍ   .r  re  r•   r_   c                 ó®   •— t        ‰| �  dd|i|¤Ž || _        || _        |€3|j	                  d«      �!t        |j	                  d«      d«      | _        y y y )NrÍ   r«   Ú__func__r\   )rÚ   r€   r  re  r�   r)   )r|   rÍ   r  re  r•   rÛ   s        €r^   r€   zUserMethodVariable.__init__!  s^   ø€ ô 	‰ÑÑ)˜BÐ) &Ò)ØˆŒØ"ˆŒð Ð §¡¨HÓ!5Ð!AÜ'¨¯
©
°8Ó(<¸jÓIˆD�Nð "BÐr]   c                 óh   — | j                   j                  › d| j                  › d| j                  › d�S )Nr/  r�  r‚  )rÛ   rY   rÍ   r  rÞ   s    r^   r|  zUserMethodVariable.__repr__:  s.   € Ø—.‘.×)Ñ)Ð*¨!¨D¯G©G¨9°B°t·x±x°jÀÐBÐBr]   c                 ó   — | j                   gS rŽ   ©r  rÞ   s    r^   r#  zUserMethodVariable.self_args=  ó   € Ø—‘ˆzÐr]   c                 ó"   — t         j                  S rŽ   ©rÆ   Ú
MethodTyperÞ   s    r^   r^  zUserMethodVariable.python_type@  ó   € Ü×ÑÐr]   r’   rF   r”   c                 ó4  •— ddl m}m}  || j                  «      rjg | j	                  «       ¢|¢}t        j                  | j                  t
        j                  j                  j                  ¬«      }|j                  |||«      S  || j                  «      rjg | j	                  «       ¢|¢}t        j                  | j                  t
        j                  j                  j                  ¬«      }|j                  |||«      S |j                  j                  «       r¦t        | j                  t
        j                   «      r‚t#        | j                  dd«      }|�|j%                  d«      r|dk7  s| j&                  r±| j                  j)                  || j                  j*                  t-        |«      || j&                  ¬«      S t.        �d| j                  t.        j0                  j2                  u r>t        j4                  | j                  «      j                  || j                  g|¢­|«      S | j&                  rQt#        | j                  j6                  | j                  j*                  «      }	t9        ||	| j;                  «       ||«      S t<        ‰
| �)  |||«      S )	Nr   )Úis_leaf_functionÚis_nonstrict_trace_callablerƒ  rZ   rG  z	torch.nn.ztorch.nn.utils.parametrize)Úconstant)Útrace_rulesr¢  r£  rÍ   r#  r   r™  ra   rš  r›  r%  ÚLEAF_FUNCTIONr¸   Úis_root_tracerr­   r  ÚNNModuleVariablerÓ   Ú
startswithr8  ré   rY   r    rB   ÚFSDPParamGroupÚuse_training_stateÚTorchCtxManagerClassVariabler=  rœ  rô   rÚ   )r|   r’   r”   r•   r¢  r£  Ú	call_argsÚvarÚmodule_attrrÍ   rÛ   s             €r^   r%  z UserMethodVariable.call_functionC  s  ø€ ÷ 	Pá& t§w¡wÔ/Ø2˜$Ÿ.™.Ó*Ð2¨TÐ2ˆIÜ×8Ñ8Ø—‘œiŸo™o×>Ñ>×NÑNôˆCð ×$Ñ$ R¨°FÓ;Ð;á˜DŸG™GÔ$Ø2˜$Ÿ.™.Ó*Ð2¨TÐ2ˆIÜ×8Ñ8Ø—‘œiŸo™o×>Ñ>×LÑLôˆCð ×$Ñ$ R¨°FÓ;Ð;ð �9‰9×#Ñ#Ô%¬*Ø�H‰H”i×0Ñ0ô+
ô " $§'¡'¨<¸Ó<ˆKð Ð'Ø×*Ñ*¨;Ô7ØÐ#?Ò?Ø×#Ò#à—x‘x×+Ñ+Ø˜Ÿ™×(Ñ(¬$¨t«*°fÀt×GWÑGWð ,ó ð ô Ð)Ø—‘Ô,×;Ñ;×NÑNÑNä×9Ñ9¸$¿'¹'ÓB×PÑPØ�T—X‘XÐ% Ñ% vóð ð ×ÒÜ˜Ÿ™Ÿ™¨¯©×)9Ñ)9Ó:ˆBÜ/°°B¸¿¹»ÈÈvÓVÐVÜ‰wÑ$ R¨¨vÓ6Ð6r]   r¢   c                 ó¦   •— |dk(  r| j                   S |dk(  r+t        j                  || j                  | j                  «      S t
        ‰| �  ||«      S )Nra  r˜  )r  r>   r®   rÍ   re  rÚ   r  )r|   r’   r¢   rÛ   s      €r^   r  zUserMethodVariable.var_getattr‡  sM   ø€ Ø�:ÒØ—8‘8ˆOØ�:Òô #×(Ñ(¨¨T¯W©W°d·n±nÓEÐEÜ‰wÑ" 2 tÓ,Ð,r]   c                 ó   — | j                   S rŽ   rY  rÞ   s    r^   rV  z/UserMethodVariable.get_real_python_backed_value‘  rZ  r]   rŽ   )rY   rZ   r[   rÊ   rÆ   rŸ  r÷  r   r   r>   r   r€   r1  r|  r    r#  ry  r^  r   r‡   r%  r  rV  r4  r5  s   @r^   rd  rd    sý   ø„ Ù.ð ×$Ñ$€Mð $(ñ	Jà�S˜#�XÑðJð ðJð ˜D‘=ð	Jð
 ðJð 
õJð2C˜#ó Cð˜4 Ñ0ó ð ˜T %×"2Ñ"2Ñ3ó  ðB7à#ðB7ð �Ñ'ðB7ð �S˜/Ð)Ñ*ð	B7ð
 
õB7ðH-Ð5ð -¸Sð -À_õ -ð¨c÷ r]   rd  c                   ód   ‡ — e Zd Zdedddeddfˆ fd„Zdd	d
ee   dee	ef   defˆ fd„Z
dd„Zˆ xZS )ÚWrappedUserMethodVariableÚwrappedrJ  rH   r•   r_   Nc                 ó´   •— |j                  dd «       |j                  dd «       t        ‰| �  |j                  |j                  fi |¤Ž || _        || _        y )NrÍ   r  )r�   rÚ   r€   rÍ   r  r´  rJ  ©r|   r´  rJ  r•   rÛ   s       €r^   r€   z"WrappedUserMethodVariable.__init__–  sK   ø€ ð 	�
‰
�4˜ÔØ�
‰
�5˜$ÔÜ‰Ñ˜Ÿ™ W§[¡[Ñ;°FÒ;ØˆŒØˆ�r]   r’   rF   r”   c                 óR  •— t         j                  rNt        t        j                  «      }|j                  || j                  | j                  gt        |«      z   |«      S | j                  j                  |«       t        ‰| �  |||«      }| j                  j                  |«       |S rŽ   ©r   Únested_graph_breaksr7  r   Ú_fn_with_ctxr%  rJ  r´  r    ÚenterrÚ   Úexit©r|   r’   r”   r•   Ú
wrapper_fnr±   rÛ   s         €r^   r%  z'WrappedUserMethodVariable.call_function¢  óŒ   ø€ ô ×%Ò%Ü-¬i×.DÑ.DÓEˆJØ×+Ñ+Ø�T—\‘\ 4§<¡<Ð0´4¸³:Ñ=¸vóð ð 	�‰×Ñ˜2ÔÜ‘Ñ& r¨4°Ó8ˆØ�‰×Ñ˜"ÔØˆr]   c                 óŒ   ‡ ‡— ‰j                  ˆˆ fd„«        ‰‰ j                  «       ‰j                  t        dd«      «       y )Nc                  ó(   •—  ‰ ‰j                   «      S rŽ   ©rJ  ©r<  r|   s   €€r^   r  z7WrappedUserMethodVariable.reconstruct.<locals>.<lambda>³  ó   ø€ ¡g¨d¯l©lÓ&;€ r]   r:   F©Úadd_push_nullr´  Úextend_outputr   ©r|   r<  s   ``r^   r;  z%WrappedUserMethodVariable.reconstruct²  ó4   ù€ Ø×ÑÔ;Ô<Ù�—‘ÔØ×ÑÔ2°1°eÓ<Õ=r]   r{  )rY   rZ   r[   rd  r   r€   r   r>   r‡   r1  r%  r;  r4  r5  s   @r^   r³  r³  •  sm   ø„ ð
à#ð
ð +ð
ð ð	
ð
 
õ
ðà#ðð �Ñ'ðð �S˜/Ð)Ñ*ð	ð
 
õ÷ >r]   r³  c                   ód   ‡ — e Zd Zdedddeddfˆ fd„Zdd	d
ee   dee	ef   defˆ fd„Z
dd„Zˆ xZS )ÚWrappedUserFunctionVariabler´  rJ  rH   r•   r_   Nc                 óz   •— |j                  dd «       t        ‰| �  |j                  fi |¤Ž || _        || _        y )NrÍ   )r�   rÚ   r€   rÍ   r´  rJ  r¶  s       €r^   r€   z$WrappedUserFunctionVariable.__init__¹  s7   ø€ ð 	�
‰
�4˜ÔÜ‰Ñ˜Ÿ™Ñ. vÒ.ØˆŒØˆ�r]   r’   rF   r”   c                 óR  •— t         j                  rNt        t        j                  «      }|j                  || j                  | j                  gt        |«      z   |«      S | j                  j                  |«       t        ‰| �  |||«      }| j                  j                  |«       |S rŽ   r¸  r½  s         €r^   r%  z)WrappedUserFunctionVariable.call_functionÄ  r¿  r]   c                 óŒ   ‡ ‡— ‰j                  ˆˆ fd„«        ‰‰ j                  «       ‰j                  t        dd«      «       y )Nc                  ó(   •—  ‰ ‰j                   «      S rŽ   rÂ  rÃ  s   €€r^   r  z9WrappedUserFunctionVariable.reconstruct.<locals>.<lambda>Õ  rÄ  r]   r:   FrÅ  rÈ  s   ``r^   r;  z'WrappedUserFunctionVariable.reconstructÔ  rÉ  r]   r{  )rY   rZ   r[   r7  r   r€   r   r>   r‡   r1  r%  r;  r4  r5  s   @r^   rË  rË  ¸  sm   ø„ ð	à%ð	ð +ð	ð ð		ð
 
õ	ðà#ðð �Ñ'ðð �S˜/Ð)Ñ*ð	ð
 
õ÷ >r]   rË  c                 ó  ‡— dt         dt        fˆfd„}|D �cg c]
  } ||«      ‘Œ }}|j                  «       D ��ci c]  \  }}| ||«      “Œ }}} ||i |¤Ž}	| j                  j	                  |	‰t        ‰«      ¬«      S c c}w c c}}w )NÚxr_   c           
      óÀ  •— | j                  «       rt        d| «      j                  «       S t        | t        «      r@| j
                  �(t        | j                  t        j                  «      «       | j                  S 	 | j                  «       S # t        $ rG t        dd‰› dt        | «      j                  › �dt        | «      j                  › d‰› d�dd	g¬
«       Y y w xY w)NrN   z1assume_constant_result argument conversion failedz	function z, variable type z Cannot convert argument of type z# to a Python constant for function zm marked with torch._dynamo.assume_constant_result. The variable tracker does not support constant conversion.z>Remove torch._dynamo.assume_constant_result from this functionzIEnsure all arguments passed to the function can be converted to constantsrH  )Ú	is_tensorr	   Úget_real_valuer­   rA   r«   r(   rA  r'   ÚID_MATCHr=  rS  r;   r%   ry  rY   )rÑ  r¢   s    €r^   Úconvertz-invoke_and_store_as_constant.<locals>.convertá  sÙ   ø€ Ø�;‰;Œ=ÜÐ(¨!Ó,×;Ñ;Ó=Ð=Ü�aÔ2Ô3Ø�x‰xÐ#Ü˜aŸl™l¬<×+@Ñ+@ÓAÔBØ—7‘7ˆNð	Ø×'Ñ'Ó)Ð)øÜ2ò 	ÜØKØ# D 6Ð)9¼$¸q»'×:JÑ:JÐ9KÐLØ>¼tÀA»w×?OÑ?OÐ>Pð Q Ø $˜vð &MðNð UØ_ð÷
ð	ús   Á=B ÂACÃCrÝ   )r>   r   rš   r¸   Úregister_attr_or_moduler,   )
r’   rÍ   r¢   r”   r•   rÖ  rÑ  r³   r´   Úress
     `       r^   rœ  rœ  Ú  s•   ø€ ð”?ð ¤sõ ð, !%Ö%˜1‰G�A�JÐ%€DÐ%Ø(.¯©«×7¡  1ˆa‘˜“‰mÐ7€FÑ7Ù
ˆdÐ
�fÑ
€CØ�9‰9×,Ñ,ØØÜ˜dÓ#ð -ó ð ùò &ùÛ7s
   ˜B¼Bc                   ó  ‡ — e Zd Zdhej                  £Z	 d!dededeeef   dedz  dedz  dedz  dedz  d	ed
dfˆ fd„Z	d
e
e   fd„Zd
ej                  fd„Zd
ej                  fd„Zd
eej                     fd„Zd!dee   dz  d
ej                  fd„Zd
efd„Zdee   d
ej                  fd„Zddded
efˆ fd„Zd
efd„Zddded
efˆ fd„Zddded
efˆ fd„Zd
efd„Zd
eeef   fd„Zddde e   d	eeef   d
eeef   fd„Z!d"d „Z"ˆ xZ#S )#ÚNestedUserFunctionVariabler¿   Nr®  r}   r„   r†   rÀ   Ú
wrapped_fnr•   r_   c                 ó”  •— |j                  d«      €|j                  t        «       ¬«       t        ‰	| �  di |¤Ž t        |j                  «       t        «      sJ ‚t        |j                  «       t        j                  «      sJ ‚t        |t        «      sJ ‚|| _        || _        || _        || _        || _        || _        || _        y )Nr  r  r\   )r�   Úupdater<   rÚ   r€   r­   rS  r1  rÆ   r2  r‡   r®  r}   r¿   r„   r†   rÀ   rÛ  )
r|   r®  r}   r¿   r„   r†   rÀ   rÛ  r•   rÛ   s
            €r^   r€   z#NestedUserFunctionVariable.__init__  s­   ø€ ð �:‰:�oÓ&Ð.Ø�M‰MÔ(<Ó(>ˆMÔ?Ü‰ÑÑ"˜6Ò"Ü˜'×4Ñ4Ó6¼Ô<Ð<Ð<Ü˜$×1Ñ1Ó3´U·^±^ÔDÐDÐDÜ˜)¤TÔ*Ð*Ð*ØˆŒØˆŒ	Ø"ˆŒØ ˆŒØ$ˆŒØˆŒØ2<ˆ�r]   c                 ó   — g S rŽ   r\   rÞ   s    r^   r#  z$NestedUserFunctionVariable.self_args"  r,  r]   c                 ó"   — | j                  «       S rŽ   )r
  rÞ   s    r^   rS  z-NestedUserFunctionVariable.as_python_constant%  s   € Ø× Ñ Ó"Ð"r]   c                 ó6   — | j                   j                  «       S rŽ   )r}   rS  rÞ   s    r^   rí   z#NestedUserFunctionVariable.get_code(  s   € Ø�y‰y×+Ñ+Ó-Ð-r]   c                 ó"   — t         j                  S rŽ   r]  rÞ   s    r^   r^  z&NestedUserFunctionVariable.python_type+  r_  r]   Ú_convertingc                 ó   — ddl m} t        | «      }|€
t        «       }||v rt	        d«      ‚|j                  |«       	 | j                  |«      |j                  |«       S # |$ r}t	        d«      |‚d }~ww xY w# |j                  |«       w xY w)Nr:   )r;   z-cycle detected in mutually recursive closuresz1failed to convert closure cell to Python constant)Úbaser;   ÚidÚsetrX   ÚaddÚ_get_function_implÚdiscard)r|   râ  r;   Úself_idrª  s        r^   r
  z'NestedUserFunctionVariable.get_function.  sœ   € õ 	>ä�T“(ˆØÐÜ›%ˆKØ�kÑ!Ü(Ø?óð ð 	�‰˜Ô ð	)Ø×*Ñ*¨;Ó7ð ×Ñ Õ(øð 3ò 	Ü(ØCóàðûð	ûð
 ×Ñ Õ(ús#   ¿A! Á!A7Á&A2Á2A7Á7A: Á:Bc                 óP   — 	 | j                  «        y# t        t        f$ r Y yw xY wrS  )rS  r  r&   rÞ   s    r^   rß  z-NestedUserFunctionVariable.is_python_constantD  s-   € ð	Ø×#Ñ#Ô%ØøÜ#¤[Ð1ò 	Ùð	ús   ‚ “%¤%c                 ó  — d }| j                   r¿ddlm}  |j                  «       }g }| j                   j                  D ]‚  }|j
                  j                  j                  |«      }|| u rt        d«      ‚t        |t        «      r|j                  |«      }n|j                  «       }|j                  t        |«      «       Œ„ t        |«      }t!        j"                  | j$                  j                  «       | j&                  | j(                  j                  «       d |¬«      }	| j*                  r| j*                  j                  «       |	_        | j.                  r| j.                  j                  «       |	_        | j2                  r„| j2                  j5                  d«      ri| j2                  j7                  d«      j                  «       }
t        |
t        «      rddlm} t=         ||
«      «      }
t        |
t<        «      sJ ‚|
|	_        |	S )Nr   )rF   z self-referential nested function)ÚargdefsrÀ   rÈ   rÄ   ) rÀ   r6  rF   Ú
current_txrš   r¸   r¹   Ú	load_cellrX   r­   rÚ  r
  rS  r[  r9   rŸ   rÆ   r   r}   r¿   r®  r„   rƒ   r†   r…   rØ   r  r  rÇ   rÅ   r‡   rÈ   )r|   râ  Úclosure_cellsrF   r’   Úcellsrp  rg  r=  rh   rÁ   rÅ   s               r^   rè  z-NestedUserFunctionVariable._get_function_implK  s¢  € ØˆØ�<Š<ÝLà1Ð&×1Ñ1Ó3ˆBØˆEà ŸL™L×.Ñ.ò /�ð !#§	¡	× 6Ñ 6× @Ñ @ÀÓ J�ð ! DÑ(Ü0Ð1SÓTÐTô ˜mÔ-GÔHØ)×6Ñ6°{ÓC‘Eà)×<Ñ<Ó>�EØ—‘œY uÓ-Õ.ð-/ô. " %›LˆMä×!Ñ!Ø�I‰I×(Ñ(Ó*Ø�N‰NØ�L‰L×+Ñ+Ó-ØØ!ô
ˆð �=Š=Ø $§¡× @Ñ @Ó BˆDÔØ�?Š?Ø"&§/¡/×"DÑ"DÓ"FˆDÔØ�<Š<˜DŸL™L×1Ñ1Ð2CÔDØŸ,™,×.Ñ.Ð/@ÓA×TÑTÓVˆKÜ˜+¤uÔ-Ý.ä"¡8¨KÓ#8Ó9�ô ˜k¬4Ô0Ð0Ð0Ø#.ˆDÔ Øˆr]   r’   rF   r¢   c           
      ó@  •— |dv rt         ‰| �  ||«      S |dk(  r4t        | dd «      }|r|j                  «       S t	        j
                  d «      S |t        v r9t        j                  | |t        t        t        j                  |«      «      ¬«      S t         ‰| �  ||«      S )N)rÈ   r  rÊ   rk   rZ   rY   r[   r  rƒ   r„   rv  )rÚ   r  rÓ   rS  r@   r°   r4   r   rx  ry  rÆ   r   ©r|   r’   r¢   ÚdrÛ   s       €r^   r  z&NestedUserFunctionVariable.var_getattrƒ  s¥   ø€ Øð 	
ñ 	
ô ‘7Ñ& r¨4Ó0Ð0Ø�>Ò!Ü˜˜j¨$Ó/ˆAÙ-.�1×'Ñ'Ó)ÐQÔ4D×4KÑ4KÈDÓ4QÐQØÔ+Ñ+Ü×,Ñ,Ø�d¤D¬´×1CÑ1CÀTÓ)JÓ$Kôð ô ‘7Ñ& r¨4Ó0Ð0r]   c                 ó   — | j                   d uS rŽ   )rÀ   rÞ   s    r^   Úhas_closurez&NestedUserFunctionVariable.has_closure™  s   € Ø�|‰| 4Ð'Ð'r]   c                 óÄ   •— |dk(  r| j                  «       S |dk(  r| j                  «       S |dk(  r!t        | dd «      }|r|j                  «       S d S t        ‰| �  ||«      S )NrY   rk   rƒ   r„   )rô   rí   rÓ   rS  rÚ   Úconst_getattrró  s       €r^   rø  z(NestedUserFunctionVariable.const_getattrœ  si   ø€ Ø�:ÒØ—=‘=“?Ð"Ø�:ÒØ—=‘=“?Ð"Ø�>Ò!Ü˜˜j¨$Ó/ˆAÙ-.�1×'Ñ'Ó)Ð8°DÐ8Ü‰wÑ$ R¨Ó.Ð.r]   c                 ó2  •— |dk(  r t        j                  |t        | d«      «      S |dk(  r t        j                  |t        | d«      «      S t        j                  |«      }|| j                  |«      v rt        j                  d«      S t        ‰| �  ||«      S )Nrk   r}   rƒ   r„   T)r>   r®   r'  r@   r°   rã   rÚ   r)  )r|   r’   r¢   rƒ  rÛ   s       €r^   r)  z+NestedUserFunctionVariable.call_obj_hasattr¦  s�   ø€ ð �:ÒÜ"×(Ñ(¨¬W°T¸6Ó-BÓCÐCØ�>Ò!Ü"×(Ñ(¨¬W°T¸:Ó-FÓGÐGÜ×$Ñ$ TÓ*ˆØ�×!Ñ! "Ó%Ñ%Ü#×*Ñ*¨4Ó0Ð0Ü‰wÑ'¨¨DÓ1Ð1r]   c                  ó   — yr+  r\   rÞ   s    r^   r  z#NestedUserFunctionVariable.has_self²  r,  r]   c                 ó   — | j                   S rŽ   rB  rÞ   s    r^   r  z&NestedUserFunctionVariable.get_globalsµ  rC  r]   r¶   r”   c                 óH  — | j                  «       }t        j                  || j                  | j                  j                  «       | j                  rt        | j                  j                  «      nd t        d„ t        t        | j                  «       j                  «      «      D «       «      «      }| j                  r| j                  j                  «       |_         t        j                   |«      j"                  |i |¤Ž}|j%                  «        t'        |j(                  j                  «       «      }t+        |j,                  j.                  |«       t1        |||«       t3        |j                  «      D ])  \  }}	|	|vsJ ‚| j4                  j                  |   }
|
||	<   Œ+ |S )Nc              3   ó2   K  — | ]  }t        d «      –— Œ y ­wrŽ   )r9   )rÜ  Ú_s     r^   rÝ  z7NestedUserFunctionVariable.bind_args.<locals>.<genexpr>Ä  s   è ø€ ÒS a”)˜D—/ÑSùs   ‚)rí   rÆ   r   r¿   r®  rS  r„   rŸ   rš   rŠ   r‰   rj  r†   Úkeys_as_python_constantr…   rÏ   rŒ  r�  r’  r‡   rŽ  rµ   r¸   ri  r¾   r˜   rÀ   )r|   r¶   r”   r•   r}   rh   rP   r±   r¥   r¢   ro  s              r^   rt  z$NestedUserFunctionVariable.bind_args¸  sJ  € ð �}‰}‹ˆÜ×!Ñ!ØØ�N‰NØ�L‰L×+Ñ+Ó-Ø*.¯-ª-ŒE�$—-‘-×%Ñ%Ô&¸TÜÑS¬5´°T·]±]³_×5PÑ5PÓ1QÓ+RÔSÓSó
ˆð �?Š?Ø"&§/¡/×"IÑ"IÓ"KˆDÔØ,”×!Ñ! $Ó'×,Ñ,¨dÐ=°fÑ=ˆØ×ÑÔÜ�e—o‘o×+Ñ+Ó-Ó.ˆÜ˜Ÿ™×.Ñ.°Ô7Ü�f˜f dÔ+ä" 4×#3Ñ#3Ó4ò 	 ‰IˆC�Ø˜vÑ%Ð%Ð%Ø—<‘<×%Ñ% cÑ*ˆDØˆF�4ŠLð	 ð
 ˆr]   c                 óŒ  ‡— ‰j                  ˆfd„«        ‰| j                  «       ‰j                  ‰j                  | j                  «      g«        ‰t        j                  | j                  j                  j                  «      «       | j                  r ‰| j                  «       n!‰j                  ‰j                  d «      g«       | j                  r ‰| j                  «       n!‰j                  ‰j                  d «      g«       | j                  r ‰| j                  «       n!‰j                  ‰j                  d «      g«       | j                  ri| j                  j                  d«      rN| j                  j                  d«      }	 |j!                  «       }‰j                  ‰j                  |«      g«       n!‰j                  ‰j                  d «      g«       ‰j                  t%        dd«      «       | j&                  rv‰j                  ˆfd„«        ‰| j&                  «       ‰j                  t%        dd«      «       ‰j                  t)        d«      «       ‰j                  t%        dd«      «       ‰j*                  }|j,                  j.                  j1                  | «      r}|j,                  j.                  j2                  |    j5                  «       D ]H  \  }}‰j7                  «         ‰|«       ‰j                  t)        d«      «       ‰j9                  |«       ŒJ y y # t"        $ r  ‰|«       Y �Œ`w xY w)	Nc                  ó0   •— ‰ j                  t        d«      S )NrÉ   )Úload_import_fromrY   ©r<  s   €r^   r  z8NestedUserFunctionVariable.reconstruct.<locals>.<lambda>×  s   ø€ �G×,Ñ,¬XÐ7JÓK€ r]   rÈ   é   Fc                  ó(   •— ‰ j                  dd«      S )NÚ	functoolsÚwraps©r  r  s   €r^   r  z8NestedUserFunctionVariable.reconstruct.<locals>.<lambda>ü  s   ø€ ˜×0Ñ0°¸gÓF€ r]   r:   r   T)rÆ  r}   rÇ  Úcreate_load_const_uncheckedr¿   r@   r°   r=  ró   r„   Úcreate_load_constrÀ   r†   rØ   r  r  rS  r  r   rÛ  r   r’   r¸   r¹   Úhas_pending_mutationÚstore_attr_mutationsrš   Údup_topÚ
store_attr)r|   r<  rÁ   r’   r¢   r=  s    `    r^   r;  z&NestedUserFunctionVariable.reconstructÕ  s�  ø€ Ø×ÑÛKô	
ñ 	�—	‘	ÔØ×Ñ˜w×BÑBÀ4Ç>Á>ÓRÐSÔTÙÔ ×'Ñ'¨¯	©	¯©×(?Ñ(?Ó@ÔAà�=Š=Ù�D—M‘MÕ"à×!Ñ! 7×#<Ñ#<¸TÓ#BÐ"CÔDà�<Š<Ù�D—L‘LÕ!à×!Ñ! 7×#<Ñ#<¸TÓ#BÐ"CÔDà�?Š?Ù�D—O‘OÕ$à×!Ñ! 7×#<Ñ#<¸TÓ#BÐ"CÔDà�<Š<˜DŸL™L×1Ñ1Ð2CÔDØŸ,™,×.Ñ.Ð/@ÓAˆKð%Ø)×<Ñ<Ó>�Ø×%Ñ%Ø×8Ñ8¸ÓEÐFõð ×!Ñ! 7×#<Ñ#<¸TÓ#BÐ"CÔDà×ÑÔ2°1°eÓ<Ô=à�?Š?Ø×!Ñ!ÛFôñ �D—O‘OÔ$Ø×!Ñ!Ô"6°q¸%Ó"@ÔAØ×!Ñ!¤,¨q£/Ô2Ø×!Ñ!Ô"6°q¸$Ó"?Ô@ð �Z‰ZˆØ�9‰9×!Ñ!×6Ñ6°tÔ<Ø!Ÿy™y×5Ñ5×JÑJØñ ç‰e‹gò)‘��eð —‘Ô!Ù˜”Ø×%Ñ%¤l°1£oÔ6Ø×"Ñ" 4Õ(ñ)ð =øô% 'ò %Ù˜×$ð%ús   Æ1L. Ì.MÍMrŽ   r{  )$rY   rZ   r[   r×   rø  r>   r‡   r1  r   r€   r    r#  rÆ   r   rS  r2  rí   ry  r^  ræ  rû  r
  r3  rß  rè  r  rö  rø  r@   r)  r  r  r   rt  r;  r4  r5  s   @r^   rÚ  rÚ    sö  ø„ àðà	!×	0Ñ	0ð€Nð .2ñ=à ð=ð ð=ð ˜˜S˜‘>ð	=ð
 " DÑ(ð=ð $ dÑ*ð=ð ! 4Ñ'ð=ð $ dÑ*ð=ð ð=ð 
õ=ð6˜4 Ñ0ó ð# E×$6Ñ$6ó #ð.˜%Ÿ.™.ó .ð"˜T %×"4Ñ"4Ñ5ó "ñ)¨¨C©°4©ð )À5×CUÑCUó )ð, Dó ð6¨c°#©hð 6¸5×;MÑ;Mó 6ðp1Ð5ð 1¸Sð 1À_õ 1ð,(˜Tó (ð/Ð 7ð /¸sð /Àsõ /ð
2Ø)ð
2Ø14ð
2à	õ
2ð˜$ó ð˜T # s (™^ó ðà'ðð �Ñ'ðð �S˜/Ð)Ñ*ð	ð
 
ˆc�?Ð"Ñ	#ó÷:7)r]   rÚ  c                   ód   ‡ — e Zd Zdedddeddfˆ fd„Zdd	d
ee   dee	ef   defˆ fd„Z
dd„Zˆ xZS )Ú!WrappedNestedUserFunctionVariabler´  rJ  rH   r•   r_   Nc           	      óø  •— |j                  dd «       |j                  dd «       |j                  dd «       |j                  dd «       |j                  dd «       |j                  dd «       |j                  dd «       |j                  dd «       t        ‰| �	  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  «       || _
        || _        y )	Nr®  r}   r¿   r„   r†   rÁ   rÀ   rÛ  )r�   rÚ   r€   r®  r}   r¿   r„   r†   rÀ   rÛ  r´  rJ  r¶  s       €r^   r€   z*WrappedNestedUserFunctionVariable.__init__  sË   ø€ ð 	�
‰
�9˜dÔ#Ø�
‰
�6˜4Ô Ø�
‰
�; Ô%Ø�
‰
�:˜tÔ$Ø�
‰
�< Ô&Ø�
‰
�= $Ô'Ø�
‰
�9˜dÔ#Ø�
‰
�< Ô&Ü‰ÑØ�O‰OØ�L‰LØ×ÑØ×ÑØ×ÑØ�O‰OØ×Ñô	
ð ˆŒØˆ�r]   r’   rF   r”   c                 óR  •— t         j                  rNt        t        j                  «      }|j                  || j                  | j                  gt        |«      z   |«      S | j                  j                  |«       t        ‰| �  |||«      }| j                  j                  |«       |S rŽ   r¸  r½  s         €r^   r%  z/WrappedNestedUserFunctionVariable.call_function*  r¿  r]   c                 óŒ   ‡ ‡— ‰j                  ˆˆ fd„«        ‰‰ j                  «       ‰j                  t        dd«      «       y )Nc                  ó(   •—  ‰ ‰j                   «      S rŽ   rÂ  rÃ  s   €€r^   r  z?WrappedNestedUserFunctionVariable.reconstruct.<locals>.<lambda>;  rÄ  r]   r:   FrÅ  rÈ  s   ``r^   r;  z-WrappedNestedUserFunctionVariable.reconstruct:  rÉ  r]   r{  )rY   rZ   r[   rÚ  r   r€   r   r>   r‡   r1  r%  r;  r4  r5  s   @r^   r  r    sm   ø„ ðà+ðð +ðð ð	ð
 
õð4à#ðð �Ñ'ðð �S˜/Ð)Ñ*ð	ð
 
õ÷ >r]   r  c            	       ó  ‡ — e Zd Zddhej                  £Zddededz  deddfˆ fd„Zdefd„Zdefd„Z	e
ded	edd fd
„«       Zdddee   deeef   defd„Zdddedefd„Zdddedefd„Zdefd„Zdefd„Zdedefd„Zˆ xZS )ÚSkipFunctionVariabler=  ÚreasonNr•   r_   c                 ó@   •— t        ‰| �  di |¤Ž || _        || _        y r‚   )rÚ   r€   r=  r  )r|   r=  r  r•   rÛ   s       €r^   r€   zSkipFunctionVariable.__init__G  s!   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒ
Øˆ�r]   c                 ó   — | j                   S rŽ   ©r=  rÞ   s    r^   rS  z'SkipFunctionVariable.as_python_constantL  ó   € Ø�z‰zÐr]   c                 ó   — | j                   S rŽ   r  rÞ   s    r^   rV  z1SkipFunctionVariable.get_real_python_backed_valueO  r  r]   r«   c                 ó4  — t        j                  |dd«      rW|}|}t        |dd«      r&|j                  }t	        |d«      }t        |dd«      rŒ&|j                  t        j                  «       n¡t        j                  |«      rYt        |d«      r$t        |j                  t        j                  «      r\t        |j                  t        j                  «      «       n3t!        |«      s(t        |j                  t        j                  «      «        | ||¬«      S )NÚ_torchdynamo_disableFÚ_torchdynamo_orig_callablera  rÝ   )rÏ   rÐ   rÓ   r  r)   rA  r'   rB  Ú	isbuiltinr'  r­   ra  rÆ   Ú
ModuleTyper(   ÚBUILTIN_MATCHr7   )rD  r=  r«   Úguard_on_sourceÚguard_on_values        r^   rE  z'SkipFunctionVariable.create_with_sourceR  së   € ô ×!Ñ! %Ð)?ÀÔGð %ˆOØ"ˆNä˜.Ð*FÈÔNØ!/×!JÑ!J�Ü",Ø#Ð%Aó#�ô ˜.Ð*FÈÕNð ×&Ñ&¤|×'AÑ'AÕBÜ×Ñ˜uÔ%ô
 ˜5 *Ô-´Ø—‘¤× 0Ñ 0ô2ô ˜f×/Ñ/´×0JÑ0JÓKÕLÜ0°Ô7ô ˜&×+Ñ+¬L×,FÑ,FÓGÔHÙ�5 Ô(Ð(r]   r’   rF   r”   c                 óŽ  — t        j                  | j                  dd«      rVt        j                  | j                  dd «      }t        dt	        | j                  «      d| j                  › d|› d�dg¬	«       y | j                  t
        j                  j                  u r>|j                  d
«      }|r|j                  «       }t        dd|› d|› d�d|› �dg¬	«       y | j                  t
        j                  j                  u rX|j                  d
«      }|r|j                  «       }nd}t        dd|› d|› dt        |j                  «      › d�d|› �dgd¬«       y | j                  t
        j                  j                  u r	 t        ddddg¬	«       y | j                  t"        j$                  j&                  u rtt)        |«      dv r>|s<|d   }|d   }	t+        |t,        «      r"t/        |j0                  |	|j2                  ¬ «      S t        d!d"| › d#|› d$|› �d%g t4        j6                  ¢¬	«       y t8        j:                  rEdd&lm}
 |
jA                  || j                  «      }t+        |tB        «      s|jE                  |||«      S tG        | j                  d'd(«      }tG        | j                  d)d «      }|€d*n
t	        |«      }	 t        jH                  | j                  «      }d+|› d,|› d-�}d.|› d/�g}d0|vr|d1|› d2�d3gz  }|dAk(  rdB}dCg}| jT                  r| jT                  }ndDdEl+m,}  || j                  «      }t        dFdG|› dH|› dI|› �||¬	«       y # t        $ r}t        |j                   «      d ‚d }~ww xY w# tJ        $ rÃ d4d5h}||v rd6|› d|› d/�}d7d8g}n©|�\|jM                  d9«      rKd:|› d|› d�}d;g}t
        j                  jN                  jQ                  |d<z   d<jS                  |«      z   «       nKd=|› d|› d>�}d?d@g}t
        j                  jN                  jQ                  |d<z   d<jS                  |«      z   «       Y �ŒFw xY w)JNr  FÚ_torchdynamo_disable_msgz1Skip calling `torch.compiler.disable()`d functionzSkip calling function `z>` since it was wrapped with `torch.compiler.disable` (reason: r‚  z(Remove the `torch.compiler.disable` callrH  r­  z%Call to `torch._dynamo.graph_break()`z0Called `torch._dynamo.graph_break()` with args `z`, kwargs `ú`z$User-inserted graph break. Message: z.Remove the `torch._dynamo.graph_break()` call.rG  z$Call to `torch._dynamo.skip_frame()`z/Called `torch._dynamo.skip_frame()` with args `z`. Skipping frame rH  z#User-inserted skip frame. Message: z-Remove the `torch._dynamo.skip_frame()` call.T)rI  rJ  rK  rL  rO  z*Call to `torch._dynamo.step_unsupported()`zUser-inserted step_unsupported.z3Remove the `torch._dynamo.step_unsupported()` call.)r   r÷   r   r:   )re  z!unsupported function.__get__ callzcall_function z, args: r|  z^Dynamo only supports function.__get__(func, obj[, cls]) where func is a user-defined function.©ÚSourcelessBuilderr[   z<unknown qualname>rZ   z<unknown module>z?Dynamo developers have intentionally marked that the function `z` in file `z` should not be traced.zAvoid calling the function `z`.r‡  z:Apply `@torch._dynamo.dont_skip_tracing` to the function `zw` to force tracing into the function. More graph breaks may occur as a result of attempting to trace into the function.z Please file an issue to PyTorch.Ú_abcÚ	_warningsz6Dynamo does not know how to trace the Python builtin `z˜If you are attempting to call a logging function (e.g. `_warnings.warn`), you can try adding it to `torch._dynamo.config.reorderable_logging_functions`.zKPlease file an issue on GitHub so the PyTorch team can add support for it. r<  z*Dynamo cannot trace optree C/C++ function zi Consider using torch.utils._pytree - https://github.com/pytorch/pytorch/blob/main/torch/utils/_pytree.pyú
z/Dynamo does not know how to trace the builtin `zˆ.` This function is either a Python builtin (e.g. _warnings.warn) or a third-party C/C++ Python extension (perhaps created with pybind).zŒIf it is a Python builtin, please file an issue on GitHub so the PyTorch team can add support for it and see the next case for a workaround.a  If it is a third-party C/C++ Python extension, please either wrap it into a PyTorch-understood custom operator (see https://pytorch.org/tutorials/advanced/custom_ops_landing_page.html for more details) or, if it is traceable, use `torch.compiler.allow_in_graph`.Úallow_in_graphz°torch.compiler.allow_in_graph (or torch._dynamo.allow_in_graph) was called inside a compiled region. Dynamically annotating functions inside a compiled region is not supported.ziApply @torch.compiler.allow_in_graph as a decorator before compilation, not inside the compiled function.r   )Úget_skip_reasonz,Attempted to call function marked as skippedzmodule: z, qualname: z, skip reason: )-rÏ   rÐ   r=  r%   r1  ra   r‡  Úgraph_breakr�   rS  rO  r   Úf_codeÚstep_unsupportedr&   r$   r­  rÆ   r   Ú__get__r‰   r­   r7  rd  rÍ   r«   r   ÚSUPPORTABLEr   Údont_skip_tracingÚbuilderr)  r°   r  r%  rÓ   Úgetfilerž   r©  rb   Ú	warn_onceÚjoinr  r¥  r.  )r|   r’   r”   r•   r­  Úgraph_break_msgÚskip_frame_msgrª  Úfunc_varÚobj_varr)  Ú
rebuilt_fnÚqualnameÚ	module_orr×  ÚpathrK  rL  Úknown_python_builtin_modulesr  r.  s                        r^   r%  z"SkipFunctionVariable.call_functiont  sï  € ô ×!Ñ! $§*¡*Ð.DÀeÔLÜ×(Ñ(¨¯©Ð5OÐQUÓVˆCÜØKÜ˜DŸJ™J›Ø5°d·j±j°\ð B:Ø:=¸¸aðAð ?ðöð �Z‰Zœ5Ÿ=™=×4Ñ4Ñ4Ø$Ÿj™j¨Ó/ˆOÙØ"1×"DÑ"DÓ"F�ÜØ?ØJÈ4È&ÐP[Ð\bÐ[cÐcdÐeØBÀ?ÐBSÐTàDðö	ð �Z‰Zœ5Ÿ=™=×3Ñ3Ñ3Ø#ŸZ™Z¨Ó.ˆNÙØ!/×!BÑ!BÓ!D‘à!#�ÜØ>ØIÈ$ÈÈ{Ð[aÐZbð c"Ü"3°B·I±IÓ">Ð!?¸qðBàAÀ.ÐAQÐRàCðð  ö	ð �Z‰Zœ5Ÿ=™=×9Ñ9Ñ9ð
7ÜØHØØ AàMðö	ð �Z‰Zœ5×-Ñ-×5Ñ5Ñ5ô �4‹y˜FÑ"©6Ø ™7�Ø˜q™'�Ü˜hÔ(<Ô=Ü-Ø Ÿ™ W¸¿¹ôð ô Ø;Ø(¨¨¨h°t°f¸JÀvÀhÐOð9à6Ô)×5Ñ5Ð6öô ×'Ò'Ý6ð /×5Ñ5°b¸$¿*¹*ÓE�
ä! *Ô.BÔCØ%×3Ñ3°B¸¸fÓEÐEÜ˜tŸz™z¨>Ð;OÓPˆHÜ §
¡
¨L¸$Ó?ˆIØ09Ð0AÑ,ÄsÈ9Ã~ˆKð8YÜ—‘ t§z¡zÓ2�àUÐV^ÐU_ð ` Ø $˜vÐ%<ð>ð ð
 3°8°*¸BÐ?ð�ð  DÑ(ØØTÐU]ÐT^ð _lð lð ;ð	ñ �EðX Ð+Ò+ðAð ð8ð�ð �{Š{ØŸ™‘å9á(¨¯©Ó4�ÜØFØ" ; -¨|¸H¸:À_ÐU[ÐT\Ð]Ø'Øö	øô[ ò 7Ü% a§e¡eÓ,°$Ð6ûð7ûôn ò %YØ06¸Ð/DÐ,ØÐ <Ñ<ðØ'˜=¨¨(¨°2ð7ð  ð
iðGð‘Eð Ð*¨y×/CÑ/CÀHÔ/MØ$NÈ{ÈmÐ[\Ð]eÐ\fÐfgÐ"h�Kð^ð�Eô
 —M‘M×'Ñ'×1Ñ1°+ÀÑ2DÀtÇyÁyÐQVÓGWÑ2WÕXð JÈ+ÈÐVWÐX`ÐWað bað bð  ðmð;ð�Eô —M‘M×'Ñ'×1Ñ1°+ÀÑ2DÀtÇyÁyÐQVÓGWÑ2WÔXúðK%Yús+   ÆM Ê?>M8 Í	M5ÍM0Í0M5Í8CQÑQr¢   c                 óV   — t        j                  |t        | j                  |«      «      S rŽ   )r>   r®   r'  r=  rT  s      r^   r)  z%SkipFunctionVariable.call_obj_hasattr	  s"   € ô ×$Ñ$ R¬°·±¸TÓ)BÓCÐCr]   c           
      óÀ   — |t         v r5t        j                  | |t        t	        | j
                  |«      «      ¬«      S t        || j
                  | j                  |«      S )Nrv  )r4   r   rx  ry  rÓ   r=  rÕ   r«   rT  s      r^   r  z SkipFunctionVariable.var_getattr$	  sP   € ØÔ)Ñ)Ü×,Ñ,Ø�d¤D¬°·±¸TÓ)BÓ$Côð ô ˜b $§*¡*¨d¯k©k¸4Ó@Ð@r]   c                  ó   — yr.  r\   rÞ   s    r^   rî  z'SkipFunctionVariable.is_python_hashable,	  r0  r]   c                 ó,   — t        | j                  «      S rŽ   )rð  r=  rÞ   s    r^   rñ  z$SkipFunctionVariable.get_python_hash/	  ó   € Ü�D—J‘JÓÐr]   rò  c                 óh   — t        |t        «      xr! | j                  «       |j                  «       k(  S rŽ   )r­   r>   rS  rô  s     r^   rõ  z$SkipFunctionVariable.is_python_equal2	  s1   € ä�uœoÓ.ò HØ×'Ñ'Ó)¨U×-EÑ-EÓ-GÑGð	
r]   rŽ   )rY   rZ   r[   r>   rø  r   r1  r€   rS  rV  rú  r   rE  r   r‡   r%  r@   r)  r  r3  rî  rû  rñ  rü  rõ  r4  r5  s   @r^   r  r  @  s4  ø„ àØðð 
×	'Ñ	'ð€Nñ˜cð ¨3°©:ð Èð ÐPTõ ð
 Có ð¨có ð ð) sð )°Fð )Ð?Uò )ó ð)ðBià#ðið �Ñ'ðið �S˜/Ð)Ñ*ð	ið
 
óiðVDØ)ðDØ14ðDà	óDð
AÐ5ð A¸Sð AÀ_ó Að Dó ð  ó  ð
 Vð 
°÷ 
r]   r  c                   ód   ‡ — e Zd Zdedddeddfˆ fd„Zdd	d
ee   dee	ef   defˆ fd„Z
dd„Zˆ xZS )ÚWrappedSkipFunctionVariabler´  rJ  rH   r•   r_   Nc                 ó¶   •— |j                  dd «       |j                  dd «       t        ‰| �  |j                  fd|j                  i|¤Ž || _        || _        y )Nr=  r  )r�   rÚ   r€   r=  r  r´  rJ  r¶  s       €r^   r€   z$WrappedSkipFunctionVariable.__init__:	  sN   ø€ ð 	�
‰
�7˜DÔ!Ø�
‰
�8˜TÔ"Ü‰Ñ˜Ÿ™ÑH¨w¯~©~ÐHÀÒHØˆŒØˆ�r]   r’   rF   r”   c                 óR  •— t         j                  rNt        t        j                  «      }|j                  || j                  | j                  gt        |«      z   |«      S | j                  j                  |«       t        ‰| �  |||«      }| j                  j                  |«       |S rŽ   r¸  r½  s         €r^   r%  z)WrappedSkipFunctionVariable.call_functionF	  r¿  r]   c                 óŒ   ‡ ‡— ‰j                  ˆˆ fd„«        ‰‰ j                  «       ‰j                  t        dd«      «       y )Nc                  ó(   •—  ‰ ‰j                   «      S rŽ   rÂ  rÃ  s   €€r^   r  z9WrappedSkipFunctionVariable.reconstruct.<locals>.<lambda>W	  rÄ  r]   r:   FrÅ  rÈ  s   ``r^   r;  z'WrappedSkipFunctionVariable.reconstructV	  rÉ  r]   r{  )rY   rZ   r[   r  r   r€   r   r>   r‡   r1  r%  r;  r4  r5  s   @r^   rI  rI  9	  sm   ø„ ð
à%ð
ð +ð
ð ð	
ð
 
õ
ðà#ðð �Ñ'ðð �S˜/Ð)Ñ*ð	ð
 
õ÷ >r]   rI  c                   óÜ   ‡ — e Zd ZdZdefd„Zdedededdfˆ fd„Zdefd	„Z	defd
„Z
dej                  fd„Zdddedefˆ fd„Zd„ Zdee   fd„Zdddee   deeef   defd„Zdefd„Zˆ xZS )ÚWrapperUserFunctionVariablea3  
    Used to represent a wrapper object that contains the actual callable as an
    attribute. For example, torch.jit.script/trace have the original function at
    their _torchdynamo_inline attribute. Similarly, functions with
    __script_if_tracing_wrapper have the original attr at "__original_fn".
    r_   c                 ó"   — t         j                  S rŽ   r]  rÞ   s    r^   r^  z'WrapperUserFunctionVariable.python_typed	  r_  r]   Úwrapper_objÚattr_to_tracer•   Nc                 ó@   •— t        ‰| �  di |¤Ž || _        || _        y r‚   )rÚ   r€   rQ  rR  )r|   rQ  rR  r•   rÛ   s       €r^   r€   z$WrapperUserFunctionVariable.__init__g	  s#   ø€ Ü‰ÑÑ"˜6Ò"Ø&ˆÔØ*ˆÕr]   c                 ó.   — | j                   j                  S rŽ   )rQ  rZ   rÞ   s    r^   r  z&WrapperUserFunctionVariable.get_modulel	  s   € Ø×Ñ×*Ñ*Ð*r]   c                 ó.   — | j                   j                  S rŽ   )rQ  rY   rÞ   s    r^   rô   z$WrapperUserFunctionVariable.get_nameo	  s   € Ø×Ñ×(Ñ(Ð(r]   c                 ó6   — | j                  «       j                  S rŽ   )r
  rk   rÞ   s    r^   rí   z$WrapperUserFunctionVariable.get_coder	  s   € Ø× Ñ Ó"×+Ñ+Ð+r]   r’   rF   r¢   c                 óø   •— || j                   k(  r[t        | j                  | j                   «      }| j                  xr t	        | j                  |«      }t        j                  |||«      S t        ‰| �!  ||«      S rŽ   )	rR  rÓ   rQ  r«   r)   r>   r®   rÚ   r  )r|   r’   r¢   rª   r«   rÛ   s        €r^   r  z'WrapperUserFunctionVariable.var_getattru	  si   ø€ Ø�4×%Ñ%Ò%Ü˜$×*Ñ*¨D×,>Ñ,>Ó?ˆCØ—[‘[ÒB¤Z°·±¸TÓ%BˆFÜ"×(Ñ(¨¨S°&Ó9Ð9Ü‰wÑ" 2 tÓ,Ð,r]   c                 óB   — t        | j                  | j                  «      S rŽ   ©rÓ   rQ  rR  rÞ   s    r^   r
  z(WrapperUserFunctionVariable.get_function|	  ó   € Ü�t×'Ñ'¨×);Ñ);Ó<Ð<r]   c                 ó   — g S rŽ   r\   rÞ   s    r^   r#  z%WrapperUserFunctionVariable.self_args	  r,  r]   r”   c           
      óÔ  — t        | j                  d«      �rßt        | j                  | j                  d «      }t        |dd«      xs d}|j	                  dd¬«      d   dk7  �r“|j                  «       }t        j                  j                  |j                  «      }|j                  }d	|› d
|› ddj                  t        j                  |g«      «      › �}	t        j                  j                   j#                  |	«       t        j                  j                   j$                  j'                  d«      }
|
j)                  t$        j*                  «      r¥t        j,                  j.                  j1                  «       }t3        «       |z   }|d   j                  |d   j                  f}dj                  t        j                  |«      «      }d|d   › d
|d   › d�}|t5        |«      z  }|
j7                  |«       | j9                  «       t;        |«      z   }t=        j>                  |t@        jB                  «      jE                  || t=        j>                  || j                  «      g|¢|«      S )NÚ
cache_inforZ   rG  rH  r:   )Úmaxsplitr   ra   zGDynamo detected a call to a `functools.lru_cache`-wrapped function at 'ú:zî'. Dynamo ignores the cache wrapper and directly traces the wrapped function. Silent incorrectness is only a *potential* risk, not something we have observed. Enable TORCH_LOGS=+dynamo for a DEBUG stack trace.

This call originates from:
ztorch._dynamoéÿÿÿÿz)call to a lru_cache wrapped function at: r,  )#r'  rQ  rÓ   rR  ÚsplitÚframe_summaryÚosr@  ÚbasenameÚfilenameÚlinenor8  Ú	tracebackÚformat_listra   r‡  rb   r7  ÚloggingÚ	getLoggerÚisEnabledForÚDEBUGÚ_guardsÚTracingContextÚextract_stackr   r1  Údebugr#  r    r>   r®   r   Úgetattr_and_tracer%  )r|   r’   r”   r•   Ú	target_fnr×  rb  re  rf  r­  Údynamo_loggerÚ
user_stackÚ	frame_locÚuser_stack_formattedÚuser_stack_traceÚall_argss                   r^   r%  z)WrapperUserFunctionVariable.call_function‚	  s%  € ô �4×#Ñ# \Õ2Ü × 0Ñ 0°$×2DÑ2DÀdÓKˆIÜ! )¨\¸2Ó>ÒDÀ"ˆKà× Ñ  ¨qÐ Ó1°!Ñ4¸Ó?Ø "× 0Ñ 0Ó 2�ÜŸ7™7×+Ñ+¨M×,BÑ,BÓC�Ø&×-Ñ-�ð$Ø$, :¨Q¨v¨hð 73ð —w‘wœy×4Ñ4°m°_ÓEÓFÐGðIð ô —‘×#Ñ#×-Ñ-¨cÔ2ä %§¡× 3Ñ 3× ;Ñ ;× EÑ EÀoÓ V�Ø ×-Ñ-¬g¯m©mÔ<Ü!&§¡×!=Ñ!=×!KÑ!KÓ!M�JÜ!7Ó!9¸JÑ!F�JØ!+¨B¡×!8Ñ!8¸*ÀR¹.×:OÑ:OÐ P�IØ+-¯7©7´9×3HÑ3HÈÓ3TÓ+UÐ(Ø)RÐS\Ð]^ÑS_ÐR`Ð`aÐbkÐlmÑbnÐaoÐoqÐ'rÐ$Ø$¬Ð,@Ó(AÑAÐ$Ø!×'Ñ'Ð(8Ô9à—>‘>Ó#¤d¨4£jÑ0ˆÜ×$Ñ$ØÜ×'Ñ'ó
÷ ‰-ØØ”?×(Ñ(¨¨T×-?Ñ-?Ó@ÐLÀ8ÐLØó
ð	
r]   c                 óB   — t        | j                  | j                  «      S rŽ   rY  rÞ   s    r^   rV  z8WrapperUserFunctionVariable.get_real_python_backed_value±	  rZ  r]   )rY   rZ   r[   rÊ   ry  r^  r   r1  r€   r  rô   rÆ   r2  rí   r>   r  r
  r    r#  r   r‡   r%  rü  rV  r4  r5  s   @r^   rO  rO  \	  sÕ   ø„ ñð"˜Tó "ð+ Cð +¸ð +Àsð +Ètõ +ð
+˜Có +ð)˜#ó )ð,˜%Ÿ.™.ó ,ð-Ð5ð -¸Sð -À_õ -ò=ð˜4 Ñ0ó ð-
à#ð-
ð �Ñ'ð-
ð �S˜/Ð)Ñ*ð	-
ð
 
ó-
ð^=¨f÷ =r]   rO  c            
       óV   ‡ — e Zd ZdZdefd„Zdededededdf
ˆ fd	„Z	de
e   fd
„Zˆ xZS )ÚWrapperUserMethodVariablez×
    Similar to WrapperUserFunctionVariable, but for methods. The only delta is
    saving the vt for `self` object of the method which is then used by
    WrapperUserFunctionVariable in `call_function` method.
    r_   c                 ó"   — t         j                  S rŽ   rž  rÞ   s    r^   r^  z%WrapperUserMethodVariable.python_type¼	  r   r]   rQ  rR  Úself_objr•   Nc                 ó6   •— t        ‰| �  ||fi |¤Ž || _        y rŽ   )rÚ   r€   r  )r|   rQ  rR  r}  r•   rÛ   s        €r^   r€   z"WrapperUserMethodVariable.__init__¿	  s    ø€ ô 	‰Ñ˜ mÑ>°vÒ>Øˆ�r]   c                 ó   — | j                   gS rŽ   r›  rÞ   s    r^   r#  z#WrapperUserMethodVariable.self_argsÉ	  rœ  r]   )rY   rZ   r[   rÊ   ry  r^  r   r1  r>   r€   r    r#  r4  r5  s   @r^   r{  r{  µ	  sZ   ø„ ñð ˜Tó  ðàðð ðð "ð	ð
 ðð 
õð˜4 Ñ0÷ r]   r{  c                  óR   — t         j                  j                  «       rddlm}  | S i S )Nr   ©Útraceable_collective_remaps)ra   ÚdistributedÚis_availableÚ)torch.distributed._functional_collectivesr‚  r�  s    r^   Ú_traceable_collective_remapsr†  Í	  s&   € ä×Ñ×%Ñ%Ô'õ	
ð +Ð*Ø€Ir]   c                 óÖ   — t         j                  j                  «       sJ d«       ‚|t        «       j	                  «       v sJ ‚|j
                  }| j                  d«      }t        ||«      S )NzIllegal invocation.z)torch.distributed._functional_collectives)ra   rƒ  r„  r†  ÚvaluesrY   Úimport_sourcer)   )r’   rÍ   Ú
inner_nameÚpath_sources       r^   Ú_traceable_collectives_sourcerŒ  Ø	  sd   € ô ×Ñ×)Ñ)Ô+ÐBÐ-BÓBÐ+ØÔ-Ó/×6Ñ6Ó8Ñ8Ð8Ð8à—‘€JØ×"Ñ"Ð#NÓO€KÜ�k :Ó.Ð.r]   c                   óâ   ‡ — e Zd ZdZdedef   dededdfˆ fd„Zed	d
dedef   de	dedd f
d„«       Z
ededefd„«       Zed	d
dedef   deeef   fd„«       Zd	d
dee   deeef   defd„Zˆ xZS )Ú!CollectiveFunctionRewriteVariablea÷  
    Some of the torch.distributed.* collective APIs are possible to rewrite to 'traceable' collectives.

    This class provides both a way to check if a function is remappable, and perform the remapping.

    In the case that a function is 'remappable' but only for some combinations of call-time arguments,
    we check the args at `call_function` time and fall back to graph-breaking if needed.  This is no worse
    than status-quo as we currently graph-break on all distributed.* collectives.
    rÍ   .Úreplacement_varr•   r_   Nc                óX   •— t        ‰| �  |fi |¤Ž t        |t        «      sJ ‚|| _        y rŽ   )rÚ   r€   r­   r7  r�  )r|   rÍ   r�  r•   rÛ   s       €r^   r€   z*CollectiveFunctionRewriteVariable.__init__î	  s0   ø€ ô 	‰Ñ˜Ñ&˜vÒ&Ü˜/Ô+?Ô@Ð@Ð@Ø.ˆÕr]   r’   rF   Úold_fnr«   Úoptionsc                 ój   — t         j                  | |«      \  }}t        |ft        |fd|i|¤Ž|dœ|¤ŽS )Nr«   )r�  r«   )rŽ  r¸  r7  )r’   r‘  r«   r’  Únew_fnÚ
new_sources         r^   r°   z(CollectiveFunctionRewriteVariable.createù	  sO   € ô ?×FÑFÀrÈ6ÓRÑˆ�
Ü0Øð
ä0°ÑVÀ
ÐVÈgÑVØñ
ð ñ	
ð 	
r]   Úvariablec                 óH   — t        j                  | «      xr | t        «       v S rŽ   )rÏ   Ú
isfunctionr†  )r–  s    r^   Úcan_rewritez-CollectiveFunctionRewriteVariable.can_rewrite
  s%   € ô ×Ñ˜xÓ(ÒW¨XÔ9UÓ9WÐ-Wð	
r]   c                 ó8   — t        «       |   }|t        | |«      fS rŽ   )r†  rŒ  )r’   rÍ   r”  s      r^   r¸  z)CollectiveFunctionRewriteVariable.rewrite
  s$   € ô .Ó/°Ñ3ˆØÔ4°R¸Ó@Ð@Ð@r]   r”   c                 ó¼	  — dd l m} ddlm} t	        j
                  | j                  «      }t         |j                  |i |¤Žj                  «      }d}d|v rQ|d   j                  «       r>t        d| j                  › d|›d|›�d| j                  › �g t        j                  ¢¬	«       | j                  |j                  k(  �rþt        j                   st        d
| j                  › ddg¬	«       |d   }t#        |t$        j&                  «      s)t(        j*                  j,                  j/                  d«      ‚t1        «       }t1        «       }	t1        «       }
t1        «       }d }|j2                  D �]Ú  }|j5                  «       |j6                  ur)t(        j*                  j,                  j/                  d«      ‚|j9                  |d«      }|j;                  «       r€|j                  «       }||j<                  |j>                  fvr,t(        j*                  j,                  j/                  d|› �«      ‚t$        j@                  jC                  |jD                  «      }nftG        |d«      r.t$        j@                  jC                  |jI                  «       «      }n,t(        j*                  j,                  j/                  d|› �«      ‚|jK                  |«       |jK                  |j9                  |d«      «       |	jK                  |j9                  |d«      «       |
jK                  |j9                  |d«      «       |��ŒÉ|j9                  |d«      }�ŒÝ |€J ‚d}t%        j&                  |«      t%        j&                  |	«      t%        j&                  |
«      t%        j&                  |«      |dœ}| jL                  jO                  |||«      S | j                  |j<                  |j>                  fv rHt        j                   st        d| j                  › ddg¬	«       | jL                  jO                  |||«      S | j                  |jP                  |jR                  |jT                  fv rf|jW                  d«      }|�|jX                  n|jZ                  d   j\                  }||vrt_        d|› �«      ‚ta        jb                  |||   «      |d<   | jL                  jO                  |||«      S )Nr   )ÚREDUCE_OP_TO_STRr\   Úasync_opz)async_op=True for distributed collectivesz, args=ú	, kwargs=z3`torch.compile` doesn't support `async_op=True for rH  z.P2P compilation disabled for batch_isend_irecvzP2P compilation is disabled.z3Set TORCHDYNAMO_ENABLE_P2P_COMPILATION=1 to enable.Úp2p_op_listz`P2POp` used incorrectlyÚopzunexpected P2POp op rô   zunexpected P2POp op variable ÚtensorÚpeerÚtagÚgroup)Úop_listÚ	peer_listÚtag_listÚtensorsÚ
group_namez(P2P compilation disabled for isend/irecvzUnsupported all_reduce op: )2Útorch.distributedrƒ  r…  rœ  rÏ   rŒ  rÍ   r‡   r�  rŽ  rS  r%   r   r3  Úbatch_isend_irecvr   Úenable_p2p_compilationr­   r   rM   ra   r‡  r^  ÚInternalTorchDynamoErrorr    rš   r^  ÚP2POpr  rß  ÚisendÚirecvr@   r°   rY   r'  rô   r[  r�  r%  Ú
all_reduceÚreduce_scatter_tensorÚ_reduce_scatter_baser�   r=  Ú
parametersÚdefaultrl  r>   r®   )r|   r’   r”   r•   Údistrœ  rŒ  Úp2p_opsÚopsÚpeersÚtagsr¨  Ú	group_varÚitemÚop_varr   Únew_argsÚ
new_kwargsÚreduce_op_varÚ	reduce_ops                       r^   r%  z/CollectiveFunctionRewriteVariable.call_function
  sX  € õ 	)ÝNô ×%Ñ% d§g¡gÓ.ˆ	Ü�n�i—n‘n dÐ5¨fÑ5×?Ñ?Ó@ˆØˆà˜Ñ F¨:Ñ$6×$IÑ$IÔ$KÜØCØŸ7™7˜) 8 d W¨J¨v¨iÐ8ØQÐRV×RYÑRYÐQZÐ[ðÜ&×2Ñ2ðõ	ð �7‰7�d×,Ñ,Ó,Ü×0Ò0ÜØLØ#Ÿw™w˜iØ >àMðõ	ð ˜]Ñ+ˆGÜ˜g¤y×'=Ñ'=Ô>Ü—m‘m×'Ñ'×@Ñ@Ø.óð ô *.«ˆCÜ“FˆEÜ“6ˆDÜ“fˆGØ04ˆIàŸ™ó >�Ø×#Ñ#Ó%¨T¯Z©ZÑ7ÜŸ-™-×+Ñ+×DÑDØ2óð ð ×)Ñ)¨"¨dÓ3�Ø×,Ñ,Ô.Ø×2Ñ2Ó4�BØ $§*¡*¨d¯j©jÐ!9Ñ9Ü#Ÿm™m×/Ñ/×HÑHØ2°2°$Ð7óð ô '×7Ñ7×>Ñ>¸r¿{¹{ÓK‘FÜ˜V ZÔ0Ü&×7Ñ7×>Ñ>¸v¿¹Ó?PÓQ‘FäŸ-™-×+Ñ+×DÑDØ7¸°xÐ@óð ð —
‘
˜6Ô"Ø—‘˜t×/Ñ/°°HÓ=Ô>Ø—‘˜T×-Ñ-¨b°&Ó9Ô:Ø—‘˜D×,Ñ,¨R°Ó7Ô8ØÒ$Ø $× 0Ñ 0°°WÓ =’Ið5>ð8 Ð(Ð(Ð(Ø46ˆHä$×1Ñ1°#Ó6Ü&×3Ñ3°EÓ:Ü%×2Ñ2°4Ó8Ü$×1Ñ1°'Ó:Ø'ñ6ˆJð ×'Ñ'×5Ñ5°b¸(ÀJÓOÐOà�7‰7�t—z‘z 4§:¡:Ð.Ñ.Ü×0Ò0ÜØFØ#Ÿw™w˜iØ >àMðõ	ð ×'Ñ'×5Ñ5°b¸$ÀÓGÐGà�7‰7Ø�O‰OØ×&Ñ&à×%Ñ%ð	
ñ 
ð #ŸJ™J tÓ,ˆMð !Ð,ð ×#Ò#à×)Ñ)¨$Ñ/×7Ñ7ð ð
 Ð 0Ñ0Ü Ð#>¸y¸kÐ!JÓKÐKÜ*×0Ñ0°Ð5EÀiÑ5PÓQˆF�4‰LØ×#Ñ#×1Ñ1°"°d¸FÓCÐCr]   )rY   rZ   r[   rÊ   r   r   r7  r€   r!  r   r°   r3  r™  rŸ   r)   r¸  r   r>   r‡   r1  r%  r4  r5  s   @r^   rŽ  rŽ  ã	  s0  ø„ ñð	/à�S˜#�XÑð	/ð .ð		/ð
 ð	/ð 
õ	/ð ð
Ø#ð
à˜˜c˜Ñ"ð
ð ð
ð ð	
ð
 
-ò
ó ð
ð ð
˜cð 
 dò 
ó ð
ð
 ðAØ#ðAØ)1°#°s°(Ñ);ðAà	ˆs�JˆÑ	òAó ðAðvDà#ðvDð �Ñ'ðvDð �S˜/Ð)Ñ*ð	vDð
 
÷vDr]   rŽ  c                   ó@   — e Zd Zdefd„Zdddee   deeef   defd„Z	y)	ÚCollectionsNamedTupleFunctionr_   c                 ó   — | j                   S rŽ   rY  rÞ   s    r^   rS  z0CollectionsNamedTupleFunction.as_python_constant�
  rZ  r]   r’   rF   r”   r•   c                 óü  — t        ||«      }|r~	  | j                  |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤Ž}t        j                  t        «       ¬«      S t        dd|›d|›�dg t        j                  ¢¬«       y c c}w c c}}w # t        $ r4}	t        t        |	«      |t        |	j                  «      ¬«       Y d }	~	Œˆd }	~	ww xY w)N)r”   r  znamedtuple constructionzargs=rž  z?`torch.compile` only support certain input types for namedtuplerH  )r2   rÍ   rS  rš   rž   r"   ry  r    r”   r   ÚUserDefinedClassVariabler=   r%   r   r3  )
r|   r’   r”   r•   Úconstant_argsrÑ  r³   r´   r=  r^  s
             r^   r%  z+CollectionsNamedTupleFunction.call_function’
  sõ   € ô ,¨D°&Ó9ˆÙð
Ø˜Ÿ™Ø6:Ö;°�a×*Ñ*Õ,Ò;ðà=C¿\¹\»^×L±T°Q¸�q˜!×.Ñ.Ó0Ñ0ÓLñ�ô ×5Ñ5ØÜ.Ó0ôð ô 	Ø-Ø�t�g˜Z ˜yÐ)ØYðÜ"×.Ñ.ðö		
ùò <ùÛLøäò Ü(Ü˜“IØÜ˜cŸh™h›÷ò ûðús3   �B>  B3·B> ÁB8Á(B> Â3B> Â>	C;Ã*C6Ã6C;N)
rY   rZ   r[   r   rS  r   r>   r‡   r1  r%  r\   r]   r^   rÃ  rÃ  Ž
  sH   „ ð Có ð
à#ð
ð �Ñ'ð
ð �S˜/Ð)Ñ*ð	
ð
 
ô
r]   rÃ  c                   ó2  ‡ — e Zd Zej                  Zdhej                  £Z	 ddedee   de	e
ef   dededdfˆ fd„Zdefd	„Zdd
„Zdefd„Zdddee   de	e
ef   defd„Zddde
defd„Zddde
defd„Zdefd„Zdefd„Zdefd„Zdefd„Zdedefd„Zˆ xZS )ÚFunctoolsPartialVariableÚoriginal_cache_hashNrh   r”   Úkeywordsr•   r_   c                 óà   •— t        ‰| �  di |¤Ž || _        t        |t        «      sJ ‚|| _        t        |t        «      sJ ‚|| _        t        j                  t        «      | _        || _        y r‚   )rÚ   r€   rh   r­   r    r”   r‡   rË  r  Úpartialr5   Ú
fake_valuerÊ  )r|   rh   r”   rË  rÊ  r•   rÛ   s         €r^   r€   z!FunctoolsPartialVariable.__init__¼
  sf   ø€ ô 	‰ÑÑ"˜6Ò"ØˆŒ	Ü˜$¤Ô%Ð%Ð%ØˆŒ	Ü˜(¤DÔ)Ð)Ð)Ø ˆŒô $×+Ñ+¬HÓ5ˆŒà#6ˆÕ r]   c                 ó"   — t         j                  S rŽ   )r  rÍ  rÞ   s    r^   r^  z$FunctoolsPartialVariable.python_typeÐ
  s   € Ü× Ñ Ð r]   c                 ó<  ‡— ‰j                  ˆfd„«        ‰| j                  «       | j                  r‰j                  | j                  «       | j                  s2‰j                  t        t        | j                  «      dz   d«      «       y ‰j                  | j                  j                  «       «       t        | j                  j                  «       «      }‰j                  ‰j                  t        |«      t        | j                  «      z   dz   |d«      «       y )Nc                  ó(   •— ‰ j                  dd«      S )Nr  rÍ  r  r  s   €r^   r  z6FunctoolsPartialVariable.reconstruct.<locals>.<lambda>Ô
  s   ø€  g×&>Ñ&>¸{ÈIÓ&V€ r]   r:   F)rÆ  rh   r”   ÚforeachrË  rÇ  r   r‰   rˆ  rŸ   ÚkeysÚcreate_call_function_kw)r|   r<  rÓ  s    ` r^   r;  z$FunctoolsPartialVariable.reconstructÓ
  sÉ   ø€ Ø×ÑÓVÔWÙ�—	‘	ÔØ�9Š9Ø�O‰O˜DŸI™IÔ&Ø�}Š}Ø×!Ñ!Ô"6´s¸4¿9¹9³~ÈÑ7IÈ5Ó"QÔRØà�‰˜Ÿ™×,Ñ,Ó.Ô/Ü�T—]‘]×'Ñ'Ó)Ó*ˆØ×ÑØ×+Ñ+¬C°«I¼¸D¿I¹I»Ñ,FÈÑ,JÈDÐRWÓXõ	
r]   c                 ó"   — | j                  «       S rŽ   ©rS  rÞ   s    r^   r
  z%FunctoolsPartialVariable.get_functionâ
  ó   € Ø×&Ñ&Ó(Ð(r]   r’   rF   c                 óŒ   — | j                   t        |«      z   }i | j                  ¥|¥}| j                  j	                  |||«      S rŽ   )r”   r    rË  rh   r%  )r|   r’   r”   r•   Úmerged_argsÚmerged_kwargss         r^   r%  z&FunctoolsPartialVariable.call_functionå
  sB   € ð —i‘i¤$ t£*Ñ,ˆØ3˜4Ÿ=™=Ð3¨FÐ3ˆØ�y‰y×&Ñ& r¨;¸ÓFÐFr]   r¢   c                 óp   — t        j                  |t        t        j                  t
        «      |«      «      S rŽ   )r>   r®   r'  r  rÍ  r5   rT  s      r^   r)  z)FunctoolsPartialVariable.call_obj_hasattrï
  s)   € ô ×$Ñ$ R¬´×1BÑ1BÄ8Ó1LÈdÓ)SÓTÐTr]   c           
      ó"  — | j                   xr t        | j                   |«      }|dk(  r| j                  S |dk(  r!t        j                  | j
                  |¬«      S |dk(  rX| j                  j                  «       D ��ci c]  \  }}t        j                  ||«      |“Œ }}}t        j                  ||¬«      S |t        v r9t        j                  | |t        t        t        j                   |«      «      ¬«      S t#        t$        |«       y c c}}w )Nrh   r”   rÝ   rË  rv  )r«   r)   rh   r   rM   r”   rË  rš   r>   r®   r  r4   rx  ry  rÓ   r  rÍ  r"   rÑ   )r|   r’   r¢   r«   r³   r´   rš   s          r^   r  z$FunctoolsPartialVariable.var_getattrõ
  sâ   € Ø—‘Ò>¤¨D¯K©K¸Ó!>ˆà�6Š>Ø—9‘9ÐØ�6Š>Ü×)Ñ)¨$¯)©)¸FÔCÐCØ�:ÒØAEÇÁ×ATÑATÓAV×W¹¸¸A”_×*Ñ*¨2¨qÓ1°1Ñ4ÐWˆEÑWÜ×.Ñ.¨u¸VÔDÐDØÔ)Ñ)Ü×,Ñ,Ø�d¤D¬´×1BÑ1BÀDÓ)IÓ$Jôð ô 	!¤°Õ4ùó Xs   Á>!Dc                 ó:  — t        j                  | j                  j                  «       g| j                  D �cg c]  }|j                  «       ‘Œ c}¢­i | j
                  j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤ŽS c c}w c c}}w rŽ   )r  rÍ  rh   rS  r”   rË  rš   )r|   r¦  r³   r´   s       r^   rS  z+FunctoolsPartialVariable.as_python_constant  s   € Ü× Ñ Ø�I‰I×(Ñ(Ó*ð
à26·)±)Ö<¨3ˆc×$Ñ$Õ&Ò<ò
ð 6:·]±]×5HÑ5HÓ5J×K©T¨Q°ˆq�!×&Ñ&Ó(Ñ(ÓKñ
ð 	
ùâ<ùÛKs   ¸B
Á1Bc                 óx  — t        j                  | j                  j                  «       g| j                  D �cg c]  }|j                  «       ‘Œ c}¢­i | j
                  j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤Ž}| j                  �| j                  |_        |S c c}w c c}}w )zcSimilar to as_python_constant(), but add ID_MATCH guards to try to force things to become constants)	r  rÍ  rh   Úguard_as_python_constantr”   rË  rš   rÊ  Ú
cache_hash)r|   r´   r³   r±   s       r^   rß  z1FunctoolsPartialVariable.guard_as_python_constant  s    € ä×"Ñ"Ø�I‰I×.Ñ.Ó0ð
à48·I±IÖ>¨qˆa×(Ñ(Õ*Ò>ò
ð <@¿=¹=×;NÑ;NÓ;P×Q±4°1°aˆq�!×,Ñ,Ó.Ñ.ÓQñ
ˆð ×#Ñ#Ð/Ø $× 8Ñ 8ˆFÔØˆùò ?ùÛQs   ¸B1
Á1B6c                 óÊ   — | j                   j                  «       xrH t        d„ | j                  D «       «      xr* t        d„ | j                  j                  «       D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrŽ   ©rî  rm  s     r^   rÝ  z>FunctoolsPartialVariable.is_python_hashable.<locals>.<genexpr>  s   è ø€ ÒB°�C×*Ñ*×,ÑBùrÞ  c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrŽ   rã  ©rÜ  r=  s     r^   rÝ  z>FunctoolsPartialVariable.is_python_hashable.<locals>.<genexpr>  s   è ø€ ÒS°5�E×,Ñ,×.ÑSùrÞ  )rh   rî  rá  r”   rË  rˆ  rÞ   s    r^   rî  z+FunctoolsPartialVariable.is_python_hashable  sP   € à�I‰I×(Ñ(Ó*ò TÜÑB¸¿	¹	ÔBÓBòTäÑS¸D¿M¹M×<PÑ<PÓ<RÔSÓSð	
r]   c                 óÀ   — | j                   j                  «       }d„ | j                  D «       }d„ | j                  j	                  «       D «       }t        |g|¢|¢­«      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrŽ   ©rñ  rm  s     r^   rÝ  z;FunctoolsPartialVariable.get_python_hash.<locals>.<genexpr>!  s   è ø€ Ò@¨s�S×(Ñ(×*Ñ@ùrÞ  c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrŽ   rè  rå  s     r^   rÝ  z;FunctoolsPartialVariable.get_python_hash.<locals>.<genexpr>"  s   è ø€ ÒS°5�u×,Ñ,×.ÑSùrÞ  )rh   rñ  r”   rË  rˆ  rð  )r|   Ú	func_hashÚ	args_hashÚvalues_hashs       r^   rñ  z(FunctoolsPartialVariable.get_python_hash  sQ   € Ø—I‘I×-Ñ-Ó/ˆ	Ù@°d·i±iÔ@ˆ	ÙS¸D¿M¹M×<PÑ<PÓ<RÔSˆÜ�YÐ9 Ð9¨[Ñ9Ó:Ð:r]   rò  c                 óp  — t        |t        «      xr¥ | j                  j                  |j                  «      xr~ t	        d„ t        | j                  |j                  «      D «       «      xrL t	        d„ t        | j                  j                  «       |j                  j                  «       «      D «       «      S )Nc              3   óD   K  — | ]  \  }}|j                  |«      –— Œ y ­wrŽ   ©rõ  )rÜ  Úarg_aÚarg_bs      r^   rÝ  z;FunctoolsPartialVariable.is_python_equal.<locals>.<genexpr>)  s'   è ø€ ò á"�U˜Eð ×%Ñ% e×,ñùó   ‚ c              3   óD   K  — | ]  \  }}|j                  |«      –— Œ y ­wrŽ   rï  )rÜ  Úvalue_aÚvalue_bs      r^   rÝ  z;FunctoolsPartialVariable.is_python_equal.<locals>.<genexpr>-  s'   è ø€ ò á&�W˜gð ×'Ñ'¨×0ñùrò  )	r­   rÉ  rh   rõ  rá  rˆ   r”   rË  rˆ  rô  s     r^   rõ  z(FunctoolsPartialVariable.is_python_equal%  s–   € ä�uÔ6Ó7ò Ø—	‘	×)Ñ)¨%¯*©*Ó5òäñ ä&)¨$¯)©)°U·Z±ZÓ&@ôó òô ñ ä*-Ø—M‘M×(Ñ(Ó*¨E¯N©N×,AÑ,AÓ,Có+ôó ð	
r]   rŽ   r{  )rY   rZ   r[   r  rÍ  r÷  r>   rø  r   r‡   r1  r   r€   ry  r^  r;  r
  r%  r@   r)  r  rS  rß  r3  rî  rû  rñ  rü  rõ  r4  r5  s   @r^   rÉ  rÉ  ³
  sV  ø„ à×%Ñ%€Mð 	ðà	×	'Ñ	'ð€Nð $(ñ7àð7ð �Ñ'ð7ð �s˜OÐ+Ñ,ð	7ð
 !ð7ð ð7ð 
õ7ð(!˜Tó !ó
ð)˜có )ðGà#ðGð �Ñ'ðGð �S˜/Ð)Ñ*ð	Gð
 
óGðUØ)ðUØ14ðUà	óUð5Ð5ð 5¸Sð 5À_ó 5ð 
 Có 
ð
¨#ó 
ð
 Dó 
ð; ó ;ð
 Vð 
°÷ 
r]   rÉ  c            
       ó`  ‡ — e Zd Zdddhej                  £Zeej                  dee	de
f   ej                  f   fd„«       «       Zede
dedd fd	„«       Zded
e
ddfˆ fd„Zede	de
f   fd„«       Zdefd„Zde
fd„Zdddee   d
eeef   defd„Zdddedee   d
eeef   def
d„Zde
fd„Zˆ xZS )ÚPolyfilledFunctionVariablerÍ   rÛ  Útraceable_fnr_   .c                 ó   — i S rŽ   r\   )rD  s    r^   Ú_get_polyfill_handlersz1PolyfilledFunctionVariable._get_polyfill_handlers>  s	   € ð ˆ	r]   r=  r«   c                 óf   — t        |j                  t        j                  «      «        | ||¬«      S r?  r@  rC  s      r^   rE  z-PolyfilledFunctionVariable.create_with_sourceC  s*   € ô 	�f×'Ñ'¬×(BÑ(BÓCÔDá�5 Ô(Ð(r]   r•   Nc                 ó.  •— t        ‰| �  di |¤Ž || _        | j                  «       j	                  ||«      }d }t        |«      sJ d|› d|› �«       ‚dD ]"  }t        ||d «      }|sŒt        |«      sJ ‚|} n t        d|› d�«      ‚|| _        || _	        y )NzPolyfill handler z is not callable for )Ú__torch_dynamo_polyfill__Ú__python_implementation__z# does not have a traceable functionr\   )
rÚ   r€   rÍ   rú  r�   ÚcallablerÓ   r‹  rÛ  rø  )r|   rÍ   r•   Úhandlerrø  Úcandidate_attrÚ	candidaterÛ   s          €r^   r€   z#PolyfilledFunctionVariable.__init__K  sÅ   ø€ Ü‰ÑÑ"˜6Ò"àˆŒà×-Ñ-Ó/×3Ñ3°B¸Ó;ˆØˆÜ˜Ô ÐXÐ$5°g°YÐ>SÐTVÐSWÐ"XÓXÐ ð
ò 	ˆNô   ¨¸Ó>ˆIÚÜ 	Ô*Ð*Ð*Ø(�Ùð	ô Ø# G 9Ð,OÐPóð ð "ˆŒà ,ˆÕr]   c                 ó   — | j                   S rŽ   )rø  rÞ   s    r^   Úpolyfill_fnz&PolyfilledFunctionVariable.polyfill_fne  s   € à× Ñ Ð r]   c                 ó0   — t        | j                  dd«      S )NÚ*__torch_dynamo_can_constant_fold_through__F)rÓ   rÛ  rÞ   s    r^   Úcan_constant_fold_throughz4PolyfilledFunctionVariable.can_constant_fold_throughi  s   € ÜØ�O‰OÐIÈ5ó
ð 	
r]   c                 ó"   — | j                  «       S rŽ   rÖ  rÞ   s    r^   r
  z'PolyfilledFunctionVariable.get_functionn  r×  r]   r’   rF   r”   c                 ó"  — | j                  «       r€t        ||«      rt | j                  |D �cg c]  }|j                  «       ‘Œ c}i |j	                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤Ž}t        j                  ||«      S | j                  t        j                  u �r t        |«      dk(  �r|�st        |d   t        j                  t        j                  f«      rát        d„ |d   j                  D «       «      rÂt        j                  j!                  ||j"                  j%                  dt&        j(                  t+        d„ |d   j                  D «       «      fi «      t'        j(                  |d   j                  D �cg c].  }|j-                  «       r|j                  «       n|j.                  ‘Œ0 c}«      ¬«      S t        j                  || j0                  «      }|j3                  |||«      S c c}w c c}}w c c}w )Nr:   r   c              3   óä   K  — | ]h  }|j                  «       xr t        |j                  «       t        «      xs2 t        |t        j
                  «      xr |j                  «       t        u –— Œj y ­wrŽ   )rß  r­   rS  rû  r   ÚSymNodeVariabler^  )rÜ  rÑ  s     r^   rÝ  z;PolyfilledFunctionVariable.call_function.<locals>.<genexpr>ˆ  se   è ø€ ò ð ð ×%Ñ%Ó'ÒS¬J°q×7KÑ7KÓ7MÌsÓ,Sò YÜ˜q¤)×";Ñ";Ó<ÒWÀÇÁÃÔTWÐAWóYñùs   ‚A.A0r%  c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrŽ   )Úas_proxy)rÜ  Úas     r^   rÝ  z;PolyfilledFunctionVariable.call_function.<locals>.<genexpr>“  s   è ø€ Ò?¨A˜1Ÿ:™:Ÿ<Ñ?ùrÞ  )Úsym_num)r  r3   rÍ   rS  rš   r>   r®   ÚbuiltinsÚsumr‰   r­   r   rM   r  rá  r  r°   r¸   Úcreate_proxyra   Úsym_sumrŸ   rß  r  rø  r%  )	r|   r’   r”   r•   rÑ  r³   r´   r±   Útraceable_function_variables	            r^   r%  z(PolyfilledFunctionVariable.call_functionq  sÓ  € ð ×)Ñ)Ô+Ô0MØ�&ô1
ð �—‘Ø6:Ö;°�a×*Ñ*Õ,Ò;ðà=C¿\¹\»^×L±T°Q¸�q˜!×.Ñ.Ó0Ñ0ÓLñð ô #×(Ñ(¨¨VÓ4Ð4ð �G‰G”x—|‘|Ò#Ü�D“	˜Q“ÚÜ˜4 ™7¤Y×%;Ñ%;¼Y×=TÑ=TÐ$UÔVÜñ ð ˜a™Ÿ™ôô ô ×,Ñ,×3Ñ3ØØ—	‘	×&Ñ&Ø#Ü—M‘MÜÑ?°°a±·±Ô?Ó?ÐAØó	ô Ÿ™ð "& a¡§¡öð ð  !×3Ñ3Ô5ð ×0Ñ0Ô2à!"§¡ñ+òó	ð 4ó ð ô( '6×&;Ñ&;¸BÀ×@QÑ@QÓ&RÐ#Ø*×8Ñ8¸¸TÀ6ÓJÐJùòO <ùÛLùò4s   ­HÁHÆ3Hr¢   c                 ó>  — |dk(  r| j                  |||«      S t        | j                  |d «      }|s't        |«      st	        |d|› d| j                  › �«       i }| j
                  rt        | j
                  |«      |d<   t        |fi |¤Ž}|j                  |||«      S )NÚ__call__zCannot find callable z in r«   )r%  rÓ   rÍ   r6   r#   r«   r)   r÷  )r|   r’   r¢   r”   r•   Úmethodr’  Úpolyfilled_method_variables           r^   ré   z&PolyfilledFunctionVariable.call_method¥  sŸ   € ð �:ÒØ×%Ñ% b¨$°Ó7Ð7ä˜Ÿ™ $¨Ó-ˆÙœ+ fÔ-Ü˜RÐ#8¸¸¸dÀ4Ç7Á7À)Ð!LÔMØˆØ�;Š;Ü *¨4¯;©;¸Ó =ˆG�HÑÜ%?ÀÑ%RÈ'Ñ%RÐ"Ø)×7Ñ7¸¸DÀ&ÓIÐIr]   c                 ó   — | j                   S rŽ   rY  rÞ   s    r^   rS  z-PolyfilledFunctionVariable.as_python_constant¸  rZ  r]   )rY   rZ   r[   r>   rø  rú  r  Úcacher‡   r   r   rÆ   r   rú  r   rE  rO   r€   Úpropertyr  r3  r  r
  r   r1  r%  r    ré   rS  r4  r5  s   @r^   r÷  r÷  6  s{  ø„ àØØðð 
×	'Ñ	'ð	€Nð Ø‡_�_ð t¨H°S¸#°XÑ,>À×@RÑ@RÐ,RÑ'Sò ó ó ðð ð)Øð)Ø!'ð)à	%ò)ó ð)ð-˜2ð -¨ð -°õ -ð4 ð!˜X c¨3 hÑ/ò !ó ð!ð
¨4ó 
ð
)˜có )ð2Kà#ð2Kð �Ñ'ð2Kð �S˜/Ð)Ñ*ð	2Kð
 
ó2KðhJà#ðJð ðJð �?Ñ#ð	Jð
 �S˜/Ð)Ñ*ðJð 
óJð& C÷ r]   r÷  c                   óx   ‡ — e Zd Zdededdfˆ fd„Zdefd„Zdd	„Zdddefd
„Z	ddde
e   deeef   defd„Zˆ xZS )ÚSysFunctionVariabler=  r•   r_   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r‚   ©rÚ   r€   r=  ©r|   r=  r•   rÛ   s      €r^   r€   zSysFunctionVariable.__init__½  ó   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�
r]   c                 ó"   — t         j                  S rŽ   )rÆ   ÚBuiltinFunctionTyperÞ   s    r^   r^  zSysFunctionVariable.python_typeÁ  s   € Ü×(Ñ(Ð(r]   r’   rF   c                 ó`  — t        |j                  «      rG|j                  d   }|j                  }|j                  |d«      }t	        j
                  ||«      ||g}n>t        j                  d «      t        j                  d «      t        j                  d «      g}t        j                  |«      S )Nr`  Ú__traceback__)
r‰   Úexn_vt_stackrz  r  r>   r®   r@   r°   r   r  )r|   r’   Úexnr¬  Útbrš   s         r^   Úexc_infozSysFunctionVariable.exc_infoÄ  s”   € Üˆr�‰ÔØ—/‘/ "Ñ%ˆCØ—,‘,ˆCØ—‘  _Ó5ˆBÜ$×*Ñ*¨2¨sÓ3°S¸"Ð=‰Eô !×'Ñ'¨Ó-Ü ×'Ñ'¨Ó-Ü ×'Ñ'¨Ó-ðˆEô
 ×&Ñ& uÓ-Ð-r]   c                 ó>   — | j                  |«      j                  d   S )Nr:   )r)  rš   râ   s     r^   Ú	exceptionzSysFunctionVariable.exceptionÒ  s   € Ø�}‰}˜RÓ ×&Ñ& qÑ)Ð)r]   r”   c                 óº   — | j                   t        j                  u r| j                  |«      S | j                   t        j                  u sJ ‚| j                  |«      S rŽ   )r=  rù   r)  r+  r$  s       r^   r%  z!SysFunctionVariable.call_functionÕ  sH   € ð �:‰:œŸ™Ñ%Ø—=‘= Ó$Ð$à�z‰zœSŸ]™]Ñ*Ð*Ð*Ø�~‰~˜bÓ!Ð!r]   )r’   rF   r_   zvariables.TupleVariable)rY   rZ   r[   r   r€   ry  r^  r)  r>   r+  r   r‡   r1  r%  r4  r5  s   @r^   r  r  ¼  s|   ø„ ð˜cð ¨Sð °Tõ ð)˜Tó )ó.ð*Ð3ð *¸ó *ð
"à#ð
"ð �Ñ'ð
"ð �S˜/Ð)Ñ*ð	
"ð
 
÷
"r]   r  )Ú create_tma_experimental_metadataÚcreate_tma_stable_metadataÚTMADescriptorMetadataÚTritonHOPifierc                   ó†  — e Zd Zdedefd„Zdedefd„Zdede	fd„Z
dd	deej                  j                  j                  d
f   fd„Zde	deee	f   ddde	fd„Zded
e	f   dee   deeef   ded   de	defd„Zde	ded   de	dedef
d„Zde	ded   dee	   fd„Zdede	fd„Zdddee	   ddfd„Zddde	deee	f   dddd f
d!„Zy")#ÚDynamoTritonHOPifierr­  r_   c                 ó(   — t        ddd|› �g ¬«       y )Nz!triton kernel unsupported featurerG  z/Encountered triton kernel unsupported feature: rH  )r%   )r|   r­  s     r^   Úraise_unsupportedz&DynamoTritonHOPifier.raise_unsupportedë  s   € ÜØ7ØØIÈ#ÈÐOØö		
r]   Úmaybe_callablec                 ó.   — t        |t        t        f«      S rŽ   )r­   rÚ  r7  )r|   r5  s     r^   Úis_callablez DynamoTritonHOPifier.is_callableó  s   € ÜØÔ7Ô9MÐNó
ð 	
r]   rª   c                 ó   — |j                   S rŽ   r  )r|   rª   s     r^   Ú	get_valuezDynamoTritonHOPifier.get_valueø  s   € Ø�y‰yÐr]   ÚgridrL   .c                 óž   — ddl m} t        ||«      r|j                  «       S t	        ddt        |«      › �dg t        j                  ¢¬«       y )Nr:   )rL   z/unsupported grid type for triton hop check_gridzgrid type = z;`torch.compile` only supports list-like grid for check_gridrH  )ÚlistsrL   r­   r  r%   ry  r   r3  )r|   r:  rL   s      r^   Ú
check_gridzDynamoTritonHOPifier.check_gridû  sK   € Ý+ä�dÐ,Ô-Ø—=‘=“?Ð"äØIØ&¤t¨D£z lÐ3ØYðÜ&×2Ñ2ðö	r]   Úmetar’   rF   c                 ó¨   — |j                  «       D ��ci c]  \  }}t        j                  ||«      |“Œ }}}|j                  ||gi «      }|S c c}}w rŽ   )rš   r>   r®   r%  )r|   r:  r>  r’   r³   r´   Úmeta_vars          r^   Ú	call_gridzDynamoTritonHOPifier.call_grid
  sV   € ð AEÇ
Á
Ã×M¹¸¸1”O×)Ñ)¨"¨aÓ0°!Ñ3ÐMˆÑMØ×!Ñ! " x j°"Ó5ˆØˆùó Ns   ”!AÚuser_fnr”   r•   r–  c                 ó\   — ddl m} |j                  ||«      }|j                  |||«      }|S )Nr:   r(  )r5  r)  r°   r%  )	r|   rB  r”   r•   r’   r–  r)  Úwrapped_user_functionr±   s	            r^   Úcall_user_defined_fnz)DynamoTritonHOPifier.call_user_defined_fn  s3   € õ 	/à 1× 8Ñ 8¸¸WÓ EÐØ&×4Ñ4°R¸¸vÓFˆØˆr]   Úuser_objr¢   c                 ób   — ddl m} |€J ‚  ||t        |j                  |› «      «      |«      }|S )Nr:   )ÚVariableBuilder)r5  rH  r)   Úkernel_source)r|   rF  r’   r–  r¢   rH  Úwrapped_user_objs          r^   Úwrap_user_defined_objz*DynamoTritonHOPifier.wrap_user_defined_obj   sD   € õ 	-àˆ~Ðˆ~ð
™?Ø”
˜8×1Ñ1°d°VÓ=ó
à
óÐð  Ðr]   Úconfigsc                 ón   — |j                  |«      }|D �cg c]  } |j                  «       ‘Œ }}|S c c}w rŽ   )Úunpack_var_sequencerß  )r|   rL  r’   r   s       r^   Úmaybe_unpack_configsz)DynamoTritonHOPifier.maybe_unpack_configs2  sB   € ð ×-Ñ-¨bÓ1ˆð DKÖK¸Ð2�6×2Ñ2Õ4ÐKˆÐKàˆùò Ls   –2r±   c                 ód   — |j                  «       s| j                  d«       |j                  «       S )Nz`@triton.heuristics must return constant values because configs can only contain constant values.)rß  r4  rß  )r|   r±   s     r^   Úmaybe_unpack_heuristic_resultz2DynamoTritonHOPifier.maybe_unpack_heuristic_result=  s0   € Ø×(Ñ(Ô*Ø×"Ñ"Ørôð ×.Ñ.Ó0Ð0r]   ÚTritonKernelVariablec                 óÄ   — |j                   €t        |«      dk7  r| j                  d«        t        |«      |j                  |j
                  |d   |j                  ¬«      S )Nr:   z7Triton kernels should be called with only a single gridr   )ÚkernelÚ
kernel_idxr:  rI  )r:  r‰   r4  ry  rT  rU  rI  )r|   r–  r”   s      r^   Úcall_getitemz!DynamoTritonHOPifier.call_getitemG  s^   € ð �=‰=Ð$¬¨D«	°QªØ×"Ñ"ØIôð Œt�H‹~Ø—?‘?Ø×*Ñ*Ø�a‘Ø"×0Ñ0ô	
ð 	
r]   ÚgridsÚcombined_argszvariables.ConstantVariablec                 óF  — ddl m} i }t        |j                  «       «      D ]D  }||   }t	        |t
        t        f«      sŒ|j                  «       ||<   |j                  «       ||<   ŒF |j                  «       D ��ci c]  \  }}t        j                  ||«      |“Œ }	}}ddlm}
m} |j                  «       D ��ci c]6  \  }}t	        |t        «      r!|j                  «       r||j!                  «       “Œ8 }}}|	j                  «       D ��ci c](  \  }}t	        |t        «      r|j                  «       s||“Œ* }}}|j#                  «       D ]R  }|j%                  «       }|j'                  «       rŒ$|j)                  «       rŒ5| j+                  dt-        |«      › d�«       ŒT |
j/                  |«      } ||t0        «      }|j2                  j5                  d|d|j6                  ||||j9                  «       d	œ«       t        j                  |d «      S c c}}w c c}}w c c}}w )
Nr:   )r  r   )Úkernel_side_tableÚtriton_kernel_wrapper_mutationz.Unexpected argument type for a Triton kernel: rH  r%  r\   )rU  Úconstant_args_idxr:  Útma_descriptor_metadatar•   )Údictsr  r    rÓ  r­   Ú!TMADescriptorExperimentalVariableÚTMADescriptorStableVariableÚto_metadataÚ
get_tensorrš   r>   r®   Ú*torch._higher_order_ops.triton_kernel_wraprZ  r[  rß  rS  rˆ  r  rÓ  Úis_symnode_liker4  ÚreprÚadd_constant_argsr‡   r¸   r  rU  r  )r|   r–  rW  rX  r’   r  r]  r³   r´   Úcombined_args_vtrZ  r[  rÇ  Únon_constant_argsr\  r>  s                   r^   Úcall_HOPzDynamoTritonHOPifier.call_HOPY  s!  € õ 	-ð :<ÐÜ�m×(Ñ(Ó*Ó+ò 	2ˆAØ˜aÑ ˆAÜØÔ5Ô7RÐSõð ./¯]©]«_Ð'¨Ñ*Ø#$§<¡<£>�˜aÒ ð	2ð 9F×8KÑ8KÓ8M÷
Ù04°°1ŒO×!Ñ! " aÓ(¨!Ñ+ð
Ðñ 
÷	
ð &×+Ñ+Ó-÷
á��1Ü˜!œ_Ô-°!×2FÑ2FÔ2Hð ˆq×#Ñ#Ó%Ñ%ð
ˆñ 
ð )×.Ñ.Ó0÷
á��1Ü˜q¤/Ô2°q×7KÑ7KÔ7Mð ˆq‰Dð
Ðñ 
ð #×)Ñ)Ó+ò 	ˆAØ—	‘	“ˆAØ—K‘K•M Q×%6Ñ%6Õ%8Ø×&Ñ&ØDÄTÈ!ÃWÀIÈQÐOõð	ð .×?Ñ?ÀÓNÐÙ Ð!2´DÓ9ˆØ
�	‰	×ÑØØ*Øà&×1Ñ1Ø%6ØØ+BØŸ-™-›/ñô		
ô ×$Ñ$ØØó
ð 	
ùó[
ùó
ùó

s   Á<!HÂ;;HÄ-HN)rY   rZ   r[   r1  r   r4  r>   r3  r7  r   r9  rŸ   ra   ÚfxÚproxyÚProxyr=  r‡   rA  r   r   r   rE  rK  r    rO  rQ  rV  ri  r\   r]   r^   r2  r2  ê  sÏ  „ ð
 Sð 
¨Uó 
ð
¨/ð 
¸dó 
ð
˜_ð °ó ðÐ1ð °e¸E¿H¹H¿N¹N×<PÑ<PÐRUÐ<UÑ6Vó ðØðØ# C¨ H™~ðØ3Jðà	óðà˜#˜s˜(Ñ#ðð �Ñ'ðð �S˜/Ð)Ñ*ð	ð
 Ð,Ñ-ðð ðð 
óð àð ð Ð,Ñ-ð ð ð	 ð
 ð ð 
ó ð$	Øð	Ø (Ð)@Ñ Að	à	ˆc‰ó	ð1°Oð 1Èó 1ð
à(ð
ð �s‰mð
ð 
 ó	
ð$H
à(ðH
ð ðH
ð ˜C ˜H‘~ð	H
ð
 $ðH
ð 
&ôH
r]   r2  c            
       óì   ‡ — e Zd ZU ded<   ded<   edz  ed<   edz  ed<   dededz  deded	df
ˆ fd
„Zdddee	   de
ee	f   d	e	fd„Zddde	d	e	fd„Zdddedee	   de
ee	f   d	e	f
ˆ fd„Zded	efd„Zˆ xZS )rR  rI   r:  rJ   rT  NrU  rI  r•   r_   c                 ó    •— |j                  d|j                  d«      «      | _        t        ‰| �  di |¤Ž t
        j                  | |||«       y )NrI  r«   r\   )r�   r�   rI  rÚ   r€   Ú dynamo_triton_hopifier_singletonÚinit_variable)r|   rT  rU  r:  r•   rÛ   s        €r^   r€   zTritonKernelVariable.__init__­  sF   ø€ ð $ŸZ™Z¨¸¿¹ÀHÓ9MÓNˆÔÜ‰ÑÑ"˜6Ò"Ü(×6Ñ6°t¸VÀZÐQUÕVr]   r’   rF   r”   c                 ó2   — t         j                  | |||«      S rŽ   )ro  Úcall_triton_kernelr$  s       r^   r%  z"TritonKernelVariable.call_function´  s    € ô 0×BÑBØ�$˜ ó
ð 	
r]   r¨  c                 ó0   — t         j                  | |g«      S rŽ   )ro  rV  )r|   r’   r¨  s      r^   Úmp_subscript_implz&TritonKernelVariable.mp_subscript_impl¾  s   € ô 0×<Ñ<¸TÀCÀ5ÓIÐIr]   r¢   c                 ób   •— |dk(  rt         j                  | |||«      S t        ‰| �  ||||«      S )NÚrun)ro  Úcall_runrÚ   ré   rê   s        €r^   ré   z TritonKernelVariable.call_methodÇ  s<   ø€ ð �5Š=Ü3×<Ñ<¸TÀ4ÈÐQSÓTÐTô ‰wÑ" 2 t¨T°6Ó:Ð:r]   r¦  c                 óv   — ddl m} ddlm} t	        ||«      r  |j
                  |j                  «       «      S |S )Nr:   r?   )r  )r¤  r@   r¡  r  r­   r°   Úevaluate_expr)r|   r¦  r@   r  s       r^   Úspecialize_symbolicz(TritonKernelVariable.specialize_symbolicÔ  s6   € Ý.Ý+ô �c˜?Ô+Ø*Ð#×*Ñ*¨3×+<Ñ+<Ó+>Ó?Ð?Øˆ
r]   )rY   rZ   r[   rÈ   rû  r   r   r€   r   r>   r‡   r1  r%  rt  r    ré   rz  r4  r5  s   @r^   rR  rR  §  s  ø… Ø
ÓØÓØ�d‘
ÓØ˜D‘=Ó ðWØðWØ'*¨T¡zðWØ9<ðWØHKðWà	õWð
à#ð
ð �Ñ'ð
ð �S˜/Ð)Ñ*ð	
ð
 
ó
ðJà#ðJð ðJð 
ó	Jð;à#ð;ð ð;ð �?Ñ#ð	;ð
 �S˜/Ð)Ñ*ð;ð 
õ;ð sð ¨s÷ r]   rR  c                   ód   ‡ — e Zd Zdddee   dee   dededdfˆ fd	„Zdefd
„Zdd„Zdefd„Z	ˆ xZ
S )r_  Údata_ptrzvariables.DataPtrVariableÚdimsÚ
block_dimsÚelement_sizer•   r_   Nc                 ó”   •— t        |t        j                  «      sJ ‚t        ‰| �  di |¤Ž || _        || _        || _        || _        y r‚   )	r­   r   ÚDataPtrVariablerÚ   r€   r|  r}  r~  r  )r|   r|  r}  r~  r  r•   rÛ   s         €r^   r€   z*TMADescriptorExperimentalVariable.__init__ß  sH   ø€ ô ˜(¤I×$=Ñ$=Ô>Ð>Ð>Ü‰ÑÑ"˜6Ò"Ø ˆŒØˆŒ	Ø$ˆŒØ(ˆÕr]   c                 óø   — t        | j                  D �cg c]  }|j                  «       ‘Œ c}| j                  D �cg c]  }|j                  «       ‘Œ c}| j                  j                  «       «      S c c}w c c}w rŽ   )r-  r}  r  r~  r  )r|   Údims     r^   ra  z-TMADescriptorExperimentalVariable.to_metadataî  sW   € Ü/Ø'+§y¡yÖ1 ˆS�\‰\�^Ò1Ø'+§¡Ö7 ˆS�\‰\�^Ò7Ø×Ñ×&Ñ&Ó(ó
ð 	
ùÚ1ùÚ7s
   ”A2»A7
c                 ó  ‡ ‡— ‰j                  ˆˆ fd„«       ‰ j                  j                  ‰«       g ‰ j                  ¢‰ j                  ¢‰ j
                  ‘}‰j                  |«       ‰j                  t        |«      dz   d«       y )Nc                  óV   •— ‰ j                  ddt        ‰j                  «      › d�«      S )Nz$triton.tools.experimental_descriptorÚcreate_Úd_tma_descriptor)r  r‰   r}  rÃ  s   €€r^   r  z?TMADescriptorExperimentalVariable.reconstruct.<locals>.<lambda>÷  s+   ø€ �G×,Ñ,Ø6Øœ#˜dŸi™i›.Ð)Ð)9Ð:ó€ r]   r:   F)	rÆ  r|  r;  r}  r~  r  rÒ  r%  r‰   )r|   r<  r”   s   `` r^   r;  z-TMADescriptorExperimentalVariable.reconstructõ  sp   ù€ Ø×Ñôô	
ð 	�‰×!Ñ! 'Ô*Ø@�—‘Ð@˜TŸ_™_Ð@¨d×.?Ñ.?Ð@ˆØ�‰˜ÔØ×Ñœc $›i¨!™m¨UÕ3r]   c                 ó.   — | j                   j                  S rŽ   )r|  Úfrom_tensorrÞ   s    r^   rb  z,TMADescriptorExperimentalVariable.get_tensor  s   € Ø�}‰}×(Ñ(Ð(r]   r{  )rY   rZ   r[   r    r>   r   r€   ra  r;  rb  r4  r5  s   @r^   r_  r_  Þ  si   ø„ ð)à-ð)ð �?Ñ#ð)ð ˜Ñ)ð	)ð
 &ð)ð ð)ð 
õ)ð
˜Só 
ó
4ð)˜O÷ )r]   r_  c                   óP   ‡ — e Zd Zdddddeddfˆ fd„Zdefd	„Zdd
„Zdefd„Zˆ xZS )r`  r¡  rN   Úblock_shaperM   r•   r_   Nc                 ód   •— |j                  «       sJ ‚t        ‰| �  di |¤Ž || _        || _        y r‚   )rÓ  rÚ   r€   r¡  r‹  )r|   r¡  r‹  r•   rÛ   s       €r^   r€   z$TMADescriptorStableVariable.__init__  s6   ø€ ð ×ÑÔ!Ð!Ð!Ü‰ÑÑ"˜6Ò"ØˆŒØ&ˆÕr]   c                 óH   — t        | j                  j                  «       «      S rŽ   )r.  r‹  r  rÞ   s    r^   ra  z'TMADescriptorStableVariable.to_metadata  s!   € Ü)Ø×Ñ×%Ñ%Ó'ó
ð 	
r]   c                 óÌ   ‡— ‰j                  ˆfd„«       ‰j                  d«       | j                  j                  ‰«        ‰| j                  «       ‰j                  d«       y )Nc                  ó(   •— ‰ j                  dd«      S )Nztriton.tools.tensor_descriptorÚTensorDescriptorr  r  s   €r^   r  z9TMADescriptorStableVariable.reconstruct.<locals>.<lambda>  s   ø€ �G×,Ñ,Ø0Ø"ó€ r]   r‰  r   )rÆ  Úload_methodr¡  r;  r‹  ré   rÈ  s    `r^   r;  z'TMADescriptorStableVariable.reconstruct  sT   ø€ Ø×Ñóô	
ð 	×Ñ˜MÔ*Ø�‰×Ñ Ô(Ù�× Ñ Ô!Ø×Ñ˜AÕr]   c                 ó   — | j                   S rŽ   )r¡  rÞ   s    r^   rb  z&TMADescriptorStableVariable.get_tensor"  rà   r]   r{  )	rY   rZ   r[   r   r€   ra  r;  rb  r4  r5  s   @r^   r`  r`    sK   ø„ ð	'à ð	'ð $ð	'ð ð		'ð
 
õ	'ð
˜Só 
ó

ð˜C÷ r]   r`  c                   ó`   ‡ — e Zd Zdededdfˆ fd„Zdefd„Zddd	ee	   de
ee	f   de	fd
„Zˆ xZS )Ú'CreateTMADescriptorExperimentalVariableÚrankr•   r_   Nc                 ó>   •— |dv sJ ‚t        ‰| �  di |¤Ž || _        y )N)r:   r   r\   )rÚ   r€   r•  )r|   r•  r•   rÛ   s      €r^   r€   z0CreateTMADescriptorExperimentalVariable.__init__'  s(   ø€ ð
 �v‰~Ðˆ~Ü‰ÑÑ"˜6Ò"Øˆ�	r]   c                 ó"   — t         j                  S rŽ   r]  rÞ   s    r^   r^  z3CreateTMADescriptorExperimentalVariable.python_type0  r_  r]   r’   rF   r”   c                 óì  — d|v r|d   n|d   }t        |t        j                  «      s2t        dd|› d|› �d| j                  › d�d| j                  › d	�g¬
«       | j                  dk(  r]t        |«      t        |«      z   dk7  r$t        |dt        |«      t        |«      z   › �«       d|v r|d   n|d   g}d|v r|d   n|d   g}nvt        |«      t        |«      z   dk7  r$t        |dt        |«      t        |«      z   › �«       d|v r|d   n|d   d|v r|d   n|d   g}d|v r|d   n|d   d|v r|d   n|d   g}d|v r|d   n|d   }t        |t        j                  «      sJ ‚t        ||||¬«      S )NÚptrr   z.invalid ptr argument for create_tma_descriptorzargs = z, kwargs = z#Expected `ptr` argument of `create_z]d_tma_descriptor`to be from a `.data_ptr()` call, represented internally by `DataPtrVariable`z `torch.compile` may fail to internally represent result of `.data_ptr()` with `DataPtrVariable` due to a graph break between the `.data_ptr()` call and `create_zTd_tma_descriptor`. Please ensure there were no graph breaks between these two calls.rH  r:   rQ   z6TMA metadata rank=1 requires exactly 4 arguments, got rƒ  Ú	block_dimr   é   z6TMA metadata rank=2 requires exactly 6 arguments, got Údim1Údim0Ú
block_dim1r÷   Ú
block_dim0r  r`  )r|  r}  r~  r  )r­   r   r�  r%   r•  r‰   r#   r_  )r|   r’   r”   r•   r™  r}  r~  r  s           r^   r%  z5CreateTMADescriptorExperimentalVariable.call_function3  sê  € ð  %¨™ˆf�UŠm°D¸±Gˆä˜#œy×8Ñ8Ô9ÜØHØ! $  {°6°(Ð;ØAÀ$Ç)Á)Àð M_ð _ðà#Ÿy™y˜kð */ð/ðõð �9‰9˜Š>Ü�4‹yœ3˜v›;Ñ&¨!Ò+Ü ØØLÌSÐQUËYÔY\Ð]cÓYdÑMdÐLeÐfôð
 "'¨&¡��u’°d¸1±gðˆDð (3°fÑ'<��{Ò#À$ÀqÁ'ð‰Jô �4‹yœ3˜v›;Ñ&¨!Ò+Ü ØØLÌSÐQUËYÔY\Ð]cÓYdÑMdÐLeÐfôð
 #)¨FÑ"2��v’¸¸Q¹Ø"(¨FÑ"2��v’¸¸Q¹ðˆDð
 )5¸Ñ(>��|Ò$ÀDÈÁGØ(4¸Ñ(>��|Ò$ÀDÈÁGðˆJð 2@À6Ñ1I�v˜nÒ-ÈtÐTVÉxˆô ˜#œy×8Ñ8Ô9Ð9Ð9ä0ØØØ!Ø%ô	
ð 	
r]   )rY   rZ   r[   rû  r   r€   ry  r^  r   r>   r‡   r1  r%  r4  r5  s   @r^   r”  r”  &  sj   ø„ ðàðð ðð 
õ	ð"˜Tó "ð:
à#ð:
ð �Ñ'ð:
ð �S˜/Ð)Ñ*ð	:
ð
 
÷:
r]   r”  c                   ó@   — e Zd Zdefd„Zdddee   deeef   defd„Z	y)	Ú!CreateTMADescriptorStableVariabler_   c                 ó"   — t         j                  S rŽ   r]  rÞ   s    r^   r^  z-CreateTMADescriptorStableVariable.python_typeq  r_  r]   r’   rF   r”   r•   c                 óT   — d|v r|d   n|d   }d|v r|d   n|d   }t        ||¬«      S )Nr¡  r   r‹  r:   )r¡  r‹  )r`  )r|   r’   r”   r•   r¡  r‹  s         r^   r%  z/CreateTMADescriptorStableVariable.call_functiont  sF   € ð &.°Ñ%7�˜Ò!¸TÀ!¹WˆØ/<ÀÑ/F�f˜]Ò+ÈDÐQRÉGˆä*ØØ#ô
ð 	
r]   N)
rY   rZ   r[   ry  r^  r   r>   r‡   r1  r%  r\   r]   r^   r¡  r¡  p  sH   „ ð"˜Tó "ð
à#ð
ð �Ñ'ð
ð �S˜/Ð)Ñ*ð	
ð
 
ô
r]   r¡  c                   ó8   — e Zd ZdZdddee   deeef   defd„Zy)	Ú!PyTreeGetNodeTypeFunctionVariableaK  
    `torch.utils._pytree._get_node_type` function is very hot function. We want to special case it to reduce Dynamo tracing time.

    def _get_node_type(tree: Any) -> Any:
        node_type = type(tree)
        # All namedtuple types are implicitly registered as pytree nodes.
        # XXX: Other parts of the codebase expect namedtuple types always return
        #      `namedtuple` instead of the actual namedtuple type. Even if the type
        #      is explicitly registered.
        if is_namedtuple_class(node_type):
            return namedtuple
        return node_type
    r’   rF   r”   r•   r_   c                 óÖ  — t        |«      dk7  rt        |dt        |«      › �«       d }|d   j                  rMt        |d   j                  j	                  t
        j                  «      «       t        |d   j                  «      }|d   j                  «       }t        |«      r0t        t        d«      d«      }t        j                  |t        |«      S t        j                  |||¬«      S )Nr:   z6pytree_get_node_type requires exactly 1 argument, got r   Úcollectionsr   rÝ   )r‰   r#   r«   r(   rA  r'   Ú
TYPE_MATCHr1   r^  r   r)   r/   r>   r®   r   )r|   r’   r”   r•   Útype_sourcer^  s         r^   r%  z/PyTreeGetNodeTypeFunctionVariable.call_function’  sÃ   € ô ˆt‹9˜Š>ÜØÐLÌSÐQUËYÈKÐXôð ˆØ�‰7�>Š>Ü˜$˜q™'Ÿ.™.×3Ñ3´L×4KÑ4KÓLÔMÜ$ T¨!¡W§^¡^Ó4ˆKØ˜1‘g×)Ñ)Ó+ˆÜ˜{Ô+Ü$¤\°-Ó%@À,ÓOˆKÜ"×(Ñ(¨¬Z¸ÓEÐEÜ×$Ñ$ R¨¸[ÔIÐIr]   N)	rY   rZ   r[   rÊ   r   r>   r‡   r1  r%  r\   r]   r^   r¥  r¥  ƒ  sF   „ ñðJà#ðJð �Ñ'ðJð �S˜/Ð)Ñ*ð	Jð
 
ôJr]   r¥  c                   óD   ‡ — e Zd ZdZdddee   deeef   defˆ fd„Zˆ xZ	S )Ú PyTreeTreeIsLeafFunctionVariablea@  
    `torch.utils._pytree.tree_is_leaf` function is a hot function. We want to special case it to reduce Dynamo tracing time.

    def tree_is_leaf(
        tree: PyTree,
        is_leaf: Callable[[PyTree], bool] | None = None,
    ) -> bool:
        if is_leaf is not None and is_leaf(tree):
            return True
        return _get_node_type(tree) not in SUPPORTED_NODES

    When is_leaf is None (the common case), we can optimize by not tracing into the function.
    When is_leaf is not None, we fall back to regular tracing since it requires executing user code.
    r’   rF   r”   r•   r_   c                 ó–  •— t        |«      dk  st        |«      dkD  rt        |dt        |«      › �«       |j                  dt        j                  d «      «      }t        |«      dk(  r|d   }|j                  «       st        ‰	| �  |||«      S |d   }t        t        j                  j                  j                  «      j                  ||gi «      }t        j                  |t        j                  j                  j                  t!        «       ¬«      }|j#                  |d|gi «      }t        j                  ||j$                   «      S )Nr:   r   z,tree_is_leaf requires 1 or 2 arguments, got rS   r   rÝ   r  )r‰   r#   r�   r@   r°   rl  rÚ   r%  r¥  ra   rb   rc   Ú_get_node_typer>   r®   rd   re   ré   r=  )
r|   r’   r”   r•   rS   ÚtreeÚnode_type_varÚsupported_nodes_varÚoutrÛ   s
            €r^   r%  z.PyTreeTreeIsLeafFunctionVariable.call_function·  s#  ø€ ô ˆt‹9�qŠ=œC ›I¨šMÜØÐBÄ3ÀtÃ9À+ÐNôð
 —*‘*˜YÔ(8×(?Ñ(?ÀÓ(EÓFˆÜˆt‹9˜Š>Ø˜1‘gˆGà×'Ñ'Ô)Ü‘7Ñ(¨¨T°6Ó:Ð:ð �A‰wˆÜ9Ü�K‰K×Ñ×.Ñ.ó
ç
‰-˜˜T˜F BÓ
'ð 	ô .×3Ñ3ØÜ�K‰K×Ñ×/Ñ/Ü4Ó6ô
Ðð
 "×-Ñ-¨b°.À=À/ÐSUÓVˆÜ×$Ñ$ R¨S¯Y©Y¨Ó7Ð7r]   r  r5  s   @r^   r«  r«  §  sG   ø„ ñð#8à#ð#8ð �Ñ'ð#8ð �S˜/Ð)Ñ*ð	#8ð
 
÷#8ñ #8r]   r«  c                   óX   ‡ — e Zd ZdZdededdfˆ fd„Zddd	ee   dee	ef   defd
„Z
ˆ xZS )Ú SparseTensorCreationSkipVariablezk
    Skip variable for sparse tensor factory functions with clear messaging regarding lack of support.
    r=  r•   r_   Nc                 ó.   •— d}t        ‰| �  |fd|i|¤Ž y )Nz8sparse tensor creation is not supported in torch.compiler  )rÚ   r€   )r|   r=  r•   r  rÛ   s       €r^   r€   z)SparseTensorCreationSkipVariable.__init__â  s   ø€ ØKˆÜ‰Ñ˜Ñ8 vÐ8°Ó8r]   r’   rF   r”   c                 ó¨   — ddl m} t        | j                  dt	        | j                  «      «      }t        dd|› �d|› d�g |j                  ¢¬«       y )	Nr   )r   rY   z$Sparse tensor creation not supportedz
function: zEtorch.compile does not support sparse tensor creation functions like zZ. Sparse tensors require specialized handling that is not yet implemented in the compiler.rH  )rG  r   rÓ   r=  r1  r%   ÚSPARSE_TENSOR)r|   r’   r”   r•   r   r®  s         r^   r%  z.SparseTensorCreationSkipVariable.call_functionæ  s]   € õ 	)ä˜$Ÿ*™* j´#°d·j±j³/ÓBˆÜØ:Ø   	Ð*àWÐX_ÐW`ð akð kð 5Ð%×3Ñ3Ð4ö	
r]   )rY   rZ   r[   rÊ   r   r€   r   r>   r‡   r1  r%  r4  r5  s   @r^   r³  r³  Ý  s\   ø„ ñð9˜cð 9¨Sð 9°Tõ 9ð
à#ð
ð �Ñ'ð
ð �S˜/Ð)Ñ*ð	
ð
 
÷
r]   r³  Ú	real_implc                 óR  ‡ — ddl mc m} ddlm}m}m} d„ }dg} ||||«      \  }	}
 ||	«      } ||
«      }|j                  di f«      d   }dt        dt        d	t        fˆ fd
„} ||› d�|«       ||› d�|«       ||› d�|«      df}‰ j                  j                  d||i «       y)aI  Emit an invoke_leaf_function node for a side-effectful function with no
    tensor inputs or outputs.

    The function is captured as a closure inside _LeafCallable objects and
    registered as a static attribute on the graph module.  Because
    invoke_leaf_function is registered as EffectType.ORDERED, effect tokens
    prevent DCE and maintain execution ordering relative to other ops.

    Use this when Dynamo needs to preserve a pure-side-effect call (like
    setting global runtime state) in the compiled graph so that it replays
    at the correct position at runtime.
    r   N)Ú_LeafCallableÚinvoke_leaf_functionÚmake_leaf_function_wrappersc                   ó   — y rŽ   r\   r\   r]   r^   Ú	fake_implz5emit_noargs_leaf_function_to_graph.<locals>.fake_impl  r0  r]   r\   r:   Ú	attr_namerª   r_   c                 ót   •— ‰j                   j                  | |«      }t        |«      |j                  _        |S rŽ   )r¸   Ú%register_static_attr_and_return_proxyry  r  )r¾  rª   rk  r’   s      €r^   Ú
make_proxyz6emit_noargs_leaf_function_to_graph.<locals>.make_proxy  s-   ø€ Ø—	‘	×?Ñ?À	È3ÓOˆÜ˜s›)ˆ�
‰
ŒØˆr]   Ú_real_fnÚ_fake_fnÚ_input_specrG  r%  )Útorch.utils._pytreerb   rc   Ú,torch._higher_order_ops.invoke_leaf_functionr¹  rº  r»  Útree_flattenr1  r   r¸   r  )r’   r·  r¢   Úpytreer¹  rº  r»  r½  Úcaptured_out_specÚwrapped_realÚwrapped_fakeÚreal_callableÚfake_callableÚ
input_specrÁ  Úinvoke_argss   `               r^   Ú"emit_noargs_leaf_function_to_graphrÐ  ú  sÞ   ø€ ÷" )Ð(÷ñ òð 8<°fÐÙ!<Ø�9Ð/ó"Ñ€L�,ñ " ,Ó/€MÙ! ,Ó/€MØ×$Ñ$ b¨" XÓ.¨qÑ1€Jðœcð ¬ð ´õ ñ 	�d�V˜8Ð$ mÓ4Ù�d�V˜8Ð$ mÓ4Ù�d�V˜;Ð'¨Ó4Ø
ð	€Kð ‡I�I×Ñ˜?Ð,@À+ÈrÕRr]   c                   ód   ‡ — e Zd ZdZdededdfˆ fd„Zdefd„Zdd	d
ee	   de
ee	f   de	fd„Zˆ xZS )ÚTritonSetAllocatorVariablezœTrace triton.set_allocator as an invoke_leaf_function node in the
    graph so that it executes at the right point at runtime, ordered by
    effect tokens.r=  r•   r_   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r‚   r  r   s      €r^   r€   z#TritonSetAllocatorVariable.__init__1  r!  r]   c                 ó,   — t        | j                  «      S rŽ   )ry  r=  rÞ   s    r^   r^  z&TritonSetAllocatorVariable.python_type5  rF  r]   r’   rF   r”   c                 ó¸   ‡‡— t        |«      dk(  r|rJ ‚|d   j                  «       Š| j                  Šˆˆfd„}t        ||d«       t	        j
                  d «      S )Nr:   r   c                  ó   •—  ‰‰ «       y rŽ   r\   )Úalloc_fnÚset_allocators   €€r^   r·  z;TritonSetAllocatorVariable.call_function.<locals>.real_implD  s   ø€ Ù˜(Ô#Ør]   Ú	set_alloc)r‰   rS  r=  rÐ  r@   r°   )r|   r’   r”   r•   r·  r×  rØ  s        @@r^   r%  z(TritonSetAllocatorVariable.call_function8  sY   ù€ ô �4‹y˜AŠ~¡fÐ,Ð,Ø˜‘7×-Ñ-Ó/ˆð Ÿ
™
ˆõ	ô 	+¨2¨y¸+ÔFä×&Ñ& tÓ,Ð,r]   )rY   rZ   r[   rÊ   r   r€   ry  r^  r   r>   r‡   r1  r%  r4  r5  s   @r^   rÒ  rÒ  ,  sh   ø„ ñð˜cð ¨Sð °Tõ ð ˜Tó  ð-à#ð-ð �Ñ'ð-ð �S˜/Ð)Ñ*ð	-ð
 
÷-r]   rÒ  rŽ   )³rÊ   r  r  rÏ   rÇ   ri  rc  rù   rg  rÆ   r§  r   Úcollections.abcr   r   r   r   Útypingr   r	   r
   r   r   r   Útyping_extensionsr   Úweakrefr   ra   Útorch._dynamo.excr   Útorch._guardsr   rÅ  r   rG  r   r   r   r   Úbytecode_transformationr   r   r   r^  r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   Úguardsr'   r(   r«   r)   r*   r+   r,   r-   r.   r/   r0   r1   rb   r2   r3   r4   r5   r6   r7   r8   r9   rä  r;   r<   r=   r>   r¤  r@   Úuser_definedrA   Ú#torch.distributed.fsdp._fully_shardrB   ÚModuleNotFoundErrorÚtorch._dynamo.codegenrC   r6  rD   rE   rF   rG   Ú#torch._dynamo.variables.ctx_managerrH   rc  rI   rJ   r^  rK   r<  rL   rM   r¡  rN   rO   rx   rz   rù  rµ  rË  rL  rV   rÈ   r  rX   Ú	lru_cachere   rg   r‘   r‡   r1  r©   r™   rµ   r2  r¾   rŸ   rü  rÉ   rÒ   rÕ   r×   r7  rþ  rÎ  r  r#  r~  r€  r‘  rd  r³  rË  rœ  rÚ  r  r  rI  rO  r{  r†  rŒ  rŽ  rÃ  rÉ  r÷  r  r-  r.  r/  r0  r2  ro  rR  r_  r`  r”  r¡  r¥  r«  r³  rÐ  rÒ  r\   r]   r^   ú<module>rè     s  ðòó. Û Û Û Û Û 	Û 
Û Û Ý "ß .ß (ß G× GÝ #Ý %ã Ý 4Ý  Ý 3ç >Ó >ß VÑ V÷÷ ÷ ó ÷ 1÷
÷ 
õ 
÷	÷ 	ó 	÷ó õ 'Ý 3ðÝEñ
 Ý/÷ó õ L÷õ
 *ß5Ý&ñ ˆT˜ # s (Ñ+Ô,€Ø€
Ø€Ù&Ò'OÓPÐ Ù"+¨Y¨KÓ"8Ð ð DÐ ñ ,=Ó+>€Ð˜s C˜xÑ(Ó >ô	Ð0ô 	ð ×Ñð¨:ò ó ð÷
ñ 
ð>�Lð  \ó ðUØ
ðUàðUð ˜‰}ðUð �3‰-ð	Uð
 ��c�‰NðUð 
ˆ#ˆÐ
ÑóUðr DHñAØðAØ&)ðAØ39¸D±=ðAàóAð.Ð0ð .¸$¸sÀC¸x¹.ð .ÈTó .ð Ø#ð à��oÐ%Ñ&ð ð �.Š.ð ð 
ó	 ð*Ø
�.Š.ðà�C˜�H‰~ðð ðð �F˜C�KÑ  4Ñ'ð	ð
 �8‰_˜tÑ#ðð �S˜#�X‘ Ñ%ðð �c˜3�h‘ $Ñ&ðð ×Ñóò4
Ð ð-Øð-Ø%+ð-Ø5;¸d±]ð-ØJMð-àó-ô:D˜ô DôNOYÐ3ô OYôd!7Ð3ô !7ôH)Ð":ô )ôX :Ð4ô  :ôFJ; ?ô J;ôZ

Ø ô
ôS6Ð%=ô S6ôl Ø"ô ôFwÐ-ô wôt >Ð 2ô  >ôF>Ð"6ô >ðD$Øð$à��c�Ñð$ð ð$ð �?Ñ
#ð	$ð
 ��oÐ%Ñ&ð$ð ó$ôNK)Ð!9ô K)ô\.>Ð(Bô .>ôbv
˜?ô v
ôr >Ð"6ô  >ôFV=Ð":ô V=ôrÐ ;ô ð0 d¨3°¨8¡nó ð/Øð/Ø%-¨c°3¨hÑ%7ð/àó/ôhDÐ(<ô hDôV"
Ð$8ô "
ôJ@
˜ô @
ôFC ô CôL#"˜/ô #"÷Ló ôw
˜>ô w
ñt $8Ó#9Ð  ô4˜?ô 4ôn$)¨ô $)ôN /ô ôBG
¨oô G
ôT
¨ô 
ô&!JÐ(<ô !JôH38Ð';ô 38ôl
Ð';ô 
ð:/SØð/Sà˜˜D˜Ñ!ð/Sð ð/Sð 
ó	/Sôd- õ -øð[n ò ØÓðús   Ã-P ÐP#Ð"P#