Ë
    L²jÄù  ã                   ó¼  — U 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	 d dl
mZ d dlmZmZmZmZmZmZ d dlmZmZ d dlZd dlmc m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$ 	 d d
lm%Z% erd dl)m*Z*  ede¬«      Z+ edd¬«      Z, e-ed«      xr	  e-ed«      Z.ej^                  d„ «       Z0 G d„ d«      Z1de1defd„Z2i Z3e4e5df   e6d<   ejn                  ejp                  ejr                  ejt                  ejv                  ejx                  ejz                  gZ> G d„ de1e j~                  «      Z@d„ ZAd„ ZBd„ ZCd„ ZD G d„ d «      ZE eE«       aFdCd!„ZGd"„ ZHd#„ ZId$„ ZJd%„ ZKd&„ ZLd'„ ZM eN«       aOeNd(   e6d)<   d*„ ZPd+„ ZQd,„ ZR G d-„ d(e1ee,e+f   «      ZS G d.„ d/eSe,e+f   «      ZTd0eUfd1„ZVd0eUfd2„ZWd3ej°                  d0eUfd4„ZY G d5„ d6ee,e+f   «      ZZdeZe,e+f   d7e,j¶                  d8e,j¸                  d0e+fd9„Z] G d:„ d;ej¼                  «      Z_d<„ Z`d=„ Za G d>„ d?ej¼                  «      Zb G d@„ dAej¼                  «      Zc ec«       Zdece6dB<   y# e&$ r  e'e(«      Z%Y �Œæw xY w)Dé    N)ÚCallableÚIterator)Úcached_property)ÚAnyÚClassVarÚConcatenateÚfinalÚGenericÚTYPE_CHECKING)Ú	ParamSpecÚTypeVar)Ú_utils_internal)Ú_dispatch_is_included_in_aliasÚDispatchKey)Údispatch_functorchÚTransformType)ÚTorchDispatchMode)ÚNotImplementedType)ÚBaseFunctionalizeAPIÚ_T)ÚdefaultÚ_P.ÚgetdlopenflagsÚsetdlopenflagsc               #   óþ   K  — t         sd–— yt        j                  «       } t        j                  | t        j
                  z  «       	 d–— t        j                  | «       y# t        j                  | «       w xY w­w)z�
    Context manager to set the RTLD_GLOBAL dynamic linker flag while we open a
    shared library to load custom operators.
    N)Ú_SET_GLOBAL_FLAGSÚsysr   r   ÚctypesÚRTLD_GLOBAL)Ú	old_flagss    úI/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_ops.pyÚdl_open_guardr"   (   s\   è ø€ õ ÛØÜ×"Ñ"Ó$€IÜ×Ñ�y¤6×#5Ñ#5Ñ5Ô6ð&Ûä×Ñ˜9Õ%øŒ×Ñ˜9Õ%üs   ‚AA=Á	A# ÁA=Á#A:Á:A=c                   óÈ   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zdee	   ee
j                     z  ez  ez  deeeef   geeef   f   fd„Zd	eed
ef   ef   deed
ef   ef   fd„Zd„ Zy)ÚOperatorBasez·
    Base class for OpOverload (which represents C++ ATen operators) and HigherOrderOperator
    (which represents Python-only operators that are unrepresentable in TorchScript).
    c                 ó<   — i | _         i | _        i | _        i | _        y ©N)Ú_dispatch_cacheÚ
py_kernelsÚpython_key_tableÚfunctorch_table©Úselfs    r!   Ú__init__zOperatorBase.__init__?   s0   € ð  UWˆÔð BDˆŒð ð 	Ôð  "ˆÕó    c                 ó   — t         ‚r&   ©ÚNotImplementedError©r,   ÚargsÚkwargss      r!   Ú__call__zOperatorBase.__call__i   ó   € Ü!Ð!r.   c                 ó   — || j                   v S r&   )r(   )r,   Úks     r!   Úhas_kernel_for_dispatch_keyz(OperatorBase.has_kernel_for_dispatch_keyl   s   € Ø�D—O‘OÐ#Ð#r.   c                 óŒ   — | j                   D ]5  }t        j                  j                  |«      rŒ#|j	                  |«      sŒ5 y y)NTF)r(   ÚtorchÚ_CÚ_dispatch_is_alias_keyÚhas)r,   Úksr8   s      r!   Úhas_kernel_for_any_dispatch_keyz,OperatorBase.has_kernel_for_any_dispatch_keyo   s9   € Ø—‘ò 	ˆAÜ—8‘8×2Ñ2°1Õ5¸"¿&¹&À½)Ùð	ð r.   r8   Úreturnc                 ód   ‡ ‡— dt         t        t        f   dt         t        t        f   fˆˆ fd„}|S )NÚfnrA   c                 óÄ  •— t        j                  ‰«      rqt        ‰t        «      st        ‰t        j
                  «      rG‰‰j                  v rt        ‰› d�«      ‚| ‰j                  ‰<   ‰j                  j                  «        | S t        ‰t        «      r-‰‰j                  v rt        ‰› d�«      ‚| ‰j                  ‰<   | S t        ‰t        «      st        dt        ‰«      › �«      ‚‰t        j                  k(  rt        d«      ‚‰‰j                   v rt#        d‰› d‰j%                  «       › �«      ‚| ‰j                   ‰<   ‰j                  j                  «        | S )Nz' already registered in python_key_tablez& already registered in functorch_tablezexpected DispatchKey, got z>Please register a mode for the DispatchKey.Python key instead.z%Trying to override a python impl for z on operator )ÚinspectÚisclassÚ
issubclassr   r;   ÚTensorr)   ÚAssertionErrorr'   ÚclearÚ
isinstancer   r*   r   ÚtypeÚPythonr(   ÚRuntimeErrorÚname)rC   r8   r,   s    €€r!   Úinnerz#OperatorBase.py_impl.<locals>.innery   sF  ø€ Ü�‰˜qÔ!Ü˜1Ô/Ô0´J¸qÄ%Ç,Á,Ô4Oà˜×-Ñ-Ñ-Ü(¨A¨3Ð.UÐ)VÓWÐWà+-�×%Ñ% aÑ(Ø×$Ñ$×*Ñ*Ô,Ø�	ä˜!œ]Ô+Ø˜×,Ñ,Ñ,Ü(¨A¨3Ð.TÐ)UÓVÐVØ*,�×$Ñ$ QÑ'Ø�	ä˜a¤Ô-Ü$Ð'AÄ$ÀqÃ'ÀÐ%KÓLÐLØ”K×&Ñ&Ò&Ü$ØTóð ð �D—O‘OÑ#Ü"Ø;¸A¸3¸mÈDÏIÉIËKÈ=ÐYóð ð "$ˆD�O‰O˜AÑØ× Ñ ×&Ñ&Ô(ØˆIr.   )r   r   r   )r,   r8   rP   s   `` r!   Úpy_implzOperatorBase.py_implu   s0   ù€ ð	”hœr¤2˜vÑ&ð 	¬8´B¼°FÑ+;ö 	ð@ ˆr.   rC   r   c           	      ó  ‡‡‡‡— ddl mŠm}mŠmŠ dt
        j                  dt
        j                  dt        fˆˆfd„}d|d z  dt
        j                  dt
        j                  dt        t        z  fˆˆfd„}dt
        j                  dt
        j                  dt        fˆˆfd	„} | j                  t        j                  «      |«        | j                  |«      |«        | j                  t        j                  «      |«       ‰S )
Nr   )ÚCppFunctionalizeAPIÚFunctionalTensorModeÚFunctorchFunctionalizeAPIÚPythonFunctionalizeAPIr3   r4   rA   c                  ó&   •—  ‰ ‰«       g| ¢­i |¤ŽS r&   © )r3   r4   rS   rC   s     €€r!   Úfunctionalize_dk_fnz?OperatorBase.py_functionalize_impl.<locals>.functionalize_dk_fn²   s   ø€ ÙÑ)Ó+Ð=¨dÒ=°fÑ=Ð=r.   Úmodec                 ót   •— ddl m} ddlm} ddlm}  |||f||f¬«      rt        S  ‰ ‰| «      g|¢­i |¤ŽS )Nr   )Úhas_user_subclass)Ú
FakeTensor)ÚFunctionalTensor)Úallowed_subclasses)Útorch._higher_order_ops.utilsr\   Útorch._subclassesr]   Ú#torch._subclasses.functional_tensorr^   ÚNotImplemented)rZ   r3   r4   r\   r]   r^   rV   rC   s         €€r!   Úfunctionalize_dispatch_mode_fnzJOperatorBase.py_functionalize_impl.<locals>.functionalize_dispatch_mode_fnµ   sJ   ø€ õ HÝ4ÝLá Ø�v�Ø$.Ð0@Ð#Aõô &Ð%ÙÑ,¨TÓ2ÐD°TÒD¸VÑDÐDr.   c                 ó(   •—  ‰ ‰| «      g|¢­i |¤ŽS r&   rX   )Úinterpreterr3   r4   rU   rC   s      €€r!   Úfunctionalize_functorch_fnzFOperatorBase.py_functionalize_impl.<locals>.functionalize_functorch_fnÃ   s    ø€ ñ Ñ/°Ó<ÐN¸tÒNÀvÑNÐNr.   )rb   rS   rT   rU   rV   r   r3   r4   r   r   rQ   r   ÚFunctionalizer   )	r,   rC   rT   rY   rd   rg   rS   rU   rV   s	    `    @@@r!   Úpy_functionalize_implz"OperatorBase.py_functionalize_impl¦   så   û€ ÷	
ó 	
ð	>¤r§w¡wð 	>¼"¿)¹)ð 	>Ìö 	>ð	EØ&¨Ñ-ð	EÜ68·g±gð	EÜIKÏÉð	EäÔ$Ñ$ö	Eð	OÜ "§¡ð	OÜ35·9±9ð	Oäö	Oð
 	0ˆ�‰”[×.Ñ.Ó/Ð0CÔDØ*ˆ�‰Ð)Ó*Ð+IÔJØ1ˆ�‰”]×0Ñ0Ó1Ð2LÔMàˆ	r.   c                 ó   — t         ‚r&   r0   r+   s    r!   rO   zOperatorBase.nameÎ   r6   r.   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r-   r5   r9   r@   rL   r   r;   rH   r   r   r   r   r   rQ   r   ri   rO   rX   r.   r!   r$   r$   9   s¶   „ ñò
