Ë
    P/æj°î  ã                   ó*  — 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
mZmZmZ d dlZd dlmZ d dlmc mZ ddlmZmZ ddlmZmZ ddlmZ ddlm Z  ddl!m"Z"m#Z# dd	l$m%Z% dd
l&m'Z'm(Z(m)Z)m*Z*m+Z+ ddlm,Z,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z:m;Z; erd dl<m=Z=  G d„ d«      Z> G d„ de2«      Z? G d„ de2«      Z@ G d„ de2«      ZA G d„ deA«      ZB G d„ de2«      ZC G d„ deA«      ZD G d„ d eA«      ZE G d!„ d"e2«      ZF G d#„ d$e2«      ZG G d%„ d&e2«      ZH G d'„ d(e2«      ZI G d)„ d*e2«      ZJd+„ ZK G d,„ d-e2«      ZLejš                   G d.„ d/«      «       ZN G d0„ d1e;«      ZO G d2„ d3e;«      ZP G d4„ d5e2«      ZQ G d6„ d7e2«      ZR G d8„ d9e2«      ZS G d:„ d;e2«      ZT G d<„ d=e2«      ZU G d>„ d?e2«      ZV ej®                  d¬@«      dA„ «       ZX G dB„ dCe2«      ZY G dD„ dEe2«      ZZ G dF„ dGe2«      Z[ G dH„ dIe2«      Z\ G dJ„ dKe2«      Z] G dL„ dMe2«      Z^ G dN„ dOe2«      Z_ G dP„ dQe_«      Z` G dR„ dSe_«      Za G dT„ dUe_«      Zb G dV„ dWe_«      Zc G dX„ dYe_«      ZdejÊ                  ecejÌ                  ecejÎ                  ediZh G dZ„ d[e2«      Zi G d\„ d]e2«      Zjy)^é    N)ÚDictÚListÚOptionalÚTYPE_CHECKINGé   )ÚconfigÚ	variables)Úcreate_call_functionÚcreate_instruction)Ú$do_not_convert_to_tracable_parameter©Úunimplemented)ÚGuardBuilderÚinstall_guard)Úunpatched_nn_module_init)Ú
AttrSourceÚDefaultsSourceÚGetItemSourceÚODictGetItemSourceÚ
TypeSource)Úcheck_unspec_or_constant_argsÚidentityÚis_tensor_base_attr_getterÚproxy_args_kwargsÚset_example_valueé   )ÚVariableTracker)ÚNestedUserFunctionVariableÚUserFunctionVariableÚUserMethodVariableÚwrap_bound_arg)Úcall_random_fnÚis_standard_setattrÚUserDefinedObjectVariable)ÚInstructionTranslatorc                   ó   — e Zd Zy)ÚNO_SUCH_SUBOBJN)Ú__name__Ú
__module__Ú__qualname__© ó    ú_/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/_dynamo/variables/misc.pyr'   r'   3   s   „ Ør,   r'   c                   ó‚   ‡ — e Zd Zdhej                  £Zddˆ fd„Zˆ fd„Zdˆ fd„Zdddedd	fd
„Z		 	 	 	 	 	 dˆ fd„Z
ˆ xZS )ÚSuperVariableÚspecializedÚreturnc                 óN   •— t        ‰| �  di |¤Ž || _        || _        || _        y ©Nr+   )ÚsuperÚ__init__ÚtypevarÚobjvarr0   )Úselfr6   r7   r0   ÚkwargsÚ	__class__s        €r-   r5   zSuperVariable.__init__=   s-   ø€ Ü‰ÑÑ"˜6Ò"ð ˆŒð
 ˆŒØ&ˆÕr,   c                 ó   •‡— ‰j                  ˆˆfd„«        ‰| j                  «       | j                  �. ‰| j                  «       ‰j                  t	        dd«      «       y ‰j                  t	        dd«      «       y )Nc                  óB   •—  ‰t        j                  t        «      «      S ©N)r	   ÚBuiltinVariabler4   )r:   Úcodegens   €€r-   ú<lambda>z+SuperVariable.reconstruct.<locals>.<lambda>K   s   ø€ ¡g¬i×.GÑ.GÌÓ.NÓ&O€ r,   r   Fr   )Úadd_push_nullr6   r7   Úextend_outputr
   )r8   r?   r:   s    `€r-   ÚreconstructzSuperVariable.reconstructJ   s`   ù€ Ø×ÑÔOÔPÙ�—‘ÔØ�;‰;Ð"Ù�D—K‘KÔ Ø×!Ñ!Ô"6°q¸%Ó"@ÕAà×!Ñ!Ô"6°q¸%Ó"@ÕAr,   Útxr%   c           	      ól  •— | j                   sJ d«       ‚| j                  r$t        | j                  j	                  «       |«      S | j                  j	                  «       }| j                   j                  «       }| j                   j                  rt        | j                   j                  «      nd }t        |t        «      r,| j                   j                  }| j                   j                  }d }d }d }|j                  }		 |	j                  |«      dz   }
t        |
t!        |	«      «      D ]X  }|	|   j"                  j%                  |t&        «      x}sŒ)|t&        usŒ2|r t)        t+        t)        |d«      |«      |«      }||fc S  t-        d«       y # t        $ r t        t        ||«      |«      d fcY S w xY w)Nz1-arg super not implementedr   Ú__mro__zUnable to resolve super getattr)r7   r0   Úgetattrr6   Úas_python_constantÚpython_typeÚsourcer   Ú
issubclassÚtypeÚvaluerF   ÚindexÚ
ValueErrorr4   ÚrangeÚlenÚ__dict__Úgetr'   r   r   r   )r8   rD   ÚnameÚsearch_typeÚtype_to_useÚtype_to_use_sourcerJ   Úresolved_classÚresolved_attrÚ
search_mroÚstart_indexrN   Úresolved_getattrr:   s                €r-   Ú_resolved_getattr_and_sourcez*SuperVariable._resolved_getattr_and_sourceS   s˜  ø€ Ø�{Š{Ð9Ð9Ó9ˆ{Ø×ÒÜ˜4Ÿ<™<×:Ñ:Ó<¸dÓCÐCØ—l‘l×5Ñ5Ó7ˆð —k‘k×-Ñ-Ó/ˆà.2¯k©k×.@Ò.@ŒJ�t—{‘{×)Ñ)Ô*Àdð 	ô �k¤4Ô(ØŸ+™+×+Ñ+ˆKØ!%§¡×!3Ñ!3ÐàˆØˆØˆØ ×(Ñ(ˆ
ð	HØ$×*Ñ*¨;Ó7¸!Ñ;ˆKô ˜;¬¨J«Ó8ò 	4ˆEà#-¨eÑ#4×#=Ñ#=×#AÑ#AÀ$ÌÓ#WÐWÐÑWØ#¬>Ò9á)Ü!+Ü)Ü *Ð+=¸yÓ IÈ5óð !ó	"˜ð ,¨VÐ3Ò3ð	4ô 	Ð7Õ8øô+ ò 	Hô œ5 ¨kÓ:¸DÓAÀ4ÐGÒGð	Hús   Ã?F Æ!F3Æ2F3rT   r   c                 óV  — | j                  | |«      \  }}t        j                  j                  |«      st	        | |«      S |rIt        |j                  t        j                  «      «       t        j                  j                  ||¬«      S t        j                  j                  |«      S )N©rJ   )
r]   r	   ÚConstantVariableÚ
is_literalÚGetAttrVariabler   Ú
make_guardr   ÚCONSTANT_MATCHÚcreate)r8   rD   rT   rM   rJ   s        r-   Úvar_getattrzSuperVariable.var_getattr†   sŠ   € ð ×9Ñ9¸$ÀÓE‰ˆˆvÜ×)Ñ)×4Ñ4°UÔ;Ü" 4¨Ó.Ð.ÙÜ˜&×+Ñ+¬L×,GÑ,GÓHÔIÜ×-Ñ-×4Ñ4°UÀ6Ð4ÓJÐJÜ×)Ñ)×0Ñ0°Ó7Ð7r,   c                 ó  •— | j                  | |«      \  }}|t        j                  u rt        t        «      S |t
        j                  j                  j                  u r¡| j                  }ddl	m
} t        |t        j                  «      rht        |j                  |«      rR|sP|sNt        «       5  t        j                   t"        |¬«      j%                  || j                  g|z   |«      cd d d «       S t'        d«       �nØ| j                  j(                  rA|t        j*                  u r/|j,                  j                  j/                  | j                  «      S t        |t0        «      rVt        |j2                  t4        j6                  «      r2t        j                   |j2                  |¬«      j%                  |||«      S t        |t8        «      rat        |j2                  t4        j6                  «      r=t        j:                  |j2                  | j                  |¬«      j%                  |||«      S t        |t4        j6                  «      r6t        j                   ||¬«      j%                  || j                  g|z   |«      S t        |t4        j<                  «      r=t        j:                  |j2                  | j                  |¬«      j%                  |||«      S |t>        j@                  jB                  u rát        | j                  t        j                  «      r½| j                  j(                  r§tE        |«      dk(  r™tE        |«      dk(  r‹|d   jG                  «       rxddl$m%}	 |d   jM                  «       }
  |	|tO        | j                  j(                  |
«      «      t>        j@                  jC                  | j                  jP                  |
«      «      S |t>        j@                  jR                  t        jT                  fv r`t        | j                  t        jV                  «      r<|stE        |«      dk(  sJ ‚tX        t        jV                  | j                  �·  |d||«      S |t>        j@                  jB                  u rNt        | j                  t        jV                  «      r*tX        t        jV                  | j                  �·  |d	||«      S t]        |«      r:t        | j                  t        «      r  | j                  j^                  |g|¢­i |¤ŽS |t        j`                  u r¹|d   }	 |jM                  «       }|j,                  j                  je                  | j                  «      st'        d| j                  › d|› d�«       |j,                  j                  jg                  | j                  |t        jh                  «       «       t        jj                  d «      S t'        d|› �«       y # 1 sw Y   ŒxY w# tb        $ r t'        d
|› �«       Y Œ×w xY w)Nr   )ÚAttributeMutationNewr_   zsuper() nn.Module.__init__r   r   ©ÚVariableBuilderÚ__setitem__Ú__getitem__znon-const delattr attr: zdelattr(ú, z, ...)znon-function or method super: )6r]   Úobjectr5   ÚLambdaVariabler   ÚtorchÚnnÚModuler7   Úside_effectsrh   Ú
isinstancer	   r$   Úmutable_localr   r   r   Úcall_functionr   rJ   Ú__new__ÚoutputÚ(track_object_new_from_user_defined_classÚstaticmethodÚ__func__ÚtypesÚFunctionTypeÚclassmethodr    Ú
MethodTypeÚcollectionsÚOrderedDictrl   rQ   Úis_python_constantÚbuilderrj   rH   r   rM   rk   Ú__setattr__ÚCustomizedDictVariabler4   Úcall_methodr#   Úmethod_setattr_standardÚ__delattr__ÚNotImplementedErrorÚis_attribute_mutationÚ
store_attrÚDeletedVariabler`   )r8   rD   rT   Úargsr9   Úinner_fnrJ   r7   rh   rj   ÚkeyÚattrr:   s               €r-   r†   zSuperVariable.call_method—   sã  ø€ ð  ×<Ñ<¸TÀ4ÓHÑˆ�&Ø”v—‘Ñ&Ü!¤(Ó+Ð+ØœŸ™Ÿ™×1Ñ1Ñ1Ø—[‘[ˆFÝ;ô ˜6¤9×#FÑ#FÔGÜ˜v×3Ñ3Ð5IÔJÙ¡ä9Ó;ñ FÜ$×9Ñ9Ü0¸ôç#‘m B¨¯©¨¸Ñ(<¸fÓE÷Fñ Fô
 Ð:Ö;Ø�[‰[×Ò H´·±Ñ$>Ø—9‘9×)Ñ)×RÑRØ—‘óð ô ˜¤,Ô/´JØ×Ñœu×1Ñ1ô5
ô ×1Ñ1Ø×!Ñ!¨&ôç‰m˜B  fÓ-ð.ô ˜¤+Ô.´:Ø×Ñœu×1Ñ1ô4
ô ×/Ñ/Ø×!Ñ! 4§;¡;°vôç‰m˜B  fÓ-ð.ô ˜¤%×"4Ñ"4Ô5Ü×1Ñ1Ø ôç‰m˜B §¡ °Ñ 4°fÓ=ð>ô ˜¤%×"2Ñ"2Ô3Ü×/Ñ/Ø×!Ñ! 4§;¡;°vôç‰m˜B  fÓ-ð.ð œ×/Ñ/×;Ñ;Ñ;Ü˜4Ÿ;™;¬	×(KÑ(KÔLØ—‘×"Ò"Ü�D“	˜Q’Ü�F“˜qÒ Ø�Q‘×*Ñ*Ô,å0à�q‘'×,Ñ,Ó.ˆCØS‘? 2Ô'9¸$¿+¹+×:LÑ:LÈcÓ'RÓSÜ×'Ñ'×3Ñ3°D·K±K×4EÑ4EÀsÓKóð ð Ü×#Ñ#×/Ñ/Ü×Ñð
ñ 
ô ˜Ÿ™¤i×&FÑ&FÔGÙ¤# d£)¨q¢.Ð0Ð0Üœ×9Ñ9¸4¿;¹;ÑSØ�M 4¨óð ð œ×0Ñ0×<Ñ<Ñ<ÄØ�K‰Kœ×9Ñ9ôB
ô œ×9Ñ9¸4¿;¹;ÑSØ�M 4¨óð ô ! Ô*¬zØ�K‰KÔ2ô0
ð 7�4—;‘;×6Ñ6°rÐK¸DÒKÀFÑKÐKØœ×+Ñ+Ñ+Ø˜‘7ˆDðAØ×.Ñ.Ó0�ð —9‘9×)Ñ)×?Ñ?ÀÇÁÔLÜ ¨¯©¨°R¸°v¸VÐDÔEà�I‰I×"Ñ"×-Ñ-Ø—‘˜T¤9×#<Ñ#<Ó#>ôô ×-Ñ-¨dÓ3Ð3äÐ6°x°jÐAÕB÷YFð FûôD 'ò AÜÐ 8¸¸Ð?Ö@ðAús   Â.:W&Ô$W2 ×&W/×2XØX)NF©r1   N©rD   r%   ©r�   úList[VariableTracker]r9   úDict[str, VariableTracker]r1   r   )r(   r)   r*   r   Ú_nonvar_fieldsr5   rC   r]   Ústrrf   r†   Ú__classcell__©r:   s   @r-   r/   r/   7   sz   ø„ àðà	×	'Ñ	'ð€Nö
'ôBõ19ðf8Ð5ð 8¸Sð 8ÐEVó 8ð"_Cð &ð	_Cð
 -ð_Cð 
÷_Cñ _Cr,   r/   c                   ó&   ‡ — e Zd Zdˆ fd„Zd„ Zˆ xZS )ÚExceptionVariablec                 ó@   •— t        ‰| �  di |¤Ž || _        || _        y r3   )r4   r5   Úexc_typer�   )r8   r�   r�   r9   r:   s       €r-   r5   zExceptionVariable.__init__ú   s!   ø€ Ü‰ÑÑ"˜6Ò"Ø ˆŒØˆ�	r,   c                 ó²   ‡ ‡— ‰j                  ˆˆ fd„«       ‰j                  ‰ j                  «       ‰j                  t	        ‰ j                  «      d«       y )Nc                  óP   •— ‰ j                  d‰j                  j                  «      S )NÚbuiltins)Úload_import_fromr�   r(   ©r?   r8   s   €€r-   r@   z/ExceptionVariable.reconstruct.<locals>.<lambda>  s   ø€ �G×,Ñ,¨Z¸¿¹×9OÑ9OÓP€ r,   F)rA   Úforeachr�   rv   rQ   ©r8   r?   s   ``r-   rC   zExceptionVariable.reconstructÿ   s>   ù€ Ø×ÑÜPô	
ð 	�‰˜Ÿ	™	Ô"Ø×Ñœc $§)¡)›n¨eÕ4r,   r‘   )r(   r)   r*   r5   rC   r˜   r™   s   @r-   r›   r›   ù   s   ø„ õö
5r,   r›   c                   ó   — e Zd ZdZy)ÚUnknownVariablez
    It could be anything!
    N©r(   r)   r*   Ú__doc__r+   r,   r-   r¦   r¦     ó   „ òr,   r¦   c                   ó   — e Zd ZdZy)ÚDelayGraphBreakVariablez^
    Used to insert a dummy variable in the stack to do the graph break at CALL_FUNCTION.
    Nr§   r+   r,   r-   r«   r«     r©   r,   r«   c                   óB   — e Zd ZdZd„ Zdddeddfd„Z	 	 	 	 	 	 	 	 dd	„Zy
)ÚComptimeVariableza
    This variable is special, it lets you execute arbitrary code at
    Dynamo compile time
    c                 ó   — t        d«      ‚)Nzcomptime is special form)r‰   r¤   s     r-   rC   zComptimeVariable.reconstruct  s   € Ü!Ð"<Ó=Ð=r,   rD   r%   rT   r1   r   c                 ój   — ddl m } ddlm}  |t        ||«      t	        | j
                  |«      ¬«      S )Nr   )Úcomptimer   )r   r_   )r°   Ú	functionsr   rG   r   rJ   )r8   rD   rT   r°   r   s        r-   rf   zComptimeVariable.var_getattr  s.   € Ý'õ 	4á#Ü�H˜dÓ#¬J°t·{±{ÀDÓ,Iô
ð 	
r,   c                 óp  — ddl m} |rJ ‚t        |«      dk  sJ ‚|d   }t        |t        «      r |j                  «        ||«      «       nÌt        |t        «      r¥|j                  «       }|j                  rJ d|j                  › �«       ‚t        j                  ||j                  |j                  j                  «       |j                  rt!        |j                  j"                  «      nd d«      } | ||«      «       nt%        dt'        |«      › �«      ‚t(        j*                  j-                  d «      S )Nr   )ÚComptimeContextr   zOcomptime function must not have free variables, but these variables were free: r+   z"unsupported argument to comptime: )r°   r³   rQ   rt   r   Úget_functionr   Úget_codeÚclosureÚco_freevarsr|   r}   Ú	f_globalsÚfn_namerH   ÚdefaultsÚtupleÚitemsÚRuntimeErrorrL   r	   r`   re   )r8   rD   r�   r9   r³   ÚfnÚcodeÚfuncs           r-   rv   zComptimeVariable.call_function&  s  € õ 	/ñ Ðˆzä�4‹y˜AŠ~Ðˆ~Ø�!‰WˆÜ�bÔ.Ô/ØˆB�O‰OÓ™o¨bÓ1Õ2Ü˜Ô6Ô7à—;‘;“=ˆDØ—z’zð ð2Ø26×2BÑ2BÐ1CðEó�>ô ×%Ñ%ØØ—‘Ø—
‘
×-Ñ-Ó/Ø,.¯KªK”�b—k‘k×'Ñ'Ô(¸Tð óˆDñ ‘ Ó$Õ%äÐ!CÄDÈÃHÀ:ÐNÓOÐOä×)Ñ)×0Ñ0°Ó6Ð6r,   N©rD   r%   r�   r”   r9   r•   r1   r   )r(   r)   r*   r¨   rC   r—   rf   rv   r+   r,   r-   r­   r­     sS   „ ñò
>ð
Ð5ð 
¸Sð 
ÐEVó 
ð'7à#ð'7ð &ð'7ð -ð	'7ð
 