("òT"ò$òð$àÐ!Ñ" T¨%¯,©,Ñ%7Ñ7¸-ÑGÈ+ÑUð$ð 
�8˜B ˜FÑ#Ð$ h¨r°2¨vÑ&6Ð6Ñ	7ó$ðb&Ø˜;Ð'=¸rÐ'AÑBÀBÐFÑGð&à	�+Ð4°bÐ8Ñ9¸2Ð=Ñ	>ó&óP"r.   r$   Úopr8   c                 óŒ  — | j                  |«      r|S t        j                  }|t        j                  k(  st	        ||«      r| j                  |«      r|S t        j
                  }|t        j                  k(  st	        ||«      r| j                  |«      r|S | j                  t        j                  j                  |«      «      xs | j                  t        j
                  «      }t        j                  }|t        j                  k7  r!t	        ||«      r| j                  |«      r|s|S t        j                  }|t        j                  k(  st	        ||«      r\| j                  |«      rK|t        j                  k(  r4| j                  t        j                  j                  «      rt        d«      ‚|s|S t        j                  }t	        ||«      r| j                  |«      r|S t        j                   }t	        ||«      r| j                  |«      r|S t        j                  j#                  |«      r|S t%        d| › d|› �«      ‚)Nzambiguous autogradother kernelzcould not find kernel for ú at dispatch key )r9   r   Ú&CompositeExplicitAutogradNonFunctionalÚ	UndefinedÚis_included_in_aliasÚCompositeExplicitAutogradr@   r;   r<   Ú*_dispatch_get_backend_keyset_from_autogradÚ%CompositeImplicitAutogradNestedTensorÚCompositeImplicitAutogradÚAutogradOtherÚ _dispatch_autogradother_backendsrN   ÚAutogradÚFuncTorchBatchedDecompositionÚ_dispatch_has_backend_fallbackr1   )ro   r8   ÚcandÚhas_backend_kernels       r!   Úresolve_keyr€   Ó   sì  € à	×%Ñ% aÔ(Øˆä×=Ñ=€Dà	Œ[×"Ñ"Ò"Ô&:¸1¸dÔ&CØ
×
(Ñ
(¨Ô
.Øˆä×0Ñ0€Dà	Œ[×"Ñ"Ò"Ô&:¸1¸dÔ&CØ
×
(Ñ
(¨Ô
.ØˆØ×;Ñ;Ü�‰×;Ñ;¸AÓ>óò Oà	×	'Ñ	'¬×(MÑ(MÓ	Nð ô ×<Ñ<€Dà	
Œk×#Ñ#Ò	#Ô(<¸QÀÔ(EØ×*Ñ*¨4Ô0Ù"àˆÜ×0Ñ0€Dà	Œ[×"Ñ"Ò"Ô&:¸1¸dÔ&CØ
×
(Ñ
(¨Ô
.Ø”×)Ñ)Ò)¨b×.PÑ.PÜ�H‰H×5Ñ5ô/
ô Ð?Ó@Ð@Ù#ØˆKä×Ñ€DÜ˜A˜tÔ$¨×)GÑ)GÈÔ)MØˆä×4Ñ4€DÜ˜A˜tÔ$¨×)GÑ)GÈÔ)MØˆä‡x�x×.Ñ.¨qÔ1ð ˆÜ
Ð :¸2¸$Ð>OÐPQÈsÐSÓ
TÐTr.   ÚHigherOrderOperatorÚ_higher_order_opsc                   ó   ‡ — e Zd Zdddœˆ fd„
Zdee   eej                     z  ez  e	z  de
e
eef   ge
eef   f   fˆ fd„Zde
eef   de
eef   fd„Zed	„ «       Zedefd
„«       Zd„ Zd„ Zej.                  d„ «       Zd„ Zd„ Zd„ Zdd„Zˆ xZS )r�   F)Ú	cacheableÚ supports_training_input_mutationc                ó>  •— t         ‰| �  «        t        | «      t        u rt	        d«      ‚|| _        || _        | t        |<   d| _        d| _	        || _
        || _        t        j                  j                  «       | _        t         D ]  }| j#                  |«       Œ y )NzODirect instantiation of HigherOrderOperator is not allowed. Please subclass it.Úhigher_orderútorch.ops.higher_order)Úsuperr-   rL   r�   rN   Ú_namerk   r‚   Ú_nsrl   Ú
_cacheableÚ!_supports_training_input_mutationr;   r<   Ú_dispatch_keyset_fullÚnon_fallthrough_keysÚ2_HIGHER_ORDER_OP_DEFAULT_FALLTHROUGH_DISPATCH_KEYSÚfallthrough)r,   rO   r„   r…   Údispatch_keyÚ	__class__s        €r!   r-   zHigherOrderOperator.__init__  sœ   ø€ ô 	‰ÑÔÜ�‹:Ô,Ñ,ÜØaóð ð ˆŒ
ð ˆŒØ"&Ô˜$ÑØ!ˆŒØ2ˆŒØ#ˆŒð 2RˆÔ.ä$)§H¡H×$BÑ$BÓ$DˆÔ!äNò 	+ˆLØ×Ñ˜\Õ*ñ	+r.   r8   rA   c                 ó¸   •— t        |t        «      r;| j                  j                  |«      s | j                  j	                  |«      | _        t
        ‰| �  |«      S r&   )rK   r   r�   r>   Úaddr‰   rQ   ©r,   r8   r“   s     €r!   rQ   zHigherOrderOperator.py_impl=  sJ   ø€ ô �aœÔ%¨d×.GÑ.G×.KÑ.KÈAÔ.NØ(,×(AÑ(A×(EÑ(EÀaÓ(HˆDÔ%Ü‰w‰˜qÓ!Ð!r.   rC   c                 ó®   ‡ ‡— dt         j                  dt         j                  dt        fˆˆ fd„} ‰ j	                  t
        j                  «      |«       ‰S )Nr3   r4   rA   c                  óÔ  •— t        j                  «       r+t        j                  t         j                  d„ g | ¢|‘­«      r0t         j
                  j                  «       5   ‰| i |¤Žcd d d «       S ddlm} ‰j                  sS |‰«      rK ‰j                  | i |¤Ž}t        d„ |j                  D «       «      rt        d‰j                  «       › d�«      ‚ ‰| i |¤ŽS # 1 sw Y   ŒvxY w)Nc                 ó   — | j                    S r&   )Úrequires_grad)Úts    r!   ú<lambda>zRHigherOrderOperator.py_autograd_impl.<locals>.maybe_run_autograd.<locals>.<lambda>L  s   € ˜aŸo™oÐ-€ r.   r   )Ú_has_gen_schemac              3   ó4   K  — | ]  }|j                   –— Œ y ­wr&   )Úis_write©Ú.0Úargs     r!   ú	<genexpr>zSHigherOrderOperator.py_autograd_impl.<locals>.maybe_run_autograd.<locals>.<genexpr>V  s   è ø€ Ò@¨�s—|•|Ñ@ùs   ‚zThe zå HigherOrderOperator does not currently support training with in-place input or buffer mutations If you require this feature, please submit an issue to PyTorch. Alternatively, consider creating your own custom autograd.Function. )r;   Úis_grad_enabledÚpytreeÚtree_all_onlyrH   r<   Ú_AutoDispatchBelowAutogradr`   r�   r�   Ú
gen_schemaÚanyÚ	argumentsrN   rO   )r3   r4   r�   ÚschemarC   r,   s       €€r!   Úmaybe_run_autogradz@HigherOrderOperator.py_autograd_impl.<locals>.maybe_run_autogradI  sá   ø€ Ü×(Ñ(Ô*¬f×.BÑ.BÜ—‘Ù-Ø�$�˜‘ô/ô
 —X‘X×8Ñ8Ó:ñ 1Ù Ð0¨Ñ0÷1ñ 1õ Fà×9Ò9¹oÈdÔ>SØ(˜Ÿ™¨$Ð9°&Ñ9�ÜÑ@¨v×/?Ñ/?Ô@Ô@Ü&Ø˜tŸy™y›{˜mð ,_ð _óð ñ �tÐ&˜vÑ&Ð&÷1ð 1ús   ÁCÃC')r   r3   r4   r   rQ   r   r{   )r,   rC   r¬   s   `` r!   Úpy_autograd_implz$HigherOrderOperator.py_autograd_implE  sF   ù€ ð	'¤b§g¡gð 	'¼¿¹ð 	'Ärö 	'ð. 	+ˆ�‰”[×)Ñ)Ó*Ð+=Ô>àˆ	r.   c                 ó   — | j                   S r&   )r‹   r+   s    r!   Ú	namespacezHigherOrderOperator.namespaced  ó   € à�x‰xˆr.   c                 ó  — ddl m} | j                  xss | j                  › d| j                  › �t
        j                  j                  j                  v xs2 t        | |«      xr$ t
        j                  j                  j                  S )Nr   )ÚAutogradFunctionApplyú.)Ú"torch._functorch.autograd_functionr²   rŒ   rl   rk   r;   Ú	_inductorÚconfigÚ!unsafe_marked_cacheable_functionsrK   Ú
_functorchÚ.autograd_cache_allow_custom_autograd_functions)r,   r²   s     r!   r„   zHigherOrderOperator.cacheableh  su   € åLð �O‰Oò Ø—/‘/Ð" ! D§M¡M ?Ð3Ü�‰×%Ñ%×GÑGðHòô ˜4Ð!6Ó7ò [Ü×$Ñ$×+Ñ+×ZÑZð	
r.   c                 óD   — | j                   j                  |«      | _         y r&   )r�   Úremove)r,   r’   s     r!   r‘   zHigherOrderOperator.fallthroughv  s   € Ø$(×$=Ñ$=×$DÑ$DÀ\Ó$RˆÕ!r.   c                ó:	  ‡‡— ddl m} || j                  v r5| j                  |   }t        |t        «      rt        d|› �«      ‚ ||i |¤ŽS |t        j                  k(  rt        | ||«      S |t        j                  k(  �rpg Šd„ Šˆˆfd„}g |¢|j                  «       ¢­D ]0  } ||«       t        |t        t        f«      sŒ"|D ]
  } ||«       Œ Œ2 t        ‰«      }	ddl m}
  |«       }|�¹t        |«      | j                  v r5| j                  t        |«         } |
«       5 } ||g|¢­i |¤Ž}d d d «       nc|j                  r% |
«       5 }|j!                  | g ||«      cd d d «       S t#        d| j$                  › d|› d	|› d
|› d| j$                  › d|› d�«      ‚t&        ur|S |	D ]õ  }t        |«      }|j                   t(        j*                  j,                  u rŒ5|t(        j.                  j0                  j2                  u rMt(        j.                  j0                  j4                  }| j                  |   } ||j6                  g|¢­i |¤Ž}|c S || j                  v r| j                  |   } ||i |¤Ž}nt#        d| j$                  › d|› d�«      ‚|t&        usŒó|c S  t9        d| j$                  › d|› d|	D �cg c]  }t        |«      j:                  ‘Œ c}› d| j$                  › d|› d�«      ‚t(        j*                  j=                  |«      }|t        j>                  k(  r³ddl m}
 tA        «       dkD  r t(        j*                  jC                  t        j                  «      sstE        «       }|€t        d«      ‚t        |«      | j                  vrt        d|› d�«      ‚| j                  t        |«         } |