ô'7r,   r­   c                   óD   ‡ — e Zd Zdhej                  £Zdˆ fd„Zd„ Zˆ xZS )ÚClosureVariablerT   c                 ó2   •— t        ‰| �  di |¤Ž || _        y r3   ©r4   r5   rT   ©r8   rT   r9   r:   s      €r-   r5   zClosureVariable.__init__V  ó   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�	r,   c                 óX   — |j                  |j                  | j                  «      «       y r=   ©Úappend_outputÚcreate_load_closurerT   r¤   s     r-   rC   zClosureVariable.reconstructZ  ó   € Ø×Ñ˜g×9Ñ9¸$¿)¹)ÓDÕEr,   r‘   ©r(   r)   r*   r¦   r–   r5   rC   r˜   r™   s   @r-   rÃ   rÃ   P  ó&   ø„ àðà	×	'Ñ	'ð€Nõ
öFr,   rÃ   c                   óD   ‡ — e Zd Zdhej                  £Zdˆ fd„Zd„ Zˆ xZS )ÚInlinedClosureVariablerT   c                 ó2   •— t        ‰| �  di |¤Ž || _        y r3   rÅ   rÆ   s      €r-   r5   zInlinedClosureVariable.__init__e  rÇ   r,   c                 óX   — |j                  |j                  | j                  «      «       y r=   rÉ   r¤   s     r-   rC   z"InlinedClosureVariable.reconstructi  rÌ   r,   r‘   rÍ   r™   s   @r-   rÐ   rÐ   _  rÎ   r,   rÐ   c                   ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚNewCellVariablec                 ó$   •— t        ‰| �  di |¤Ž y r3   ©r4   r5   ©r8   r9   r:   s     €r-   r5   zNewCellVariable.__init__n  ó   ø€ Ü‰ÑÑ"˜6Ó"r,   r‘   ©r(   r)   r*   r5   r˜   r™   s   @r-   rÔ   rÔ   m  ó   ø„ ÷#ñ #r,   rÔ   c                   ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚNewGlobalVariablec                 ó$   •— t        ‰| �  di |¤Ž y r3   rÖ   r×   s     €r-   r5   zNewGlobalVariable.__init__s  rØ   r,   r‘   rÙ   r™   s   @r-   rÜ   rÜ   r  rÚ   r,   rÜ   c                   ó’   ‡ — e Zd ZdZddhej
                  £Zed„ «       Zdeddfˆ fd„Zd	d
de	ddfˆ fd„Z
	 	 	 	 	 	 dˆ fd„Zd„ Zˆ xZS )ÚInspectSignatureVariablez!represents inspect.signature(...)Ú	signatureÚ
parametersc                 ót   — |rt        d|› �«       t        | t        j                  j	                  «       ¬«      S )Nzinspect.signature with ©ru   )r   rß   r	   ÚbaseÚMutableLocal)Úcallabler9   s     r-   re   zInspectSignatureVariable.create€  s4   € áÜÐ3°F°8Ð<Ô=Ü'Ø¤I§N¡N×$?Ñ$?Ó$Aô
ð 	
r,   Ú	inspectedr1   Nc                 ób  •— t        ‰| �  di |¤Ž || _        t        | j                  t        «      ry| j                  j                  «       | _        t        j                  | j                  «      | _        t        | j                  j                  j                  «       «      dd  | _
        y t        | j                  t        «      rv| j                  j                  «       | _        t        j                  | j                  «      | _        t        | j                  j                  j                  «       «      | _
        y | j                  j                  «       | _        t        j                  | j                  «      | _        t        | j                  j                  j                  «       «      | _
        y )Nr   r+   )r4   r5   rç   rt   r    r´   r¾   Úinspectrà   Úlistrá   r¼   r   rH   )r8   rç   r9   r:   s      €r-   r5   z!InspectSignatureVariable.__init__ˆ  s  ø€ Ü‰ÑÑ"˜6Ò"Ø"ˆŒä�d—n‘nÔ&8Ô9Ø—n‘n×1Ñ1Ó3ˆDŒGÜ$×.Ñ.¨t¯w©wÓ7ˆDŒNÜ" 4§>¡>×#<Ñ#<×#BÑ#BÓ#DÓEÀaÀbÐIˆD�OÜ˜Ÿ™Ô(<Ô=Ø—n‘n×1Ñ1Ó3ˆDŒGÜ$×.Ñ.¨t¯w©wÓ7ˆDŒNÜ" 4§>¡>×#<Ñ#<×#BÑ#BÓ#DÓEˆD�Oà—n‘n×7Ñ7Ó9ˆDŒGÜ$×.Ñ.¨t¯w©wÓ7ˆDŒNÜ" 4§>¡>×#<Ñ#<×#BÑ#BÓ#DÓEˆD�Or,   rD   r%   rT   r   c           
      óø   •— |dk(  r`t        j                  | j                  D �ci c]1  }t         j                  j	                  |d   «      t        |d   «      “Œ3 c}t        ¬«      S t        ‰| �!  ||«      S c c}w )Nrá   r   r   )Úuser_cls)	r	   ÚConstDictVariablerá   r`   re   ÚInspectParameterVariableÚdictr4   rf   )r8   rD   rT   Úparamr:   s       €r-   rf   z$InspectSignatureVariable.var_getattr™  sƒ   ø€ Ø�<ÒÜ×.Ñ.ð
 "&§¡ö	ð ô ×.Ñ.×5Ñ5Ø˜a™óä/°°a±Ó9ñ:òô ôð ô ‰wÑ" 2 tÓ,Ð,ùòs   ¤6A7c           
      ót  •— |dk(  �rt        | j                  d«      st        d| j                  › d�«        | j                  j                  |i |¤Ž}i }| j                  j
                  r¥t        j                  t        |¬«      }| j                  j
                  D �ci c])  }|| j                  €d nt        | j                  |d¬«      “Œ+ }	}| j                  j
                  j                  «       D ��
ci c]  \  }}
| ||
|	|   ¬«      “Œ }}}
t        ||| «      S t        ‰| �9  ||||«      S c c}w c c}
}w )	NÚbindÚ__kwdefaults__zinspect.signature.bind with z without __kwdefaults__)rD   T)Úis_kw)ÚvalrJ   )Úhasattrr¾   r   rà   rò   ró   Ú	functoolsÚpartialr!   rJ   r   r¼   ÚInspectBoundArgumentsVariabler4   r†   )r8   rD   rT   r�   r9   Úobjrº   ÚwrapÚkÚkwdefaults_sourcesÚvr:   s              €r-   r†   z$InspectSignatureVariable.call_method¦  sJ  ø€ ð �6‹>Ü˜4Ÿ7™7Ð$4Ô5ÜØ2°4·7±7°)Ð;RÐSôð &�$—.‘.×%Ñ% tÐ6¨vÑ6ˆCð ˆHØ�w‰w×%Ò%Ü ×(Ñ(¬¸BÔ?�ð
 "ŸW™W×3Ñ3ö	&ð ð Ø—{‘{Ð*ñ ä'¨¯©°Q¸dÔCñDð&Ð"ð &ð !%§¡× 6Ñ 6× <Ñ <Ó >÷á˜˜1ð ‘t Ð*<¸QÑ*?Ô@Ñ@ð�ñ ô
 1ØØØóð ô
 ‰wÑ" 2 t¨T°6Ó:Ð:ùò!&ùós   Â.D/Ã5D4c                 óˆ   ‡— ‰j                  ˆfd„«        ‰| j                  «       ‰j                  t        dd«      «       y )Nc                  ón   •— ‰ j                  ‰ j                  t        «      ‰ j                  d«      g«      S )Nrà   )rB   Úcreate_load_python_moduleré   Úcreate_load_attr©r?   s   €r-   r@   z6InspectSignatureVariable.reconstruct.<locals>.<lambda>Ì  s3   ø€ �G×)Ñ)à×5Ñ5´gÓ>Ø×,Ñ,¨[Ó9ðó€ r,   r   F)rA   rç   rB   r
   r¤   s    `r-   rC   z$InspectSignatureVariable.reconstructÊ  s:   ø€ Ø×Ñóô	
ñ 	�—‘ÔØ×ÑÔ2°1°eÓ<Õ=r,   r“   )r(   r)   r*   r¨   r   r–   rz   re   r5   r—   rf   r†   rC   r˜   r™   s   @r-   rß   rß   w  s”   ø„ Ù+ð 	Øðð 
×	'Ñ	'ð€Nð ñ
ó ð
ðF /ð FÀõ Fð"-Ð5ð -¸Sð -ÐEVõ -ð";ð &ð	";ð
 -ð";ð 
õ";öH
>r,   rß   c                   ó8   ‡ — e Zd ZdZd	ˆ fd„Zdddeddfd„Zˆ xZS )
rî   z!represents inspect.Parameter(...)r1   c                 ó2   •— t        ‰| �  di |¤Ž || _        y r3   ©r4   r5   rM   ©r8   rM   r9   r:   s      €r-   r5   z!InspectParameterVariable.__init__Ú  ó   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�
r,   rD   r%   rT   r   c                 ó  — ddl m}m} 	 t        | j                  |«      }| j
                  r%t        | j
                  |«      }  |||«      |«      S |j                  ||«      S # t        $ r t        d| j                  › d|› d�«       Y y w xY w)Nr   ©ÚSourcelessBuilderrj   zgetattr(rm   ú))
rƒ   r  rj   rG   rM   rJ   r   re   ÚAttributeErrorr   )r8   rD   rT   r  rj   Ú
attr_valueÚattr_sources          r-   rf   z$InspectParameterVariable.var_getattrÞ  s‚   € ß?ð	<Ü  §¡¨TÓ2ˆJØ�{Š{Ü(¨¯©°dÓ;�Ø7‘ r¨;Ó7¸
ÓCÐCà(×/Ñ/°°JÓ?Ð?øÜò 	<Ü˜H T§Z¡Z L°°4°&¸Ð:Ö;ð	<ús   ŠAA# ÁA# Á#%BÂ
Br‘   )r(   r)   r*   r¨   r5   r—   rf   r˜   r™   s   @r-   rî   rî   ×  s'   ø„ Ù+õð<Ð5ð <¸Sð <ÐEV÷ <r,   rî   c                   óª   ‡ — e Zd ZdZddhej
                  £Zdej                  dee	ef   de
fˆ fd„Zd„ Zdd	d
e	ddfˆ fd„Z	 	 	 	 	 	 dˆ fd„Zd„ Zˆ xZS )rù   z+represents inspect.signature(...).bind(...)Úbound_argumentsÚpacked_varsrº   rà   c           
      óT  •— t        ‰| �  di |¤Ž || _        || _        t	        «       | _        i }|j                  j                  «       D �]  \  }}t        j                  |«      }t        |t        «      r=t        j                  t        |«      «      ||<   | j
                  j                  |«       Œit        |t        «      ri| j
                  j                  |«       t        j                   |j                  «       D �	�
ci c]  \  }	}
t        j                  |	«      |
“Œ c}
}	«      ||<   Œât        |t"        «      r|||<   Œøt%        d«       �Œ t        j                   |t'        |j                  «      t        j(                  j+                  «       ¬«      | _        || _        y c c}
}	w )NzKinspect.signature(...).bind(...).arguments contains non-variable/tuple/dictrã   r+   )r4   r5   r  rº   Úsetr  Ú	argumentsr¼   r	   r`   rt   r»   ÚTupleVariablerê   Úaddrï   rí   r   r   rL   rä   rå   Úbound_arguments_varrà   )r8   r  rº   rà   r9   Úarguments_dictr�   rõ   Úkey_varrü   rþ   r:   s              €r-   r5   z&InspectBoundArgumentsVariable.__init__ø  s]  ø€ ô 	‰ÑÑ"˜6Ò"Ø.ˆÔØ ˆŒä›5ˆÔàˆØ'×1Ñ1×7Ñ7Ó9ó 	‰HˆC�Ü×0Ñ0°Ó5ˆGä˜#œuÔ%Ü*3×*AÑ*AÄ$ÀsÃ)Ó*L�˜wÑ'Ø× Ñ ×$Ñ$ SÕ)Ü˜C¤Ô&Ø× Ñ ×$Ñ$ SÔ)Ü*3×*EÑ*EØBEÇ)Á)Ã+×N¹$¸!¸Q”Y×/Ñ/°Ó2°AÑ5ÓNó+�˜wÒ'ô ˜C¤Ô1Ø*-�˜wÒ'äØaöð	ô$ $-×#>Ñ#>ØÜ�×*Ñ*Ó+Ü#Ÿ.™.×5Ñ5Ó7ô$
ˆÔ ð
 #ˆ�ùó Os   Ä  F$c                 óü  — | j                   j                  j                  «       D ]Ï  \  }}|}|j                  | j                  v r�t	        |t
        j                  «      rt        |j                  «      }n]t	        |t
        j                  «      r8|j                  j                  «       D ��ci c]  \  }}|j                  |“Œ }}}nt        d«       || j                  j                  |j                  <   ŒÑ y c c}}w )Nz>inspect.signature(...).bind(...) cannot update bound arguments)r  r¼   Úunderlying_valuer  rt   r	   r  r»   rí   r   r  r  )r8   r�   rõ   Útrue_valrü   rþ   s         r-   Ú_update_bound_argumentsz5InspectBoundArgumentsVariable._update_bound_arguments  sÑ   € Ø×0Ñ0×6Ñ6×<Ñ<Ó>ò 	L‰HˆC�ØˆHØ×#Ñ# t×'7Ñ'7Ñ7Ü˜c¤9×#:Ñ#:Ô;Ü$ S§Y¡YÓ/‘HÜ ¤Y×%@Ñ%@ÔAØBEÇ)Á)Ç/Á/ÓBS×T¹$¸!¸Q × 2Ñ 2°AÑ 5ÐT�HÒTä!ØXôð DLˆD× Ñ ×*Ñ*¨3×+?Ñ+?Ò@ñ	Lùó  Us   Â,C8rD   r%   rT   r1   r   c                 óê  •— |dk(  r| j                   S |dk(  rB| j                  «        t        j                  t	        | j
                  j                  «      «      S |dk(  ro| j                  «        | j
                  j                  j                  «       D ��ci c]  \  }}t        j                  |«      |“Œ }}}t        j                  |«      S |dk(  r| j                  S t        ‰| �5  ||«      S c c}}w )Nr  r�   r9   rà   )r  r  r	   r  rê   r  r�   r9   r¼   r`   rí   rà   r4   rf   )r8   rD   rT   r�   rõ   Úkwr:   s         €r-   rf   z)InspectBoundArgumentsVariable.var_getattr-  sä   ø€ Ø�;ÒØ×+Ñ+Ð+Ø�VŠ^Ø×(Ñ(Ô*Ü×*Ñ*¬4°×0DÑ0D×0IÑ0IÓ+JÓKÐKØ�XÒØ×(Ñ(Ô*ð !%× 4Ñ 4× ;Ñ ;× AÑ AÓ C÷á�C˜ô ×*Ñ*¨3Ó/°Ñ4ðˆBñ ô ×.Ñ.¨rÓ2Ð2Ø�[Ò Ø—>‘>Ð!Ü‰wÑ" 2 tÓ,Ð,ùós   Â C/c                 óH  •— |dk(  r‹| j                   j                  «       D ]I  \  }}t        j                  |«      }|| j                  vsŒ*| j                  j                  |d||gi «       ŒK | j                  «        t        j                  d «      S t        ‰| �  ||||«      S )NÚapply_defaultsrk   )rº   r¼   r	   r`   r  r†   r  r4   )	r8   rD   rT   r�   r9   r�   rõ   r  r:   s	           €r-   r†   z)InspectBoundArgumentsVariable.call_method>  s¢   ø€ ð Ð#Ò#à ŸM™M×/Ñ/Ó1ò ‘��SÜ#×4Ñ4°SÓ9�Ø $×":Ñ":Ò:Ø×,Ñ,×8Ñ8Ø˜M¨G°S¨>¸2õðð ×(Ñ(Ô*ä×-Ñ-¨dÓ3Ð3Ü‰wÑ" 2 t¨T°6Ó:Ð:r,   c                 óJ  ‡ ‡— ‰ j                  «        ˆˆ fd„}‰j                  |d¬«       ‰j                  ‰ j                  j                  «       ‰j                  t        dt        ‰ j                  j                  «      ¬«      «       ‰ j                  j                  j                  «       D ]-  \  }}‰j                  ‰j                  |«      «        ‰|«       Œ/ ‰j                  t        dt        ‰ j                  j                  «      ¬«      t        dd¬«      g«       y )	Nc                  ój   •—  ‰ ‰j                   «       ‰ j                  ‰ j                  d«      «       y )Nrò   )rà   rÊ   r  r¢   s   €€r-   Úgen_fnz9InspectBoundArgumentsVariable.reconstruct.<locals>.gen_fnZ  s(   ø€ Ù�D—N‘NÔ#Ø×!Ñ! '×":Ñ":¸6Ó"BÕCr,   T©Úcall_function_exÚBUILD_TUPLE©ÚargÚ	BUILD_MAPÚCALL_FUNCTION_EXr   )r  rA   r£   r  r�   rÊ   r   rQ   r9   r¼   Úcreate_load_constrB   )r8   r?   r%  r�   rõ   s   ``   r-   rC   z)InspectBoundArgumentsVariable.reconstructT  sò   ù€ ð 	×$Ñ$Ô&õ	Dð 	×Ñ˜f°tÐÔ<à�‰˜×,Ñ,×1Ñ1Ô2Ø×ÑÜ˜}´#°d×6JÑ6J×6OÑ6OÓ2PÔQô	
ð ×,Ñ,×3Ñ3×9Ñ9Ó;ò 	‰HˆC�Ø×!Ñ! '×";Ñ";¸CÓ"@ÔAÙ�C�Lð	ð 	×Ñä" ;´C¸×8LÑ8L×8SÑ8SÓ4TÔUÜ"Ð#5¸1Ô=ðõ	
r,   r“   )r(   r)   r*   r¨   r   r–   ré   ÚBoundArgumentsr   r—   rß   r5   r  rf   r†   rC   r˜   r™   s   @r-   rù   rù   ì  s¡   ø„ Ù5ð 	Øðð 
×	'Ñ	'ð€Nð%#à ×/Ñ/ð%#ð �s˜OÐ+Ñ,ð%#ð ,õ	%#òNLð-Ð5ð -¸Sð -ÐEVõ -ð";ð &ð	;ð
 -ð;ð 