|«      5 } ||g|¢­i |¤Žcd d d «       S tG        | |«      }|| jH                  vrt#        d| j$                  › d|› d|› d�«      ‚|t        j>                  k7  r| jH                  |   | j                  |<   | jH                  |   }t        |t        «      rt        d|› �«      ‚ ||i |¤ŽS # 1 sw Y   �ŒàxY w# 1 sw Y   �ŒíxY wc c}w # 1 sw Y   ŒÅxY w)Nr   ©Ú_get_current_dispatch_modez!unexpected DispatchKey in cache: c                 ó^   — t         j                  j                  | «      j                  d«      S )NrM   )r;   r<   Ú_dispatch_keysr>   )Útensors    r!   Úhas_python_keyz4HigherOrderOperator.dispatch.<locals>.has_python_key�  s"   € Ü—x‘x×.Ñ.¨vÓ6×:Ñ:¸8ÓDÐDr.   c                 óp   •— t        | t        j                  «      r ‰| «      r‰j                  | «       y y y r&   )rK   r;   rH   Úappend)r¢   rÂ   Úoverloaded_args_lists    €€r!   Úcheck_overloadedz6HigherOrderOperator.dispatch.<locals>.check_overloaded�  s/   ø€ Ü˜c¤5§<¡<Ô0±^ÀCÔ5HØ(×/Ñ/°Õ4ð 6IÐ0r.   )Ú_pop_mode_temporarilyz5There was no rule registered for HigherOrderOperator z
 and mode z.Hint: set zc's supports_higher_order_operators to True. This causes all higher order operators to pass through zk's __torch_dispatch__, so handle them accordingly by adding support for HigerOrderOperators (in this case, z) in zC.__torch_dispatch__ or returning NotImplemented when not supported.z%There was no rule registered for HOP z and subclass z. We recommend filing an issue.zHigherOrderOperator 'z¹' is not supported for the given input types. This typically happens when using custom tensor types or dispatch modes that don't have implementations for this operation.

Current mode: z
Input types: z$

To fix this, can add support for 'z' in z's __torch_dispatch__
zIIllegal invocation of dispatch on DispatchKey.PreDispatch without a mode.zCurrent active mode z not registeredz.could not find kernel for HigherOrderOperator rq   z (resolved from ú)z&unexpected DispatchKey in py_kernels: )%Útorch.utils._python_dispatchr¾   r'   rK   r   rI   ÚFuncTorchDynamicLayerFrontModer   rM   ÚvaluesÚlistÚtuplerÇ   rL   r)   Úsupports_higher_order_operatorsÚ__torch_dispatch__r1   rŠ   rc   r;   r<   Ú_disabled_torch_dispatch_implÚ_subclassesÚfake_tensorr]   ÚFakeTensorModeÚ	fake_modeÚ	TypeErrorrk   Ú_to_functionality_keyÚPreDispatchÚ&_len_torch_dispatch_stack_pre_dispatchÚ&_dispatch_tls_is_dispatch_key_excludedÚ'_get_current_dispatch_mode_pre_dispatchr€   r(   )r,   r’   r3   r4   r¾   ÚkernelrÆ   r¢   ÚaÚoverloaded_argsrÇ   Ú	curr_modeÚhandlerrZ   ÚresultÚsubclass_typeÚfunctionality_keyÚ	final_keyrÂ   rÅ   s                     @@r!   ÚdispatchzHigherOrderOperator.dispatch{  s-  ù€ ÝKà˜4×/Ñ/Ñ/Ø×)Ñ)¨,Ñ7ˆFÜ˜&¤+Ô.Ü$Ð'HÈÈÐ%QÓRÐRÙ˜4Ð* 6Ñ*Ð*àœ;×EÑEÒEÜ% d¨D°&Ó9Ð9àœ;×-Ñ-Ó-ð $&Ð òEõ5ð 1˜Ð0 §¡£Ñ0ò ,�Ù  Ô%Ü˜c¤D¬% =Õ1Ø ò ,˜Ù(¨Õ+ñ,ð,ô $Ð$8Ó9ˆOõ Ká2Ó4ˆIØÐ$Ü˜	“? d×&;Ñ&;Ñ;Ø"×3Ñ3´D¸³OÑD�GÙ.Ó0ð @°Dñ ")¨Ð!?°Ò!?¸Ñ!?˜÷@ð @ð
 !×@Ò@Ù2Ó4ð X¸Ø#,×#?Ñ#?ÀÀbÈ$ÐPVÓ#W÷Xñ Xô 2ØSÐTX×T^ÑT^ÐS_Ð_iÐjsÐitð u)Ø)2¨ð 4WØW`ÐVað bVàVZ×V`ÑV`ÐUað b Ø )˜{ð +LðMóð ð ¤Ñ/Ø!�Mð 'ò "�Ü $ S£	�à!×4Ñ4Ü—x‘x×=Ñ=ñ>ð ð !¤E×$5Ñ$5×$AÑ$A×$LÑ$LÑLÜ$)×$5Ñ$5×$AÑ$A×$PÑ$P�MØ"×3Ñ3°MÑB�GÙ$ S§]¡]ÐD°TÒD¸VÑD�FØ!’Mà  D×$9Ñ$9Ñ9Ø"×3Ñ3°MÑB�Gñ % dÐ5¨fÑ5‘Fä-Ø?ÀÇ
Á
¸|È>ÐZgÐYhð i8ð 9óð ð ¤Ò/Ø!’Mð="ôB Ø'¨¯
©
 |ð 4!ð "+ ð , Ø;JÖ K°a¤ a£×!1Ó!1Ò KÐLð M5Ø59·Z±Z°LÀÀiÀ[ÐPgðióð ô "ŸH™H×:Ñ:¸<ÓHÐØ¤× 7Ñ 7Ò7ÝJô
 7Ó8¸1Ò<Ü—h‘h×EÑEÜ×"Ñ"ôô DÓE�	ØÐ$Ü(Øcóð ô ˜	“?¨$×*?Ñ*?Ñ?Ü(Ø.¨y¨k¸ÐIóð ð ×/Ñ/´°Y³Ñ@�Ù*Ð+<Ó=ð :ÀÙ" 4Ð9¨$Ò9°&Ñ9÷:ñ :ô    lÓ3ˆ	ð ˜DŸO™OÑ+Ü%Ø@ÀÇÁÀð M#Ø#, +Ð-=¸l¸^È1ðNóð ð œ;×2Ñ2Ò2Ø15·±ÀÑ1KˆD× Ñ  Ñ.Ø—‘ Ñ+ˆô �fœkÔ*Ü Ð#IÈ&ÈÐ!RÓSÐSÙ�tÐ&˜vÑ&Ð&÷[@ñ @ú÷Xñ Xüòl !L÷2:ð :ús*   Ä#Q2ÅQ?Ê:RÎ?RÑ2Q<Ñ?R	ÒRc                ó  — t        ||«      }t        j                  j                  |«      r$t        j                  j                  | |g|¢­i |¤ŽS t        ||| j                  «      } | j                  |j                  «       g|¢­i |¤ŽS r&   )	Ú_to_flat_tupler;   Ú	overridesÚhas_torch_functionÚhandle_torch_functionÚ_compute_keysetr�   rä   ÚhighestPriorityTypeId)r,   r3   r4   Ú	flat_argsÚdispatch_key_sets        r!   r5   zHigherOrderOperator.__call__  s‰   € ä" 4¨Ó0ˆ	Ü�?‰?×-Ñ-¨iÔ8Ü—?‘?×8Ñ8Ø�iðØ"&òØ*0ñð ô +¨4°¸×9RÑ9RÓSÐØˆt�}‰}Ð-×CÑCÓEÐWÈÒWÐPVÑWÐWr.   c                 ó4   — t        d| j                  › d�«      ‚)NzHigherOrderOperator z¼ does not implement a gen_schema. This is OK as long as the hop is functional. e.g. it should not mutate its inputs and there are no input, output aliasing via views or direct referencing.)r1   rŠ   r2   s      r!   r¨   zHigherOrderOperator.gen_schema)  s$   € Ü!Ø" 4§:¡: ,ð //ð 0ó
ð 	
r.   c                 ó$   — | j                  «       › S r&   )rO   r+   s    r!   Ú__str__zHigherOrderOperator.__str__1  s   € Ø—)‘)“+�Ðr.   c                 ó   — | j                   S r&   ©rŠ   r+   s    r!   rO   zHigherOrderOperator.name4  ó   € Ø�z‰zÐr.   c                 ó   — | S r&   rX   ©r,   Úmemos     r!   Ú__deepcopy__z HigherOrderOperator.__deepcopy__8  ó   € Øˆr.   r&   )rk   rl   rm   r-   rL   r   r;   rH   r   r   r   r   r   rQ   r­   Úpropertyr¯   r	   Úboolr„   r‘   rä   ÚabcÚabstractmethodr5   r¨   rð   rO   r÷   Ú__classcell__©r“   s   @r!   r�   r�     sù   ø„ ð "'Èö+ðD"àÐ!Ñ" T¨%¯,©,Ñ%7Ñ7¸-ÑGÈ+ÑUð"ð 
�8˜B ˜FÑ#Ð$ h¨r°2¨vÑ&6Ð6Ñ	7õ"ðà�R˜�VÑðð 
�"�b�&Ñ	óð> ñó ðð ð
˜4ò 
ó ð
òSò
U'ðn 	×ÑñXó ðXò,
ò ò÷r.   c                 ó,   — t        j                  | i |¤ŽS r&   )r¥   Úarg_tree_leaves©r3   r4   s     r!   ræ   ræ   <  s   € Ü×!Ñ! 4Ð2¨6Ñ2Ð2r.   c                 ó2   — t        | |«      }t        ||«      S r&   )Ú_get_tensorsÚkey_extractor)r3   r4   r�   Útensorss       r!   rê   rê   @  s   € Ü˜4 Ó(€GÜ˜Ð"6Ó7Ð7r.   c                 óŽ   — t        | |«      }|D �cg c]  }t        |t        j                  «      sŒ|‘Œ! }}t	        |«      S c c}w r&   )ræ   rK   r;   rH   rÍ   )r3   r4   Úflat_allr›   Útensor_argss        r!   r  r  E  s?   € Ü˜d FÓ+€HØ&ÖF˜¬*°Q¼¿¹Õ*E’1ÐF€KÐFÜ�ÓÐùò Gs
   ‘A±Ac                 óà   — t         j                  j                  «       }| D ]$  }|t         j                  j                  |«      z  }Œ& |t         j                  j	                  «       z
  }||z  }|S r&   )r;   r<   Ú_dispatch_tls_local_include_setrÀ   Ú_dispatch_tls_local_exclude_set)r  Úkey_maskÚkey_setrÁ   s       r!   r  r  M  sb   € Ü�h‰h×6Ñ6Ó8€GØò <ˆØœEŸH™H×3Ñ3°FÓ;Ñ;‰ð<àœŸ™×@Ñ@ÓBÑB€GØ˜Ñ €GØ€Nr.   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú_ModeStackStateForPreDispatchc                 ó$   — d d g| _         d | _        y r&   )Ú*_ModeStackStateForPreDispatch__infra_modesÚ_schema_check_moder+   s    r!   r-   z&_ModeStackStateForPreDispatch.__init__d  s   € Ø" D˜\ˆÔØ"&ˆÕr.   c                 óš   — |t        | j                  «      k\  r$t        d|› dt        | j                  «      › �«      ‚|| j                  |<   y ©Nzindex z& out of bounds for infra_modes length ©Úlenr  rI   )r,   ÚindexrZ   s      r!   Úsetz!_ModeStackStateForPreDispatch.seth  sQ   € Ø”C˜×*Ñ*Ó+Ò+Ü Ø˜˜ÐEÄcÈ$×J\ÑJ\ÓF]ÐE^Ð_óð ð %)ˆ×Ñ˜5Ò!r.   c                 ó˜   — |t        | j                  «      k\  r$t        d|› dt        | j                  «      › �«      ‚| j                  |   S r  r  )r,   r  s     r!   Úgetz!_ModeStackStateForPreDispatch.geto  sR   € Ø”C˜×*Ñ*Ó+Ò+Ü Ø˜˜ÐEÄcÈ$×J\ÑJ\ÓF]ÐE^Ð_óð ð ×!Ñ! %Ñ(Ð(r.   c                 óˆ   — t        | j                  D �cg c]  }|€Œ|‘Œ	 c}«      t        | j                  d u«      z   S c c}w r&   )r  r  Úintr  )r,   Úis     r!   Úcountz#_ModeStackStateForPreDispatch.countv  sB   € Ü˜t×1Ñ1ÖC˜!°Q±]’AÒCÓDÄsØ×#Ñ#¨4Ð/óH