õ;ö,
r,   rù   c                 ó(   ‡ — ˆ fd„}t         |_        |S )Nc                  ó(   •—  ‰j                   | i |¤ŽS r=   )Úapply)r�   r9   Úfn_clss     €r-   Útrampoline_autograd_applyzDproduce_trampoline_autograd_apply.<locals>.trampoline_autograd_applyq  s   ø€ Øˆv�|‰|˜TÐ, VÑ,Ð,r,   )Ú!produce_trampoline_autograd_applyÚ_origin)r2  r3  s   ` r-   r4  r4  p  s   ø€ ô-ô )JÐÔ%Ø$Ð$r,   c                   ój   ‡ — e Zd ZdZdhej
                  £Zdˆ fd„Zd	d„Zd	d„Zd	d„Z		 	 	 	 d
d„Z
ˆ xZS )ÚAutogradFunctionVariablez-represents a torch.autograd.Function subclassr2  c                 ó2   •— t        ‰| �  di |¤Ž || _        y r3   )r4   r5   r2  )r8   r2  r9   r:   s      €r-   r5   z!AutogradFunctionVariable.__init__€  s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�r,   c           	      óø  ‡‡— dŠˆˆfd„}t        j                  |||f«       ‰�rDt        j                  «       �r/t        j
                  �rddlm} ddlm	} | j                  j                  } || j                  j                  «      }|r1 || j                  j                  | j                  j                  «      }| j                  j                  }	|	t        j                  j                  j                  urt!        d«       | j                  j"                  }
|
t        j                  j                  j"                  urt!        d«       dd	lm} | j(                  }|€Ct+        ‰j-                  | j                  j.                  «      | j                  j0                  «      } ||| j                  j2                  |t+        |d
¬«      ¬«      j5                  ‰||«      }| j(                  r~t+        | j(                  d«      }t7        |j9                  t:        j<                  «      «       |r>t+        | j(                  d«      }t7        |j9                  t:        j<                  «      «       |S | j(                  rt+        | j(                  d«      }nd }| j                  j                  }t>        jA                  ‰||«      }|g|¢}tC        |tD        jF                  «      r(tI        jJ                  ||¬«      j5                  ‰||«      S tC        |tD        jL                  «      rPtI        jN                  |jP                  tI        jR                  | j                  «      |¬«      j5                  ‰||«      S t!        d|› �«       y )NFc                 ó¸   •— t        | t        j                  «      r| j                  durdŠt        | t        j                  «      r| j                  ‰«      rdŠy y y )NFT)rt   r	   ÚTensorVariableÚrequires_gradÚNNModuleVariableÚis_training)Únoder<  rD   s    €€r-   Úvisitz2AutogradFunctionVariable.call_apply.<locals>.visit‡  sS   ø€ ä˜$¤	× 8Ñ 8Ô9Ø×%Ñ%¨UÑ2Ø$(�MÜ˜$¤	× :Ñ :Ô;Ø×#Ñ# BÔ'Ø$(‘Mð (ð <r,   r   )Ú#autograd_function_forward_rewritten)Ú_is_setup_context_definedzNYI - User defind vjpzNYI - User defind jvpr   )ÚAutogradFunctionApplyVariabler1  )Úmemberr_   ÚforwardÚsetup_contextz?non-function or method in subclass of torch.autograd.Function: )*r   r@  rp   Úis_grad_enabledr   Úcapture_autograd_functionÚ"torch._functorch.autograd_functionrA  Útorch.autograd.functionrB  r2  rE  rF  ÚvjpÚautogradÚFunctionr   ÚjvpÚhigher_order_opsrC  rJ   r   Úimport_sourcer)   r(   Úbackwardrv   r   rc   r   ÚFUNCTION_MATCHÚAutogradFunctionContextVariablere   rt   r|   r}   r	   r   r   r    r{   ÚUserDefinedClassVariable)r8   rD   r�   r9   r@  rA  rB  Ú
forward_fnÚis_setup_ctx_definedÚvjp_fnÚjvp_fnrC  rJ   rõ   Úfwd_srcÚsetup_ctx_srcr¾   Úctxr<  s    `                @r-   Ú
call_applyz#AutogradFunctionVariable.call_apply„  s¹  ù€ Øˆõ	)ô 	×Ñ˜e d¨F ^Ô4ò Ü×%Ñ%Õ'Ü×0Ó0õõ JàŸ™×,Ñ,ˆJá#<¸T¿[¹[×=VÑ=VÓ#WÐ Ù#ñ AØ—K‘K×'Ñ'¨¯©×)BÑ)Bó�
ð —[‘[—_‘_ˆFØœUŸ^™^×4Ñ4×8Ñ8Ñ8ÜÐ5Ô6à—[‘[—_‘_ˆFØœUŸ^™^×4Ñ4×8Ñ8Ñ8ÜÐ5Ô6åGà—[‘[ˆFØˆ~Ü#Ø×$Ñ$ T§[¡[×%;Ñ%;Ó<¸d¿k¹k×>RÑ>Ró�ñ 0ØØ—‘×$Ñ$ØÜ! &°Ô9ô	÷
 ‰m˜B  fÓ-ð ð �{Š{Ü$ T§[¡[°)Ó<�Ü˜g×0Ñ0´×1LÑ1LÓMÔNÙ'Ü$.¨t¯{©{¸OÓ$L�MÜ! -×":Ñ":¼<×;VÑ;VÓ"WÔXàˆJà�;Š;Ü §¡¨YÓ7‰FàˆFà�[‰[× Ñ ˆÜ-×4Ñ4°R¸¸vÓFˆØˆ|�dˆ|ˆÜ�bœ%×,Ñ,Ô-Ü×1Ñ1°"¸VÔD×RÑRØ�D˜&óð ô ˜œE×,Ñ,Ô-Ü×/Ñ/Ø—‘Ü×2Ñ2°4·;±;Ó?Øô÷ ‰m˜B  fÓ-ð	.ô ØQÐRTÐQUÐVõr,   c                 ó|  — | j                   j                  }t        | j                  d«      | _        t	        |d   j
                  «      t        j                  j                  j                  u sJ ‚t        |t        j                  «      sJ ‚t        j                  || j                  ¬«      j                  |||«      S )NrQ  r   r_   )r2  rQ  r   rJ   rL   rM   rp   Ú_dynamoÚexternal_utilsÚFakeBackwardCFunctionrt   r|   r}   r	   r   rv   )r8   rD   r�   r9   r¾   s        r-   Úcall_backwardz&AutogradFunctionVariable.call_backwardá  s�   € Ø�[‰[×!Ñ!ˆÜ  §¡¨jÓ9ˆŒÜ�D˜‘G—M‘MÓ"¤e§m¡m×&BÑ&B×&XÑ&XÑXÐXÐXÜ˜"œe×0Ñ0Ô1Ð1Ð1ä×-Ñ-¨b¸¿¹ÔE×SÑSØ��fó
ð 	
r,   c                 ó,   — t        | j                  «      S r=   )r7  r2  ©r8   rD   r�   r9   s       r-   rv   z&AutogradFunctionVariable.call_functionë  s   € Ü'¨¯©Ó4Ð4r,   c           
      ó”  — ddl m} ddlm} |dk(  rj || j                  «      rEt        | j                  «      } || |j                  j                  d|gt        ||«      ¢­Ž ¬«      S | j                  |||«      S |dk(  r| j                  |||«      S dd	lm } | j                  �t        | j                  |«      nd }		 t        j                  | j                  |«      }
t#        |
t$        «      rx|
j'                  | j                  «      }|	�3|j)                  |«      j+                  ||	¬
«      j-                  |||«      S  |j)                  |«      |«      j-                  |||«      S t#        |
t.        «      r3t1        j2                  |
j4                  | |	¬
«      j-                  |||«      S t7        d|› �«       y # t         $ r d }
Y Œçw xY w)Nr   )Úis_callable_allowedr   )Úwrap_fx_proxyr1  rv   )rD   ÚproxyrQ  )Útrace_rulesr_   zUnsupported method: )rh  re  rƒ   rf  r2  r4  rx   Úcreate_proxyr   r\  ra  Ú rJ   r   ré   Úgetattr_staticr  rt   rz   Ú__get__ÚlookupÚcreate_with_sourcerv   r~   r	   r    r{   r   )r8   rD   rT   r�   r9   re  rf  r3  rh  rJ   rú   rÀ   s               r-   r†   z$AutogradFunctionVariable.call_methodî  s»  € õ 	6Ý*à�7Š?Ù" 4§;¡;Ô/Ü,MØ—K‘Kó-Ð)ñ %ØØ0˜"Ÿ)™)×0Ñ0Ø'Ø1ðô +¨4°Ó8òôð ð —‘ r¨4°Ó8Ð8à�ZÒØ×%Ñ% b¨$°Ó7Ð7å&à6:·k±kÐ6M”Z §¡¨TÔ2ÐSWˆFðÜ×,Ñ,¨T¯[©[¸$Ó?�ô ˜#œ|Ô,Ø—{‘{ 4§;¡;Ó/�ØÐ%à#×*Ñ*¨4Ó0ß+Ñ+¨D¸Ð+Ó@ß&™ r¨4°Ó8ðð 4˜;×-Ñ-¨dÓ3°DÓ9×GÑGØ˜D &óð ô ˜C¤Ô-Ü ×3Ñ3Ø—L‘L $¨vôç‘-  D¨&Ó1ð2ô Ð 4°T°FÐ;Õ<øô) "ò Ø’ðús   Â? F9 Æ9GÇGr‘   r’   )r�   r”   r9   r•   )r(   r)   r*   r¨   r   r–   r5   r\  ra  rv   r†   r˜   r™   s   @r-   r7  r7  x  sO   ø„ Ù7ð 	ðà	×	'Ñ	'ð€Nõ
ó[óz
ó5ð6=ð &ð	6=ð
 -÷6=r,   r7  c                   óD   — e Zd ZU  ej                  e¬«      Zee   e	d<   y)ÚSavedTensorBox)Údefault_factoryÚtensorsN)
r(   r)   r*   ÚdataclassesÚfieldrê   rr  r   r   Ú__annotations__r+   r,   r-   rp  rp  '  s   … à%6 [×%6Ñ%6ÀtÔ%L€GˆT�/Ñ"ÔLr,   rp  c                   ó”   ‡ — e Zd ZdZdddhej
                  £Z	 	 	 	 	 	 d
	 dˆ fd„Zeddd„«       Zd„ Z		 	 	 	 	 	 dˆ fd„Z
dˆ fd	„Zˆ xZS )rS  zZ
    Tracks an autograd.Function() context using mutation tracking in side_effects.py
    rg  Ú	inferenceÚsaved_tensorsc                 óp   •— t        ‰	| �  d||dœ|¤Ž || _        || _        || _        || _        || _        y ©N)rM   Ú
value_typer+   )r4   r5   rw  rg  rx  Úneeds_input_gradÚnon_differentiable)
r8   rM   r{  rw  rg  rx  r|  r}  r9   r:   s
            €r-   r5   z(AutogradFunctionContextVariable.__init__8  sB   ø€ ô 	‰ÑÐF˜u°ÑF¸vÒFØ"ˆŒØˆŒ
Ø*ˆÔØ 0ˆÔØ"4ˆÕr,   c                 óÒ  — d }|r|st        d„ |D «       «      }| j                  j                  dt        j                  j
                  j                  di «      }| j                  j                  j                  d t        j                  j
                  j                  t        j                  t        d|t        «       |¬«      i «      }t        |j                  |j                  «       |S )Nc              3   ól   K  — | ],  }t        |t        j                  «      xr |j                  –— Œ. y ­wr=   )rt   r	   r;  r<  ©Ú.0Úxs     r-   ú	<genexpr>z9AutogradFunctionContextVariable.create.<locals>.<genexpr>N  s1   è ø€ ò %àô ˜1œi×6Ñ6Ó7ÒK¸A¿O¹OÓKñ%ùs   ‚24rv   r+   T)rw  rg  rx  r|  )r»   rx   ri  rp   rL  ÚfunctionÚFunctionCtxrs   Útrack_object_newr÷   rø   rS  rp  r   r?  rM   )rD   r�   r9   r|  rg  Úouts         r-   re   z&AutogradFunctionContextVariable.createJ  sÄ   € àÐÙ™Ü$ñ %àô%ó  Ðð —	‘	×&Ñ&ØœUŸ^™^×4Ñ4×@Ñ@À"Àbó
ˆð �i‰i×$Ñ$×5Ñ5ØÜ�N‰N×#Ñ#×/Ñ/Ü×ÑÜ/ØØÜ,Ó.Ø!1ôð ó
ˆô 	˜%Ÿ*™* c§i¡iÔ0àˆ
r,   c                 óH   — | j                   €t        d«       | j                   S )Nzproxy not set)rg  r   ©r8   s    r-   Úas_proxyz(AutogradFunctionContextVariable.as_proxye  s   € Ø�:‰:ÐÜ˜/Ô*Ø�z‰zÐr,   c                 ó–  •— |dk(  rt         ‰| �  ||||«      S |dk(  rCt        |«      dk(  sJ ‚t        |i «      d   | _        t
        j                  j                  d «      S |dk7  rt        d|› �«       | j                  €t        d«       | j                  s6| j                  r|rJ ‚|j                  j                  j                  | |«       t        | j                  j                  «      dkD  rg | j                  _        |D ]'  }| j                  j                  j!                  |«       Œ) t
        j                  j                  d «      S )Nr„   Úmark_non_differentiabler   Úsave_for_backwardz"autograd.Function context method: zCsave_for_backward only supported on a newly constructed FunctionCtx)r4   r†   rQ   r   r}  r	   r`   re   r   rx  rw  rJ   rx   rs   Útrack_save_for_backwardrr  Úappend)r8   rD   rT   r�   r9   r*  r:   s         €r-   r†   z+AutogradFunctionContextVariable.call_methodj  s4  ø€ ð �=Ò Ü‘7Ñ& r¨4°°vÓ>Ð>ØÐ.Ò.Ü�v“; !Ò#Ð#Ð#Ü&7¸¸bÓ&AÀ!Ñ&DˆDÔ#Ü×-Ñ-×4Ñ4°TÓ:Ð:àÐ&Ò&ÜÐ>¸t¸fÐEÔFØ×ÑÐ%ÜØUôð �~Š~Ø—;’;¡vÐ-Ð-Ø�I‰I×"Ñ"×:Ñ:¸4ÀÔFô ˆt×!Ñ!×)Ñ)Ó*¨QÒ.Ø)+ˆD×ÑÔ&Øò 	3ˆCØ×Ñ×&Ñ&×-Ñ-¨cÕ2ð	3ä×)Ñ)×0Ñ0°Ó6Ð6r,   c                 óÞ  •‡ ‡‡— ‰dv rt        ˆˆ ˆfd„«      S ‰dk(  r>‰ j                  �2t        j                  t	        ‰ j                  j
                  «      «      S ‰dk(  r~‰ j                  �)t        j                  j                  ‰ j                  «      S ‰ j                  r=ddl
m}   |‰t        ‰ j                  d«      «      ‰ j                  j                  «      S t        ‰‰ �=  ‰‰«      S )N)r�  rŒ  c                  ó,   •— ‰j                  ‰‰| |«      S r=   )r†   )r�   r9   rT   r8   rD   s     €€€r-   r@   z=AutogradFunctionContextVariable.var_getattr.<locals>.<lambda>�  s   ø€ ¨×(8Ñ(8¸¸TÀ4ÈÓ(P€ r,   rx  r|  r   ri   )ro   rx  r	   r  rê   rr  r|  r`   re   rJ   rƒ   rj   r   rM   r4   rf   ©r8   rD   rT   rj   r:   s   ``` €r-   rf   z+AutogradFunctionContextVariable.var_getattrŠ  sÒ   û€ ØÐCÑCÜ!ÝPóð ð �?Ò" t×'9Ñ'9Ð'EÜ×*Ñ*¬4°×0BÑ0B×0JÑ0JÓ+KÓLÐLØÐ%Ò%Ø×$Ñ$Ð0Ü ×1Ñ1×8Ñ8¸×9NÑ9NÓOÐOØ�{Š{Ý4àW‘ r¬:°d·k±kÐCUÓ+VÓWØ—J‘J×/Ñ/óð ô ‰wÑ" 2 tÓ,Ð,r,   )NFNNNNr‘   ©NNr’   r“   )r(   r)   r*   r¨   r$   r–   r5   rz   re   rŠ  r†   rf   r˜   r™   s   @r-   rS  rS  ,  s”   ø„ ñð
 	ØØðð 