ñ 
ð 	
ùÒCs   ”?œ?N)rk   rl   rm   r-   r  r  r  rX   r.   r!   r  r  c  s   „ ò'ò)ò)ó
r.   r  c                 óŽ  ‡ ‡— t        «       Št        j                  j                  j                  t        j                  j                  j
                  f}‰ �‰ |vrt        d|› d‰ › �«      ‚|r‰ �t        d«      ‚ˆˆ fd„} |«       }t        «       }|dk(  r.t        j                  j                  t        j                  d«       |S )Nz mode_key must be None or one of z, got z/mode_key must be None when schema_check is Truec                  óš  •— ‰t         j                  j                  j                  u r-‰j	                  d«      } t        «       j                  dd «       | S ‰t         j                  j                  j                  u r-‰j	                  d«      } t        «       j                  dd «       | S t        «       j                  } d t        «       _        | S )Nr   é   )	r;   r<   Ú_TorchDispatchModeKeyÚPROXYr  Ú!mode_stack_state_for_pre_dispatchr  Ú
FUNCTIONALr  )Úcurrent_modeÚcurrent_mode_stack_pre_dispatchÚmode_keys    €€r!   Ú_unset_modez,unset_mode_pre_dispatch.<locals>._unset_mode�  s§   ø€ ð ”u—x‘x×5Ñ5×;Ñ;Ñ;Ø:×>Ñ>¸qÓAˆLÜ-Ó/×3Ñ3°A°tÔ<ØÐØœŸ™×7Ñ7×BÑBÑBØ:×>Ñ>¸qÓAˆLÜ-Ó/×3Ñ3°A°tÔ<ØÐä<Ó>×QÑQˆLØEIÔ-Ó/ÔBØÐr.   r   F)r$  r;   r<   r"  r#  r%  rI   rØ   Ú'_dispatch_tls_set_dispatch_key_includedr   r×   )r(  Úschema_checkÚ
valid_keysr)  r&  Únew_pre_dispatch_lenr'  s   `     @r!   Úunset_mode_pre_dispatchr.    s¾   ù€ Ü&GÓ&IÐ#ä�‰×&Ñ&×,Ñ,Ü�‰×&Ñ&×1Ñ1ð€Jð Ð °
Ñ :ÜØ.¨z¨l¸&ÀÀ
ÐKó
ð 	
ñ ØÐÜ Ð!RÓSÐSõ ñ  “=€LäAÓCÐð
 ˜qÒ Ü�‰×8Ñ8¼×9PÑ9PÐRWÔXàÐr.   c                 ó–  — ddl m} ddlm} ddlm} t        | |||f«      st        dt        | «      › �«      ‚t        «       }t        | |«      r4t        «       j                  }|dkD  rt        d«      ‚| t        «       _        n“t        | |«      rDt        «       j                  d«      }|�t        d|› �«      ‚t        «       j                  d| «       nCt        «       j                  d«      }|�t        d	|› �«      ‚t        «       j                  d| «       |dk(  r/t        j                  j!                  t"        j$                  d
«       y y )Nr   )rT   )ÚSchemaCheckMode)ÚProxyTorchDispatchModezSmode must be FunctionalTensorMode, ProxyTorchDispatchMode, or SchemaCheckMode, got zYSchemaCheckMode for pre-dispatch must be used exclusively, found other modes on the stackr!  z.FunctionalTensorMode slot already occupied by z0ProxyTorchDispatchMode slot already occupied by T)rb   rT   Ú#torch._subclasses.schema_check_moder0  Ú"torch.fx.experimental.proxy_tensorr1  rK   rI   rL   rØ   r$  r  r  r  r;   r<   r*  r   r×   )rZ   rT   r0  r1  Úprevious_mode_stack_lenr&  s         r!   Ú_set_mode_pre_dispatchr5  ª  sP  € ÝHÝCÝIäØà Ø"Øð	
ôô ØaÔbfÐgkÓblÐamÐnó
ð 	
ô EÓFÐÜ�$˜Ô(Ü8Ó:×MÑMˆØ" QÒ&Ü Økóð ð BFÔ)Ó+Õ>Ü	�DÐ.Ô	/Ü8Ó:×>Ñ>¸qÓAˆØÐ#Ü Ø@ÀÀÐOóð ô 	*Ó+×/Ñ/°°4Õ8ä8Ó:×>Ñ>¸qÓAˆØÐ#Ü ØBÀ<À.ÐQóð ô 	*Ó+×/Ñ/°°4Ô8ð  !Ò#Ü�‰×8Ñ8¼×9PÑ9PÐRVÕWð $r.   c                  óv  — t        «       } t        «       }|dk(  rt        d«      ‚| j                  �t	        d d¬«      S | j                  d«      �-t	        t        j                  j                  j                  «      S | j                  d«      �-t	        t        j                  j                  j                  «      S y )Nr   zTrying to pop empty mode stackT)r+  r!  )r$  rØ   rI   r  r.  r  r;   r<   r"  r%  r#  )Ú
mode_stackÚpre_dispatch_lens     r!   Ú_pop_mode_from_pre_dispatchr9  Ú  s™   € Ü2Ó4€JÜ=Ó?Ðà˜1ÒÜÐ=Ó>Ð>à×$Ñ$Ð0Ü& t¸$Ô?Ð?Ø‡~�~�aÓÐ$Ü&¤u§x¡x×'EÑ'E×'PÑ'PÓQÐQØ‡~�~�aÓÐ$Ü&¤u§x¡x×'EÑ'E×'KÑ'KÓLÐLð %r.   c                  ó2   — t        «       j                  «       S r&   )r$  r  rX   r.   r!   rØ   rØ   é  s   € Ü,Ó.×4Ñ4Ó6Ð6r.   c                 ó  — | t         j                  j                  j                  u rt	        «       j                  d«      S | t         j                  j                  j                  urt        d| › �«      ‚t	        «       j                  d«      S )Nr   z*mode_key must be PROXY or FUNCTIONAL, got r!  )r;   r<   r"  r#  r$  r  r%  rI   )r(  s    r!   Ú_get_dispatch_mode_pre_dispatchr<  í  ss   € à”5—8‘8×1Ñ1×7Ñ7Ñ7Ü0Ó2×6Ñ6°qÓ9Ð9àœ5Ÿ8™8×9Ñ9×DÑDÑDÜ Ø<¸X¸JÐGóð ô 1Ó2×6Ñ6°qÓ9Ð9r.   c                  ó`  — t        «       j                  �t        «       j                  S t        «       j                  «       } | dk(  rt        «       j                  d«      S | dk(  rKt        «       j                  d«      �t        «       j                  d«      S t        «       j                  d«      S y )Né   r!  r   )r$  r  r  r  )Ú	stack_lens    r!   rÚ   rÚ   ù  sž   € Ü(Ó*×=Ñ=ÐIÜ0Ó2×EÑEÐEä5Ó7×=Ñ=Ó?ˆ	Ø˜Š>Ü4Ó6×:Ñ:¸1Ó=Ð=Ø˜Š>ô 5Ó6×:Ñ:¸1Ó=ÐIô 2Ó3×7Ñ7¸Ó:ðô 7Ó8×<Ñ<¸QÓ?ðð
 r.   c                  ó   — t         S r&   )Ú"_mode_stack_state_for_pre_dispatchrX   r.   r!   r$  r$  	  s   € ä-Ð-r.   Ú
OpOverloadÚ
cached_opsc                 ó.   — t         j                  | «       y r&   )rC  r•   )Úop_overloads    r!   Úadd_cached_oprF    s   € ä‡N�N�;Õr.   c                  ó,   — t         j                  «        y r&   )rC  rJ   rX   r.   r!   Úreset_cached_opsrH    s   € ä×ÑÕr.   c                  ó   — t         S r&   )rC  rX   r.   r!   Úget_cached_opsrJ    s   € äÐr.   c                   óÀ  ‡ — e Zd Zdddeeef   deeeef   ef   dej                  j                  dee   ddfˆ fd	„Zedefd
„«       Zedefd„«       Zedej                  j$                  fd„«       Zd$d„Zd„ Zdej,                  dej.                  defd„Zdej                  j2                  dej,                  dej.                  defd„Zd„ Zd„ Zdedefˆ fd„Zdej                  j2                  defˆ fd„Ze defd„«       Z!defd„Z"dej,                  dej.                  defd„Z#deddfd„Z$dedeeeef   z  fd„Z%d „ Z&e d!„ «       Z'e d"„ «       Z(e d#„ «       Z)ˆ xZ*S )%rB  ÚoverloadpacketÚOpOverloadPacketro   Úop_dkr«   ÚtagsrA   Nc                 óœ  •— t         ‰| �  «        || _        || _        || _        || _        || _        |j                  dk(  rdn|j                  | _        |r!t        j                  j                  |v | _        | j                  j                  | _        |j                  r"| xj                  d|j                  z   z  c_        | j                  j                  j                  d«      d   › d| j                  › �| _        |j"                  | _        |j"                  |_        | j                  | _        i | _        | j$                  t        j(                  j*                  v | _        d }| j                  j.                  D ]B  }|j0                  €Œ|€|j0                  j2                  }Œ)|j0                  j2                  xs |}ŒD |d uxr | | _        y )NÚ r   r³   ú::r!  )r‰   r-   Ú_opÚ_op_dkÚ_schemaÚ_overloadpacketÚ_tagsÚoverload_nameÚ_overloadnamer;   ÚTagÚnondeterministic_seededÚ_nondeterministic_seededrO   rŠ   Úsplitrk   rl   rm   Ú__annotations__ÚlibraryÚ_defsÚ_defined_in_pythonrª   Ú
alias_inforŸ   Úis_view)	r,   rL  ro   rN  r«   rO  rŸ   rÜ   r“   s	           €r!   r-   zOpOverload.__init__#  s’  ø€ ô 	‰ÑÔØˆŒØˆŒØˆŒØ-ˆÔØˆŒ
à×-Ñ-°Ò3‰I¸×9MÑ9Mð 	Ôñ Ü,1¯I©I×,MÑ,MÐQUÐ,UˆDÔ)Ø—\‘\×&Ñ&ˆŒ
Ø×ÒØ�JŠJ˜# × 4Ñ 4Ñ4Ñ4�JØŸ<™<×,Ñ,×2Ñ2°4Ó8¸Ñ;Ð<¸A¸d×>PÑ>PÐ=QÐRˆŒØ(×3Ñ3ˆŒØ&×1Ñ1ˆŒØ ŸJ™JˆÔØ!ˆÔð #'×"3Ñ"3´u·}±}×7JÑ7JÐ"JˆÔð ˆØ—‘×'Ñ'ò 	=ˆAØ�|‰|Ð#ØØÐØŸ<™<×0Ñ0‘ð Ÿ<™<×0Ñ0Ò<°H‘ð	=ð   tÐ+Ò<°H°ˆ�r.   c                 óV   — | j                   j                  j                  dd¬«      d   S )NrR  r!  ©Úmaxsplitr   ©rU  rO   r]  r+   s    r!   Ú
_namespacezOpOverload._namespaceO  ó'   € à�|‰|× Ñ ×&Ñ& t°aÐ&Ó8¸Ñ;Ð;r.   c                 óV   — | j                   j                  j                  dd¬«      d   S )NrR  r!  re  rg  r+   s    r!   Ú_opnamezOpOverload._opnameS  ri  r.   c                 ó’   — t         j                  j                  | j                  j                  | j                  j
                  «      S r&   )r;   r<   Ú_dispatch_find_schema_or_throwrU  rO   rX  r+   s    r!   Ú_handlezOpOverload._handleW  s2   € ä�x‰x×6Ñ6Ø�L‰L×Ñ˜tŸ|™|×9Ñ9ó