#×	1Ñ	1ð	€Nð ØØØØØð5ð 
õ5ð$ óó ðò4ð
7ð &ð	7ð
 -ð7ð 
õ7÷@-ñ -r,   rS  c                   ó>   ‡ — e Zd ZdZ	 d	 dˆ fd„Z	 	 	 	 	 	 dd„Zˆ xZS )ÚAutogradEngineVariablez;
    Represents a torch._C._ImperativeEngine instance.
    c                 ó*   •— t        ‰| �  d||dœ|¤Ž y rz  rÖ   )r8   rM   r{  r9   r:   s       €r-   r5   zAutogradEngineVariable.__init__¢  s   ø€ ô 	‰ÑÐF˜u°ÑF¸vÓFr,   c                 ó¸  — |dk(  rÇt         j                  j                  j                  r—|j                  sJ d«       ‚t        j                  t         j                  j                  j                  j                  | j                  ¬«      j                  ||j                  j                  j                  «       g|¢­|«      S t        d«       y t        d|› �«       y )NÚqueue_callbackzXqueue_callback() is only supported when Compiled Autograd is enabled with fullgraph=Truer_   z#torch._C._ImperativeEngine method: )rp   r^  Úcompiled_autogradÚcompiled_autograd_enabledÚ	one_graphr	   r   r_  ÚFakeCompiledAutogradEnginer˜  rJ   rv   rx   rs   Úget_ca_final_callbacks_varr   ©r8   rD   rT   r�   r9   s        r-   r†   z"AutogradEngineVariable.call_methodª  s»   € ð Ð#Ò#Ü�}‰}×.Ñ.×HÒHà—L’LðnàmónØ ä ×5Ñ5Ü—M‘M×0Ñ0×KÑK×ZÑZØŸ;™;ô÷  ‘-ØØ—Y‘Y×+Ñ+×FÑFÓHÐPÈ4ÑPØóðô Ønõô Ð?À¸vÐFÕGr,   r=   r‘   r“   ©r(   r)   r*   r¨   r5   r†   r˜   r™   s   @r-   r•  r•  �  sE   ø„ ñð ðGð
 
õGðHð &ð	Hð
 -ðHð 
÷Hr,   r•  c                   ó8   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 	 	 	 dd„Zˆ xZS )ro   c                 ó2   •— t        ‰| �  di |¤Ž || _        y r3   )r4   r5   r¾   )r8   r¾   r9   r:   s      €r-   r5   zLambdaVariable.__init__Ç  s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�r,   c                 ó&   —  | j                   |i |¤ŽS r=   )r¾   rc  s       r-   rv   zLambdaVariable.call_functionË  s   € ð ˆt�w‰w˜Ð' Ñ'Ð'r,   r‘   rÁ   )r(   r)   r*   r5   rv   r˜   r™   s   @r-   ro   ro   Æ  s3   ø„ õð(à#ð(ð &ð(ð -ð	(ð
 
÷(r,   ro   c                   óÜ   ‡ — e Zd Zdhej                  £Zdˆ fd„Zdefd„Zede	j                  j                  fd„«       Zd„ Zdd„Zd	„ Z	 	 	 	 	 	 	 	 dd„Zd
ee   deeef   defˆ fd„Zˆ xZS )rb   rT   r1   c                 óˆ   •— t        ‰| �  di |¤Ž t        |t        «      sJ ‚t        |t        «      sJ ‚|| _        || _        y r3   )r4   r5   rt   r   r—   rú   rT   )r8   rú   rT   r9   r:   s       €r-   r5   zGetAttrVariable.__init__Ú  sA   ø€ Ü‰ÑÑ"˜6Ò"Ü˜#œÔ/Ð/Ð/Ü˜$¤Ô$Ð$Ð$ØˆŒØˆ�	r,   c                 óh   — | j                   j                  › d| j                  › d| j                  › d�S ©Nú(rm   r  )r:   r(   rú   rT   r‰  s    r-   Ú__str__zGetAttrVariable.__str__á  s.   € Ø—.‘.×)Ñ)Ð*¨!¨D¯H©H¨:°R¸¿	¹	°{À!ÐDÐDr,   Ú
base_proxyc                 ó   — t        | |«      S r=   )rG   )r©  r�   s     r-   Úcreate_getattr_proxyz$GetAttrVariable.create_getattr_proxyä  s   € ä�z 4Ó(Ð(r,   c                 ór   — t         j                  | j                  j                  «       | j                  «      S r=   )rb   r«  rú   rŠ  rT   r‰  s    r-   rŠ  zGetAttrVariable.as_proxyè  s&   € Ü×3Ñ3°D·H±H×4EÑ4EÓ4GÈÏÉÓSÐSr,   c                 ó„  — t        | j                  t        j                  «      st        ‚|j
                  j                  | j                  j                  «      }| j                  |j                  vrt        ‚t        j                  || j                  «      }||j                  vrt        ‚t        j                  ||«      S r=   )rt   rú   r	   r=  r‰   rx   Úget_submoduleÚ
module_keyrT   rR   ré   rk  )r8   rD   rT   Ústep1Ústep2s        r-   Úconst_getattrzGetAttrVariable.const_getattrë  s‹   € Ü˜$Ÿ(™(¤I×$>Ñ$>Ô?Ü%Ð%Ø—	‘	×'Ñ'¨¯©×(;Ñ(;Ó<ˆØ�9‰9˜EŸN™NÑ*Ü%Ð%Ü×&Ñ& u¨d¯i©iÓ8ˆØ�u—~‘~Ñ%Ü%Ð%Ü×%Ñ% e¨TÓ2Ð2r,   c                 ó|   —  || j                   «       |j                  |j                  | j                  «      «       y r=   )rú   rB   Úcreate_load_attrsrT   r¤   s     r-   rC   zGetAttrVariable.reconstructö  s+   € Ù�—‘ÔØ×Ñ˜g×7Ñ7¸¿	¹	ÓBÕCr,   r�   r9   c                 óR   — | j                   j                  || j                  ||«      S r=   )rú   r†   rT   rc  s       r-   rv   zGetAttrVariable.call_functionú  s#   € ð �x‰x×#Ñ# B¨¯	©	°4¸Ó@Ð@r,   c                 óˆ  •— |dv r×| j                   dk(  rÈ|sÆ|d   j                  «       r³t        | j                  t        j
                  t        j                  t        j                  f«      rp| j                  }|d   j                  «       }|j                  ||«      r|j                  ||«      S |dk(  rýt        |«      dk(  r|d   S t	        j                  d «      S |dk(  rÐ| j                   dk(  rÁt        |«      dk(  r³|d   j                  «       r |sžt        | j                  t        j
                  t        j                  t        j                  f«      r[| j                  }|d   j                  «       }|j                  ||«      rt	        j                  d«      S t	        j                  d	«      S t        ‰| �9  ||||«      S )
N)rl   rS   rR   r   rS   r   r   Ú__contains__TF)rT   r‚   rt   rú   r	   r$   r=  rT  rH   Úhas_key_in_generic_dictrf   rQ   r`   r4   r†   )r8   rD   rT   r�   r9   rú   r�   r:   s          €r-   r†   zGetAttrVariable.call_method  s�  ø€ ð Ð*Ñ*Ø—	‘	˜ZÒ'ÙØ�Q‘×*Ñ*Ô,ÜØ—‘ä×7Ñ7Ü×.Ñ.Ü×6Ñ6ðôð —(‘(ˆCØ�q‘'×,Ñ,Ó.ˆCØ×*Ñ*¨2¨sÔ3à—‘ r¨3Ó/Ð/ð �uŠ}Ü�t“9 ’>Ø ™7�Nä$×5Ñ5°dÓ;Ð;ð �NÒ"Ø—	‘	˜ZÒ'Ü�D“	˜Q’Ø�Q‘×*Ñ*Ô,ÙÜØ—‘ä×7Ñ7Ü×.Ñ.Ü×6Ñ6ðôð —(‘(ˆCØ�q‘'×,Ñ,Ó.ˆCØ×*Ñ*¨2¨sÔ3Ü ×1Ñ1°$Ó7Ð7ä ×1Ñ1°%Ó8Ð8ä‰wÑ" 2 t¨T°6Ó:Ð:r,   r‘   r’   rÁ   )r(   r)   r*   r   r–   r5   r—   r¨  rz   rp   ÚfxÚProxyr«  rŠ  r²  rC   rv   r   r   r†   r˜   r™   s   @r-   rb   rb   Ô  sÉ   ø„ àðà	×	'Ñ	'ð€Nõ
ðE˜ó Eð ð)¨¯©¯©ò )ó ð)òTó	3òDðAà#ðAð &ðAð -ð	Að
 
óAð8;ð �?Ñ#ð	8;ð
 �S˜/Ð)Ñ*ð8;ð 
÷8;ñ 8;r,   rb   c                   óH   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 	 	 	 dˆ fd„Zd„ Zd„ Zˆ xZS )ÚMethodWrapperVariablec                 ó2   •— t        ‰| �  di |¤Ž || _        y r3   )r4   r5   Úmethod_wrapper)r8   r¾  r9   r:   s      €r-   r5   zMethodWrapperVariable.__init__>  s   ø€ Ü‰ÑÑ"˜6Ò"Ø,ˆÕr,   c                 ó.  •— t        | j                  «      rnt        |d   t        j                  «      rQt        |«      dk(  rt        |«      dk(  sJ ‚|d   j                  || j                  j                  j                  «      S t        ‰| �)  |||«       y )Nr   r   )r   r¾  rt   r	   r;  rQ   rf   Ú__self__r(   r4   rv   )r8   rD   r�   r9   r:   s       €r-   rv   z#MethodWrapperVariable.call_functionB  s‚   ø€ ô & d×&9Ñ&9Ô:¼zØ�‰G”Y×-Ñ-ô@
ô �t“9 ’>¤c¨&£k°QÒ&6Ð6Ð6à˜‘7×&Ñ& r¨4×+>Ñ+>×+GÑ+G×+PÑ+PÓQÐQä‰Ñ˜b $¨Õ/r,   c                  ó   — y©NTr+   r‰  s    r-   r‚   z(MethodWrapperVariable.is_python_constantQ  ó   € Ør,   c                 ó   — | j                   S r=   )r¾  r‰  s    r-   rH   z(MethodWrapperVariable.as_python_constantT  s   € Ø×"Ñ"Ð"r,   r‘   rÁ   )r(   r)   r*   r5   rv   r‚   rH   r˜   r™   s   @r-   r¼  r¼  =  s=   ø„ õ-ð0à#ð0ð &ð0ð -ð	0ð
 
õ0òö#r,   r¼  c                   ó8   ‡ — e Zd Zdˆ fd„Zdˆ fd„Zd„ Zd„ Zˆ xZS )ÚGetSetDescriptorVariablec                 ó2   •— t        ‰| �  di |¤Ž || _        y r3   )r4   r5   Údesc)r8   rÈ  r9   r:   s      €r-   r5   z!GetSetDescriptorVariable.__init__Y  rÇ   r,   c                 óÀ   •— |dk(  rI| j                   r=ddlm}   ||t        | j                   d«      «      | j                  j
                  «      S t        ‰| �  ||«      S )Nrl  r   ri   )rJ   rƒ   rj   r   rÈ  rl  r4   rf   r’  s       €r-   rf   z$GetSetDescriptorVariable.var_getattr]  sV   ø€ Ø�9Ò §¢Ý0àJ‘? 2¤z°$·+±+¸yÓ'IÓJØ—	‘	×!Ñ!óð ô ‘7Ñ& r¨4Ó0Ð0r,   c                  ó   — yrÂ  r+   r‰  s    r-   r‚   z+GetSetDescriptorVariable.is_python_constantg  rÃ  r,   c                 ó   — | j                   S r=   )rÈ  r‰  s    r-   rH   z+GetSetDescriptorVariable.as_python_constantj  s   € Ø�y‰yÐr,   r‘   r’   )r(   r)   r*   r5   rf   r‚   rH   r˜   r™   s   @r-   rÆ  rÆ  X  s   ø„ õõ1òör,   rÆ  c                   ó„   ‡ — e Zd Zddhej                  £Zdej                  ddfˆ fd„Zd„ Zd„ Z	de
fd„Zdd	„Zdd
„Zˆ xZS )ÚPythonModuleVariablerM   Úis_torchr1   Nc                 ó®   •— t        ‰| �  di |¤Ž || _        | j                  t        u xs% | j                  j                  j                  d«      | _        y )Nztorch.r+   )r4   r5   rM   rp   r(   Ú
startswithrÎ  r  s      €r-   r5   zPythonModuleVariable.__init__u  sD   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒ
ØŸ
™
¤eÐ+ÒW¨t¯z©z×/BÑ/B×/MÑ/MÈhÓ/Wˆ�r,   c                 ó"   — t         j                  S r=   )r|   Ú
ModuleTyper‰  s    r-   rI   z PythonModuleVariable.python_typez  s   € Ü×ÑÐr,   c                 ó   — | j                   S r=   ©rM   r‰  s    r-   rH   z'PythonModuleVariable.as_python_constant}  ó   € Ø�z‰zÐr,   c                 ó"   — d| j                   › d�S )NzPythonModuleVariable(r  rÔ  r‰  s    r-   Ú__repr__zPythonModuleVariable.__repr__€  s   € Ø& t§z¡z l°!Ð4Ð4r,   c                 ól   — t        | j                  |«      }t        j                  j	                  |«      S r=   )rö   rM   r	   r`   re   ©r8   rD   rT   Úresults       r-   Úcall_hasattrz!PythonModuleVariable.call_hasattrƒ  s)   € Ü˜Ÿ™ TÓ*ˆÜ×)Ñ)×0Ñ0°Ó8Ð8r,   c                 óØ  — |j                   j                  j                  | |«      r&|j                   j                  j                  | |«      S ddlm}m} | j                  s|| j                  j                  vrt        | j                  |«      }n| j                  j                  |   }| j                  r%t        | j                  |«      }  |||«      |«      S |j                  ||«      S )Nr   r
  )rx   rs   Úhas_pending_mutation_of_attrÚ	load_attrrƒ   r  rj   rÎ  rM   rR   rG   rJ   r   re   )r8   rD   rT   r  rj   r  Ú