ð 	
r.   c                 ó   — | S r&   rX   rõ   s     r!   r÷   zOpOverload.__deepcopy__^  rø   r.   c                 óV   — d| j                   › d| j                  › d| j                  › d�S )Nz<OpOverload(op='r³   z', overload='z')>)rh  rk  rY  r+   s    r!   Ú__repr__zOpOverload.__repr__a  s.   € Ø! $§/¡/Ð!2°!°D·L±L°>ÀÈt×OaÑOaÐNbÐbeÐfÐfr.   r3   r4   c                ó&   —  | j                   |i |¤ŽS r&   ©rS  r2   s      r!   r5   zOpOverload.__call__f  s   € Øˆt�x‰x˜Ð( Ñ(Ð(r.   Úkeysetc                óB   —  | j                   j                  |g|¢­i |¤ŽS r&   )rn  Úredispatch_boxed)r,   rt  r3   r4   s       r!   Ú
redispatchzOpOverload.redispatchk  s%   € ð -ˆt�|‰|×,Ñ,¨VÐE°dÒE¸fÑEÐEr.   c                 ó,   — t        | j                  «      S r&   ©ÚhashrS  r+   s    r!   Ú__hash__zOpOverload.__hash__p  ó   € Ü�D—H‘H‹~Ðr.   c                 ó„   —  dj                   g | j                  j                  j                  d«      ¢| j                  ‘­Ž S )Nz{}.{}.{}rR  )ÚformatrU  rO   r]  rY  r+   s    r!   rð   zOpOverload.__str__t  s8   € Ø ˆz× Ñ ÐT $§,¡,×"3Ñ"3×"9Ñ"9¸$Ó"?ÐTÀ×ASÑASÒTÐTr.   r8   c                 ó‚   •— t         ‰| �  |«      xs. t        j                  j	                  | j                  «       |«      S r&   )r‰   r9   r;   r<   Ú%_dispatch_has_kernel_for_dispatch_keyrO   r–   s     €r!   r9   z&OpOverload.has_kernel_for_dispatch_keyw  s9   ø€ Ü‰wÑ2Øó
ò Lä�X‰X×;Ñ;¸D¿I¹I»KÈÓKð	Lr.   r?   c                 ó‚   •— t         j                  j                  | j                  «       |«      xs t        ‰| �  |«      S r&   )r;   r<   Ú)_dispatch_has_kernel_for_any_dispatch_keyrO   r‰   r@   )r,   r?   r“   s     €r!   r@   z*OpOverload.has_kernel_for_any_dispatch_key|  s7   ø€ Ü�x‰x×AÑAØ�I‰I‹K˜ó
ò 9ä‰WÑ4°RÓ8ð	9r.   c                 ó   — | j                   S r&   )rh  r+   s    r!   r¯   zOpOverload.namespace�  s   € à�‰Ðr.   c                 óž   — t         j                  }|| j                  v xs. t        j                  j                  | j                  «       |«      S r&   )r   rx   r(   r;   r<   r€  rO   )r,   Údks     r!   Ú_can_decomposezOpOverload._can_decompose…  s?   € Ü×2Ñ2ˆØ�T—_‘_Ð$ò 
¬¯©×(VÑ(VØ�I‰I‹K˜ó)
ð 	
r.   c                 óü   — t         j                  }|| j                  v r | j                  |   |i |¤ŽS t        j                  j                  | j                  «       |«      r | j                  |g|¢­i |¤ŽS t        S r&   )	r   rx   r(   r;   r<   r€  rO   rT  rc   )r,   r3   r4   r…  s       r!   Ú	decomposezOpOverload.decompose‹  sq   € Ü×2Ñ2ˆØ�—‘Ñ ð
 '�4—?‘? 2Ñ&¨Ð7°Ñ7Ð7Ü�X‰X×;Ñ;¸D¿I¹I»KÈÔLØ�4—;‘;˜rÐ3 DÒ3¨FÑ3Ð3ä!Ð!r.   Úkeyc                 ó<   — | j                   j                  |d «       y r&   )r'   Úpop)r,   r‰  s     r!   Ú_uncache_dispatchzOpOverload._uncache_dispatch   s   € Ø×Ñ× Ñ   dÕ+r.   c                 ó  ‡ ‡— ‰‰ j                   v rt        ‰ › d‰› d�«      ‚‰t        j                  k(  r�t	        ‰ t
        «      s(‰ j                  s‰‰ j                   ‰<   t        ‰ «       ‰S dt        j                  dt        j                  dt        fˆˆ fd„}|‰ j                   ‰<   t        ‰ «       |S t        j                  j                  ‰«      }|t        j                  k(  rjt!        «       }|dkD  r[t        j                  j#                  t        j                  «      s.dt        j                  dt        j                  dt        fˆ fd„}|S t%        ‰ ‰«      }‰t        j                  k7  }‰t        j&                  k(  rEdd lmc m} |j.                  r0|j1                  ‰ |«      }|r|‰ j                   ‰<   t        ‰ «       |S ‰ j2                  j5                  ||«      }|r|‰ j                   ‰<   t        ‰ «       |S )	Nú z already in dispatch cacher3   r4   rA   c                  ó8  •— ddl m} t         |«       «      }|€t        d«      ‚|‰j                  vr†t        ‰t        «      r`t        j                  j                  j                  «       5 }t        j                  j                  j                  |‰g| ¢­i |¤Žcd d d «       S  ‰j                  ‰g| ¢­i |¤ŽS t        j                  j                  j                  «       5 } ‰j                  |   |g| ¢­i |¤Žcd d d «       S # 1 sw Y   ŒTxY w# 1 sw Y   y xY w)Nr   r½   zDIllegal invocation of dispatch on DispatchKey.Python without a mode.)rÉ   r¾   rL   rI   r)   rK   ÚTorchBindOpOverloadr;   ÚutilsÚ_python_dispatchrÇ   Ú_libraryÚhandle_dispatch_moderT  )r3   r4   r¾   rÞ   rZ   r‰  r,   s        €€r!   rß   z)OpOverload._get_dispatch.<locals>.handler¯  s  ø€ ÝSô !Ñ!;Ó!=Ó>�	ØÐ$Ü(Ø^óð ð  D×$9Ñ$9Ñ9Ü! $Ô(;Ô<ä!ŸK™K×8Ñ8×NÑNÓPðØTXä#(§>¡>×#7Ñ#7×#LÑ#LØ $ dð$Ø-1ò$Ø5;ñ$÷ñ ð  +˜tŸ{™{¨3Ð@°Ò@¸Ñ@Ð@ä—[‘[×1Ñ1×GÑGÓIð SÈTØ;˜4×0Ñ0°Ñ;¸DÐRÀ4ÒRÈ6ÑR÷Sñ S÷ð ú÷Sð Sús   Á+.DÃ!DÄDÄDr   c                  óÆ   •— t         j                  d„ «       } |«       5 }t        j                  j                  j
                  |‰g| ¢­i |¤Žcd d d «       S # 1 sw Y   y xY w)Nc               3   ó`   K  — t        «       } 	 | –— t        | «       y # t        | «       w xY w­wr&   )r9  r5  )Útop_modes    r!   Ú(_temporarily_pop_modes_from_pre_dispatchz[OpOverload._get_dispatch.<locals>.handler.<locals>._temporarily_pop_modes_from_pre_dispatchÙ  s)   è ø€ ä#>Ó#@˜ð=Ø"*šNä2°8Õ<øÔ2°8Õ<üs   ‚.Ž ’.ž+«.)Ú
contextlibÚcontextmanagerr;   r“  r‘  r”  )r3   r4   r˜  rÞ   r,   s       €r!   rß   z)OpOverload._get_dispatch.<locals>.handlerØ  sh   ø€ Ü×.Ñ.ñ=ó /ð=ñ BÓCð ÀyÜ$Ÿ~™~×3Ñ3×HÑHØ% tð Ø.2ò Ø6<ñ ÷÷ ò ús   Ÿ.AÁA )r'   rI   r   rM   rK   r�  r)   rF  r   r3   r4   r   r;   r<   rÖ   r×   rØ   rÙ   r€   rh   Útorch._dispatch.pythonÚ	_dispatchÚpythonÚCROSSREF_FUNCTIONALIZEÚmake_crossref_functionalizer(   r  )	r,   r‰  rß   râ   Úcurr_stack_lenrã   Úcache_resultÚ
pydispatchÚrs	   ``       r!   Ú_get_dispatchzOpOverload._get_dispatch¤  sË  ù€ à�$×&Ñ&Ñ&Ü  D 6¨¨3¨%Ð/IÐ!JÓKÐKà”+×$Ñ$Ò$Ü˜dÔ$7Ô8À×AVÒAVØ,/�×$Ñ$ SÑ)Ü˜dÔ#Ø�
ðSœrŸw™wð S´"·)±)ð SÄö Sð2 )0ˆD× Ñ  Ñ%Ü˜$ÔØˆNä!ŸH™H×:Ñ:¸3Ó?ÐØ¤× 7Ñ 7Ò7ÜCÓEˆNð  Ò"ÜŸ™×GÑGÜ×&Ñ&ôð
¤2§7¡7ð ´b·i±ið ÄBõ ð& �ä  cÓ*ˆ	ð œk×5Ñ5Ñ5ˆð
 ”+×+Ñ+Ò+ß7Ð7à×0Ò0Ø$×@Ñ@ÀÀyÓQ�ÙØ07�D×(Ñ(¨Ñ-Ü! $Ô'Ø�à�O‰O×Ñ 	¨9Ó5ˆÙØ()ˆD× Ñ  Ñ%Ü˜$ÔØˆr.   c                 ó   — | j                   S r&   rò   r+   s    r!   rO   zOpOverload.name  ró   r.   c                 ó   — | j                   S r&   )rV  r+   s    r!   rL  zOpOverload.overloadpacket  s   € à×#Ñ#Ð#r.   c                 ó   — | j                   S r&   rs  r+   s    r!   ro   zOpOverload.op  r°   r.   c                 ó   — | j                   S r&   )rW  r+   s    r!   rO  zOpOverload.tags  s   € à�z‰zÐr.   r&   )+rk   rl   rm   r   r   r   r   r   r;   r<   ÚFunctionSchemarÌ   r   r-   r   Ústrrh  rk  Ú_DispatchOperatorHandlern  r÷   rq  r3   r4   r5   ÚDispatchKeySetrw  r{  rð   rú   r9   r@   rù   r¯   r†  rˆ  rŒ  r¤  rO   rL  ro   rO  rý   rþ   s   @r!   rB  rB  "  s1  ø„ ð*=à*ð*=ð �R˜�VÑð*=ð ˜ K° OÑ4°bÐ8Ñ9ð	*=ð
 —‘×'Ñ'ð*=ð �3‰ið*=ð 
õ*=ðX ð<˜Cò <ó ð<ð ð<˜ò <ó ð<ð ð
˜Ÿ™×9Ñ9ò 
ó ð
óògð
) §¡ð )°B·I±Ið )À"ó )ð
FØŸ™×0Ñ0ðFØ9;¿¹ðFØLNÏIÉIðFà	óFò
òUðL¨[ð L¸Tõ Lð
9°%·(±(×2IÑ2Ið 9Èdõ 9ð
 ð˜3ò ó ðð
 ó 
ð"˜rŸw™wð "°"·)±)ð "Àó "ð*, [ð ,°Tó ,ð_ ð _°¸xÈÈBÈÑ?OÑ1Oó _òBð ñ$ó ð$ð ñó ðð ñó ôr.   c                   ó    — e Zd Zdee   fd„Zdej                  dej                  de	fd„Z
dee   dej                  dej                  de	fd„Zy)	r�  rA   c                 óJ  ‡ — t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  t         j                  g}dt         fˆ fd„}|D �cg c]  } ||«      r|‘Œ c}S c c}w )Nr‰  c                 ó.  •— t         j                  j                  ‰j                  «       | «      r.t         j                  j	                  ‰j                  «       | «      S | ‰j
                  vxs) ‰j
                  |    t         j                  j                  u S r&   )r;   r<   r€  rO   Ú0_dispatch_kernel_for_dispatch_key_is_fallthroughr(   r_  Úfallthrough_kernel)r‰  r,   s    €r!   Ú(_may_use_fallthrough_instead_of_fallbackzWTorchBindOpOverload._fallthrough_keys.<locals>._may_use_fallthrough_instead_of_fallback*  ss   ø€ Ü�x‰x×=Ñ=¸d¿i¹i»kÈ3ÔOÜ—x‘x×PÑPØ—I‘I“K óð ð
 ˜4Ÿ?™?Ð*ò LØ—?‘? 3Ñ'¬5¯=©=×+KÑ+KÐKðr.   )	r   r{   ÚAutogradCPUÚAutogradCUDAÚADInplaceOrViewÚBackendSelectÚPythonTLSSnapshotÚPythonDispatcherrh   )r,   Ú_DEFAULT_FALLTHROUGH_KEYSr²  r‰  s   `   r!   Ú_fallthrough_keysz%TorchBindOpOverload._fallthrough_keys  s‹   ø€ ô × Ñ Ü×#Ñ#Ü×$Ñ$Ü×'Ñ'Ü×%Ñ%Ü×)Ñ)Ü×(Ñ(Ü×%Ñ%ð	%
Ð!ð		¼+õ 		ð 1ö
àÙ7¸Ô<ò ò
ð 	
ùò 
s   ÂB r3   r4   c                ó†   — t        ||«      r$ | j                  | j                  «       g|¢­i |¤ŽS  | j                  |i |¤ŽS r&   )Ú_must_dispatch_in_pythonÚ_dispatch_in_pythonrº  rS  r2   s      r!   r5   zTorchBindOpOverload.__call__=  sJ   € Ü# D¨&Ô1ð ,�4×+Ñ+¨D×,BÑ,BÓ,DÐVÀtÒVÈvÑVÐVØˆt�x‰x˜Ð( Ñ(Ð(r.   Úfallthrough_keysc           	      ó<  — t         j                  j                  «       }|D ]  }|j                  |«      }Œ t	        |||«      }|j                  «       }|| j                  vr| j                  |«      n| j                  |   }t        |t        «      r]t         j                  j                  | j                  «       |«      r | j                  ||gz   g|¢­i |¤ŽS t        d| › d|› d|› d�«      ‚t        |t        «      st        dt!        |«      › �«      ‚ ||i |¤ŽS )NzTorchbind op z4 received a FakeScriptObject input when dispatching zÖ. but no python implementation is found. Please file an issue on this when you encounter this error. This error can happen when you export or compile the model. It can still happen even if a C++ implementation for zz.  has been registered. That's because FakeScriptObject purely lives in python and cannot work  with a C++ implementation.zhandler must be callable, got )r;   r<   rŽ   r»   rê   rë   r'   r¤  rK   r   r°  rO   r½  rN   r   rI   rL   )	r,   r¾  r3   r4   r�   r‰  rí   r’   rß   s	            r!   r½  z'TorchBindOpOverload._dispatch_in_pythonE  sW  € ô  %Ÿx™x×=Ñ=Ó?ÐØ#ò 	DˆCØ#7×#>Ñ#>¸sÓ#CÑ ð	Dô +¨4°Ð9MÓNÐØ'×=Ñ=Ó?ˆð  4×#7Ñ#7Ñ7ð ×Ñ˜|Ô,à×%Ñ% lÑ3ð 	ô �gœ{Ô+ô �x‰x×HÑHØ—	‘	“˜\ôð 0�t×/Ñ/Ø$¨ ~Ñ5ðàòð ñð ô Ø ˜vÐ%YÐZaÐYbð cIð JVÈð W.ð	/óð ô ˜'¤8Ô,Ü Ð#AÄ$ÀwÃ-ÀÐ!QÓRÐRÙ˜Ð' Ñ'Ð'r.   N)rk   rl   rm   rÌ   r   rº  r   r3   r4   r   r5   r½  rX   r.   r!   r�  r�    sh   „ ð
 4¨Ñ#4ó 
ðB) §¡ð )°B·I±Ið )À"ó )ð((Ø $ [Ñ 1ð((Ø:<¿'¹'ð((ØMOÏYÉYð((à	ô((r.   r�  rA   c                 ó  — t        | t        j                  j                  j                  «      ryt        | t
        t        f«      rt        d„ | D «       «      S t        | t        «      r t        d„ | j                  «       D «       «      S y)z•Check if obj is or contains a FakeScriptObject.
    This is load-bearing for TorchBindOpOverloads so we avoid pytree
    since it's much slower.
    Tc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr&   ©Ú_contains_fake_script_object)r¡   Úitems     r!   r£   z/_contains_fake_script_object.<locals>.<genexpr>x  s   è ø€ ÒF¸$Ô/°×5ÑFùó   ‚c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr&   rÂ  ©r¡   Úvs     r!   r£   z/_contains_fake_script_object.<locals>.<genexpr>z  s   è ø€ ÒI°qÔ/°×2ÑIùrÅ  F)