new_sources          r-   rf   z PythonModuleVariable.var_getattr‡  s¶   € Ø�9‰9×!Ñ!×>Ñ>¸tÀTÔJØ—9‘9×)Ñ)×3Ñ3°D¸$Ó?Ð?ç?à�=Š=˜D¨¯
©
×(;Ñ(;Ñ;Ü  §¡¨TÓ2‰JàŸ™×,Ñ,¨TÑ2ˆJà�;Š;Ü# D§K¡K°Ó6ˆJØ2‘? 2 zÓ2°:Ó>Ð>à$×+Ñ+¨B°
Ó;Ð;r,   r’   )r(   r)   r*   r   r–   r|   rÒ  r5   rI   rH   r—   r×  rÛ  rf   r˜   r™   s   @r-   rÍ  rÍ  n  s\   ø„ àØðð 
×	'Ñ	'ð€NðX˜e×.Ñ.ð X¸Tõ Xò
 òð5˜#ó 5ó9÷<r,   rÍ  c                   ó:   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 	 dd„Zd„ Zˆ xZS )ÚTypingVariablec                 ó2   •— t        ‰| �  di |¤Ž || _        y r3   r  r  s      €r-   r5   zTypingVariable.__init__š  r  r,   c                 óº   — |dk(  rKt        |«      dk(  r=t        j                  j                  | j                  |d   j                  «          «      S t        d«       y )Nrl   r   r   Útyping)rQ   r	   r`   re   rM   rH   r   rž  s        r-   r†   zTypingVariable.call_methodž  sR   € ð �=Ò ¤S¨£Y°!¢^Ü×-Ñ-×4Ñ4Ø—
‘
˜4 ™7×5Ñ5Ó7Ñ8óð ô 	�hÕr,   c                 ó   — | j                   S r=   rÔ  r‰  s    r-   rH   z!TypingVariable.as_python_constant«  rÕ  r,   r‘   r“   )r(   r)   r*   r5   r†   rH   r˜   r™   s   @r-   rá  rá  ™  s0   ø„ õð ð &ð	 ð
 -ð ð 
ó ör,   rá  )Úmaxsizec                  óÌ   — ddl m}  i }| j                  «       D ]H  \  }}|j                  j                  «       D ]&  \  }}t	        |«      sŒt        ||d «      x}sŒ"|||<   Œ( ŒJ |S )Nr   )ÚNP_TO_TNP_MODULE)Úutilsrè  r¼   rR   ræ   rG   )rè  Únp_fn_to_tnp_fnÚnp_modÚtnp_modr¹   Útnp_fnÚnp_fns          r-   Úget_np_to_tnp_maprï  ¯  sx   € å(à€Oà+×1Ñ1Ó3ò 4‰ˆ�Ø&×/Ñ/×5Ñ5Ó7ò 	4‰OˆG�VÜ˜Õô $ F¨G°TÓ:Ð:�5Ñ:Ø-3�O EÒ*ñ	4ð4ð Ðr,   c                   óš   ‡ — e Zd ZdZej
                  fZd	ˆ fd„Zed„ «       Z	ed„ «       Z
	 	 	 	 	 	 	 	 d
d„Z	 	 	 	 	 	 dd„Zd„ Zˆ fd„Zˆ xZS )ÚNumpyVariablezz
    Wrapper around `numpy.*`. Currently, is able to trace a small subset of numpy functions as well as numpy dtypes.
    c                 ó2   •— t        ‰| �  di |¤Ž || _        y r3   r  r  s      €r-   r5   zNumpyVariable.__init__Ç  r  r,   c                 óˆ   — |j                   j                  d«      }t        |«      dk\  r
|d d ddgk(  sJ ‚|| j                  v S ©Nú.r   rp   Ú_numpy)r)   ÚsplitrQ   Úconstant_fold_functions©Úclsr¾   Úmods      r-   Úcan_constant_fold_throughz'NumpyVariable.can_constant_fold_throughË  sJ   € à�m‰m×!Ñ! #Ó&ˆÜ�3‹x˜1Š}  R a ¨W°hÐ,?Ò!?Ð?Ð?Ø�S×0Ñ0Ð0Ð0r,   c                 ó˜   — |j                   j                  d«      }t        |«      dk\  r
|d d ddgk(  sJ ‚t        j	                  |d «      S rô  )r)   r÷  rQ   Únp_constant_collections_maprS   rù  s      r-   Ú get_constant_collection_for_funcz.NumpyVariable.get_constant_collection_for_funcÑ  sL   € à�m‰m×!Ñ! #Ó&ˆÜ�3‹x˜1Š}  R a ¨W°hÐ,?Ò!?Ð?Ð?Ü*×.Ñ.¨r°4Ó8Ð8r,   c                 ó
  — t         j                  st        d| j                  › d�«       ddlm} ddlm} t        «       j                  | j                  «      }|€t        d| j                  › d�«       | j                  |«      x}	 �e	  | | j                  |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D �	�
ci c]  \  }	}
|	|
j                  «       “Œ c}
}	¤Ž«      S |j                  dk(  rAt         j                   r1d|j"                  › d�}|dt         j                   › �z  }t        |«       |j%                  |j                  ||«      \  }}| j'                  |«      r‹t)        ||«      rt*        j,                  j/                   | j                  «       |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D �	�
ci c]  \  }	}
|	|
j                  «       “Œ c}
}	¤Ž«      S  |j0                  j2                  d ||«      gt5        ||«      ¢­Ž }|j/                  ||«      S c c}w c c}
}	w # t        $ r* t        | j                  j                  › d	|› d
|› �«       Y y w xY wc c}w c c}
}	w )Nznumpy.z()r   )Únumpy_to_tensor_wrapperr   )ÚNumpyNdarrayVariablezCan't find numpy function zM in torch._numpy.  Please file an issue to request support for this function.z with non-const args: ú ztorch._numpy.randomz
delegate 'z' to NumPy itself via zconfg.use_numpy_random_stream=rv   )r   Útrace_numpyr   rM   ré  r  Útensorr  rï  rS   rÿ  rH   r¼   r‰   r(   r)   Úuse_numpy_random_streamr*   Ú
patch_argsrü  r   r	   r`   re   rx   ri  r   )r8   rD   r�   r9   r  r  rÀ   Úcollection_variable_typr‚  rü   rþ   Úmsgrg  s                r-   rv   zNumpyVariable.call_function×  sk  € ô ×!Ò!Ü˜F 4§:¡: ,¨bÐ1Ô2å3Ý0ä Ó"×&Ñ& t§z¡zÓ2ˆØˆ<ÜØ,¨T¯Z©Z¨Lð 9Nð Nôð (,×'LÑ'LÈTÓ'RÐRÐ#Øðð
Ù.Ø�D—J‘JØ:>Ö?°Q˜!×.Ñ.Õ0Ò?ðàAGÇÁÃ×P¹¸¸A˜1˜a×2Ñ2Ó4Ñ4ÓPñóð ð —‘Ð#8Ò8Ü×2Ò2à" 4×#4Ñ#4Ð"5Ð5KÐL�ØÐ7¼×8VÑ8VÐ7WÐXÑX�Ü˜cÔ"à/×:Ñ:¸4¿=¹=È$ÐPVÓW‰LˆD�&à×-Ñ-¨dÔ3Ü-¨d°FÔ;ô !×1Ñ1×8Ñ8Ø-�D×+Ñ+Ó-Ø:>Ö?°Q˜!×.Ñ.Õ0Ò?ðàAGÇÁÃ×P¹¸¸A˜1˜a×2Ñ2Ó4Ñ4ÓPñóð ð +�B—I‘I×*Ñ*ØÙ'¨Ó-ðô # 4¨Ó0òˆEð
 (×.Ñ.¨r°5Ó9Ð9ùòI @ùÛPøô 'ò ÜØ—z‘z×*Ñ*Ð+Ð+AÀ$ÀÀqÈÈÐQöðüò* @ùÛPs<   Â	I ÂH9Â2I ÃH>Ã#	I Æ'I:ÇI?È9I É0I7É6I7c                 ó   — t        d«       y )NÚnumpyr   rž  s        r-   r†   zNumpyVariable.call_method  s   € ô 	�gÕr,   c                 ó   — | j                   S r=   rÔ  r‰  s    r-   rH   z NumpyVariable.as_python_constant   rÕ  r,   c                 ó    •— t         j                  r0t        | j                  t        «      r| j                  j
                  S t        ‰| �  «       S r=   )r   r  rt   rM   rL   r(   r4   rŠ  )r8   r:   s    €r-   rŠ  zNumpyVariable.as_proxy#  s9   ø€ Ü×Ò¤*¨T¯Z©Z¼Ô">ð —:‘:×&Ñ&Ð&ä‰wÑÓ!Ð!r,   r‘   rÁ   r“   )r(   r)   r*   r¨   ÚtnpÚ
issubdtyperø  r5   r~   rü  rÿ  rv   r†   rH   rŠ  r˜   r™   s   @r-   rñ  rñ  À  s¢   ø„ ñð  #Ÿ~™~Ð/Ðõð ñ1ó ð1ð
 ñ9ó ð9ð
>:à#ð>:ð &ð>:ð -ð	>:ð
 
ó>:ð@ð &ð	ð
 -ðð 
óò÷"ð "r,   rñ  c                   ó2   ‡ — e Zd Zdˆ fd„Zdefd„Zd„ Zˆ xZS )ÚNullVariabler1   c                 ó$   •— t        ‰| �  di |¤Ž y r3   rÖ   r×   s     €r-   r5   zNullVariable.__init__/  rØ   r,   c                  ó   — y)Nr  r+   r‰  s    r-   r¨  zNullVariable.__str__2  s   € Ør,   c                 ót   — t         j                  dk  rt        d«       |j                  t	        d«      «       y )N)é   é   z0cannot reconstruct NullVariable in < Python 3.11Ú	PUSH_NULL)ÚsysÚversion_infor   rÊ   r   r¤   s     r-   rC   zNullVariable.reconstruct5  s-   € Ü×Ñ˜gÒ%ÜÐLÔMØ×ÑÔ0°Ó=Õ>r,   r‘   )r(   r)   r*   r5   r—   r¨  rC   r˜   r™   s   @r-   r  r  .  s   ø„ õ#ð˜ó ö?r,   r  c                   ó   — e Zd ZdZy)rŒ   z"Marker used to implement delattr()Nr§   r+   r,   r-   rŒ   rŒ   ;  s   „ Ú,r,   rŒ   c                   ód   ‡ — e Zd ZdZdhej
                  £Zed„ «       Zdˆ fd„Zde	fd„Z
d„ Zˆ xZS )	ÚStringFormatVariablez[
    Represents a call to str.format(), we delay calling format until after the graph.
    Úformat_stringc                 ó®  — t        d„ t        j                  ||j                  «       «      D «       «      r{t        j
                  j                   |j                  |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤Ž«      S  | |t        |«      t        |«      «      S c c}w c c}}w )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr=   )r‚   r€  s     r-   rƒ  z.StringFormatVariable.create.<locals>.<genexpr>H  s!   è ø€ ò 
àð × Ñ ×"ñ
ùs   ‚)ÚallÚ	itertoolsÚchainÚvaluesr	   r`   re   ÚformatrH   r¼   rê   rï   )rú  r  Úsym_argsÚ
sym_kwargsrþ   rü   s         r-   re   zStringFormatVariable.createF  s¾   € äñ 
ä—_‘_ X¨z×/@Ñ/@Ó/BÓCô
ô 
ô ×-Ñ-×4Ñ4Ø$�×$Ñ$Ø6>Ö?°�a×*Ñ*Õ,Ò?ðà=G×=MÑ=MÓ=O×P±T°Q¸�q˜!×.Ñ.Ó0Ñ0ÓPñóð ñ �=¤$ x£.´$°zÓ2BÓCÐCùò	 @ùÛPs   ÁCÂCr1   c                 ór   •— t        ‰| �  di |¤Ž t        |t        «      sJ ‚|| _        || _        || _        y r3   )r4   r5   rt   r—   r  r%  r&  )r8   r  r%  r&  r9   r:   s        €r-   r5   zStringFormatVariable.__init__T  s9   ø€ Ü‰ÑÑ"˜6Ò"Ü˜-¬Ô-Ð-Ð-Ø*ˆÔØ ˆŒØ$ˆ�r,   c                 ó‚   — | j                   j                  › d| j                  ›d| j                  ›d| j                  ›d�S r¦  )r:   r(   r  r%  r&  r‰  s    r-   r×  zStringFormatVariable.__repr__[  sB   € Ø—.‘.×)Ñ)Ð*¨!¨D×,>Ñ,>Ð+AÀÀDÇMÁMÐCTÐTVÐW[×WfÑWfÐViÐijÐkÐkr,   c                 óŽ  ‡ ‡— ‰j                  ˆˆ fd„d¬«        ‰t        j                  ‰ j                  «      «       ‰ j                  j                  «       D ��ci c]%  \  }}t        j                  j                  |«      |“Œ' }}} ‰t        j                  |«      «       ‰j                  t        dd¬«      «       y c c}}w )Nc                  óz   •— ‰ j                  ‰ j                  ‰j                  «      ‰ j                  d«      g«      S )Nr$  )rB   r-  r  r  r¢   s   €€r-   r@   z2StringFormatVariable.reconstruct.<locals>.<lambda>`  s9   ø€ �G×)Ñ)à×-Ñ-¨d×.@Ñ.@ÓAØ×,Ñ,¨XÓ6ðó€ r,   Tr&  r,  r   r)  )rA   r	   r  r%  r&  r¼   r`   re   rí   rÊ   r   )r8   r?   rü   rþ   r9   s   ``   r-   rC   z StringFormatVariable.reconstruct^  s«   ù€ Ø×Ñôð "ð 	ô 	
ñ 	”	×'Ñ'¨¯©Ó6Ô7à@DÇÁ×@UÑ@UÓ@W÷
Ù8<¸¸1ŒI×&Ñ&×-Ñ-¨aÓ0°!Ñ3ð
ˆñ 
ñ 	”	×+Ñ+¨FÓ3Ô4Ø×ÑÔ0Ð1CÈÔKÕLùó	
s   Á*Cr‘   )r(   r)   r*   r¨   r   r–   r~   re   r5   r—   r×  rC   r˜   r™   s   @r-   r  r  ?  sJ   ø„ ñð &ÐG¨×(FÑ(FÐG€NàñDó ðDõ%ðl˜#ó löMr,   r  c                   óT   ‡ — e Zd ZdZdˆ fd„Zed„ «       Zdd„Zd„ Zed	d„«       Z	ˆ xZ
S )
ÚDebuggingVariablez†
    Represents a call to a debugging function like print(), or something
    registered to config.reorderable_logging_functions.
    c                 ó2   •— t        ‰| �  di |¤Ž || _        y r3   r  r  s      €r-   r5   zDebuggingVariable.__init__v  r  r,   c                 óÀ   — t        | «      xrR t        | t        j                  t        j                  f«      xr& | t
        j                  j                  j                  v S r=   )	ræ   rt   r|   r}   ÚBuiltinFunctionTyperp   r^  r   Úreorderable_logging_functions)rú   s    r-   Úis_reorderable_logging_functionz1DebuggingVariable.is_reorderable_logging_functionz  sO   € ô �S‹Mò JÜ˜3¤×!3Ñ!3´U×5NÑ5NÐ OÓPòJà”u—}‘}×+Ñ+×IÑIÐIð	
r,   c           	      óâ   — |j                   ry | j                  | j                  ||«      st        d| j                  › d|› d|› d�«       |j                  j                  | t        |«      f«       y )NzReordering debugging function z with inputs r  z is not yet implemented.)ÚexportÚcan_reorder_logsrM   r   Údebug_localsr�  rê   rc  s       r-   rv   zDebuggingVariable.call_function‚  sk   € Ø�9Š9àà×$Ñ$ T§Z¡Z°°vÔ>ÜØ0°·±°ð =Ø#˜f A f XÐ-EðGôð
 	�‰×Ñ ¤d¨4£jÐ1Õ2r,   c                 ó8   — | j                   j                  |«      S r=   )rJ   rC   r¤   s     r-   rC   zDebuggingVariable.reconstruct�  s   € Ø�{‰{×&Ñ& wÓ/Ð/r,   c                 ó¦   — t         j                  t         j                  t        f}t	        j
                  ||g«      }|D ]  }t        ||«      rŒ y y)zm
        Run some additional checks for what sort of function calls can we
        actually reorder.
        FT)r	   r;  r`   r  ÚpytreeÚtree_leavesrt   )r¾   r�   r9   Úallowed_input_typesÚ	flat_argsr*  s         r-   r4  z"DebuggingVariable.can_reorder_logs’  sY   € ô ×$Ñ$Ü×&Ñ&Ü ð
Ðô ×&Ñ&¨¨f ~Ó6ˆ	Øò 	ˆCÜ˜cÐ#6Õ7Ùð	ð r,   r‘   r’   )r1   T)r(   r)   r*   r¨   r5   rz   r1  rv   rC   r4  r˜   r™   s   @r-   r,  r,  p  s?   ø„ ñõ
ð ñ
ó ð
ó3ò0ð òó ôr,   r,  c                   ó8   ‡ — e Zd ZdZdˆ fd„Z	 	 	 	 	 	 dd„Zˆ xZS )ÚLoggingLoggerVariablez<
    Represents a call to any of logging.Logger methods
    c                 ó$   •— t        ‰| �  di |¤Ž y r3   rÖ   r  s      €r-   r5   zLoggingLoggerVariable.__init__¬  rØ   r,   c                 ó4   — |j                   ry t        d«       y )Nz)Logger not supported for non-export cases)r3  r   rž  s        r-   r†   z!LoggingLoggerVariable.call_method¯  s   € ð �9Š9àÜÐAÕBr,   r‘   r“   rŸ  r™   s   @r-   r=  r=  §  s4   ø„ ñõ#ð
Cð &ð	
Cð
 -ð
Cð 
÷
Cr,   r=  c                   óº   ‡ — e Zd ZdZd Z	 ddlmZmZ	m
Z dˆ fd„Zd„ Zd	ee   d
eeef   defd„Zdddedefd„Zˆ xZS # e$ r  eddi «      Z	 eddi «      ZY ŒDw xY w)ÚConstantLikeVariablez8self.value is a compile-time constant, but not a literalr   )ÚdtypeÚfloatingÚgenericÚinvalid_typer+   r1   c                 ó2   •— t        ‰| �  di |¤Ž || _        y r3   r  r  s      €r-   r5   zConstantLikeVariable.__init__Ê  r  r,   c                 ó   — | j                   S r=   rÔ  r‰  s    r-   rH   z'ConstantLikeVariable.as_python_constantÎ  rÕ  r,   r�   r9   c                 óP  — 	 |D �cg c]  }|j                  «       ‘Œ }}|j                  «       D ��ci c]  \  }}||j                  «       “Œ }	}} t        | j                  |«      i 	¤Ž}
t        j                  j                  |
«      rt        j                  j                  |
«      S t        |
t        j                  «      rt        |
«      S t        | j                  › d|› d|
› �«       y c c}w c c}}w # t        $ r$ t        | j                  › d|› d|› d|› d�«       Y ŒÔw xY w)Nrõ  z(*z, **r  z() -> )rH   r¼   r‰   r   Ú_error_prefixrG   rM   r	   r`   ra   re   rt   ÚreÚMatchÚConstantRegexMatchVariable)r8   rD   rT   r�   r9   r‚  Úcargsrü   rþ   ÚckwargsrÚ  s              r-   r†   z ConstantLikeVariable.call_methodÑ  s  € ð	Oà59Ö:°�Q×)Ñ)Õ+Ð:ˆEÐ:Ø=C¿\¹\»^×L±T°Q¸�q˜!×.Ñ.Ó0Ñ0ÐLˆGÑLð +”˜Ÿ™ TÓ*¨EÐ=°WÑ=ˆä×%Ñ%×0Ñ0°Ô8Ü×-Ñ-×4Ñ4°VÓ<Ð<Ü�fœbŸh™hÔ'Ü-¨fÓ5Ð5ä˜×+Ñ+Ð,¨A¨d¨V°6¸&¸ÐBÕCùò ;ùÛLøÜ"ò 	OÜ˜T×/Ñ/Ð0°°$°°r¸$¸¸tÀFÀ8È1ÐMÖNð	Oús,   ‚C8 †C-�C8 ²C2ÁC8 Ã-C8 Ã8*D%Ä$D%rD   r%   rT   c                 ó¨  — t        | j                  |«      }t        || j                  «      rt	        |«      }t        || j
                  «      rt        |«      S t        |t        «      r!t        || j                  «      rt        |«      S t        j                  j                  |«      rt        j                  j                  |«      S t        | |«      S r=   )rG   rM   rt   Únp_floatingÚfloatÚnp_dtypeÚNumpyDTypeVariablerL   rK   Ú