rK   r;   r“  Úfake_class_registryÚFakeScriptObjectrÌ   rÍ   r©   ÚdictrË   )Úobjs    r!   rÃ  rÃ  p  sd   € ô
 �#”u—~‘~×9Ñ9×JÑJÔKØÜ	�Cœ$¤˜Ô	'ÜÑFÀ#ÔFÓFÐFÜ	�CœÔ	ÜÑI¸C¿J¹J»LÔIÓIÐIØr.   c                 ó„   — t        d„ | D «       «      xs- t        |«      xr  t        d„ |j                  «       D «       «      S )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr&   rÂ  r    s     r!   r£   z+_must_dispatch_in_python.<locals>.<genexpr>  s   è ø€ ÒA°SÔ+¨C×0ÑAùrÅ  c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr&   rÂ  rÇ  s     r!   r£   z+_must_dispatch_in_python.<locals>.<genexpr>€  s   è ø€ ÒVÀÔ9¸!×<ÑVùrÅ  )r©   rú   rË   r  s     r!   r¼  r¼  ~  s7   € ÜÑA¸DÔAÓAò ÜˆV‹ÒVœÑVÀfÇmÁmÃoÔVÓVðr.   r«   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ód   K  — | ](  }t        |j                  t        j                  «      –— Œ* y ­wr&   )rK   rL   r;   Ú	ClassTyper    s     r!   r£   z)_has_script_object_arg.<locals>.<genexpr>…  s   è ø€ ÒQ¸Œz˜#Ÿ(™(¤E§O¡O×4ÑQùs   ‚.0)r©   rª   )r«   s    r!   Ú_has_script_object_argrÓ  „  s   € ÜÑQÀ×@PÑ@PÔQÓQÐQr.   c            
       óö   — e Zd ZU dZee   ed<   dededeee	f   de
e   ddf
d	„Zdd
„Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Zdedeee	f   fd„Zdee   fd„Zdej.                  dej0                  de	fd„Zd„ Zy)rM  ú	torch.opsÚ__file__Úqualified_op_nameÚop_namero   Úoverload_namesrA   Nc                 ó¨   — || _         || _        || _        || _        g | _        t        d„ | j                  j                  «       D «       «      | _        y )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr&   )rÓ  )r¡   r«   s     r!   r£   z,OpOverloadPacket.__init__.<locals>.<genexpr>›  s   è ø€ ò .
Ø/5Ô" 6×*ñ.
ùrÅ  )	Ú_qualified_op_namerk   rS  Ú_overload_namesÚ_dirr©   Ú_schemasrË   Ú_has_torchbind_op_overload)r,   r×  rØ  ro   rÙ  s        r!   r-   zOpOverloadPacket.__init__�  sP   € ð #4ˆÔØˆŒØˆŒØ-ˆÔØ!ˆŒ	Ü*-ñ .
Ø9=¿¹×9MÑ9MÓ9Oô.
ó +
ˆÕ'r.   c                 ó   — | S r&   rX   rõ   s     r!   r÷   zOpOverloadPacket.__deepcopy__   rø   r.   c                 óR   —  dj                   | j                  j                  d«      Ž S )Nz<OpOverloadPacket(op='{}.{}')>rR  ©r~  rÜ  r]  r+   s    r!   rq  zOpOverloadPacket.__repr__£  s,   € Ø6Ð/×6Ñ6Ø×$Ñ$×*Ñ*¨4Ó0ð
ð 	
r.   c                 ó,   — t        | j                  «      S r&   ry  r+   s    r!   r{  zOpOverloadPacket.__hash__¨  r|  r.   c                 óR   —  dj                   | j                  j                  d«      Ž S )Nz{}.{}rR  rã  r+   s    r!   rð   zOpOverloadPacket.__str__«  s$   € Øˆw�~‰~˜t×6Ñ6×<Ñ<¸TÓBÐCÐCr.   c                 ó   — | j                   S r&   rs  r+   s    r!   ro   zOpOverloadPacket.op®  r°   r.   c                 ó’   — | j                   D �ci c]-  }|t        j                  j                  | j                  |«      “Œ/ c}S c c}w r&   )rÝ  r;   r<   Ú_get_schemarÜ  )r,   rX  s     r!   rß  zOpOverloadPacket._schemas²  sF   € ð "&×!5Ñ!5ö
àð œ5Ÿ8™8×/Ñ/°×0GÑ0GÈÓWÑWò
ð 	
ùò 
s   �2Ar‰  c           
      óÌ  — 	 |j                  d«      rt        | j                  |«      S 	 	 |dk(  rdn|}t
        j                  j                  | j                  |«      }|€t        dt	        | «      › d	|› d�«      ‚|\  }}}t
        j                  j                  | j                  |«      }t        |«      st        | ||||«      nt        | ||||«      }t        | ||«       | j                  j                  |«       |S # t        $ r3 t        dt	        | «      › dt	        | j                  «      › d|› d�«      d ‚w xY w# t         $ r t        dt	        | «      › d	|› d�«      d ‚w xY w)
NÚ__ú'zH' can't have an overload name beginning with '__' and the underlying op z has no attribute z either.r   rQ  zThe underlying op of 'z' has no overload name ')Ú
startswithÚgetattrrS  ÚAttributeErrorrª  r;   r<   Ú_get_operation_overloadrÜ  rè  rÓ  rB  r�  ÚsetattrrÞ  rÄ   rN   )	r,   r‰  Úuse_keyÚ
op_dk_tagsÚop_Úop_dk_rO  r«   Úoverloads	            r!   Ú__getattr__zOpOverloadPacket.__getattr__¹  s”  € ð	Ø�~‰~˜dÔ#Ü˜tŸx™x¨Ó-Ð-ð $ð	à 9Ò,‘b°#ˆGäŸ™×9Ñ9Ø×'Ñ'¨óˆJð Ð!Ü$Ø,¬S°«Y¨KÐ7OÐPSÈuÐTUÐVóð ð !+ÑˆC�˜Ü—X‘X×)Ñ)¨$×*AÑ*AÀ7ÓKˆFô .¨fÔ5ô ˜4  f¨f°dÔ;ä(¨¨s°F¸FÀDÓIð ô �D˜#˜xÔ(Ø�I‰I×Ñ˜SÔ!ØˆOøôA ò 	ô
 !Ø”C˜“I�;ð !Ü!$ T§X¡X£ Ð/AÀ#ÀÀhðPóð ðð	ûôB ò 	Ü Ø(¬¨T«¨Ð3KÈCÈ5ÐPQÐRóàðð	ús   ‚&C> «CD= Ã><D:Ä=&E#c                 ó,   — t        | j                  «      S r&   ©ÚiterrÞ  r+   s    r!   Ú__iter__zOpOverloadPacket.__iter__ê  ó   € Ü�D—I‘I‹Ðr.   r3   r4   c                ót   — | j                   rt        ||«      rt        | g|¢­i |¤ŽS  | j                  |i |¤ŽS r&   )rà  r¼  Ú!_call_overload_packet_from_pythonrS  r2   s      r!   r5   zOpOverloadPacket.__call__ï  sB   € ð ×*Ò*Ô/GÈÈfÔ/Uä4°TÐK¸DÒKÀFÑKÐKØˆt�x‰x˜Ð( Ñ(Ð(r.   c                 óH   — | j                   D �cg c]  }|r|nd‘Œ
 c}S c c}w )Nr   )rÝ  )r,   Úns     r!   Ú	overloadszOpOverloadPacket.overloadsþ  s#   € Ø/3×/CÑ/CÖD¨!‘Q‘˜IÑ%ÒDÐDùÒDs   �r&   )rk   rl   rm   rÖ  r   rª  r^  r   r   r   rÌ   r-   r÷   rq  r{  rð   rù   ro   rß  rB  rö  r   rú  r3   r4   r5   r   rX   r.   r!   rM  rM  Š  sä   … Ø)€Hˆh�s‰mÓ)ð
àð
ð ð
ð �R˜�VÑð	
ð
 ˜S™	ð
ð 
ó
ó&ò
ò
òDð ñó ðð ñ
ó ð
ð/˜sð / z°"°b°&Ñ'9ó /ðb˜( 3™-ó ð
) §¡ð )°B·I±Ið )À"ó )óEr.   rM  r3   r4   c                 ó¶  — t        j                  j                  | g|¢­i |¤Ž\  }}|r|S i }d }| j                  «       D ]?  }t	        | |«      }	 t        j                  j
                  |j                  g|¢­i |¤Ž}	|} n |r ||i |¤ŽS d| › d�}|j                  «       D ]  \  }}|d|› d|› d�z  }Œ t        |«      ‚# t        $ r}
|
||<   Y d }
~
Œ”d }
~
ww xY w)Nz'Fail to match any TorchBindOverload of z with following exceptions:
zOverload name z:
 ú
)	r;   r<   Ú(_maybe_call_torch_function_for_op_packetr   rí  Ú&_check_schema_allow_fake_script_objectrU  rN   Úitems)ro   r3   r4   Útorch_function_calledÚretÚ
exceptionsÚfound_oprX  rE  Ú_ÚeÚerr_msgr‰  Úmsgs                 r!   rý  rý    s+  € ô "'§¡×!RÑ!RØ
ð"Øò"Øñ"ÑÐ˜3ñ Øˆ
ð €JØ€HØŸ™›ò 	*ˆÜ˜b -Ó0ˆð	*Ü—‘×?Ñ?Ø×#Ñ#ðØ&*òØ.4ñˆAð #ˆHÙð	*ñ Ù˜Ð( Ñ(Ð(ð 2°"°Ð5RÐSð ð ×$Ñ$Ó&ò 5‰ˆˆSØ�^ C 5¨¨S¨E°Ð4Ñ4‰ð5ä
�wÓ
Ðøô ò 	*Ø()ˆJ�}Ö%ûð	*ús   Á/C Ã 	CÃ	CÃCc                   óR   ‡ — e Zd ZdZdZdeddfˆ fd„Zdee   fd„Zdede	fd	„Z
ˆ xZS )
Ú_OpNamespacea0  
    An op namespace to dynamically bind Operators into Python.

    Say a user has created a custom Operator called "my_namespace::my_op". To
    call this op, the user will write torch.ops.my_namespace.my_op(...).
    At startup, this operation will not yet be bound into Python. Instead, the
    following sequence of magic tricks will occur:
    1. `torch.ops.my_namespace` will invoke the `__getattr__` magic method
       on the `torch.ops` object, which will create a new `_OpNamespace`
       object called `my_namespace` and set it as an attribute on the `ops`
       object.
    2. `torch.ops.my_namespace.my_op` will then invoke `__getattr__` on
       the `my_namespace` object, which will retrieve the operation via
       `torch.get_operation`, a function bound from C++, and then in a similar
       fashion bind this new object onto the `my_namespace` object.
    3. `torch.ops.my_namespace.my_op(...)` then calls this new operation
        and subsequent accesses will incur no further lookup (the namespace and
        operation will already exist).
    rÕ  rO   rA   Nc                 óF   •— t         ‰| �  d|z   «       || _        g | _        y )Nz