np_genericrñ  r	   r`   ra   re   rb   rÙ  s       r-   rf   z ConstantLikeVariable.var_getattrè  sž   € Ü˜Ÿ™ TÓ*ˆÜ�f˜d×.Ñ.Ô/Ü˜6“]ˆFÜ�f˜dŸm™mÔ,Ü% fÓ-Ð-Ü�fœdÔ#¬
°6¸4¿?¹?Ô(Kä  Ó(Ð(Ü×%Ñ%×0Ñ0°Ô8Ü×-Ñ-×4Ñ4°VÓ<Ð<Ü˜t TÓ*Ð*r,   r‘   )r(   r)   r*   r¨   rI  r  rB  rR  rC  rP  rD  rT  ÚImportErrorrL   r5   rH   r   r   r   r—   r†   rf   r˜   r™   s   @r-   rA  rA  ¼  s£   ø„ ÙBà*€Mð0÷	
ñ 	
õòðDð �?Ñ#ð	Dð
 �S˜/Ð)Ñ*ðDð 
óDð.+Ð5ð +¸Sð +À_÷ +øðE ò 0Ù˜>¨2¨rÓ2ˆÙ˜¨¨BÓ/Šð0ús   ‹
> ¾AÁArA  c                   ó   — e Zd ZdZy)ÚRegexPatternVariablez
re.PatternN©r(   r)   r*   rI  r+   r,   r-   rW  rW  ö  s   „ Ø �Mr,   rW  c                   ó   — e Zd ZdZy)rL  zre.MatchNrX  r+   r,   r-   rL  rL  ú  s   „ Ø�Mr,   rL  c                   ó$   ‡ — e Zd ZdZdˆ fd„Zˆ xZS )ÚTorchVersionVariableztorch.__version__c                 ó’   •— |j                  dt        j                  «       |d   t        j                  u sJ ‚t        ‰| �  di |¤Ž y )NrM   r+   )Ú
setdefaultrp   Ú__version__r4   r5   r×   s     €r-   r5   zTorchVersionVariable.__init__  sA   ø€ Ø×Ñ˜'¤5×#4Ñ#4Ô5Ø�g‰¤%×"3Ñ"3Ñ3Ð3Ð3Ü‰ÑÑ"˜6Ó"r,   r‘   )r(   r)   r*   rI  r5   r˜   r™   s   @r-   r[  r[  þ  s   ø„ Ø'€M÷#ñ #r,   r[  c                   ó   — e Zd ZdZy)ÚNumpyTypeInfoVariableznp.iinfo/np.finfoNrX  r+   r,   r-   r`  r`    s   „ Ø'�Mr,   r`  c                   ó   — e Zd ZdZd„ Zy)rS  znp.dtype[...]c                 óB   — | j                   j                  j                  S )a0  Similar to how numpy dtype descriptors (e.g. np.float32 ) are handled by NumpyVariable:

        np.dtype() objects are serialized as strings, torch._numpy wrappers will normalize to the torch dtype.
        This also handles unsupported things nicely (i.e. structured arrays and object arrays).
        )rM   rL   r(   r‰  s    r-   rŠ  zNumpyDTypeVariable.as_proxy  s   € ð �z‰z�‰×'Ñ'Ð'r,   N)r(   r)   r*   rI  rŠ  r+   r,   r-   rS  rS    s   „ Ø#€Mó(r,   rS  c                   ó,   ‡ — e Zd ZdZdˆ fd„Zdd„Zˆ xZS )ÚRandomClassVariablezrandom.Randomc                 ó$   •— t        ‰| �  di |¤Ž y r3   rÖ   r×   s     €r-   r5   zRandomClassVariable.__init__!  rØ   r,   c                 ó  — t        |«      dkD  rt        d«       n|rt        d«       t        |«      dk(  rt        j                  j	                  d «      n|d   }t        |t        j                  j                  «       ¬«      S )Nr   zrandom.Random() with > 1 argzrandom.Random() with kwargsr   )Úseedru   )rQ   r   r	   r`   re   ÚRandomVariablerä   rå   )r8   rD   r�   r9   rg  s        r-   rv   z!RandomClassVariable.call_function$  sc   € Üˆt‹9�qŠ=ÜÐ8Õ9ÙÜÐ7Ô8Ü:=¸d»)Àqº.Œy×)Ñ)×0Ñ0°Ô6ÈdÐSTÉgˆÜ 4´y·~±~×7RÑ7RÓ7TÔUÐUr,   r‘   r’   )r(   r)   r*   r¨   r5   rv   r˜   r™   s   @r-   rd  rd    s   ø„ Ùõ#÷Vr,   rd  c                   óö   ‡ — e Zd ZdZdhej
                  £Zh d£Z	 	 ddeej                     dee   ddfˆ fd„Z
d	„ Zd
„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zdee   deeef   defˆ fd„Zd„ Zˆ xZS )rh  zùrandom.Random()

    Implemented by wrapping a VariableTracker around a random.Random object.
    The supported methods for the random.Random object cannot be overriden.
    Assumes that random objects behave the same given a set seed or state.
    Úrandom>   rj  ÚrandintÚuniformÚ	randrangeNÚrandrg  r1   c                 ó0  •— t        ‰| �  di |¤Ž |�V| j                  |«      sJ ‚t        j                  «       | _        | j                  j                  |j                  «       «       y |�|j                  «       nd }t        j                  |«      | _        y r3   )r4   r5   Úis_supported_random_objrj  ÚRandomÚsetstateÚgetstaterH   )r8   rn  rg  r9   r:   s       €r-   r5   zRandomVariable.__init__A  sy   ø€ ô 	‰ÑÑ"˜6Ò"ØÐØ×/Ñ/°Ô5Ð5Ð5Ü Ÿ-™-›/ˆDŒKØ�K‰K× Ñ  §¡£Õ1à04Ð0@�4×*Ñ*Ô,ÀdˆDÜ Ÿ-™-¨Ó-ˆD�Kr,   c                 ó"   — t         j                  S r=   )rj  rq  r‰  s    r-   rI   zRandomVariable.python_typeP  s   € Ü�}‰}Ðr,   c                 ó   — | j                   S r=   )rj  r‰  s    r-   rH   z!RandomVariable.as_python_constantS  s   € Ø�{‰{Ðr,   c                 óœ  — t        | «      t        j                  uryt        j                  t
        j                  d«      D ]‰  }t        | |«      s yt        | |«      }t        j                  |«      r/|t        t        j                  |«      j                  | «      k7  sŒ_ yt        |dd «      t        t        j                  |«      usŒ‰ y y)NF)rg  rs  rr  r{   T)rL   rj  rq  r!  r"  rh  Ú_supported_fn_namesrö   rG   ré   Ú	isbuiltinrl  )rõ   rT   Úmeths      r-   rp  z&RandomVariable.is_supported_random_objV  s¨   € ä�‹9œFŸM™MÑ)ØÜ—O‘OÜ×.Ñ.Ð0Pó
ò 	!ˆDô ˜3 Ô%ÙÜ˜3 Ó%ˆDÜ× Ñ  Ô&àœ7¤6§=¡=°$Ó7×?Ñ?ÀÓDÓDÙ ä˜4 ¨TÓ2¼'Ä&Ç-Á-ÐQUÓ:VÒVÙ ð	!ð r,   c                 óè   — t        | «      t        u sJ ‚t        | d   «      t        u sJ ‚t        | d   «      t        u sJ ‚t        d„ | d   D «       «      sJ ‚| d   �t        | d   «      t        u sJ ‚y y )Nr   r   c              3   ó>   K  — | ]  }t        |«      t        u –— Œ y ­wr=   )rL   Úintr€  s     r-   rƒ  z-RandomVariable.check_state.<locals>.<genexpr>n  s   è ø€ Ò4 a”4˜“7œc”>Ñ4ùs   ‚r   )rL   r»   r|  r   rQ  )Ústates    r-   Úcheck_statezRandomVariable.check_statei  s}   € ä�E‹{œeÑ#Ð#Ð#Ü�E˜!‘H‹~¤Ñ$Ð$Ð$Ü�E˜!‘H‹~¤Ñ&Ð&Ð&ÜÑ4¨5°©8Ô4Ô4Ð4Ð4Ø�Q‰xÐ¤4¨¨a©£>´UÑ#:Ð:Ð:Ð#:Ðr,   c                 óh  — t         j                  | «       t        j                  t        j                  j                  | d   «      t        j                  | d   D �cg c]!  }t        j                  j                  |«      ‘Œ# c}«      t        j                  j                  | d   «      g«      S c c}w )Nr   r   r   )rh  r~  r	   r  r`   re   )r}  r‚  s     r-   Ú
wrap_statezRandomVariable.wrap_stateq  s‘   € ä×"Ñ" 5Ô)Ü×&Ñ&ä×*Ñ*×1Ñ1°%¸±(Ó;Ü×'Ñ'ØCHÈÁ8ÖL¸a”Y×/Ñ/×6Ñ6°qÕ9ÒLóô ×*Ñ*×1Ñ1°%¸±(Ó;ðó
ð 	
ùò Ms   Á&B/c                 óP   — | j                  «       }t        j                  |«       |S r=   )rH   rh  r~  )r}  Ú	state_objs     r-   Úunwrap_statezRandomVariable.unwrap_state~  s$   € à×,Ñ,Ó.ˆ	Ü×"Ñ" 9Ô-ØÐr,   r�   r9   c                 ó”  •‡‡— ‰dk(  r¬|j                   j                  j                  | «        | j                  j                  |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤Ž t        j                  j                  d «      S ‰dk(  r)| j                  | j                  j                  «       «      S ‰dk(  rq|j                   j                  j                  | «       | j                  j                  | j                  |d   «      «       t        j                  j                  d «      S ‰| j                  v r»|j                   j                  j                  | «       | j                  j                  «       Šˆˆfd„} t        | j                  ‰«      |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D �	�
ci c]  \  }	}
|	|
j                  «       “Œ c}
}	¤Ž t!        ||||«      S t"        ‰| �I  |‰||«      S c c}w c c}}w c c}w c c}
}	w )Nrg  rs  rr  r   c                  ór   •— t        j                  «       }|j                  ‰«        t        |‰«      | i |¤ŽS r=   )rj  rq  rr  rG   )r�   r9   ÚrrT   r}  s      €€r-   Úcall_random_methz4RandomVariable.call_method.<locals>.call_random_methœ  s3   ø€ Ü—M‘M“O�Ø—
‘
˜5Ô!Ø'”w˜q $Ó'¨Ð8°Ñ8Ð8r,   )rx   rs   Úmutationrj  rg  rH   r¼   r	   r`   re   r€  rs  rr  rƒ  rw  rG   r"   r4   r†   )r8   rD   rT   r�   r9   r‚  r�   rõ   r‡  rü   rþ   r}  r:   s     `        @€r-   r†   zRandomVariable.call_method„  sß  ú€ ð �6Š>Ø�I‰I×"Ñ"×+Ñ+¨DÔ1ØˆD�K‰K×ÑØ26Ö7¨Q�!×&Ñ&Õ(Ò7ðàAGÇÁÃ×P±X°S¸#�3˜×.Ñ.Ó0Ñ0ÓPòô ×-Ñ-×4Ñ4°TÓ:Ð:Ø�ZÒØ—?‘? 4§;¡;×#7Ñ#7Ó#9Ó:Ð:Ø�ZÒØ�I‰I×"Ñ"×+Ñ+¨DÔ1Ø�K‰K× Ñ  ×!2Ñ!2°4¸±7Ó!;Ô<Ü×-Ñ-×4Ñ4°TÓ:Ð:Ø�T×-Ñ-Ñ-Ø�I‰I×"Ñ"×+Ñ+¨DÔ1Ø—K‘K×(Ñ(Ó*ˆEõ9ð 'ŒG�D—K‘K Ó&Ø26Ö7¨Q�!×&Ñ&Õ(Ò7ðà9?¿¹»×H±°°A�1�a×*Ñ*Ó,Ñ,ÓHòô
 " "Ð&6¸¸fÓEÐEÜ‰wÑ" 2 t¨T°6Ó:Ð:ùò7 8ùÛPùò* 8ùÛHs   ÁH4Á5H9ÇH?Ç3Ic                 ó6  ‡— ‰j                  ˆfd„«       ‰j                  dd«       ‰j                  «        ‰j                  d«        ‰| j	                  | j
                  j                  «       «      «       ‰j                  dd«       ‰j                  «        y )Nc                  ón   •— ‰ j                  ‰ j                  t        «      ‰ j                  d«      g«      S )Nrq  )rB   r  rj  r  r  s   €r-   r@   z,RandomVariable.reconstruct.<locals>.<lambda>­  s3   ø€ �G×)Ñ)à×5Ñ5´fÓ=Ø×,Ñ,¨XÓ6ðó€ r,   r   Frr  r   T)rA   rv   Údup_toprÞ  r€  rj  rs  Úpop_topr¤   s    `r-   rC   zRandomVariable.reconstruct«  sz   ø€ Ø×Ñóô	
ð 	×Ñ˜a Ô'ð 	�‰ÔØ×Ñ˜*Ô%Ù�—‘ §¡× 4Ñ 4Ó 6Ó7Ô8Ø×Ñ˜a Ô&Ø�‰Õr,   r“  )r(   r)   r*   r¨   r   r–   rw  r   rj  rq  r5   rI   rH   rz   rp  r~  r€  rƒ  r   r   r—   r†   rC   r˜   r™   s   @r-   rh  rh  -  só   ø„ ñð 	ðà	×	'Ñ	'ð€Nò
Ðð )-Ø*.ñ.à�v—}‘}Ñ%ð.ð �Ñ'ð.ð
 
õ.òòð ñó ðð$ ñ;ó ð;ð ñ

ó ð

ð ñó ðð
%;ð �?Ñ#ð	%;ð
 �S˜/Ð)Ñ*ð%;ð 
õ%;öNr,   rh  )kr€   rs  r÷   ré   r!  rj  rJ  r  r|   rä  r   r   r   r   Útorch._Crp   Útorch._numpyrö  r  Útorch.utils._pytreeré  Ú_pytreer8  rj  r   r	   Úbytecode_transformationr
   r   Úcreate_parameter_opr   Úexcr   Úguardsr   r   Úmutation_guardr   rJ   r   r   r   r   r   r   r   r   r   r   rä   r   r±   r   r   r    r!   Úuser_definedr"   r#   r$   Útorch._dynamo.symbolic_convertr%   r'   r/   r›   r¦   r«   r­   rÃ   rÐ   rÔ   rÜ   rß   rî   rù   r4  r7  Ú	dataclassrp  rS  r•  ro   rb   r¼  rÆ  rÍ  rá  Ú	lru_cacherï  rñ  r  rŒ   r  r,  r=  rA  rW  rL  r[  r`  rS  ÚfinfoÚiinforB  rþ  rd  rh  r+   r,   r-   ú<module>rœ     sÈ  ðã Û Û Û Û Û Û 	Û 
Û ß 6Ó 6ã Ý ß $Ð $ç  ß NÝ FÝ ß 0Ý 5÷õ ÷õ õ "÷ó ÷ YÑ Xñ ÝD÷	ñ 	ôC�Oô CôD5˜ô 5ô�oô ô˜oô ô:7�ô :7ôzF�oô FôF˜_ô Fô#�oô #ô
#˜ô #ô
]>˜ô ]>ô@<˜ô <ô*A
 Oô A
òH%ôl=˜ô l=ð^ ×Ñ÷Mð Mó ðMôn-Ð&?ô n-ôb&HÐ6ô &HôR(�_ô (ôf;�oô f;ôR#˜Oô #ô6˜ô ô,(<˜?ô (<ôV�_ô ð, €×Ñ˜QÔñó  ðô j"�Oô j"ô\
?�?ô 
?ô-�oô -ô.M˜?ô .Môb4˜ô 4ônC˜Oô Cô*7+˜?ô 7+ôt!Ð/ô !ôÐ!5ô ô#Ð/ô #ô(Ð0ô (ô	(Ð-ô 	(ð ‡I�IÐ$Ø‡I�IÐ$Ø‡I�IÐ!ðÐ ôV˜/ô VôN�_õ Nr,   