torch.ops.)r‰   r-   rO   rÞ  )r,   rO   r“   s     €r!   r-   z_OpNamespace.__init__R  s#   ø€ Ü‰Ñ˜¨Ñ,Ô-ØˆŒ	Ø!ˆ�	r.   c                 ó,   — t        | j                  «      S r&   rø  r+   s    r!   rú  z_OpNamespace.__iter__W  rû  r.   rØ  c                 óò  — |dv rt        d|› d| j                  › d�«      ‚| j                  }|› d|› �}| j                  dz   |z   }	 t        ||«      \  }}|€t        d| j                  › d|› d�«      ‚	 ||_        t        ||||«      }| j                  dz   |z   |_        t        | ||«       | j                  j                  |«       |S # t        $ r"}t        d| j                  › d|› d�«      |‚d }~ww xY w)	N)Ú
__origin__Ú__self__zInvalid attribute 'z' for '_OpNamespace' 'rë  rR  r³   z'_OpNamespace' 'z' object has no attribute ')	rî  rO   rl   Ú_get_packetrN   rM  rð  rÞ  rÄ   )	r,   rØ  Únamespace_namer×  Úmodule_namero   rÙ  r  Úopoverloadpackets	            r!   rö  z_OpNamespace.__getattr__Z  s>  € ØÐ0Ñ0Ü Ø% g YÐ.DÀTÇYÁYÀKÈqÐQóð ð Ÿ™ˆØ-Ð.¨b°°	Ð:ÐØ—o‘o¨Ñ+¨nÑ<ˆð	Ü!,Ð->ÀÓ!LÑˆB�ØˆzÜ$Ø& t§y¡y kÐ1LÈWÈIÐUVÐWóð ð ð $ˆŒÜ+Ø˜w¨¨Nó
Ðð '+§o¡o¸Ñ&;¸nÑ&LÐÔ#ô 	��gÐ/Ô0Ø�	‰	×Ñ˜Ô!ØÐøô! ò 	ô !Ø" 4§9¡9 +Ð-HÈÈ	ÐQRÐSóàðûð	ús   Á-C Ã	C6ÃC1Ã1C6)rk   rl   rm   rn   rÖ  rª  r-   r   rú  rM  rö  rý   rþ   s   @r!   r  r  ;  sF   ø„ ñð( €Hð"˜Sð " Tõ "ð
˜( 3™-ó ð"  3ð " Ð+;÷ " r.   r  c                 ó´   — t         j                  j                  | «      \  }}|�1t         j                  j                  j                  || «       ||_        ||fS r&   )r;   r<   Ú_jit_get_operationÚjitÚ	_builtinsÚ_register_builtinrl   )ÚqualnameÚ	op_modulero   rÙ  s       r!   r  r    sN   € ÜŸ™×4Ñ4°XÓ>Ñ€BˆØ	€~ô 	�	‰	×Ñ×-Ñ-¨b°(Ô;Ø!ˆŒØˆ~ÐÐr.   c                 ó®   — t        | j                  | j                  j                  «      \  }}|€t	        d| j                  › �«      ‚|| _        || _        y )Nzfailed to get packet for )r  rÜ  rS  rl   rI   rÝ  )Úpacketro   rÙ  s      r!   Ú_refresh_packetr"  ‰  sQ   € Ü$ V×%>Ñ%>ÀÇ
Á
×@UÑ@UÓVÑ€BˆØ	€zÜÐ8¸×9RÑ9RÐ8SÐTÓUÐUØ€F„JØ+€FÕr.   c                   óF   ‡ — e Zd ZdZdˆ fd„Zdee   fd„Zdedefd„Z	ˆ xZ
S )Ú_HigherOrderNamespacerÕ  rA   c                 ó2   •— t         ‰| �  d«       g | _        y )Nrˆ   )r‰   r-   rÞ  ©r,   r“   s    €r!   r-   z_HigherOrderNamespace.__init__”  s   ø€ Ü‰ÑÐ1Ô2Ø!ˆ�	r.   c                 ó,   — t        | j                  «      S r&   rø  r+   s    r!   rú  z_HigherOrderNamespace.__iter__˜  rû  r.   rO   c                 ó¢   — t         j                  |«      }|€t        d|› d�«      ‚t        | ||«       | j                  j                  |«       |S )NzJ'_HigherOrderNamespace' 'torch.ops.higher_order' object has no attribute 'rë  )r‚   r  rî  rð  rÞ  rÄ   )r,   rO   ro   s      r!   rö  z!_HigherOrderNamespace.__getattr__›  sX   € ä×"Ñ" 4Ó(ˆØˆ:Ü Ø\Ð]aÐ\bÐbcÐdóð ô 	��d˜BÔØ�	‰	×Ñ˜ÔØˆ	r.   )rA   N)rk   rl   rm   rÖ  r-   r   rª  rú  r�   rö  rý   rþ   s   @r!   r$  r$  ‘  s1   ø„ Ø€Hõ"ð˜( 3™-ó ð	 ð 	Ð(;÷ 	r.   r$  c                   óP   ‡ — e Zd ZdZˆ fd„Zdedefd„Zdee   fd„Z	d„ Z
d„ Zˆ xZS )	Ú_Opsz_ops.pyc                 ón   •— t         ‰| �  d«       t        «       | _        t	        «       | _        g | _        y )NrÕ  )r‰   r-   r  Úloaded_librariesr$  r‡   rÞ  r&  s    €r!   r-   z_Ops.__init__ª  s,   ø€ Ü‰Ñ˜Ô%Ü #£ˆÔÜ1Ó3ˆÔØˆ�	r.   rO   rA   c                 ól   — t        |«      }t        | ||«       | j                  j                  |«       |S r&   )r  rð  rÞ  rÄ   )r,   rO   r¯   s      r!   rö  z_Ops.__getattr__°  s0   € ä  Ó&ˆ	Ü��d˜IÔ&Ø�	‰	×Ñ˜ÔØÐr.   c                 ó,   — t        | j                  «      S r&   rø  r+   s    r!   rú  z_Ops.__iter__·  rû  r.   c                 ó.   — t        j                  |«       y)a{  
        Imports a Python module that has torch.library registrations.

        Generally, to extend PyTorch with custom operators, a user will
        create a Python module whose import triggers registration of
        the custom operators via a torch.ops.load_library call or a call
        to one or more torch.library.* APIs.

        It is unexpected for Python modules to have side effects, so some
        linters and formatters will complain. Use this API to import Python
        modules that contain these torch.library side effects.

        Args:
            module (str): The name of the Python module to import

        N)Ú	importlibÚimport_module)r,   Úmodules     r!   r1  z_Ops.import_moduleº  s   € ô" 	×Ñ Õ'r.   c                 ó  — t        j                  |«      }t        «       5  	 t        j                  |«       	 ddd«       | j                  j                  |«       y# t
        $ r}t        d|› �«      |‚d}~ww xY w# 1 sw Y   ŒExY w)a  
        Loads a shared library from the given path into the current process.

        The library being loaded may run global initialization code to register
        custom operators with the PyTorch JIT runtime. This allows dynamically
        loading custom operators. For this, you should compile your operator
        and the static registration code into a shared library object, and then
        call ``torch.ops.load_library('path/to/libcustom.so')`` to load the
        shared object.

        After the library is loaded, it is added to the
        ``torch.ops.loaded_libraries`` attribute, a set that may be inspected
        for the paths of all libraries loaded using this function.

        Args:
            path (str): A path to a shared library to load.
        zCould not load this library: N)	r   Úresolve_library_pathr"   r   ÚCDLLÚ	ExceptionÚOSErrorr,  r•   )r,   Úpathr  s      r!   Úload_libraryz_Ops.load_libraryÍ  sƒ   € ô$ ×3Ñ3°DÓ9ˆÜ‹_ñ 	MðMÜ—‘˜DÕ!÷	Mð 	×Ñ×!Ñ! $Õ'øô ò MÜÐ =¸d¸VÐDÓEÈ1ÐLûðMú÷	Mð 	Mús(    A<¢AÁ	A9Á%A4Á4A9Á9A<Á<B)rk   rl   rm   rÖ  r-   rª  r  rö  r   rú  r1  r9  rý   rþ   s   @r!   r*  r*  §  s:   ø„ Ø€Hôð ð ¨ó ð˜( 3™-ó ò(ö&(r.   r*  Úops)F)erû   r™  r   r0  rE   r   ÚtypesÚcollections.abcr   r   Ú	functoolsr   Útypingr   r   r   r	   r
   r   Útyping_extensionsr   r   r;   Útorch.utils._pytreer‘  Ú_pytreer¥   r   Útorch._Cr   rt   r   Útorch._functorch.pyfunctorchr   r   rÉ   r   r   ÚImportErrorrL   rc   rb   r   r   r   Úhasattrr   rš  r"   r$   r€   r‚   rË  rª  r^  r¸  r·  rµ  r¶  ÚAutocastCPUÚAutocastCUDAÚAutocastXPUr�   ÚABCr�   ræ   rê   r  r  r  rA  r.  r5  r9  rØ   r<  rÚ   r$  r  rC  rF  rH  rJ  rB  r�  rú   rÃ  r¼  r©  rÓ  rM  r3   r4   rý  Ú
ModuleTyper  r  r"  r$  r*  r:  rX   r.   r!   ú<module>rK     sÒ  ðä 
Û Û Û Û Û 
Û ß .Ý %ß L× Lß 0ã ß $Ð $Ý !ß Xß JÝ :ð.Ý(ñ
 ÝHñ ˆT˜3Ô€Ùˆt˜SÔ!€ñ ˜CÐ!1Ó2ÒU±w¸sÐDTÓ7UÐ ð ×Ññ&ó ð&÷ V"ñ V"ðt2U�Lð 2U [ó 2Uðj 79Ð �4˜Ð2Ð2Ñ3Ó 8ð × Ñ Ø×!Ñ!Ø×ÑØ×ÑØ×ÑØ×ÑØ×Ñð6Ð 2ôd˜,¨¯©ô dòN	3ò8ò
ò÷,
ñ 
ñ2 &CÓ%DÐ "ó(òV-Xò`Mò7ò	:òò .ñ
 !$£€
ˆC�ÑÓ %ò ò
ò
ôp�˜w r¨2 v™ô pôrR(˜* R¨ VÑ,ô R(ðj¨ó ð¨dó ðR 5×#7Ñ#7ð R¸Dó RôuE�w˜r 2˜v‘ô uEðt% Ø˜˜R˜Ñ ð% Ø)+¯©ð% Ø<>¿I¹Ið% àó% ônA �5×#Ñ#ô A òHò,ô˜E×,Ñ,ô ô,A(ˆ5×Ñô A(ñJ ‹F€€TÔ øði. ò .Ù˜nÓ-Óð.ús   Á.I
 É
IÉI