Ë
    Z^(héÇ ã                  ó:  — U d dl m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
 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Zd dlmc mZ d dlmc mZ d dlmc mZ d dlmc mZ d dl m!Z! d dl"m#Z# d dl$m%Z% d d	l&m'Z' d d
l(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[ d dl\m]Z]m^Z^m_Z_m`Z` d dlambZb d dlcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZk d dllmmZmmnZn erd dlompZp  ed«      Zq G d„ den«      Zr e	dddg«      Zsi atdeud<   i avdeud<   	 	 	 	 	 	 	 	 d^d„Zw	 	 	 d_	 	 	 	 	 	 	 	 	 	 	 d`d!„Zxdadbd"„Zyejô                  dcd#„«       Z{	 ddd dd$œ	 	 	 	 	 	 	 	 	 	 	 ded%„Z|dfd&„Z}dgd'„Z~dhd(„Z	 	 	 	 	 	 did)„Z€	 	 	 	 	 	 djd*„Z�dkd+„Z‚	 	 	 	 	 	 dld,„Zƒ	 	 	 	 	 	 	 	 dmd-„Z„	 	 	 	 	 	 	 	 dnd.„Z…	 	 	 	 	 	 	 	 dnd/„Z† ed0¬1«       G d2„ d3«      «       Z‡ ed0¬1«       G d4„ d5«      «       Zˆ ed0¬1«       G d6„ d7«      «       Z‰ ed0¬1«       G d8„ d9«      «       ZŠ ed0¬1«       G d:„ d;«      «       Z‹e3dod<„«       ZŒdpd=„Z�dqd>„ZŽ ed0¬1«       G d?„ d@«      «       Z�drdA„Z�dsdB„Z‘dtdC„Z’dudD„Z“	 	 	 	 dvdE„Z”	 	 	 	 	 	 	 	 	 	 	 	 dwdF„Z•	 	 	 	 	 	 	 	 	 	 	 	 dxdG„Z–e3dydH„«       Z—dzdI„Z˜e4	 	 	 	 	 	 d{dJ„«       Z™	 	 	 	 	 	 d|dK„Zš	 	 	 	 d}dL„Z›	 	 	 	 d~dM„Zœe!�j:                  dNœ	 	 	 	 	 	 	 ddO„Zž	 	 	 	 d€dP„ZŸe!�j:                  dNœ	 	 	 	 	 	 	 d�dQ„Z 	 	 	 	 	 	 d‚dR„Z¡	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dƒdS„Z¢	 	 	 	 	 	 	 	 	 	 	 	 	 	 d„dT„Z£	 	 	 	 	 	 d…dU„Z¤	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d†dV„Z¥	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d‡dW„Z¦	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dˆdX„Z§	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d‰dY„Z¨	 	 	 	 	 	 dŠdZ„Z©d‹d[„ZªdŒd\„Z«e¬d]k(  r e««        yy)�é    )ÚannotationsN)ÚdefaultdictÚ
namedtupleÚOrderedDict)Ú	dataclassÚfield)ÚPath)ÚAnyÚCallableÚLiteralÚTYPE_CHECKINGÚTypeVar)Úinductor_fallback_ops)Úcpp)Ú	translate)ÚBindingÚCppSignatureÚCppSignatureGroupÚDispatcherSignatureÚ
NamedCTypeÚNativeSignatureÚSpecialArgName)Úmethod_with_native_functionÚnative_function_managerÚwith_native_functionÚ with_native_function_and_indices)Úgen_aoti_c_shimÚ*gen_static_dispatch_backend_call_signatureÚget_fallback_op_nameÚget_header_for_aoti)Ú gen_functionalization_definitionÚ"gen_functionalization_registrationÚ.gen_functionalization_view_inverse_declarationÚGenCompositeViewCopyKernel©Úgen_all_vmap_plumbing)ÚArgumentÚBackendIndexÚBackendMetadataÚBaseOperatorNameÚDEFAULT_KERNEL_NAMESPACEÚdispatch_device_mapÚDispatchKeyÚFRAGMENT_NAMESPACESÚFunctionSchemaÚis_cuda_dispatch_keyÚis_generic_dispatch_keyÚis_ufunc_dispatch_keyÚis_xpu_dispatch_keyÚLocationÚNativeFunctionÚNativeFunctionsGroupÚNativeFunctionsViewGroupÚOperatorNameÚOptionalTypeÚ
SchemaKindÚSelfArgumentÚSTRUCTURED_DISPATCH_KEYSÚTensorOptionsArgumentsÚTypeÚVariantÚViewSchemaKind)Úadd_generated_native_functionsÚgen_composite_functional_kernelÚgen_composite_out_kernelÚpre_group_native_functions)ÚSelectiveBuilder)Úassert_neverÚ	concatMapÚcontextÚFileManagerÚmake_file_managerÚmapMaybeÚNamespaceHelperÚTarget)Ú
YamlDumperÚ
YamlLoader)ÚSequenceÚTc                  ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )Ú
LineLoaderc                ób   •— t         ‰| �  ||¬«      }|j                  j                  dz   |d<   |S )N)Údeepé   Ú__line__)ÚsuperÚconstruct_mappingÚ
start_markÚline)ÚselfÚnoderU   ÚmappingÚ	__class__s       €úJ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torchgen/gen.pyrY   zLineLoader.construct_mapping‰   s5   ø€ Ü‘'Ñ+¨D°tÐ+Ó<ˆà"Ÿo™o×2Ñ2°QÑ6ˆ�
ÑØˆó    )F)Ú__name__Ú
__module__Ú__qualname__rY   Ú__classcell__)r_   s   @r`   rS   rS   ˆ   s   ø„ ÷ñ ra   rS   Ú
ParsedYamlÚnative_functionsÚbackend_indiceszdict[str, ParsedYaml]Ú_GLOBAL_PARSE_NATIVE_YAML_CACHEzdict[str, set[str]]Ú_GLOBAL_PARSE_TAGS_YAML_CACHEc                óv   ‡ — |j                  t        ˆ fd„t        j                  «       D «       d«      |«      }|S )Nc              3  ó8   •K  — | ]  \  }} |‰«      r|–— Œ y ­w©N© )Ú.0ÚcheckÚdeviceÚdispatch_keys      €r`   ú	<genexpr>z1file_manager_from_dispatch_key.<locals>.<genexpr>Ÿ   s%   øè ø€ ò á!�E˜6Ù˜Ô&ô ñùs   ƒÚ )ÚgetÚnextr,   Úitems)rr   Ú
device_fmsÚ
default_fmÚfms   `   r`   Úfile_manager_from_dispatch_keyr{   ˜   sB   ø€ ð
 
�‰Üóä%8×%>Ñ%>Ó%@ôð
 ó	
ð 	ó

€Bð €Ira   Fc           	     óä  ‡‡— t        | t        «      sJ ‚g }t        t        «      }| D ]È  }t        |t        «      s
J d|› �«       ‚t        |j	                  d«      t
        «      sJ |«       ‚t        ||d   «      Š|j	                  d«      Š‰€
J d|› �«       ‚t        ˆˆfd„«      5  t        j                  |‰||«      \  }}	|j                  |«       t        j                  ||	«       d d d «       ŒÊ t        |«       t        d„ «      }
|st        ||«       |j                  «       D ].  \  }}t        |ddt!        |«      xs t#        |«      |¬	«      |
|<   Œ0 t%        ||
«      S # 1 sw Y   �ŒGxY w)
Nzexpected to be dict: rW   Úfunczmissed 'func' in c                 ó   •— d‰› d‰ › �S ©Nzin z:
  rn   )ÚfuncsÚlocs   €€r`   ú<lambda>z*parse_native_yaml_struct.<locals>.<lambda>»   s   ø€ ˜s 3 % u¨U¨GÐ4€ ra   c                 ó>   — t        t        j                  dddi ¬«      S )NTF©rr   Úuse_out_as_primaryÚexternalÚdevice_guardÚindex)r(   r-   Ú	Undefinedrn   ra   r`   r‚   z*parse_native_yaml_struct.<locals>.<lambda>Â   s"   € ”Ü$×.Ñ.Ø#ØØð ô
€ ra   TFr„   )Ú
isinstanceÚlistr   Údictru   Úintr4   rH   r5   Ú	from_yamlÚappendr(   Ú
grow_indexÚerror_check_native_functionsrA   rw   r0   r3   rf   )ÚesÚ
valid_tagsÚignore_keysÚpathÚskip_native_fns_genÚrsÚbsÚer}   ÚmÚindicesÚkÚvr€   r�   s                @@r`   Úparse_native_yaml_structrž   «   sy  ù€ ô �bœ$ÔÐÐØ!€BÜALÌTÓAR€BØò 	+ˆÜ˜!œTÔ"Ð?Ð&;¸A¸3Ð$?Ó?Ð"Ü˜!Ÿ%™% 
Ó+¬SÔ1Ð4°1Ó4Ð1Ü�t˜Q˜z™]Ó+ˆØ—‘�f“ˆØÐ Ð9Ð$5°a°SÐ"9Ó9Ð ÜÔ4Ó5ñ 	+Ü$×.Ñ.¨q°#°zÀ;ÓO‰GˆD�!Ø�I‰I�dŒOÜ×#Ñ# B¨Ô*÷	+ð 	+ð	+ô ! Ô$ä/:ñ	
ó
0€Gñ Ü& r¨2Ô.Ø—‘“
ò 	
‰ˆˆ1ä!ØØ#Øä-¨aÓ0ÒJÔ4GÈÓ4JØô
ˆ�Š
ð	
ô �b˜'Ó"Ð"÷;	+ñ 	+ús   Â&AE%Å%E/	c                óº  ‡‡— t        | t        «      sJ ‚t        «       }| D ]«  }t        |j                  d«      t        «      sJ |«       ‚t        ||d   «      Š|j                  d«      Št        ˆˆfd„«      5  |j                  «       }|j                  d«      }|j                  dd«      }|dk7  sJ ‚|j                  |«       d d d «       Œ­ |S # 1 sw Y   Œ¹xY w)NrW   Útagc                 ó   •— d‰ › d‰› �S r   rn   )r�   Útagss   €€r`   r‚   z(parse_tags_yaml_struct.<locals>.<lambda>â   s   ø€ ˜s 3 % u¨T¨FÐ3€ ra   Údescrt   )
rŠ   r‹   Úsetru   r�   r4   rH   ÚcopyÚpopÚadd)	r’   r•   r—   r™   Úe_iÚnamer£   r�   r¢   s	          @@r`   Úparse_tags_yaml_structrª   Û   sÍ   ù€ Ü�bœ$ÔÐÐÜ“5€BØò 
ˆÜ˜!Ÿ%™% 
Ó+¬SÔ1Ð4°1Ó4Ð1Ü�t˜Q˜z™]Ó+ˆØ�u‰u�U‹|ˆÜÔ3Ó4ñ 	Ø—&‘&“(ˆCØ—7‘7˜5“>ˆDØ—7‘7˜6 2Ó&ˆDà˜2’:Ð�:Ø�F‰F�4ŒL÷	ð 	ð	
ð €I÷	ð 	ús   Á9ACÃC	c                óä   — | t         vrLt        | «      5 }t        j                  |t        ¬«      }t        || ¬«      t         | <   d d d «       t         |    S t         |    S # 1 sw Y   t         |    S xY w)N©ÚLoader)r•   )rj   ÚopenÚyamlÚloadrS   rª   )r•   Úfr’   s      r`   Úparse_tags_yamlr²   ì   sq   € ð Ô0Ñ0Ü�$‹Zð 	X˜1Ü—‘˜1¤ZÔ0ˆBÜ2HÈÐRVÔ2WÔ)¨$Ñ/÷	Xô )¨Ñ.Ð.Ô(¨Ñ.Ð.÷		Xô )¨Ñ.Ð.ús   ”0AÁA/)r–   Úloaded_yamlc               óè   — | t         vrVt        |«      }|€0t        | «      5 }t        j                  |t
        ¬«      }d d d «       n|}t        ||| |¬«      t         | <   t         |    S # 1 sw Y   Œ)xY w)Nr¬   )r•   r–   )ri   r²   r®   r¯   r°   rS   rž   )r•   Útags_yaml_pathr”   r–   r³   r“   r±   r’   s           r`   Úparse_native_yamlr¶   ÷   s…   € ð Ô2Ñ2Ü$ ^Ó4ˆ
ð ÐÜ�d“ð 5˜qÜ—Y‘Y˜q¬Ô4�÷5ð 5ð ˆBä0HØØØØØ 3ô1
Ô'¨Ñ-ô +¨4Ñ0Ð0÷5ð 5ús   ¡A(Á(A1c           	     óÈ  — i }t        t        «      }| D ]M  }|||j                  j                  <   ||j                  j                  j                     j	                  |«       ŒO | D �]y  }|j
                  �™|j                  |j
                  «      }|€8J |j                  j                  › d|j
                  › d|j
                  › d�«       ‚|j                  s8J |j                  j                  › d|j
                  › d|j
                  › d�«       ‚t        t        j                  «      }h d£}|j                  j                  j                  D ]n  }|j                  |v sŒt        |j                  j                  «      |j                  f|vsŒ@t        d|j                  › d|j                  j                  › d�«      ‚ d	|j                  v s�Œgt        |j                  j                  «      d
k7  s�Œ‹t        |j                  j                  «      dk7  s�Œ¯t        |j                  j                  j                  «      dk7  s�ŒÝ|j                  j                  j                  }|j                   sJ |j                  j                  › d�«       ‚t#        |j$                  d|j&                  «      }	t)        ||	   «      dkD  r�Œ[J |j                  j                  › d|› d�«       ‚ y )Nz0 is marked as a structured_delegate pointing to z, but z is missing.zY is not marked as structured. Consider adding 'structured=True' to the delegated operator>   ©zrandom_.fromÚfrom©Úuniform_r¹   ©Ú!_has_compatible_shallow_copy_typer¹   zArgument name 'z' in function 'z' is a reserved Python keyword.Úinplace_viewÚresize_Ú
resize_as_Úset_z¢ is marked with tag: inplace_view, but it doesn't follow the naming convention for inplace ops - the codegen expects the base name to have a trailing underscore. Fr   zw is marked with tag: inplace_view. The codegen expects there to be a corresponding out-of-place view op with the name 'z/' and matching schema, but it didn't find one. )r   r‹   r}   r©   r�   Ústructured_delegateru   Ú
structuredr¤   ÚkeywordÚkwlistÚ	argumentsÚflat_allÚstrÚAssertionErrorr¢   Úinplacer*   ÚbaseÚdunder_methodÚlen)
r€   Úfunc_mapÚbase_func_mapr±   Údelegate_funcÚPYTHON_RESERVED_KEYWORDSÚEXCLUSION_LISTÚargÚ	base_nameÚout_of_place_base_names
             r`   r‘   r‘     sœ  € Ø35€HÜBMÌdÓBS€MØò 2ˆØ !ˆ�—‘—‘ÑØ�a—f‘f—k‘k×&Ñ&Ñ'×.Ñ.¨qÕ1ð2ð ó 3ˆØ× Ñ Ð,Ø$ŸL™L¨×)>Ñ)>Ó?ˆMØ Ð,ð Ø—6‘6—;‘;�-ÐOØ×(Ñ(Ð)¨°×0EÑ0EÐ/FÀlðTóÐ,ð !×+Ò+ð Ø—6‘6—;‘;�-ÐOØ×(Ñ(Ð)¨°×0EÑ0EÐ/Fð GNðOóÐ+ô $'¤w§~¡~Ó#6Ð ò
ˆð —6‘6×#Ñ#×,Ñ,ò 	ˆCØ�x‰xÐ3Ò3Ü˜Ÿ™Ÿ™Ó$ c§h¡hÐ/°~ÒEÜ(Ø)¨#¯(©(¨°?À1Ç6Á6Ç;Á;À-ÐOnÐoóð ð	ð ˜aŸf™fÓ$Ü�A—F‘F—K‘KÓ  IÔ-Ü�A—F‘F—K‘KÓ  LÔ0Ü�A—F‘F—K‘K×$Ñ$Ó%¨Ô/àŸ™Ÿ™×(Ñ(ˆIØ×$Ò$ð Ø—6‘6—;‘;�-ð  qð qóÐ$ô &6Ø—‘  y×'>Ñ'>ó&Ð"ô �}Ð%;Ñ<Ó=ÀÔAð Ø—6‘6—;‘;�-ð  7Ø7@°kÐApðróÐAña3ra   c                ó.  — | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  d	d
«      } | j                  dd«      } | j                  dd«      } | j                  dd«      } d| › d�S )z1Convert a python string into a c++ string literalú\z\\ú"z\"úz\aúz\búz\fú
z\núz\vú	z\t)Úreplace©Úss    r`   Ú
cpp_stringrâ   S  s�   € à	�	‰	�$˜Ó€AØ	�	‰	�#�uÓ€AØ	�	‰	�$˜Ó€AØ	�	‰	�$˜Ó€AØ	�	‰	�$˜Ó€AØ	�	‰	�$˜Ó€AØ	�	‰	�$˜Ó€AØ	�	‰	�$˜Ó€AØˆqˆc�ˆ8€Ora   c                óÞ   — t        | «      dk(  rg S | D �cg c]  }|j                  ‘Œ c}t        j                  t        j                  t        j
                  t        j                  gz   S c c}w )Nr   )rÍ   rr   r-   ÚCompositeImplicitAutogradÚ%CompositeImplicitAutogradNestedTensorÚCompositeExplicitAutogradÚ&CompositeExplicitAutogradNonFunctional)ÚbackendsÚbackends     r`   Ústatic_dispatch_keysrê   m  s^   € Ü
ˆ8ƒ}˜ÒØˆ	à4<Ö=¨�×$Ó$Ò=Ü×1Ñ1Ü×=Ñ=Ü×1Ñ1Ü×>Ñ>ð	A
ñ 
ð 	
ùÒ=s   •A*c                ó6  — | j                   €|j                  | «      r|j                  S | j                  rt        j
                  S | j                  rt        j                  S | j                  rt        j                  S | j                  rt        j                  S y rm   )rÂ   Ú
has_kernelrr   Ú&has_composite_explicit_autograd_kernelr-   ræ   Ú5has_composite_explicit_autograd_non_functional_kernelrç   Ú&has_composite_implicit_autograd_kernelrä   Ú4has_composite_implicit_autograd_nested_tensor_kernelrå   )r±   Úbackend_indexs     r`   Úget_static_dispatch_backendrò   y  s‚   € ð 	×ÑÐ(¨M×,DÑ,DÀQÔ,Gð
 ×)Ñ)Ð)Ø	
×	1Ò	1Ü×4Ñ4Ð4Ø	
×	@Ò	@Ü×AÑAÐAØ	
×	1Ò	1Ü×4Ñ4Ð4Ø	
×	?Ò	?Ü×@Ñ@Ð@Øra   c                óÒ   — |�| j                   ry g }|D ]A  }t        | |«      }|€Œ|j                  d| j                  › d|j	                  «       › d�«       ŒC dj                  |«      S )Nú#include <ATen/ops/Ú_ú_dispatch.h>rÜ   )Úmanual_kernel_registrationrò   r�   Ú	root_nameÚlowerÚjoin)r±   rñ   Úoutputrˆ   rr   s        r`   Ústatic_dispatch_ops_headerrü   �  sx   € ð Ð × <Ò <Øà€FØò ˆÜ2°1°eÓ<ˆØÑ#Ø�M‰MØ% a§k¡k ]°!°L×4FÑ4FÓ4HÐ3IÈÐVõðð �9‰9�VÓÐra   c                óF   — t        | «      D �cg c]  }d|› d�‘Œ
 c}S c c}w )Nú#include <ATen/úFunctions.h>)rê   )rè   rr   s     r`   Ústatic_dispatch_extra_headersr   �  s2   € ô 1°Ó:öàð ˜,˜ |Ò4òð ùò s   Žc                ó&  — dd„}t        | j                  «       «      }t        |j                  «       «      }|D ]3  }|j                  j                  t        j
                  k(  sŒ+ ||«      } n t        ||«      }dj                  d„ |D «       «      S )Nc                ó.  — g }| D ]�  }|j                   dk(  rkt        t        t        j                  |j
                  j                  «      |j                   |j                  |j                  ¬«      }|j                  |«       Œ}|j                  |«       Œ� |S )NÚmemory_format)Únctyper©   ÚdefaultÚargument)
r©   r   r   r   Ú possibly_redundant_memory_formatr  Útyper  r  r�   )Úinput_bindingsÚoutput_bindingsÚbindingÚspl_mem_format_bindings       r`   Úadd_spl_memory_format_bindingz5translate_args.<locals>.add_spl_memory_format_binding¬  s‹   € Ø)+ˆØ%ò 	0ˆGØ�|‰|˜Ò.Ü)0Ü%Ü&×GÑGØŸ™×+Ñ+óð !Ÿ™Ø#ŸO™OØ$×-Ñ-ô*Ð&ð  ×&Ñ&Ð'=Õ>à×&Ñ& wÕ/ð	0ð Ðra   ú, c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrm   ©Úexpr©ro   Úas     r`   rs   z!translate_args.<locals>.<genexpr>Ç  s   è ø€ Ò+ �Q—V•VÑ+ùó   ‚)r	  úlist[Binding]Úreturnr  )r‹   rÆ   r  r©   r   r  r   rú   )ÚsigÚcpp_sigr  Úsrc_bindingsÚgoal_bindingsrÓ   Úexprss          r`   Útranslate_argsr  §  sƒ   € ó
ô$ ˜Ÿ™›Ó(€LÜ˜×*Ñ*Ó,Ó-€Mð ò ˆØ�:‰:�?‰?œn×MÑMÓMÙ8¸ÓFˆLÙðô �l MÓ2€EØ�9‰9Ñ+ UÔ+Ó+Ð+ra   c           	     ó&  — t        | |«      }|j                  «       }t        | |«      }|j                  |«      }|r|j                  r|j                  nt
        }|j                  dd«      }d|› d|j                  j                  «       › d|› d|› d�	S )Nú::nativert   úreturn ú::ú(ú);)	r   r©   r  Ú
get_kernelÚcpp_namespacer+   rß   rr   rù   )	r  r±   rñ   r  r©   r  Úbackend_metadataÚ	kernel_nsÚnss	            r`   Ú%generate_static_dispatch_backend_callr(  Ê  sž   € ô
 9¸¸aÓ@€GØ�<‰<‹>€DÜ˜3 Ó(€EØ$×/Ñ/°Ó2Ðñ Ð 0× >Ò >ð 	×&Ò&ä%ð ð
 
×	Ñ	˜: rÓ	*€BØ�R�D˜˜=×5Ñ5×;Ñ;Ó=Ð>¸bÀÀÀaÈÀwÈbÐQÐQra   c                óP  — t        j                  |dd¬«      }| j                  r'|j                  j	                  «       r|j
                  }n|j                  }|€J ‚|j                  «       }t        | |«      }t        j                  dd«      }|j                  r+d|› dt        j                  j                  «       › d|› d|› d�	S |j                  r+d|› dt        j                   j                  «       › d|› d|› d�	S |j"                  r+d|› dt        j$                  j                  «       › d|› d|› d�	S |j&                  r+d|› dt        j(                  j                  «       › d|› d|› d�	S d	|› d
dj+                  |D �cg c]  }t-        |j.                  «      ‘Œ c}«      › d�S c c}w )NF©ÚmethodÚfallback_bindingr  rt   r  r   r!  r"  z5TORCH_CHECK(false, "Static dispatch does not support z forr  z ");)r   Úfrom_native_functionÚsymintr}   Ú
has_symintÚsymint_signatureÚ	signaturer©   r  r+   rß   rí   r-   ræ   rù   rî   rç   rï   rä   rð   rå   rú   rÈ   rr   )	r  r±   rh   Úcpp_sigsr  r©   r  r'  rˆ   s	            r`   Ú&generate_static_dispatch_fallback_callr3  Ü  sÁ  € ô
 !×5Ñ5Ø	�%¨%ô€Hð ‡z‚z�a—f‘f×'Ñ'Ô)Ø×+Ñ+‰à×$Ñ$ˆØÐÐÐØ�<‰<‹>€DÜ˜3 Ó(€EÜ	!×	)Ñ	)¨*°bÓ	9€BØ×/Ò/Ø˜˜˜Bœ{×DÑD×JÑJÓLÐMÈRÐPTÈvÐUVÐW\ÐV]Ð]_Ð`Ð`Ø	
×	@Ò	@Ø˜˜˜Bœ{×QÑQ×WÑWÓYÐZÐZ\Ð]aÐ\bÐbcÐdiÐcjÐjlÐmÐmØ	
×	1Ò	1Ø˜˜˜Bœ{×DÑD×JÑJÓLÐMÈRÐPTÈvÐUVÐW\ÐV]Ð]_Ð`Ð`Ø	
×	?Ò	?Ø˜˜˜Bœ{×PÑP×VÑVÓXÐYÐY[Ð\`Ð[aÐabÐchÐbiÐikÐlÐlàHÈÈð OØ‡�°ÖA¨ŒC�×"Ñ"Õ#ÒAÓBÐ CÀ4ðKð 	KùÚAs   Å=F#c           	     óh  — t        |«      dk(  s|j                  ry|D �cg c]3  }|j                  |«      s|j                  �|j                  t
        v r|‘Œ5 }}t        |«      dk(  rt        | ||d   «      S t        |«      dk(  rt        | ||«      S | j                  «       D �cg c]f  }t        |j                  t        «      s>t        |j                  t        «      r0|j                  j                  j                  «       r|j                  ‘Œh }}dj!                  |«      }|j"                  j                  j$                  }g }	g }
|�|
j'                  d«       |dk7  r|
j'                  d|› d�«       |	j'                  dd	j!                  |
«      › d
�«       |	j'                  d«       g }|D ]A  }|j'                  d|j                  › d�«       |j'                  dt        | ||«      › d
�«       ŒC t        | ||«      }d}d|j!                  |	«      › d|j!                  |«      › d|› d�S c c}w c c}w )a  
    For a given `NativeFunction`, find out the corresponding backend and dispatch to it. If more than one
    backends exsit, fallback to static dispatch by determining dispatch key from inputs.
    Arguments:
        sig: A CppSignature or DispatcherSignature for this native function we want to use.
        f: NativeFunction to generate static dispatch.
        backend_indices: All available backends.
    Return:
        C++ code to call backend-specific functions, e.g., "return at::cpu::add(self, other, scale);"
    r   rt   rV   r  z>DispatchKeySet(c10::computeDispatchKey(dtype, layout, device))z$c10::detail::multi_dispatch_key_set(ú)zDispatchKeySet _dk_set = z | ú;z=DispatchKey _dk = c10::highestPriorityBackendTypeId(_dk_set);zcase DispatchKey::ú:rÞ   z
		ú
    z
    switch (_dk) {
        z
        default:
            z
    }
    )rÍ   r÷   rì   rÂ   rr   r<   r(  r3  rÆ   rŠ   r  r;   r'   r  Úis_tensor_liker©   rú   r}   Útensor_optionsr�   )r  r±   rh   ÚbÚkeysr  Únative_tensor_argsÚtensor_argsÚtensor_optsÚstmtsÚsubexprsÚdispatch_coderˆ   ÚfallbackÚ	connectors                  r`   Ústatic_dispatchrE  ù  s>  € ô ˆ?Ó˜qÒ  A×$@Ò$@Øð !öàØ�<‰<˜Œ?à×!Ñ!Ð-Ø—‘Ô":Ñ:ò 	
ð€Dð ô ˆ4ƒy�A‚~Ü4°S¸!¸TÀ!¹WÓEÐEÜ	ˆT‹�aŠÜ5°c¸1¸oÓNÐNð —‘“öàÜ�a—j‘j¤,Ô/Ü�a—j‘j¤(Ô+Ø�J‰J�O‰O×*Ñ*Ô,ð	 	
�‹ðÐð ð —)‘)Ð.Ó/€KØ—&‘&×"Ñ"×1Ñ1€Kà€EØ€HØÐØ�‰ØLô	
ð �bÒØ�‰Ð>¸{¸mÈ1ÐMÔNØ	‡L�LÐ.¨u¯z©z¸(Ó/CÐ.DÀAÐHÔIØ	‡L�LÐPÔQà€MØò 
ˆØ×ÑÐ!3°E×4FÑ4FÐ3GÀqÐKÔLØ×ÑØÔ8¸¸aÀÓGÐHÈÐLõ	
ð
ô 6°c¸1¸oÓN€HØ€IðØ‡^�^�EÓÐð 	à	�‰˜Ó	&Ð'ð (àˆJð ðð ùò[ùòs    8H*Â%A+H/T)Úfrozenc                  óF   — e Zd ZU ded<    ee¬«      Zded<   edd„«       Zy)	ÚRegisterSchemarE   Úselector)Údefault_factoryzdict[str, int]Ú
known_tagsc                óÌ  — | j                   j                  |«      sy ddj                  d„ t        |j                  «      D «       «      z   dz   }|dk(  r"dt        t        |j                  «      «      › d�S d}|| j                  vr-t        | j                  «      }|| j                  |<   d	|› d
|› d�}|› dt        t        |j                  «      «      › d| j                  |   › d�S )Nú{r  c              3  ó&   K  — | ]	  }d |› �–— Œ y­w)z	at::Tag::Nrn   )ro   r    s     r`   rs   z*RegisterSchema.__call__.<locals>.<genexpr>N  s   è ø€ ÒK°S ¨3¨%Ô0ÑKùó   ‚ú}z{}zm.def(z, {});
rt   z const std::vector<at::Tag> tags_z = ú;
z, tags_z);
)
rI  Úis_native_function_selectedrú   Úsortedr¢   râ   rÈ   r}   rK  rÍ   )r\   r±   r¢   Ú
maybe_tagsÚidxs        r`   Ú__call__zRegisterSchema.__call__J  sÕ   € à�}‰}×8Ñ8¸Ô;ØØ�T—Y‘YÑK¼FÀ1Ç6Á6»NÔKÓKÑKÈcÑQˆØ�4Š<ØœJ¤s¨1¯6©6£{Ó3Ð4°JÐ?Ð?Øˆ
Ø�t—‘Ñ&Ü�d—o‘oÓ&ˆCØ$'ˆD�O‰O˜DÑ!Ø;¸C¸5ÀÀDÀ6ÈÐMˆJØ�˜V¤J¬s°1·6±6«{Ó$;Ð#<¸GÀDÇOÁOÐTXÑDYÐCZÐZ^Ð_Ð_ra   N©r±   r5   r  ú
str | None)	rb   rc   rd   Ú__annotations__r   rŒ   rK  r   rV  rn   ra   r`   rH  rH  E  s+   … àÓÙ!&°tÔ!<€J�Ó<à ò`ó !ñ`ra   rH  c                  ó4   — e Zd ZU ded<   ded<   edd„«       Zy)ÚComputeOperatorsú.Literal[Target.DECLARATION, Target.DEFINITION]Útargetúlist[BackendIndex]Ústatic_dispatch_backend_indicesc                óž  — t        j                  |j                  «      }|j                  j                  j	                  «       }| j
                  t        j                  u r d|› d|j                  «       › d|j                  j                  j                  › d|j                  j                  j                  › dt        t        |j                  «      «      › d|j                  dd¬	«      › d|j                  d
d¬	«      › d�S | j
                  t        j                  u �rd|j                  › d|› d|› d|› d|› d|› d�}dD ]ì  }|r>dj                  dg|j                  «       D �cg c]  }|j                  ‘Œ c}z   «      }d
}n9dj                  |j                  «       D �cg c]  }|j                  ‘Œ c}«      }d}|}	|› d|› �}
d|› d|	› d|› d�}|s0t!        | j"                  «      dkD  rt%        ||| j"                  ¬«      }|d|j                  › d|j                  |
|¬	«      › d|› d �z  }Œî |S t'        | j
                  «       y c c}w c c}w )!Nz
struct TORCH_API z {
  using schema = z�;
  using ptr_schema = schema*;
  // See Note [static constexpr char* members for windows NVCC]
  static constexpr const char* name = "aten::z3";
  static constexpr const char* overload_name = "z/";
  static constexpr const char* schema_str = z;
  static ÚcallF)r©   Úis_redispatching_fnÚ
redispatchTz;
};ú

// aten::z.
static C10_NOINLINE c10::TypedOperatorHandle<z::schema> create_zQ_typed_handle() {
  return c10::Dispatcher::singleton()
      .findSchemaOrThrow(z::name, z::overload_name)
      .typed<z::schema>();
}
)FTr  ÚdispatchKeySetr   z
    static auto op = create_z_typed_handle();
    return op.r!  r"  r   )rh   rÜ   ú {
    z
}
)r   Úfrom_schemar}   r©   Úunambiguous_namer]  rM   ÚDECLARATIONr  Úoverload_namerâ   rÈ   ÚdefnÚ
DEFINITIONrú   rÆ   rÍ   r_  rE  rF   )r\   r±   r  r©   Údefnsrb  r  Údispatcher_exprs_strÚmethod_baseÚdispatcher_callÚmethod_nameÚfn_bodys               r`   rV  zComputeOperators.__call__c  sˆ  € ä!×-Ñ-¨a¯f©fÓ5ˆØ�v‰v�{‰{×+Ñ+Ó-ˆà�;‰;œ&×,Ñ,Ñ,ð0Ø�ð Ø—(‘(“*�ð .ð /0¯f©f¯k©k×.>Ñ.>Ð-?ð @1Ø12·±·±×1JÑ1JÐ0Kð L-Ü-7¼¸A¿F¹F»Ó-DÐ,Eð F
Ø
�(‰(˜°Eˆ(Ó
:Ð	;ð <
Ø
�(‰(˜¸$ˆ(Ó
?Ð	@ð Að
ð 
ð �[‰[œF×-Ñ-Ò-ð
Ø
�&‰&ˆð .Ø.2¨VÐ3DÀTÀFð Kà˜˜x¨ vð .ØˆVð ðˆEð (5ò Ð#Ù&Ø+/¯9©9Ø)Ð*¸c¿m¹m»oÖ-N¸¨a¯f«fÒ-NÑNó,Ð(ð #/‘Kà+/¯9©9ÀcÇmÁmÃoÖ5VÀ°a·f³fÒ5VÓ+WÐ(Ø"(�Kà"-�Ø!%  b¨¨Ð6�ðØ!˜Fð #ØÐ˜qÐ!5Ð 6°bð<�ñ
 ,Ü˜D×@Ñ@ÓAÀAÒEô .Ø˜Q°×0TÑ0Tô�Gð ð 
Ø
�&‰&ˆð Ø‡�ˆ{Ð0C€ÓDÐ Eð FØ€Ið ðñ ‘ð3ð> ˆLä˜Ÿ™Õ%ùò= .Oùò 6Ws   Å"IÆI

N©r±   r5   r  rÈ   ©rb   rc   rd   rY  r   rV  rn   ra   r`   r[  r[  ^  s"   … à:Ó:Ø%7Ó7à òR&ó !ñR&ra   r[  c                  ó   — e Zd Zedd„«       Zy)ÚComputeFunctionc                ó  — t        j                  |d|j                  ¬«      }|j                  j	                  «       }d}|j                  «       D �]3  }t        j                  |j                  «      }t        |j                  «       |j                  «       «      }dj                  |D �cg c]  }|j                  ‘Œ c}«      }	|j                  rd}
nd}
t        j                  |j                  v rL|d|j                  › d|j!                  «       › d	|j                  j"                  j%                  «       › d
|	› d�	z  }|sŒð|d|
› d|j!                  d¬«      › d	|j                  j"                  j%                  «       › d
|	› d�	z  }�Œ6 |S c c}w )NFr*  rt   r  zc10::SymIntÚint64_trd  ú
inline ú {
    return at::_ops::ú::call(z);
}zZ
namespace symint {
  template <typename T, typename = std::enable_if_t<std::is_same_v<T, z>>>
  T)Úsuppress_symint_suffixz	);
  }
}
)r   r-  Úmanual_cpp_bindingr}   r/  Ú
signaturesr   rg  r   rÆ   rú   r  r.  r?   ÚfunctionÚvariantsÚdeclr©   rh  )r\   r±   Ú	sig_groupr/  Úresultr  Ú
target_sigr  r™   Ú	exprs_strÚ	intlike_ts              r`   rV  zComputeFunction.__call__½  s  € ä%×:Ñ:Ø�e¨a×.BÑ.Bô
ˆ	ð —V‘V×&Ñ&Ó(ˆ
àˆØ×'Ñ'Ó)ó  	ˆCä,×8Ñ8¸¿¹Ó@ˆJÜ˜cŸm™m›o¨z×/CÑ/CÓ/EÓFˆEØŸ	™	°5Ö"9¨a 1§6£6Ò"9Ó:ˆIà�zŠzØ)‘	à%�	ä×Ñ 1§:¡:Ñ-Øð 
Ø
�&‰&ˆð Ø�‰‹
€|ð Ø—f‘f—k‘k×2Ñ2Ó4Ð5°W¸Y¸Kð Hðñ �ò Øð GàGPÀkð RØ‡8�8 4€8Ó(Ð)ð *Ø—f‘f—k‘k×2Ñ2Ó4Ð5°W¸Y¸Kð Hð	ñ ’ð3 	ðB ˆùò; #:s   Â)F
NrW  ©rb   rc   rd   r   rV  rn   ra   r`   rv  rv  »  s   „ à ò(ó !ñ(ra   rv  c                  ó4   — e Zd ZU ded<   ded<   edd„«       Zy)ÚComputeTensorMethodr\  r]  r^  r_  c                ó°  — t         j                  |j                  vry |j                  j	                  «       rJ ‚|j                  j
                  j                  €J ‚t        j                  |d|j                  ¬«      }| j                  t        j                  u r/d}|j                  «       D ]  }||j                  «       › d�z  }Œ |S | j                  t        j                  urt!        | j                  «       d}|j                  «       D ]Â  }t#        j$                  |j                  «      }t'        |j                  «       |j                  «       d¬«      }dj)                  |D �cg c]  }|j*                  ‘Œ c}«      }|d|j                  › d|j-                  d	¬
«      › d|j                  j.                  j1                  «       › d|› d�	z  }ŒÄ |S c c}w )NTr*  rt   z const;
)r+  r  rd  ry  zTensor::)Úprefixz const {
    return at::_ops::r{  ú);
}
)r?   r+  r€  r}   Ú	is_out_fnrÆ   Úself_argr   r-  r}  r]  rM   ri  r~  r�  rl  rF   r   rg  r   rú   r  rk  r©   rh  )	r\   r±   r‚  rƒ  r  r„  r  r™   r…  s	            r`   rV  zComputeTensorMethod.__call__ð  s¡  € ä�>‰> §¡Ñ+Øà—6‘6×#Ñ#Ô%Ð%Ð%Ø�v‰v×Ñ×(Ñ(Ð4Ð4Ð4ä%×:Ñ:Ø�d¨Q×-AÑ-Aô
ˆ	ð �;‰;œ&×,Ñ,Ñ,ØˆFØ ×+Ñ+Ó-ò 3�Ø˜SŸX™X›Z˜L¨	Ð2Ñ2‘ð3àˆMà�;‰;œf×/Ñ/Ñ/Ü˜Ÿ™Ô%àˆà×'Ñ'Ó)ò 
	ˆCÜ,×8Ñ8¸¿¹Ó@ˆJÜ˜cŸm™m›o¨z×/CÑ/CÓ/EÈdÔSˆEØŸ	™	°5Ö"9¨a 1§6£6Ò"9Ó:ˆIàð 
Ø
�&‰&ˆð Ø�‰˜
ˆÓ#Ð$ð %Ø—f‘f—k‘k×2Ñ2Ó4Ð5°W¸Y¸Kð Hðñ ‰Fð
	ð ˆùò #:s   Å'G
NrW  rt  rn   ra   r`   r‰  r‰  ë  s    … à:Ó:Ø%7Ó7à ò"ó !ñ"ra   r‰  c                  ó   — e Zd Zedd„«       Zy)ÚComputeRedispatchFunctionc                ó  — t        j                  |d|j                  ¬«      }d}|j                  «       D ]Ä  }t	        j
                  |j                  «      }t        |j                  «       |j                  «       «      }dj                  dg|D �cg c]  }|j                  ‘Œ c}z   «      }|d|j                  › d|j                  d¬	«      › d
|j                  j                  j                  «       › d|› d�	z  }ŒÆ |S c c}w )NFr*  rt   r  re  rd  ry  T)rb  rz  z::redispatch(rŒ  )r   r-  r}  r~  r   rg  r}   r   rÆ   rú   r  r�  r©   rh  )	r\   r±   r‚  rƒ  r  r„  r  r  r…  s	            r`   rV  z"ComputeRedispatchFunction.__call__  sý   € ô &×:Ñ:Ø�e¨a×.BÑ.Bô
ˆ	ð ˆØ×'Ñ'Ó)ò 
	ˆCÜ,×8Ñ8¸¿¹Ó@ˆJÜ˜cŸm™m›o¨z×/CÑ/CÓ/EÓFˆEØŸ	™	Ð#3Ð"4ÈÖ7NÀ1¸¿»Ò7NÑ"NÓOˆIàð 
Ø
�&‰&ˆð Ø�‰ TˆÓ*Ð+ð ,Ø—f‘f—k‘k×2Ñ2Ó4Ð5°]À9À+ð Nðñ ‰Fð
	ð ˆùò 8Os   ÂC>NrW  r‡  rn   ra   r`   r�  r�    s   „ à òó !ñra   r�  c                óŒ   — d| j                   j                  j                  › d| j                   j                  j                  › d�S )Nz{"aten::z", "z"},)r}   r©   rj  ©r±   s    r`   Úcompute_aten_opr”  8  s5   € à�q—v‘v—{‘{×'Ñ'Ð(¨¨Q¯V©V¯[©[×-FÑ-FÐ,GÀtÐLÐLra   c                ób  — | j                   sy t        | j                  «      5  t        j                  | «      }t        j
                  | «      }dj                  d„ |D «       «      }| j                  j                  }|€d}d}| j                   r| j                  j                  nd }|�rJg |j                  j                  «       ¢|j                  ‘}|D ��	cg c]  }|D ]  }	|	‘Œ Œ }
}}	|
D �	cg c]  }	|	j                  j                  «       ‘Œ }}	dj                  d„ |D «       «      }d|› d�}|
D �	cg c]#  }	t        j                  |	|	j                  ¬«      ‘Œ% }}	d	j                  d
„ |D «       «      }g }t        |
«      D �]*  \  }}	dj                  |d | dgz   ||dz   d  z   «      }d|› d�}||   j                  d¬«      }|› d|	j                  › d|› d�}d|	j                  › d�}d||   › d|› d�}g }|j!                  |› d�«       t        |
«      D ]V  \  }}	||k(  r |j!                  d|	j                  › d�«       Œ+|j!                  d|	j                  › d|	j                  › d�«       ŒX |j!                  d«       dj                  |«      }|j!                  d|› d |› d!|› d"�«       �Œ- dj                  |«      }dj                  dgt#        |«      z  «      }d#|› d$�}d%}d&|› d'|› d|› d(�}nd)}d)}d*|› d+|› d,|› d-|› d-|› d.|› d/�cd d d «       S c c}	}w c c}	w c c}	w # 1 sw Y   y xY w)0Nr  c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wrm   )r�  r  s     r`   rs   z4compute_meta_function_declaration.<locals>.<genexpr>D  s   è ø€ Ò4¨!˜QŸV™VŸXÑ4ùs   ‚zat::impl::MetaBaseÚvoidc              3  ó(   K  — | ]
  }d |› d�–— Œ y­w)zbool z = falseNrn   )ro   Úparams     r`   rs   z4compute_meta_function_declaration.<locals>.<genexpr>V  s   è ø€ ò 8Ø,1�%˜�w˜hÔ'ñ8ùs   ‚z
template <ú>)ÚbindsrQ  c              3  ó^   K  — | ]%  }|j                  d ¬«      › d|j                  › �–— Œ' y­w)T©Ú	strip_refú N)Úcpp_typer©   )ro   Úelems     r`   rs   z4compute_meta_function_declaration.<locals>.<genexpr>a  s3   è ø€ ò 3àð —=‘=¨4�=Ó0Ð1°°4·9±9°+Ô>ñ3ùs   ‚+-ÚtruerV   zprecompute_out<Tr�  z set_r!  z value)rØ   z already set"zstatic_assert(z == false, r"  z ret;zret.z	 = value;z	 = this->r6  zreturn ret;rÜ   z
                    z {
                        z
                        z'
                    }
                z'using meta_return_ty = precompute_out <z>;Úmeta_return_tyz
                zG
                struct TORCH_API precompute_out {
                    z;
            };rt   zstruct TORCH_API structured_z
 : public rf  r8  z meta(z);
};
)rÃ   r   ÚoutÚmetar©   Úmeta_argumentsrú   Ústructured_inheritsÚprecomputedrß   Úvaluesr§   ÚupperÚargument_typeÚ	enumerater   r�   rÍ   )Úgr©   ÚargsÚargs_strÚparent_classÚmeta_returnr¨  Úprecomputed_valuesÚreplace_listr¡  Úprecomputed_elementsÚprecomputed_template_parametersÚprecomputed_template_params_strÚprecompute_template_declÚ#precomputed_elements_with_cpp_typesÚprecomputed_elements_declÚsetter_methodsÚiÚreturn_ty_templatesÚ	return_tyÚelem_cpp_tyr1  Ú
assert_msgÚassert_stmtÚconstruction_stmtsÚjÚconstruction_blockÚsetter_methods_declÚmeta_return_template_paramsÚmeta_return_typedefÚprecomputed_decls                                  r`   Ú!compute_meta_function_declarationrÈ  >  s(  € Ø�<Š<ØÜ	  §¡Ó	'ñ vÜ�y‰y˜‹|ˆÜ×(Ñ(¨Ó+ˆØ—9‘9Ñ4¨tÔ4Ó4ˆØ—u‘u×0Ñ0ˆØÐØ/ˆLØˆØ+,¯<ª<�a—e‘e×'Ò'¸Tˆâð "R ;×#6Ñ#6×#=Ñ#=Ó#?Ð!QÀÇÁÐ!QÐà);÷$Ø%Èò$Ø@D’ð$Øð$Ð ñ $ð /Cö/Ø&*�—	‘	—‘Õ!ð/Ð+ð /ð /3¯i©iñ 8Ø5Tô8ó /Ð+ð *4Ð4SÐ3TÐTUÐ'VÐ$ð
 1ö3àô ×(Ñ(¨°T·Y±YÖ?ð3Ð/ð 3ð
 ).¯
©
ñ 3à?ô3ó )Ð%ð  ˆNÜ$Ð%9Ó:ó 2‘��4ð '+§i¡iØ3°B°QÐ7Ø�hñà5°a¸!±e°gÐ>ñ?ó'Ð#ð
 .Ð.AÐ-BÀ!ÐD�	ØAÀ!ÑD×MÑMØ"ð Nó �ð  )˜k¨¨t¯y©y¨k¸¸;¸-ÀwÐO�	ð  ! §¡ ¨=Ð9�
Ø .Ð/NÈqÑ/QÐ.RÐR]Ð^hÐ]iÐikÐl�ð &(Ð"Ø"×)Ñ)¨Y¨K°uÐ*=Ô>ä(Ð)=Ó>ò ‘G�A�tØ˜A’vØ*×1Ñ1°D¸¿¹¸À9Ð2MÕNà*×1Ñ1Ø" 4§9¡9 +¨Y°t·y±y°kÀÐCõð	ð #×)Ñ)¨-Ô8Ø%)§Y¡YÐ/AÓ%BÐ"à×%Ñ%ðØ�Kð  Ø$˜ð &Ø+Ð,ð -ðöðW2ðf #'§)¡)¨NÓ";Ðð +/¯)©)Ø�œ3Ð>Ó?Ñ?ó+Ð'ð
 %LÐLgÐKhÐhjÐ"kÐØ*ˆKð$Ø)Ð*ð +à(Ð)ð *Ø.Ð/ð 0ð	 Ñð #%ÐØ!ÐðØ!˜F *¨\¨Nð ;ØÐð ØÐð Ø€M�˜�zð "ð	÷avñ vùó$ùò/ùò3÷7vð vús7   £B3L%ÃLÃ&L%Ã-!LÄ$L%Ä2(L ÅF1L%ÌL%Ì%L.c                óþ   — t        | j                  j                  j                  «      }|j                  d«      s|j	                  d«      ry| j                  j
                  j                  €y|j                  | «      S )NÚ_likeÚnew_F)rÈ   r}   r©   ÚendswithÚ
startswithrÆ   r:  rR  )r±   rI  r©   s      r`   Úneeds_backend_selectrÎ  º  s^   € Üˆq�v‰v�{‰{×ÑÓ €DØ‡}�}�WÔ §¡°Ô!8ØØ‡v�v×Ñ×&Ñ&Ð.ØØ×/Ñ/°Ó2Ð2ra   c                  ó4   — e Zd ZU ded<   ded<   edd„«       Zy)ÚComputeBackendSelectz/Literal[Target.DEFINITION, Target.REGISTRATION]r]  rE   rI  c                óJ  — t        || j                  «      sy t        j                  |j                  «      }t        |j                  d¬«      }|j                  «       D �cg c]B  }t        |j                  t        «      r&|j                  j                  j                  «       r|‘ŒD }}t        j                  |j                  «      }|}|j                  «       }d}	| j                  t         j"                  u rÙ|rH|j                  j                  j%                  «       sJ ‚dj'                  d„ |D «       «      }
d|	› d|
› d�}n,|j                  j                  j%                  «       rJ ‚d	|	› d
�}d|j                  › d|j)                  |«      › d|› d|j                  j                  j+                  «       › ddj'                  d„ |D «       «      › d�S | j                  t         j,                  u rd|j                  j                  › d|› d�S t/        | j                  «       y c c}w )NT©r.  z.c10::computeDispatchKey(dtype, layout, device)r  c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrm   ©r©   r  s     r`   rs   z0ComputeBackendSelect.__call__.<locals>.<genexpr>ë  s   è ø€ Ò'K°1¨¯­Ñ'Kùr  z-DispatchKeySet _dk_set = c10::DispatchKeySet(z() | c10::detail::multi_dispatch_key_set(z³);
DispatchKeySet _dk_mask = c10::DispatchKeySet(DispatchKeySet::FULL_AFTER, DispatchKey::BackendSelect);
DispatchKeySet _dk = c10::impl::computeDispatchKeySet(_dk_set, _dk_mask);z)DispatchKeySet _dk = c10::DispatchKeySet(r"  z	// aten::z
C10_ALWAYS_INLINE
z {
  z
  return at::_ops::z::redispatch(
      _dk, c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrm   r  r  s     r`   rs   z0ComputeBackendSelect.__call__.<locals>.<genexpr>û  s   è ø€ Ò7 �a—f•fÑ7ùr  rŒ  zm.impl("aten::z", TORCH_FN(z));)rÎ  rI  Únativer©   r}   r   rÆ   rŠ   r  r'   r  r9  r   rg  r  r]  rM   rl  Úhas_tensor_argrú   rk  rh  ÚREGISTRATIONrF   )r\   r±   r©   Ú
native_sigr  r=  Údispatcher_sigr  Údispatcher_exprsrr   r>  Ú
compute_dks               r`   rV  zComputeBackendSelect.__call__Î  sý  € ä# A t§}¡}Ô5Øä�{‰{˜1Ÿ6™6Ó"ˆä$ Q§V¡V°DÔ9ˆ
ð  ×)Ñ)Ó+ö
àÜ˜!Ÿ*™*¤hÔ/°A·J±J·O±O×4RÑ4RÔ4Tò ð
Ðð 
ô -×8Ñ8¸¿¹Ó@ˆð ˆØ)×/Ñ/Ó1ÐØGˆà�;‰;œ&×+Ñ+Ñ+ñ
 "Ø—v‘v×'Ñ'×6Ñ6Ô8Ð8Ð8Ø"Ÿi™iÑ'KÐ8JÔ'KÓK�ð".Ø.:¨^Ð;cÐdoÐcpð qJðM‘
ð
 Ÿ6™6×+Ñ+×:Ñ:Ô<Ð<Ð<à?À¸~ÈRÐPð ð
Ø
�&‰&ˆð à‡�ˆ$ƒÐ ð Ø€,ð Ø—F‘F—K‘K×0Ñ0Ó2Ð3ð 4Ø�I‰IÑ7Ð&6Ô7Ó7Ð8ð 9ðð ð �[‰[œF×/Ñ/Ñ/Ø% a§f¡f§k¡k ]°,¸t¸fÀCÐJÐJä˜Ÿ™Õ%ùòU
s   Á AH NrW  rt  rn   ra   r`   rÐ  rÐ  Æ  s"   … à;Ó;ð Óà ò2&ó !ñ2&ra   rÐ  c                ó�   — d„ t         _        dd„}t        j                  t        |«       t	        j
                  | dt         d¬«      S )Nc                 ó   — y)NTrn   )r\   Údatas     r`   r‚   zformat_yaml.<locals>.<lambda>  s   � ra   c                ó@   — | j                  |j                  «       «      S rm   )Úrepresent_dictrw   )Údumperrß  s     r`   Údict_representerz%format_yaml.<locals>.dict_representer  s   € Ø×$Ñ$ T§Z¡Z£\Ó2Ð2ra   Fg    eÍÍA)Údefault_flow_styleÚDumperÚwidth)râ  r
   rß  r
   r  r
   )rN   Úignore_aliasesÚadd_representerr   r¯   Údump)rß  rã  s     r`   Úformat_yamlrê    s9   € á 7„JÔó3ô ×Ñœ{Ð,<Ô=ô �9‰9�T¨e¼JÈcÔRÐRra   c                óŽ   — | dk(  ry| dk(  ry	 t        | «      S # t        $ r" 	 t        | «      cY S # t        $ r | cY cY S w xY ww xY w)Nr¢  TÚfalseF)r�   Ú
ValueErrorÚfloatrà   s    r`   Úpythonify_defaultrï    sU   € ØˆF‚{ØØ	
ˆgŠØðÜ�1‹vˆøÜò ð	Ü˜“8ŠOøÜò 	ØŒHð	úðús'   Ž
 ™	A£
0­A°A »A¿A Á Ac                ó¸   — t        | t        «      rt        | j                  «      S t	        | «      dk(  ryt        j                  | ddd¬«      j                  «       S )NÚTensorz
at::TensorFÚ__placeholder__)Úmutabler›  r.  )rŠ   r9   Údynamic_typer¡  rÈ   r   Úargumenttype_typer   )Úts    r`   rô  rô  6  sP   € Ü�!”\Ô"Ü˜AŸF™FÓ#Ð#ô ˆ1ƒv�ÒØä× Ñ Ø	�5Ð 1¸%ôç�hƒjðra   c                ó˜   — dg}t         j                  | v r|j                  d«       t         j                  | v r|j                  d«       |S )Nr>   rñ  Ú	namespace)r?   r+  r�   r  )r€  Ú	method_ofs     r`   Úcompute_method_of_yamlrú  C  sG   € ð �€IÜ‡~�~˜Ñ!Ø×Ñ˜Ô"Ü×Ñ˜8Ñ#Ø×Ñ˜Ô%ØÐra   c                ó  — i }t        j                  | «      }g }t        t        | j                  j
                  |«      «      D ]Ä  \  }\  }}t        |j                  «      |t        j                  |d¬«      j                  «       dœ}|j                  rc|j                  |d<   | j                  j                  «       r:|j                  || j                  j                  j                  |   j                  <   |j                  |«       ŒÆ ||fS )NFrÒ  )rô  r©   r  Ú
field_name)r   Úreturn_namesr¬  Úzipr}   Úreturnsrô  r  Úreturn_typer   r©   r�  rÆ   r¤  r�   )r±   Úname_to_field_nameÚnamesrÿ  r»  Úrr©   Úrets           r`   Úcompute_returns_yamlr  N  så   € ðT *,Ðô ×Ñ˜QÓ€EØ€GÜ!¤# a§f¡f§n¡n°eÓ"<Ó=ò ‰ˆ‰9ˆAˆtä(¨¯©Ó0Øä—O‘O A¨eÔ4×=Ñ=Ó?ñ	
ˆð �6Š6à !§¡ˆC�ÑØ�v‰v×ÑÔ!ØCDÇ6Á6Ð" 1§6¡6×#3Ñ#3×#7Ñ#7¸Ñ#:×#?Ñ#?Ñ@à�‰�sÕðð  Ð&Ð&Ð&ra   c               óT  — t        | j                  t        «      r:d dd| j                  | j                  ddœ}| j
                  �| j
                  |d<   |S t        | j                  t        «      rt        ‚t        | j                  t        «      rt        | j                  ||||¬«      S y )Nzat::TensorOptionsFT)Ú
annotationrô  Úis_nullabler©   r  Ú
kwarg_onlyr  ©Úschema_orderÚkwarg_only_setÚout_arg_setr  )
rŠ   r  r=   r©   r  r  r;   rÉ   r'   Úcompute_argument_yaml)Úcpp_ar  r  r  r  rÓ   s         r`   Úcompute_cpp_argument_yamlr  ‘  s™   € ô �%—.‘.Ô"8Ô9àØ/Ø Ø—J‘JØ—J‘JØñ"
ˆð �=‰=Ð$Ø"Ÿ]™]ˆC�	‰NØˆ
Ü	�E—N‘N¤LÔ	1ÜÐÜ	�E—N‘N¤HÔ	-Ü$Ø�N‰NØ%Ø)Ø#Ø1ô
ð 	
ð 
.ra   c          	     óÆ  — | j                   rt        | j                   «      nd t        | j                  «      | j                  j	                  «       | j
                  t        j                  | dd¬«      j                  «       dœ}| j                  �8t        t        j                  | j                  | j                  d¬«      «      |d<   | j
                  |v rd|d<   | j
                  |v r*d|d	<   d|d
<   | j
                  |v r|| j
                     |d<   | j                  j                  «       }|�3|j                  �'t        |j                  «      dk7  r|j                  |d<   |S )Nrò  F)r›  r.  )r  rô  r  r©   r  rÒ  r  Tr	  rû   Úallocaterü  ÚboolÚsize)r  rÈ   rô  r  r  r©   r   r«  r   r  rï  Údefault_exprÚis_list_liker  r¡  )r  r  r  r  r  rÓ   Úls          r`   r  r  ±  s+  € ð ,-¯<ª<”c˜!Ÿ,™,Ô'¸TÜ$ Q§V¡VÓ,Ø—v‘v×)Ñ)Ó+Ø—‘ä×!Ñ! !Ð+<ÀUÔK×TÑTÓVñ€Cð 	‡y�yÐÜ*Ü×Ñ˜QŸY™Y¨¯©°uÔ=ó
ˆˆI‰ð 	‡v�v�ÑØ ˆˆLÑØ‡v�v�ÑØˆˆH‰ØˆˆJ‰à�6‰6Ð'Ñ'Ø 2°1·6±6Ñ :ˆC�Ñð 	
�‰×ÑÓ€AØ€}˜Ÿ™Ð+´°A·F±F³¸vÒ0EØ—f‘fˆˆF‰Ø€Jra   c                ój  — t        | «      \  }}| j                  j                  j                  D �ch c]  }|j                  ’Œ }}| j                  j                  j
                  D �ch c]  }|j                  ’Œ }}t        j                  | dd¬«      }|j                  j                  «       }|D �cg c]  }t        |d|||¬«      ‘Œ }	}t        | j                  j                  «       «      }
|
D �cg c]  }t        |d|||¬«      ‘Œ }}|
D ��cg c]6  }t        j                  |dt        «       ddd¬«      D ]  }|j                   ‘Œ Œ8 }}}t        j"                  | j                  j$                  d¬«      j'                  «       }|› ddj)                  |«      › d	�}t+        d
„ |D «       «      xr t,        j.                  | j0                  v}t3        dt        j                  | j                  «      fdt5        | j                  j                  j                  «      fdt5        | j                  j                  j6                  «      fd| j8                  fd| j:                  �| j:                  ndfdd| j                  › �fd|	fd|fd|fdt=        | j0                  «      fdd| j>                  €dn| j>                  fd|fd| j                  j                  j                  j@                  fd|fd| jB                  fd| jD                  fddd | jF                  fg«      S c c}w c c}w c c}w c c}w c c}}w )!NFr*  r
  T)r+  Úcpp_no_default_argsÚfaithfulr.  Úhas_tensor_optionsrÒ  z (r  r5  c              3  óP   K  — | ]  }t        |j                  t        «      –— Œ  y ­wrm   )rŠ   r  r=   r  s     r`   rs   z+compute_declaration_yaml.<locals>.<genexpr>  s   è ø€ ÒM¸qŒJ�q—z‘zÔ#9×:ÑMùs   ‚$&r©   Úoperator_namerj  r÷   Úcategory_overridert   Úschema_stringúaten::rÆ   Úschema_order_cpp_signatureÚschema_order_argumentsrù  )ÚmoderÖ  Úpython_modulerÿ  rÊ   Úis_factory_methodÚabstractr‡   )Úwith_gilF)Ú
deprecatedFÚhas_math_kernel)$r  r}   rÆ   Úflat_kwarg_onlyr©   r¤  r   r-  r1  r  r‹   r"  r  r   r  r¤   r  Úreturns_typerÿ  r   rú   Úanyr?   r+  r€  r   rÈ   rj  r÷   r  rú  r$  rÊ   Úis_abstractr‡   rï   )r±   rÿ  r  r  r  r  r‚  Úcpp_argsr  rÆ   Úschema_order_jit_argumentsr"  r  Úcpp_schema_order_typesÚcpp_returnsr!  r%  s                    r`   Úcompute_declaration_yamlr2  Õ  s2  € ä"6°qÓ"9Ñ€GÐð '(§f¡f×&6Ñ&6×&FÑ&FÖG �a—f“fÐG€NÐGØ#$§6¡6×#3Ñ#3×#7Ñ#7Ö8˜a�1—6“6Ð8€KÐ8ä!×6Ñ6Ø	�%¨%ô€Ið ×"Ñ"×,Ñ,Ó.€Hð ö	ð ô 	"ØØØ)Ø#Ø1ö	
ð	€Ið 	ô "& a§f¡f×&CÑ&CÓ&EÓ!FÐð ,ö	ð ô 	ØØØ)Ø#Ø1ö	
ð	Ðð 	ð ,÷ð Ü—‘ØØÜ #£ØØØ$ô
ò	ð ð 	
�‹ðàðÐñ ô ×"Ñ" 1§6¡6§>¡>¸%Ô@×IÑIÓK€KØ$/ =°°4·9±9Ð=SÓ3TÐ2UÐUVÐ!WÐô 	ÑMÀHÔMÓMò 	-Ü�N‰N !§*¡*Ð,ð ô
 à”S—X‘X˜aŸf™fÓ%Ð&Øœc !§&¡&§+¡+×"2Ñ"2Ó3Ð4Øœc !§&¡&§+¡+×";Ñ";Ó<Ð=Ø)¨1×+GÑ+GÐHà#Ø'(×':Ñ':Ð'F�×#Ò#ÈBðð   q§v¡v hÐ/Ð0Ø˜)Ð$Ø)Ð+EÐFØ%Ð'=Ð>ØÔ0°·±Ó<Ð=ØØ A§O¡OÐ$;™bÀÇÁÐQØ˜Ð Ø˜Ÿ™Ÿ™×(Ñ(×0Ñ0Ð1Ø Ð"3Ð4Ø˜Ÿ™Ð'Ø˜QŸ^™^Ð,ØØ!Ø × HÑ HÐIð/	
óð ùòm HùÚ8ùò	ùò	ùós   ±LÁ(L Â3L%Ã3L*Ä;L/c                óî   — | j                   xs | j                  d uxrX | j                  j                  «       t        j
                  k(  xs+ | j                  j                  «       t        j                  k(  S rm   )rÃ   rÂ   r}   Úkindr:   Ú
functionalrÊ   r“  s    r`   Ú"has_autogenerated_composite_kernelr6  /  sU   € Ø�L‰LÒ=˜A×1Ñ1¸Ð=ò Ø	�‰�‰‹œ×.Ñ.Ñ.ÒU°!·&±&·+±+³-Ä:×CUÑCUÑ2Uðra   c           
     ó(  — t        j                  | j                  «      }t        j                  | j                  j                  «      j                  «       }t        j                  | j                  «      }dj                  d„ |D «       «      }d| j                  › �t        |j                  «       D ��ch c]  \  }}|j                  | «      sŒ|’Œ c}}t        j                  hk7  xrV |j                  «       D ��ch c]  \  }}|j                  | «      sŒ|’Œ c}}t        j                  t        j                  hk7  «      t        | j                  xs t        | «      «      dœ}|› d|› d|› dt!        j"                  |«      › d�S c c}}w c c}}w )	Nr  c              3  óX   K  — | ]"  }|j                  «       j                  «       –— Œ$ y ­wrm   )Ú
no_defaultr�  r  s     r`   rs   z4compute_registration_declarations.<locals>.<genexpr><  s   è ø€ Ò=°1˜Ÿ™›×,Ñ,×.Ñ=ùs   ‚(*r   )ÚschemaÚdispatchr  rŸ  r!  z); // rÜ   )Ú
dispatcherr©   r}   r+  rÿ  r   rÆ   rú   rÈ   rw   rì   r-   rä   rå   Úhas_composite_kernelr6  ÚjsonÚdumps)	r±   rh   r©   r+  r®  r¯  rœ   r�   Úcomment_datas	            r`   Ú!compute_registration_declarationsrA  5  sP  € ô �?‰?˜1Ÿ6™6Ó"€DÜ×*Ñ*¨1¯6©6¯>©>Ó:×CÑCÓE€LÜ×Ñ §¡Ó'€DØ�y‰yÑ=¸Ô=Ó=€Hà˜1Ÿ6™6˜(Ð#äØ*×0Ñ0Ó2×F‘4�1�a°a·l±lÀ1µoŠQÓFÜ×5Ñ5Ð6ñ7ò à.×4Ñ4Ó6×J‘t�q˜!¸!¿,¹,Àq½/’ÓJä×5Ñ5Ü×AÑAðñó
ô �q×-Ñ-ÒVÔ1SÐTUÓ1VÓWñ$€Lð ˆ~˜Q˜t˜f A h Z¨v´d·j±jÀÓ6NÐ5Oð Pð ð ùó GùãJs   Â4FÃFÃ=FÄFc                óÊ   — | �	|�J d«       ‚d }| �t        | «      }|�t        j                  |dd«      }|S |�t        j                  |«      }|S t        j                  «       }|S )NzhBoth provided_op_registration_allowlist and op_selection_yaml_path can NOT be provided at the same time.TF)r¤   rE   Ú&from_legacy_op_registration_allow_listÚfrom_yaml_pathÚget_nop_selector)Ú"provided_op_registration_allowlistÚop_selection_yaml_pathÚop_registration_allowlistrI  s       r`   Úget_custom_build_selectorrI  V  s™   € ð
 	+Ð6Ø"Ð.ðð	ó	ð ð 26ÐØ)Ð5Ü$'Ð(JÓ$KÐ!à Ð,Ü#×JÑJØ%ØØó
ˆð €Oð 
 Ð	+Ü#×2Ñ2Ð3IÓJˆð €Oô $×4Ñ4Ó6ˆà€Ora   c                ó¦  — 	 	 	 	 dd„}t        t        «      }| D ]“  }|j                  j                  «       }|j                  }|t
        j                  k(  r,|j                  j                  «       }|||   vsJ ‚|||   |<   Œh|||   vsJ |› d||   j                  «       › �«       ‚|||   |<   Œ• t        t        ||j                  «       «      «      S )Nc                ód  — g }t         j                  | v r|| j                  t         j                  «      }| j                  t         j                  d «      }| j                  t        j
                  d «      }|j                  t        |||¬«      «       |j                  | j                  «       «       |S )N)ÚviewÚ	view_copyÚview_inplace)
r@   Úaliasingr¦   Úaliasing_inplacer:   r5  r�   r7   Úextendr©  )Údr€   rL  rN  rM  s        r`   Úmaybe_create_view_groupzEget_grouped_by_view_native_functions.<locals>.maybe_create_view_groupx  s�   € ð BDˆÜ×"Ñ" aÑ'Ø—5‘5œ×0Ñ0Ó1ˆDØŸ5™5¤×!@Ñ!@À$ÓGˆLØŸ™œj×3Ñ3°TÓ:ˆIà�L‰LÜ(ØØ'Ø!-ôôð 	�‰�Q—X‘X“ZÔ Øˆra   z already in )rR  z1dict[ViewSchemaKind | SchemaKind, NativeFunction]r  z/list[NativeFunction | NativeFunctionsViewGroup])r   rŒ   r}   Úview_signatureÚview_schema_kindr@   Únon_aliasingr4  r<  r‹   rG   r©  )rg   rS  Úgrouped_by_viewsr±   r:  Ú	view_kindr4  s          r`   Ú$get_grouped_by_view_native_functionsrY  u  s  € ðØ<ðà	8óô. 	”DÓð ð ò 4ˆØ—‘×&Ñ&Ó(ˆØ$%×$6Ñ$6ˆ	ð
 œ×3Ñ3Ò3Ø—6‘6—;‘;“=ˆDØÐ/°Ñ7Ñ7Ð7Ð7Ø-.Ð˜VÑ$ TÒ*àÐ$4°VÑ$<Ñ<ð Ø�+˜\Ð*:¸6Ñ*B×*GÑ*GÓ*IÐ)JÐKóÐ<ð 34Ð˜VÑ$ YÒ/ð4ô" ”	Ð1Ð3C×3JÑ3JÓ3LÓMÓNÐNra   c           	     ó€   — 	 	 	 	 dd„}t        | «      }t        t        |t        |j                  «       «      «      «      S )Nc                ó¬   — t        j                  | «      }|€;t        d„ | j                  «       D «       «      rJ ‚t	        | j                  «       «      S |gS )Nc              3  ó8   K  — | ]  }d |j                   v –— Œ y­w)Ú	generatedN)r¢   ©ro   r±   s     r`   rs   zJget_grouped_native_functions.<locals>.flatten_pre_group.<locals>.<genexpr>®  s   è ø€ ÒE°Q˜;¨!¯&©&Ô0ÑEùs   ‚)r6   Ú	from_dictr,  r©  r‹   )rR  r  s     r`   Úflatten_pre_groupz7get_grouped_native_functions.<locals>.flatten_pre_group§  sM   € ô !×*Ñ*¨1Ó-ˆØˆ9ô ÑE¸!¿(¹(»*ÔEÔEÐEÐEÜ˜Ÿ™›
Ó#Ð#à�3ˆJra   )rR  z dict[SchemaKind, NativeFunction]r  ú/Sequence[NativeFunction | NativeFunctionsGroup])rD   r‹   rG   r©  )rg   r`  Úpre_grouped_native_functionss      r`   Úget_grouped_native_functionsrc  ¤  sL   € ð
Ø+ð
à	8ó
ô $>Ð>NÓ#OÐ ÜÜÐ#¤TÐ*F×*MÑ*MÓ*OÓ%PÓQóð ra   )Únative_function_decl_genc                ó†  — t        t        «      }| D ]¬  }t        «       }t        «       }|j                  «       D ]ƒ  \  }}|j	                  |«      }	|	r/|	j
                  }
|j                  |«       |j                  |
«       nt        }
t        |«      dk  sJ d|› d|› �«       ‚||
   j                   |||«      «       Œ… Œ® |S )NrV   z6Codegen only supports one namespace per operator, got z from )
r   r‹   r¤   rw   r#  r$  r§   r+   rÍ   rQ  )Úgrouped_native_functionsrh   rd  Úns_grouped_kernelsr±   Únative_function_namespacesÚdispatch_keysrr   Úbackend_idxr%  rø  s              r`   Úget_ns_grouped_kernelsrk  º  sá   € ô 0;¼4Ó/@ÐØ%ò ˆÜ%(£UÐ"Ü›ˆØ)8×)>Ñ)>Ó)@ò 	Ñ%ˆL˜+Ø*×5Ñ5°aÓ8ÐÙØ,×:Ñ:�	Ø×!Ñ! ,Ô/Ø*×.Ñ.¨yÕ9ä4�	ÜÐ1Ó2°aÒ7ð ØHÐIcÐHdÐdjÐkxÐjyÐzóÐ7ð ˜yÑ)×0Ñ0Ù(¨¨KÓ8õñ	ðð" Ðra   c           
     ó0  — g }d}| j                  «       D ]~  \  }}t        |dd¬«      }t        t        j                  |«      «      }|j                  d|j                  › d|j                  |«      › d|j                  › d�j                  |«      «       Œ€ |S )NrÜ   rt   é   ©Únamespace_strÚentity_nameÚ	max_levelú	
        )
rw   rL   r‹   r   ÚfromkeysrQ  Úprologuerú   ÚepilogueÚsplit)rg  ÚdeclarationsÚnewlinerø  ÚkernelsÚ	ns_helperÚordered_kernelss          r`   Ú8get_native_function_declarations_from_ns_grouped_kernelsr|  ×  s¶   € ð !€LØ€GØ0×6Ñ6Ó8ò 
Ñˆ	�7Ü#Ø#ØØô
ˆ	ô œ{×3Ñ3°GÓ<Ó=ˆØ×ÑðØ
×ÑÐ ð Ø‡�ˆoÓÐ ð  Ø
×ÑÐ ð 	ð÷ ‰E�'‹Nõ	
ð
ð  Ðra   c                ó6   — t        | ||¬«      }t        |¬«      S )a¾  
    Generate kernel declarations, in `NativeFunction(s).h`.
    :param grouped_native_functions: a sequence of `NativeFunction` or `NativeFunctionGroup`.
    :param backend_indices: kernel collections grouped by dispatch key.
    :param native_function_decl_gen: callable to generate kernel declaration for each `NativeFunction`.
    :return: a list of string, from the string with all declarations, grouped by namespaces, split by newline.
    ©rf  rh   rd  )rg  )rk  r|  )rf  rh   rd  rg  s       r`   Ú get_native_function_declarationsr  ñ  s+   € ô  0Ø!9Ø'Ø!9ôÐô
 DØ-ôð ra   c                ó>  — |j                  | «      }|rwd|j                  v siJ dt        | t        «      r| j                  j
                  n| j                  j                  j
                  › d|j                  › d|j                  › d�«       ‚|r|j                  S t        S )Nr  zThe kernel for function z with dispatch key z has a namespace z% and it's not ending with '::native'.)	r#  r$  rŠ   r5   r}   r©   r5  rr   r+   )r±   rj  r%  s      r`   Úget_kernel_namespacer�    s¦   € ð #×-Ñ-¨aÓ0ÐÙ :Ð1A×1OÑ1OÑ#Oð Ø
"´*¸QÄÔ2O 1§6¡6§;¢;ÐUV×UaÑUa×UfÑUf×UkÑUkÐ"lð mØ(×5Ñ5Ð6Ø
Ð,×:Ñ:Ð;Ð;`ð	bóÐOñ +;Ð×&Ñ&ðÜ@Xðra   c        	        ó   ‡‡‡‡‡‡‡— g }	t        t        «      Št        t        «      Št        t        «      }
d}t        j                  |t
        j                  |||d ‰¬«      }t        j                  |t
        j                  |||d ‰¬«      }t        j                  |t
        j                  |||d ‰¬«      }|D ]»  }t        ||¬«      j                  dd«      Š‰‰   j                   ||«      «       ‰‰   j                   ||«      «       t        |t        «      r|j                  n|j                  j                  }||
‰   vrt        t        «      |
‰<   |
‰   |   j                   ||«      «       Œ½ ‰D ]’  Št!        ‰‰   «      dk(  rŒt#        ‰¬«      ŠdŠ|
‰   D ]/  }|
‰   |   sŒ‰d|› d	‰› d
|j%                  |
‰   |   «      › d�z  ŠŒ1 |	j                  | j'                  dˆˆˆˆˆˆˆfd„«      j)                  |«      «       Œ” |	S )NrÜ   ©Úrocmr.  Úclass_method_nameÚskip_dispatcher_op_registration©r±   rj  r  rt   r   )ro  z
TORCH_LIBRARY_IMPL(r  z, m) {
    z
}zRegisterDispatchDefinitions.inic                 óp   •— ‰j                   ‰j                  ‰ ‰   ‰rdn‰d‰j                  «       ‰‰   dœS )Nrt   )Úns_prologueÚns_epilogueÚdispatch_anonymous_definitionsÚ"static_init_dispatch_registrationsÚdeferred_dispatch_registrationsÚdispatch_namespaceÚdispatch_namespaced_definitions)rt  ru  rù   )Úanonymous_definitionsrr   Úkernel_namespaceÚns_definitionsrz  Úregistration_bodyr†  s   €€€€€€€r`   r‚   z1get_native_function_definitions.<locals>.<lambda>j  sL   ø€ Ø#,×#5Ñ#5Ø#,×#5Ñ#5Ø6KØ(ñ7ñ 7ñ ;=à*Ø79Ø*6×*<Ñ*<Ó*>Ø7EÐFVÑ7Wñ€ ra   )r   r‹   rŒ   ÚdestÚRegisterDispatchKeyrM   ÚNAMESPACED_DEFINITIONÚANONYMOUS_DEFINITIONrØ  r�  rß   rQ  rŠ   r5   rø  r5  rÍ   rL   rú   Úsubstitute_with_templaterv  )rz   rf  rr   rj  rI  r„  r.  r†  Úgen_dispatch_helpersÚdefinitionsÚregistrationsrx  Úns_genÚanonymous_genÚreg_genr±   rø  r�  r‘  r’  rz  r“  s     `    `         @@@@@r`   Úget_native_function_definitionsrŸ    s`  þ€ ð  €KÜ+6´tÓ+<€NÜ2=¼dÓ2CÐÜ5@ÄÓ5F€MØ€GÜ×%Ñ%ØÜ×$Ñ$ØØØØØ(Gô€Fô ×,Ñ,ØÜ×#Ñ#ØØØØØ(Gô€Mô ×&Ñ&ØÜ×ÑØØØØØ(Gô€Gð &ò 
ˆÜ/°!ÀÔM×UÑUØ˜ó
Ðð 	Ð'Ñ(×/Ñ/Ù�1‹Iô	
ð 	Ð.Ñ/×6Ñ6Ù˜!Óô	
ô & a¬Ô8ˆA�KŠK¸a¿l¹l×>TÑ>Tð 	ð ˜MÐ*:Ñ;Ñ;Ü.9¼$Ó.?ˆMÐ*Ñ+ØÐ&Ñ'¨	Ñ2×9Ñ9Ù�A‹Jõ	
ð!
ð( +ò 
ÐÜˆ~Ð.Ñ/Ó0°AÒ5ØÜ#Ð2BÔCˆ	ØÐØ&Ð'7Ñ8ò 	ˆIØ Ð!1Ñ2°9Ò=ØØð &Ø�;˜b  ð /Ø‡\�\�-Ð 0Ñ1°)Ñ<Ó=Ð>ð ?ð"ñ Ñð	ð 	×ÑØ×'Ñ'Ø1÷ñ ó÷ ‰e�G‹nõ!	
ð
ð> Ðra   c           
     óX  — g }t        t        «      }d}t        j                  |t        j
                  ||d d|¬«      }	| D ]G  }
t        |
|¬«      j                  d|j                  «       «      }||   j                   |	|
«      «       ŒI |j                  «       D ]�  \  }}t        |«      dk(  rŒt        |dd¬	«      }t        t        j                  |«      «      }|j                  d|j                  › d|j!                  |«      › d|j"                  › d
�j%                  |«      «       Œ� |S )NrÜ   F)r„  r…  r†  r.  r‡  rÖ  r   rt   é   rn  rr  )r   r‹   r”  r•  rM   ÚNAMESPACED_DECLARATIONr�  rß   rù   rQ  rw   rÍ   rL   r   rs  rt  rú   ru  rv  )rf  rr   rj  rI  r„  r.  rw  rg  rx  r}   r±   rø  ry  rz  r{  s                  r`   Úget_namespaced_declarationr£    sM  € ð !€LÜ/:¼4Ó/@ÐØ€GÜ×#Ñ#ØÜ×%Ñ%ØØØØ(-Øô€Dð &ò 
ˆÜ(¨1¸+ÔF×NÑNØ�l×(Ñ(Ó*ó
ˆ	ð 	˜9Ñ%×,Ñ,Ù�‹Gõ	
ð
ð 1×6Ñ6Ó8ò 
Ñˆ	�7Üˆw‹<˜1ÒØÜ#Ø#°¸qô
ˆ	ô œ{×3Ñ3°GÓ<Ó=ˆØ×ÑðØ
×ÑÐ ð Ø‡�ˆoÓÐ ð  Ø
×ÑÐ ð 	ð÷ ‰E�'‹Nõ	
ð
ð Ðra   c           
     óV  — t        t        «      }| D ]   }||j                     j                  |«       Œ" d}g }d }|j	                  «       D ]Y  \  }}t        t        t        |«      |«      «      }	|dk(  r|	}Œ,|}d}
|t        v rdnd}|d|› d|› d|
j                  |	«      › d	�z  }Œ[ ||fS )
Nrt   ÚatenrÞ   ÚTORCH_LIBRARY_FRAGMENTÚTORCH_LIBRARYrÜ   r!  z	, m) {
  z
};)	r   r‹   rø  r�   rw   rK   rH  r.   rú   )rg   Úschema_selectorÚns_native_functionsÚnative_functionÚschema_registrationsÚaten_schema_registrationsÚcustom_namespacerø  r€   Úschema_registrations_bodyÚtabÚtorch_library_macros               r`   Ú(get_native_function_schema_registrationsr±  ¯  s  € ô
 <GÄtÓ;LÐØ+ò OˆØ˜O×5Ñ5Ñ6×=Ñ=¸oÕNðOàÐØ "ÐØÐØ/×5Ñ5Ó7ò Ñˆ	�5Ü$(Ü”^ OÓ4°eÓ<ó%
Ð!ð
 ˜ÒØ(AÑ%à(ÐØˆCð
 Ô 3Ñ3ñ )à$ð  ð
 !ð )ØÐ �QÐ'Ð(ð )Ø‡8�8Ð%Ó&Ð'ð (ð%ñ Ñ ð%ð, &Ð';Ð<Ð<ra   c           
     óR  ‡ ‡‡‡‡‡‡
‡‡‡‡‡— |j                  dˆfd„«       ‰ D �cg c]!  }t        j                  |j                  v sŒ |‘Œ# c}Š‰ D �cg c]	  }|‰vsŒ|‘Œ c}Š|j                  dˆˆfd„«       |j                  dˆˆfd„«       |j                  dˆ ˆfd„«       t	        ‰‰¬	«      Š|j                  d
ˆfd„«       |	D ]Q  Št        ‰||«      }‰|v r=d‰› d�Š|j                  ‰› d�dˆˆfd„«       |j                  ‰› d�dˆˆˆˆ
ˆfd„«       ~ŒS y c c}w c c}w )NzNativeMetaFunctions.hc                 ó<   •— g t        t        t        ‰ «      «      dœS )N)ÚNativeMetaFunctions_includesÚ NativeMetaFunctions_declarations©r‹   rK   rÈ  )Ústructured_native_functionss   €r`   r‚   z(gen_aggregated_headers.<locals>.<lambda>å  s!   ø€ Ø,.Ü04ÜÔ:Ð<WÓXó1ñ
€ ra   úMethodOperators.hc            	     óf   •— g t        t        t        t        j                  ‰¬«      ‰ «      «      dœS )N©r_  ©ÚMethodOperators_includesÚMethodOperators_declarations©r‹   rK   r[  rM   ri  )Úmethod_native_functionsÚstatic_dispatch_idxs   €€r`   r‚   z(gen_aggregated_headers.<locals>.<lambda>ô  s6   ø€ Ø(*Ü,0ÜÜ$Ü×*Ñ*Ø8Kôð ,óó-ñ
€ ra   zOperators.hc            	     óh   •— dgt        t        t        t        j                  ‰¬«      ‰ «      «      dœS )Nz!#include <ATen/MethodOperators.h>rº  )ÚOperators_includesÚOperators_declarationsr¾  )Únon_method_native_functionsrÀ  s   €€r`   r‚   z(gen_aggregated_headers.<locals>.<lambda>  s9   ø€ Ø#FÐ"GÜ&*ÜÜ$Ü×*Ñ*Ø8Kôð 0óó'ñ
€ ra   úFunctions.hc                 óZ   •— t        ‰«      dgt        t        t        «       ‰ «      «      dœS )Nz#include <ATen/Operators.h>)r   ÚFunctions_includesÚFunctions_declarations)r   r‹   rK   rv  ©rg   rÀ  s   €€r`   r‚   z(gen_aggregated_headers.<locals>.<lambda>  s7   ø€ Ü-JØ#ó.ð $AÐ"AÜ&*ÜÜ#Ó%Ø$óó'ñ
€ ra   )rf  rh   zNativeFunctions.hc                 ó   •— dg‰ dœS )Nz%#include <ATen/NativeMetaFunctions.h>)ÚNativeFunctions_includesÚNativeFunctions_declarationsrn   )rw  s   €r`   r‚   z(gen_aggregated_headers.<locals>.<lambda>%  s   ø€ Ø)PÐ(QØ,8ñ
€ ra   rþ   úFunctions_inl.h>úDispatchKeyFunctions.hc                 ó    •— t        ‰ «      ‰dœS ©N)rr   Úinline_headers©rÈ   ©rr   Úinl_headerss   €€r`   r‚   z(gen_aggregated_headers.<locals>.<lambda>3  s   ø€ Ü$'¨Ó$5Ø&1ñ€ ra   úFunctions_inl.húDispatchKeyFunctions_inl.hc            
     óP   •— g ‰j                  «       t        ‰‰‰ ‰   ‰‰d¬«      dœS )NT)rf  rr   rj  rI  r„  r.  )Ú!DispatchKeyFunctions_inl_includesrŽ  Ú dispatch_namespaced_declarations)rù   r£  )rh   rr   rf  r„  rI  s   €€€€€r`   r‚   z(gen_aggregated_headers.<locals>.<lambda>;  s8   ø€ Ø9;Ø*6×*<Ñ*<Ó*>Ü8RØ1IØ%1Ø$3°LÑ$AØ!)Ø!Ø#ô9ñ€ ra   )Úwriter?   r+  r€  r  r{   Úwrite_with_template)rg   rf  r·  rÀ  rI  rh   Úcpu_fmrx   Úfunctions_keysri  r„  Úfnrz   rw  rr   rÔ  r¿  rÄ  s   ``````    `  @@@@@r`   Úgen_aggregated_headersrß  Ó  sS  ÿû€ ð  ‡L�LØó	
ôð &öØ¬¯©¸2¿;¹;Ò)FŠòÐð &ö#Ø¨Ð3JÒ)JŠò#Ðð ‡L�LØô	
ôð ‡L�LØô	
ôð ‡L�LØô	
ôô 4Ø!9Ø'ô€Lð ‡L�LØó	
ôð &ò ˆÜ+¨L¸*ÀfÓMˆØ˜>Ñ)Ø+¨L¨>Ð9IÐJˆKà×"Ñ"Ø�. Ð,Ø(ôôð ×"Ñ"Ø�. Ð0Ø,÷ôñ" ñ=ùòùò#s   ¦!DÁDÁ	D$ÁD$c                ób  ‡‡‡‡‡‡‡‡‡‡‡‡‡— t        t        «      Š| D ]   }‰|j                     j                  |«       Œ" t        t        «      }|D ]"  }|j                  Š|‰   j                  |«       Œ$ ‰j	                  «       D ]Ø  \  ŠŠ|j                  ‰› d�dˆˆfd„«       |j                  ‰› d�dˆˆˆfd„«       |j                  ‰g «      }|D �cg c]   }t        |t        «      r|j                  r|‘Œ" c}Št        ‰«      dkD  Š‰r|j                  ‰› d�d	ˆfd
„«       t        ||t        j                  ¬«      Š|j                  ‰› d�dˆˆˆfd„«       ŒÚ dD ]  \  ŠŠ|j                  ‰› d�ˆˆˆfd„«       Œ! |	D �]	  Š‰|vrŒ	‰j                  «       Šg Š‰j	                  «       D ]”  \  ŠŠ|j                  ‰g «      }t        t!        t        j"                  |‰   t$        j&                  ||
dd d¬«      |«      «      Št        ‰«      dk(  rŒg‰j                  ‰«       |j                  ‰› d‰› d�dˆˆfd„«       Œ– t)        ‰||«      }d‰› d�Š|j                  ‰› d�dˆˆfd„«       |j                  ‰› d�dˆˆfd„«       ~�Œ |j                  d ˆfd!„«       y c c}w )"Nz_ops.hz
Operator.hc            	     ód   •— dt        t        t        t        j                  ‰¬«      ‰ «      «      iS )Nrw  rº  r¾  )Ú	functionsrÀ  s   €€r`   r‚   z*gen_per_operator_headers.<locals>.<lambda>k  s5   ø€ Ø¤ÜÜ(Ü"×.Ñ.Ø<Oôð "óó!ð
€ ra   ú.hz
Function.hc                 óz   •— t        t        ˆfd„‰ «      «      d‰› d�t        t        t        «       ‰ «      «      dœS )Nc                ó   •— t        | ‰¬«      S )N)rñ   )rü   ©rÞ  rÀ  s    €r`   r‚   z<gen_per_operator_headers.<locals>.<lambda>.<locals>.<lambda>~  s   ø€ Ô#=ØÐ.Aô$€ ra   rô   ú_ops.h>)Ústatic_dispatch_ops_headersÚoperator_includesÚfunction_definitions)r‹   rK   rv  )râ  r©   rÀ  s   €€€r`   r‚   z*gen_per_operator_headers.<locals>.<lambda>{  sK   ø€ Ü/3Üóð "ó	ó0ð (;¸4¸&ÀÐ%HÜ(,ÜÜ'Ó)Ø!óó)ñ€ ra   r   z_meta.hzNativeMetaFunction.hc                 ó:   •— dt        t        t        ‰ «      «      iS )NÚmeta_function_declarationsr¶  )Ústructured_functionss   €r`   r‚   z*gen_per_operator_headers.<locals>.<lambda>š  s"   ø€ Ø0´$Ü Ü=Ð?Sóó3ð€ ra   r~  z	_native.hzNativeFunction.hc                 ó$   •— ‰r	d‰› d�‰ dœS g ‰ dœS )Nrô   z_meta.h>)Úextra_includesÚnative_function_declarationsrn   )rw  Úis_structuredr©   s   €€€r`   r‚   z*gen_per_operator_headers.<locals>.<lambda>ª  s)   ø€ á<IÐ)¨$¨¨xÐ8à0<ñ	€ àOQà0<ñ	€ ra   ))Ú	Functionsrt   )Ú	OperatorsÚ_ops)ÚNativeMetaFunctionsÚ_meta)ÚNativeFunctionsÚ_nativec                 ó|   •— ‰› d�t        ‰j                  «       «      D � cg c]
  } d| › ‰› d�‘Œ c} ‰› d�g iS c c} w )NÚ	_includesrô   ú.h>Ú_declarations)rS  r<  )r©   ÚcategoryÚfunctions_by_root_nameÚsuffixs    €€€r`   r‚   z*gen_per_operator_headers.<locals>.<lambda>º  sY   ø€ Ø�*˜IÐ&ä &Ð'=×'BÑ'BÓ'DÓ Eö)àð *¨$¨°¨x°sÒ;ò)ð �*˜MÐ*¨Bð€ ùò)s   ¡9TFrƒ  rõ   z_dispatch.hzDispatchKeyFunction.hc                 ó   •— ‰‰ dœS )N)rŽ  rÙ  rn   )rw  rŽ  s   €€r`   r‚   z*gen_per_operator_headers.<locals>.<lambda>â  s   ø€ Ø*<Ø8Dñ€ ra   rþ   rÍ  rÅ  rÎ  c                 ó    •— t        ‰ «      ‰dœS rÐ  rÒ  rÓ  s   €€r`   r‚   z*gen_per_operator_headers.<locals>.<lambda>î  s   ø€ Ü # LÓ 1Ø"-ñ€ ra   rÕ  rÖ  c            	     óV   •— ‰t        ‰«      D � cg c]  } d| › d‰› d�‘Œ c} g dœS c c} w )Nrô   rõ   rö   )rŽ  rØ  rÙ  )rS  )r©   Údispatch_namesrŽ  s    €€r`   r‚   z*gen_per_operator_headers.<locals>.<lambda>ö  sE   ø€ Ø&8ô !' ~Ó 6ö6àð *¨$¨¨qÐ1CÐ0DÀLÒQò6ð 57ñ€ ùò6s   �&r¸  c                 óJ   •— t        d„ ‰ j                  «       D «       «      g dœS )Nc              3  óR   K  — | ]  \  }}t        d „ |D «       «      rd|› d�–— Œ! y­w)c              3  óT   K  — | ]   }t         j                  |j                  v –— Œ" y ­wrm   )r?   r+  r€  )ro   rÞ  s     r`   rs   zGgen_per_operator_headers.<locals>.<lambda>.<locals>.<genexpr>.<genexpr>  s   è ø€ ÒI¸”w—~‘~¨¯©Ô4ÑIùs   ‚&(rô   rç  N)r,  )ro   r©   râ  s      r`   rs   z=gen_per_operator_headers.<locals>.<lambda>.<locals>.<genexpr>  s3   è ø€ ò /á#�D˜)ÜÑI¸yÔIÔIð & d V¨7Ô3ñ/ùs   ‚%'r»  )rS  rw   )rþ  s   €r`   r‚   z*gen_per_operator_headers.<locals>.<lambda>  s-   ø€ Ü(.ñ /à'=×'CÑ'CÓ'Eô/ó )ð
 -/ñ
€ ra   )r   r‹   rø   r�   rw   rÛ  ru   rŠ   r6   rÃ   rÍ   r  r”  Ú#compute_native_function_declarationrÚ  rù   rG   r•  rM   r¢  r{   )rg   rf  rÀ  rI  rh   rÜ  rx   Úops_fmrÝ  ri  r„  rÞ  Úgrouped_functions_by_root_nameÚgroupÚgrouped_functionsrz   rý  rw  rr   r  rŽ  râ  rþ  rÔ  rñ  r©   rí  rÿ  s     `             @@@@@@@@@@@@r`   Úgen_per_operator_headersr  L  s+  ÿü€ ô  ?JÌ$Ó>OÐØò 8ˆØ˜rŸ|™|Ñ,×3Ñ3°BÕ7ð8ô
 	”DÓð #ð *ò ;ˆØ�‰ˆØ& tÑ,×3Ñ3°EÕ:ð;ð 2×7Ñ7Ó9ò I
‰ˆˆiØ×"Ñ"Øˆf�FˆOØô
ô	
ð  	×"Ñ"Øˆf�BˆKØõô	
ð, ;×>Ñ>¸tÀRÓHÐð (ö 
àÜ˜"Ô2Ô3¸¿ºò ò 
Ðô
 Ð0Ó1°AÑ5ˆáØ×&Ñ&Ø�&˜Ð Ø&óô
ô 8Ø%6Ø+Ü%)×%MÑ%Mô
ˆð
 	×"Ñ"Øˆf�IÐØõõ		
ðAI
ðVò 
Ñˆ�&ð 	�‰Øˆj˜ˆOõõ		
ð
ð" &ó <ˆØ˜~Ñ-Øà)×/Ñ/Ó1ÐØˆà5×;Ñ;Ó=ò 	‰OˆD�)Ø >× BÑ BÀ4ÈÓ LÐÜÜÜ×,Ñ,Ø'¨Ñ5Ü×5Ñ5Ø Ø!Ø#Ø*.Ø8=ôð &óóˆLô �<Ó  AÒ%Øà×!Ñ! $Ô'Ø×&Ñ&Ø�&˜Ð,Ð-¨[Ð9Ø'ôõð+	ô< ,¨L¸*ÀfÓMˆØ'¨ ~Ð5EÐFˆà
×ÑØˆn˜KÐ(Ø$ôô	
ð 	×ÑØˆn˜OÐ,Ø(ôô	
ò ðy<ð| ‡L�LØó	
õ
ùòe 
s   Ã%J,c                óv  ‡ ‡‡‡— |rt        ‰ |‰|‰||	|
|||¬«       nt        ‰ ||‰|‰||	|||¬«       |j                  dˆ ˆfd„«       |j                  dˆ fd„«       |j                  dˆˆ fd„«       |j                  d	ˆ fd
„«       dˆ fd„}|j                  d|«       dˆfd„}|j                  d|«       y )N)rg   rf  rÀ  rI  rh   rÜ  rx   r  ri  rÝ  r„  )rg   rf  r·  rÀ  rI  rh   rÜ  rx   ri  rÝ  r„  zTensorBody.hc            	     ó¾   •— t        t        t        t        j                  ‰¬«      ‰ «      «      t        t        t        t        j
                  ‰¬«      ‰ «      «      dœS )N)r]  r_  )Útensor_method_declarationsÚtensor_method_definitions)r‹   rK   r‰  rM   ri  rl  rÉ  s   €€r`   r‚   zgen_headers.<locals>.<lambda>?  s^   ø€ Ü*.ÜÜ'Ü%×1Ñ1Ø8Kôð %óó+ô *.ÜÜ'Ü%×0Ñ0Ø8Kôð %óó*ñ
€ ra   zRedispatchFunctions.hc                 óB   •— dt        t        t        «       ‰ «      «      iS )NÚfunction_redispatch_definitions)r‹   rK   r�  ©rg   s   €r`   r‚   zgen_headers.<locals>.<lambda>W  s#   ø€ Ø-¬tÜÔ2Ó4Ð6FÓGó0ð
€ ra   zRegistrationDeclarations.hc                 óF   •— d‰D � cg c]  } t        | ‰«      ‘Œ c} iS c c} w )NÚregistration_declarations)rA  )r±   rh   rg   s    €€r`   r‚   zgen_headers.<locals>.<lambda>`  s/   ø€ Ø'à)ö*àô 2°!°_ÕEò*ð
€ ùò*s   ‡zVmapGeneratedPlumbing.hc                 ó   •— t        ‰ «      S rm   r%   r  s   €r`   r‚   zgen_headers.<locals>.<lambda>i  s   ø€ Ô+@ÐAQÓ+R€ ra   c            	     óP  •— t        «       } t        «       }‰D ]£  }|j                  t        |j                  j                  j                  «      «       |j                  |j                  j                  j                  j
                  «       | j                  d„ |j                  j                  «       D «       «       Œ¥ |h d£z  }dj                  t        |«      D �cg c]  }d|› d�‘Œ
 c}«      dj                  t        | «      D �cg c]  }d|› d�‘Œ
 c}«      dœS c c}w c c}w )Nc              3  ó4   K  — | ]  }|j                   –— Œ y ­wrm   rÔ  )ro   rÓ   s     r`   rs   zAgen_headers.<locals>.gen_aten_interned_strings.<locals>.<genexpr>u  s   è ø€ ÒP c˜Ÿ�ÑPùr  >   ÚorÚandÚnotÚxorÚbitorÚcomplÚor_eqÚand_eqÚbitandÚnot_eqÚxor_eqz \
z_(aten, r5  z_(attr, )Úaten_symbolsÚattr_symbols)
r¤   r§   rÈ   r}   r©   rË   Úupdater"  rú   rS  )Úattrsr  r}   r©   rg   s       €r`   Úgen_aten_interned_stringsz.gen_headers.<locals>.gen_aten_interned_stringsl  s÷   ø€ Ü›%ˆÜ“ˆØ$ò 	QˆDØ�I‰I”c˜$Ÿ)™)Ÿ.™.×-Ñ-Ó.Ô/ð �I‰I�d—i‘i—n‘n×)Ñ)×.Ñ.Ô/à�L‰LÑP¨T¯Y©Y×-MÑ-MÓ-OÔPÕPð	Qð 	ò 
ñ 	
ˆð $ŸL™LÜ06°u³Ö>¨�8˜D˜6 Ò#Ò>óð $ŸL™LÜ06°u³Ö>¨�8˜D˜6 Ò#Ò>óñ	
ð 	
ùâ>ùò ?s   ÃDÄD#
zaten_interned_strings.hc                 ó<   •— ddj                  t        ‰ «      «      iS )NÚenum_of_valid_tagsz,
)rú   rS  )r“   s   €r`   Úgen_tags_enumz"gen_headers.<locals>.gen_tags_enum’  s   ø€ Ø$ u§z¡z´&¸Ó2DÓ'EÐGÐGra   z
enum_tag.h)r  údict[str, str])r  rß  rÚ  )rg   r“   rf  r·  rÀ  rI  rh   Úcore_fmrÜ  rx   r  ri  rÝ  r„  Úper_operator_headersr(  r+  s   ``  ` `          r`   Úgen_headersr/    sà   û€ ñ$ Ü Ø-Ø%=Ø 3ØØ+ØØ!ØØ'Ø)Øö	
ô 	Ø-Ø%=Ø(CØ 3ØØ+ØØ!Ø'Ø)Øõ	
ð ‡M�MØô	
ôð0 ‡L�LØó	
ôð ‡L�LØ$ô	
ôð ‡L�LØ!Ó#Rôõ"
ðH ‡M�MÐ+Ð-FÔGõHð ‡M�M�, Õ.ra   c                ó€  ‡ ‡‡‡‡‡‡‡‡‡‡‡)‡*‡+‡,‡-‡.‡/‡0‡1‡2‡3‡4‡5‡6‡7‡8‡9— d}‰rd}|D �]�  Š,t        ‰,||
«      Š0|rdCˆ*ˆ,ˆ-ˆˆfd„}ndCˆ,ˆfd„}‰‰,   Š*t        t        «      }‰D ]H  }t        |t        «      r|j
                  n|j                  j
                  }||   j                  |«       ŒJ t        ‰,«      j                  «       Š-‰,t        j                  k7  Š2t        ‰,«      r|nddt        j                  ‰*|‰«       |«       ‰2rt        j                  ‰*«      ng dœ}	 	 	 	 dDˆ*ˆ,ˆ0ˆ2ˆˆˆfd„}‰0j!                  d‰,› d	�d
‰d„ |‰,t        j"                  k(  rdnd|dh¬«       ‰D ]ã  Š1‰1j$                  j&                  rt)        ‰,«      sŒ%‰1j                  j*                  j,                  j,                  Š4‰,t        j"                  u r>‰0|
u sJ ‚‰0j/                  d‰4› d	�dˆˆ,ˆ1fd„«       |	j/                  d‰4› d	�dˆ1ˆ4fd„«       ŒŸ‰,t        j0                  u r%dŠ+‰rdŠ+‰0j/                  d‰4› d�dˆˆ+ˆ,ˆ1ˆ4fd„«       ŒÖt3        d‰,› d�«      ‚ i Š7‰D ]4  }|j5                  «       D ]  }|j6                  €Œ|‰7|j6                  <    Œ4 Œ6 ‰,|v �r)i }‰ D ]  }t9        |«      }|t:        v sŒ|||<   Œ t=        d„ t?        |jA                  «       «      D «       «      Š/d‰,j                  «       › d �} tC        ‰/‰7‰,‰d!‰d¬"«      Š5|r|jE                  | ˆ5fd#„«       nZ	 tG        tH        jJ                  jM                  |jN                  | «      «      5 }!|!jQ                  «       }"|"‰5k(  sJ d$«       ‚	 d d d «       dEˆˆ,ˆˆ/ˆ7fd&„Š3t        ‰,«      r|ndŠ.|jE                  d‰,j                  «       › d	�ˆˆ,ˆˆ.ˆ/ˆ3ˆ7fd'„«       ‹0�Œ� dFˆ ˆfd(„}#|
jE                  d)|#«       ‰}$|rtW        jX                  «       }$t[        ‰ |$¬*«      \  Š)Š6|
jE                  d+ˆ)ˆ6ˆfd,„«       	 	 	 	 dGd-„}%|
j]                  d.‰ |%ˆfd/„d0t_        ‰«      id1h d2£¬3«       |
jE                  d4t`        «       |jE                  d5t`        «       |jE                  d6ˆ fd7„«       	 	 	 	 dHˆˆfd8„}&t        ‰«      t        ‰«      z   }'tc        d9„ ‰«      D �(ci c]  }(|(j*                  j,                  |(“Œ c}(Š8tc        d:„ ‰«      D �(ci c]  }(|(j*                  j,                  |(“Œ c}(Š9|'je                  ˆ8ˆ9fd;„‰ D «       «       |
j]                  d<|'|%|&dh d=£¬>«       |
jE                  d?ˆˆfd@„«       |
jE                  dAˆˆˆfdB„«       y # 1 sw Y   �ŒxY w# tR        $ r: tU        tH        jJ                  jM                  |jN                  | «      › d%�«       Y �ŒFw xY wc c}(w c c}(w )INz‹#include <c10/cuda/CUDAGuard.h>
#include <ATen/cuda/ATenCUDAGeneral.h>
#include <ATen/cuda/CUDADevice.h>
#include <ATen/cuda/CUDAContext.h>zŸ#include <ATen/hip/impl/HIPGuardImplMasqueradingAsCUDA.h>
#include <ATen/hip/ATenHIPGeneral.h>
#include <ATen/hip/HIPDevice.h>
#include <ATen/hip/HIPContext.h>c                 ó*  •— g } ‰D ]ø  }d}‰j                  |«      rd}net        |t        «      r%t        ˆfd„|j	                  «       D «       «      rd}n0|j
                  r$‰t        j                  t        j                  fv rd}|sŒ�| j                  d|j                  › d�«       ‰t        j                  k(  r| j                  d|j                  › d�«       ‰‰v sŒ×| j                  d|j                  › d‰› d�«       Œú t        t        | «      «      S )	NFTc              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrm   )rì   )ro   rÞ  rñ   s     €r`   rs   z=gen_source_files.<locals>.operator_headers.<locals>.<genexpr>Ì  s#   øè ø€ ò EØ9;˜×0Ñ0°×4ñEùs   ƒrô   ú
_native.h>rû  rõ   rö   )rì   rŠ   r6   r,  râ  rÃ   r-   ÚMetarç   r�   rø   rS  r¤   )Úheadersr­  Úis_registeredrñ   rr   rŽ  rÝ  rf  s      €€€€€r`   Úoperator_headersz*gen_source_files.<locals>.operator_headersÀ  s  ø€ Ø�Ø1ò "�AØ$)�MØ$×/Ñ/°Ô2Ø(,™ô $ AÔ';Ô<Äó EØ?@¿{¹{»}ôEô Bð )-™ð Ÿš¨,Ü#×(Ñ(Ü#×JÑJð;ñ +ð )-˜Ù(Ø à—N‘NÐ%8¸¿¹¸ÀZÐ#PÔQà$Ü&×MÑMòNð  Ÿ™Ð)<¸Q¿[¹[¸MÈÐ'MÔNØ# ~Ò5ØŸ™Ø1°!·+±+°¸aÐ@RÐ?SÐS_Ð`õðA"ôH œc '›lÓ+Ð+ra   c                 óˆ   •— dg} ‰t         j                  k(  r| j                  d«       ‰‰v r| j                  d‰›d�«       | S )Nz!#include <ATen/NativeFunctions.h>z#include <ATen/Functions.h>rþ   rÿ   )r-   rç   r�   )r5  rr   rÝ  s    €€r`   r7  z*gen_source_files.<locals>.operator_headersê  sI   ø€ Ø>Ð?�Ø¤;×#UÑ#UÒUØ—N‘NÐ#@ÔAØ >Ñ1Ø—N‘N _°\Ð4DÀLÐ#QÔRØ�ra   rt   )Úextra_cuda_headersÚexternal_backend_headersÚdispatch_headersÚops_headersÚdispatch_helpersc                ó2   •— dt        ‰| g‰‰‰‰d‰‰¬«	      iS )NÚdispatch_definitionsT)	rz   rf  rr   rj  rI  r„  r.  r†  r™  )rŸ  )Úgnfrñ   rr   rz   r™  r„  rI  r†  s    €€€€€€€r`   Ú"register_dispatch_key_env_callablez<gen_source_files.<locals>.register_dispatch_key_env_callable	  s7   ø€ ð 'Ô(GØØ.1¨UØ!-Ø -Ø%ØØØ4SØ)=ô
)ðð ra   ÚRegisterz.cppzRegisterDispatchKey.cppc                ó   — | j                   S rm   ©rø   )Úxs    r`   r‚   z"gen_source_files.<locals>.<lambda>*	  s
   € ˜QŸ[™[€ ra   rm  rV   r?  )Úkey_fnÚenv_callableÚ
num_shardsÚbase_envÚsharded_keysÚ	UfuncCPU_zUfuncCPU.cppc                 óv   •— t        ‰«      t        j                  ‰‰ ‰   «      t        j                  ‰«      dœS )N)Úmeta_declarationÚnative_declarationÚnative_definitions)rÈ  r”  r  Úcompute_ufunc_cpu)rh   rr   r­  s   €€€r`   r‚   z"gen_source_files.<locals>.<lambda>:	  s:   ø€ Ü,MÈaÓ,PÜ.2×.VÑ.VØ˜¨|Ñ<ó/ô /3×.DÑ.DÀQÓ.Gñ€ ra   ÚUfuncCPUKernel_zUfuncCPUKernel.cppc                 ó4   •— ‰t        j                  ‰ «      dœS )N)r©   rO  )r”  Úcompute_ufunc_cpu_kernel)r­  r©   s   €€r`   r‚   z"gen_source_files.<locals>.<lambda>E	  s   ø€ Ø $Ü.2×.KÑ.KÈAÓ.Nñ€ ra   z%#include <ATen/native/cuda/Loops.cuh>z$#include <ATen/native/hip/Loops.cuh>Ú
UfuncCUDA_z.cuzUfuncCUDA.cuc                 óz   •— ‰‰t        ‰«      t        j                  ‰‰ ‰   «      t        j                  ‰«      dœS )N)r©   Úcuda_headersrM  rN  rO  )rÈ  r”  r  Úcompute_ufunc_cuda)rh   rV  rr   r­  r©   s   €€€€€r`   r‚   z"gen_source_files.<locals>.<lambda>Q	  s@   ø€ Ø $Ø(4Ü,MÈaÓ,PÜ.2×.VÑ.VØ˜¨|Ñ<ó/ô /3×.EÑ.EÀaÓ.Hñ€ ra   zunrecognized z
 for ufuncc              3  ó&   K  — | ]	  \  }}|–— Œ y ­wrm   rn   )ro   rõ   Úvalues      r`   rs   z#gen_source_files.<locals>.<genexpr>k	  s   è ø€ ò .Ù"˜!˜U”ñ.ùrO  Úc_shim_rã  T©ÚheaderÚextend_aoti_c_shimÚincludesc                 ó   •— ‰ S rm   rn   )Ú
new_headers   €r`   r‚   z"gen_source_files.<locals>.<lambda>}	  s   ø€ ˜J€ ra   aŸ  

WARNING: The generated AOTInductor C shim header files have unexpectedly changed. This
indicates an AOTInductor fallback operator ABI backward compatibility breakage!!!
Only in a limited number of situations, this is allowed:

1. You added a fallback op to the inductor_fallback_ops list in torchgen/aoti/fallback_ops.py.
If that's the case, run `python torchgen/gen.py --update-aoti-c-shim` to update the existing
C shim header files.

2. You added a new default argument to an existing fallback op. This is clearly a BC breaking
change in the AOTInductor land. In this case, you need to keep a manual copy of that existing
fallback op in a file, e.g. torch/csrc/inductor/aoti_torch/c/shim.h, bump up the version
number of that fallback op in the newly generated C shim files, and update the cpp wrapper
codegen to generate the correct cpp call for this op. Contact AOTInductor team for assistance.

                        z
 not foundc                 ó¤   •— g } ‰D ]&  }t        |‰‰‰‰¬«      }|€Œ| j                  |«       Œ( dj                  t        t	        | «      «      «      S )N)r]  rÜ   )r    r�   rú   rS  r¤   )r5  r}   r\  rh   rr   r]  Úfallback_native_functionsÚstructured_func_group_dicts      €€€€€r`   Úheaders_for_aotiz*gen_source_files.<locals>.headers_for_aotiœ	  s^   ø€ Ø�Ø5ò 	/�DÜ0ØØ2Ø$Ø'Ø+=ô�Fð Ñ)ØŸ™ vÕ.ð	/ð —y‘y¤¬¨G«Ó!5Ó6Ð6ra   c            
     ó>   •— t        ‰‰‰‰ d‰ ‰«       dz   ‰z   ¬«      S )NFrÜ   r[  )r   )rh   rr   r]  Úextra_headersrb  rd  rc  s   €€€€€€€r`   r‚   z"gen_source_files.<locals>.<lambda>°	  s.   ø€ œØ-Ø.Ø Ø#Ø Ø'9Ù-Ó/°$Ñ6¸ÑFô€ ra   c            
     ó@  •— ‰D � cg c]  } t        | ‰«      sŒ| ‘Œ }} |D � cg c]  } d| j                  › d�‘Œ c} t        t        t	        t
        j                  ‰«      |«      «      t        t        t	        t
        j                  ‰«      |«      «      dœS c c} w c c} w )Nrô   rç  )r<  Ú!backend_select_method_definitionsÚ%backend_select_function_registrations)rÎ  rø   r‹   rK   rÐ  rM   rl  rØ  )rÞ  Úrelevant_fnsrg   rI  s     €€r`   Úgen_backend_selectz,gen_source_files.<locals>.gen_backend_select¾	  s¨   ø€ à)ö
ØÔ-AÀ"ÀhÕ-OŠBð
ˆð 
ð
 GSöØ@BÐ% b§l¡l ^°7Ò;òô 26ÜÜ(¬×):Ñ):¸HÓEÀ|óó2ô
 6:ÜÜ(¬×)<Ñ)<¸hÓGÈóó6ñ
ð 	
ùò
ùòs   †B˜B¢BzRegisterBackendSelect.cpp)rg   r¨  zRegisterSchema.cppc                 ó"   •— ‰rg n‰ ‰rg dœS ‰dœS )N)r¬  r«  rn   )r¬  r«  r†  s   €€€r`   r‚   z"gen_source_files.<locals>.<lambda>à	  s)   ø€ á.ñ *,à*á.ð %'ñ	
€ ð &ñ
€ ra   c                ó   — | j                   S rm   rD  )rÞ  s    r`   Úkey_funcz"gen_source_files.<locals>.key_funcê	  s   € ð �|‰|Ðra   zOperators.cppc                ól   •— d| j                   › d�g t        t        j                  ‰¬«      | «      gdœS )Nrô   rû  rº  )r7  rš  )rø   r[  rM   rl  ræ  s    €r`   r‚   z"gen_source_files.<locals>.<lambda>ó	  sE   ø€ Ø#6°r·|±|°nÀCÐ!HÐ IðÔ Ü×%Ñ%Ø4Gôð óðñ!
€ ra   r   é   >   rš  r7  r   )rF  rG  rI  rH  rJ  zFunctions.cppzTensorMethods.cppzATenOpList.cppc                 ó:   •— dt        t        t        ‰ «      «      iS )NÚaten_ops)r‹   rK   r”  r  s   €r`   r‚   z"gen_source_files.<locals>.<lambda>
  s   ø€ ØœœX¤oÐ7GÓHÓIð
€ ra   c                óx   •— 	 	 	 	 dd„} || «      t        ‰| «      t        ‰| ‰t        j                     «      dœS )Nc                óP  — t        | t        «      ryd| j                  j                  › d�d| j                  j                  › d�g}| j                  �7|d| j                  j                  › d�d| j                  j                  › d�gz  }|S t        | t
        «      rîd| j                  j                  › d�d| j                  j                  › d�d| j                  j                  › d�d| j                  j                  › d�g}| j                  �7|d| j                  j                  › d�d| j                  j                  › d�gz  }| j                  �7|d| j                  j                  › d�d| j                  j                  › d�gz  }|S d| j                  › d�d| j                  › d�gS )Nrô   r3  rç  )
rŠ   r7   rL  rø   rM  r6   r5  r¤  rÊ   ró  )r­  r5  s     r`   Úgen_op_headerszPgen_source_files.<locals>.functionalization_env_callable.<locals>.gen_op_headers
  sÅ  € ô ˜!Ô5Ô6ð *¨!¯&©&×*:Ñ*:Ð);¸:ÐFØ)¨!¯&©&×*:Ñ*:Ð);¸7ÐCð�ð —;‘;Ð*ØØ-¨a¯k©k×.CÑ.CÐ-DÀJÐOØ-¨a¯k©k×.CÑ.CÐ-DÀGÐLð ñ �Gð �Ü˜AÔ3Ô4à)¨!¯,©,×*@Ñ*@Ð)AÀÐLØ)¨!¯,©,×*@Ñ*@Ð)AÀÐIØ)¨!¯%©%¯/©/Ð):¸*ÐEØ)¨!¯%©%¯/©/Ð):¸'ÐBð	�ð —9‘9Ð(ØØ-¨a¯i©i×.AÑ.AÐ-BÀ*ÐMØ-¨a¯i©i×.AÑ.AÐ-BÀ'ÐJð ñ �Gð —9‘9Ð(ØØ-¨a¯i©i×.AÑ.AÐ-BÀ*ÐMØ-¨a¯i©i×.AÑ.AÐ-BÀ'ÐJð ñ �Gð �ð *¨!¯+©+¨°jÐAØ)¨!¯+©+¨°gÐ>ðð ra   )r<  Úfunc_definitionsÚfunc_registrations)r­  ú@NativeFunction | NativeFunctionsGroup | NativeFunctionsViewGroupr  ú	list[str])r!   r"   r-   rä   )r­  ru  rh   rI  s     €€r`   Úfunctionalization_env_callablez8gen_source_files.<locals>.functionalization_env_callable
  sZ   ø€ ð%	ØOð%	àó%	ñP *¨!Ó,Ü @ØØó!ô #EØØØ¤× EÑ EÑFó#ñ
ð 	
ra   c                ó4   — t        | j                  «       «      S rm   ©r‹   râ  ©r­  s    r`   r‚   z"gen_source_files.<locals>.<lambda>W
  s   € ¤T¨!¯+©+«-Ó%8€ ra   c                ó4   — t        | j                  «       «      S rm   r|  r}  s    r`   r‚   z"gen_source_files.<locals>.<lambda>Z
  s   € ´D¸¿¹»Ó4G€ ra   c              3  ó‚   •K  — | ]6  }|j                   j                  ‰vr|j                   j                  ‰vr|–— Œ8 y ­wrm   )r}   r©   )ro   r±   Ústructured_mapÚview_maps     €€r`   rs   z#gen_source_files.<locals>.<genexpr>\
  s8   øè ø€ ò àØ�6‰6�;‰;˜nÑ,°·±·±ÀHÑ1Lô 	
ñùs   ƒ<?zRegisterFunctionalization.cpp>   r<  rv  rw  Úfunc_add_back_views_definitionsÚ!func_add_back_views_registrations)rF  rG  rH  rJ  zFunctionalInverses.hc                 ó8   •— dt        t        ˆ fd„‰«      «      iS )NÚview_inverse_declarationsc                ó   •— t        ‰| «      S rm   )r#   )r­  rI  s    €r`   r‚   z4gen_source_files.<locals>.<lambda>.<locals>.<lambda>v
  s   ø€ ÔLØ  !ó€ ra   )r‹   rK   )rI  Úview_groupss   €€r`   r‚   z"gen_source_files.<locals>.<lambda>s
  s&   ø€ Ø'¬Üóð  ó	ó*ð	
€ ra   zCompositeViewCopyKernels.cppc            
     ó  •— ‰D � cg c]I  } dj                  d„ | j                  €| j                  gn| j                  | j                  gD «       «      ‘ŒK c} ‰D � cg c];  } dj                  d„ | j                  | j                  | j
                  fD «       «      ‘Œ= c} z   t        t        t        ‰t        j                     «      ‰«      «      t        t        t        ‰«      «      t        t        t        ‰«      «      dœS c c} w c c} w )NrÜ   c              3  óV   K  — | ]!  }d |j                   › d|j                   › d�–— Œ# y­w)rô   ú_ops.h>
#include <ATen/ops/r3  NrD  r^  s     r`   rs   z5gen_source_files.<locals>.<lambda>.<locals>.<genexpr>“
  s:   è ø€ ò 	ð ð *¨!¯+©+¨ð 7*ð +,¯+©+¨°jô	Bñ	ùs   ‚')c              3  óv   K  — | ]1  }|�-d|j                   vrd|j                  › d|j                  › d�–— Œ3 y ­w)Nr]  rô   rŠ  r3  )r¢   rø   r^  s     r`   rs   z5gen_source_files.<locals>.<lambda>.<locals>.<genexpr> 
  sH   è ø€ ò ð Ø�}¨¸A¿F¹FÑ)Bð	 *¨!¯+©+¨ð 7*à*+¯+©+¨°jôBñùs   ‚79)r<  Ú#CompositeViewCopyKernel_DefinitionsÚ(GeneratedCompositeFunctional_DefinitionsÚ!GeneratedCompositeOut_Definitions)rú   rM  rL  rÊ   ró  r5  r‹   rK   r$   r-   rç   rB   rC   )r­  rh   r·  r‡  s    €€€r`   r‚   z"gen_source_files.<locals>.<lambda>‘
  s  ø€ ð %öð ð —	‘	ñ 	ð %&§K¡KÐ$7˜Ÿ™™¸a¿f¹fÀaÇkÁkÐ=Rô	õ 	òð* 5ö	ð ð —	‘	ñ ð  Ÿi™i¨¯©°A·L±LÐAô	õ ò	ñô. 48ÜÜ.Ø'Ü'×NÑNñóð
  óó	4ô 9=ÜÜ3Ø/óó9ô 26ÜÜ,Ø/óó2ñQ.
€ ùòùò	s   †AC?ÁA D)r  ry  )r@  ú%NativeFunction | NativeFunctionsGroupr  údict[str, list[str]])r  rÈ   )r  r�  )rÞ  rx  r  rÈ   )r­  rx  r  r�  )3r{   r   r‹   rŠ   r5   rø  r5  r�   rÈ   rù   r-   rå   r0   r”  Úgen_registration_headersÚgen_registration_helpersÚwrite_sharded_with_templateÚCPUr¤  Úufunc_inner_loopr2   r}   r©   rÛ  ÚCUDArÉ   râ  rÂ   r   r   ÚtuplerS  rw   r   rÚ  r®   Úosr•   rú   Úinstall_dirÚreadÚFileNotFoundErrorÚprintrE   rE  r±  Úwrite_shardedr   rŒ   rG   rQ  ):rg   rf  r·  r‡  rI  rÀ  rh   Úaoti_fmr-  Ú
cpu_vec_fmrÜ  rx   ri  rÝ  r„  Úforce_schema_registrationr.  r†  Úupdate_aoti_c_shimÚaoti_backendsr]  r9  r7  Úns_grouped_native_functionsÚgrouped_native_functionrø  Úregister_dispatch_key_base_envrA  Ú
func_groupr}   Ú	fallbacksÚop_nameÚheader_file_nameÚold_fileÚ
old_headerrk  r¨  rn  rz  Ú
all_groupsr±   r¬  rñ   rV  rr   rŽ  rf  rb  rz   r­  r™  rd  r©   r`  r«  rc  r€  r�  s:   ```````      ``  `  `                    @@@@@@@@@@@@@@@@@r`   Úgen_source_filesr­  ˜  sv  ÿÿÿû€ ð0&Ðñ
 ð$Ðð &ó ˆÜ+¨L¸*ÀfÓMˆÙ÷&,ò &,öTð (¨Ñ5ˆÜ&1´$Ó&7Ð#Ø'?ò 	SÐ#ô Ð5´~ÔFð (×1Ò1à,×7Ñ7×AÑAð ð
 (¨	Ñ2×9Ñ9Ð:QÕRð	Sô ! Ó.×4Ñ4Ó6Ðð
 œK×MÑMÑMð 	ô $ LÔ1ñ #5àØ(*Ü $× =Ñ =ØÐ3°Tó!ñ ,Ó-ñ (ô ×-Ñ-¨mÔ<àñ*
Ð&ð"	Ø6ð	à!÷	ó 	ð" 	×&Ñ&Ø�|�n DÐ)Ø%Ø$Ù(Ø;Ø(¬K¯O©OÒ;‘qÀØ3Ø0Ð1ð 	'ô 		
ð -ò +	OˆAØ—5‘5×)Ò)Ô1FÀ|Ô1TØØ—<‘<×$Ñ$×)Ñ)×.Ñ.ˆDØœ{Ÿ™Ñ.Ø˜V‘|Ð#�|Ø×&Ñ&Ø ˜v TÐ*Ø"õô
ð ×.Ñ.Ø% d V¨4Ð0Ø(ôõð ¤×!1Ñ!1Ñ1ØF�ÙØ#I�LØ×&Ñ&Ø    cÐ*Ø"÷õô % }°\°NÀ*Ð%MÓNÐNðW+	OðZ &(Ð"Ø5ò 	ˆJØ"×,Ñ,Ó.ò �Ø×+Ñ+Ñ7ØKUÐ.¨t×/GÑ/GÑHÙñð	ð ˜=Ò(ØˆIØ(ò .�Ü.¨tÓ4�ØÔ3Ò3Ø)-�I˜gÒ&ð.ô ).ñ .Ü&,¨Y¯_©_Ó->Ó&?ô.ó )Ð%ð
 ")¨×);Ñ);Ó)=Ð(>¸bÐAÐÜ(Ø)Ø*ØØØØ#5ØôˆJñ "Ø—‘Ø$Û&õð
ÜÜŸ™Ÿ™ W×%8Ñ%8Ð:JÓKóð à!Ø%-§]¡]£_˜
Ø)¨ZÒ7ð ð :ó Ñ7÷	÷67ñ 7ô ';¸<Ô&HÑ"Èbð ð �M‰MØ˜,×,Ñ,Ó.Ð/¨tÐ4÷ñ ôò ðöD
ð( ‡L�LÐ,Ð.@ÔAà€OÙ Ü*×;Ñ;Ó=ˆô
 	1Ø)¸?ô	ñØ!Øð ‡L�LØõ	
ô
ðØLðà	óð
 ×ÑØØØó
ð ,Ô-JØ#ó.ð
ð
 ò
ð' ô ð4 ‡L�L�¤$Ô'à‡M�MÐ%¤tÔ,à‡M�MØó	
ôð5
ØKð5
à	ö5
ôr 	Ð(Ó)¬DØó-ñ 	ð ô Ñ8Ð:UÓVö:àð 	
�‰�‰�Q‰ò:€Nô
 !*Ñ*GÈÓ Uö4Øˆ�‰�‰�Q‰ò4€Hð ×Ñô à!ôô ð ×ÑØ'ØØØ3Øò
ð ô ð ‡L�LØô		
ôð< ‡L�LØ&õ.	
õ1÷]ñ ûô* )ò ÜÜŸ7™7Ÿ<™<¨×(;Ñ(;Ð=MÓNÐOÈzÐZ÷ðüò~:ùò4s6   Ì3U0ÍU#Í$U0Ò0V6Ó V;Õ#U-	Õ(U0Õ0?V3Ö2V3c                ó0   ‡— | j                  dˆfd„«       y )NzDeclarations.yamlc                 óR   •— t        ‰D � cg c]  } t        | «      ‘Œ c} «      S c c} w rm   )rê  r2  )r±   rg   s    €r`   r‚   z'gen_declarations_yaml.<locals>.<lambda>È
  s!   ø€ ”ÐBRÖS¸QÔ5°aÕ8ÒSÓT€ ùÒSs   ‹$)rÚ  )rÜ  rg   s    `r`   Úgen_declarations_yamlr°  Ã
  s   ø€ ð ‡L�LØÛTõra   c                 óP   — t        t        «      j                  j                  «       S )z
    If you're depending on torchgen out-of-tree, you can use the root to figure
    out the path to native_functions.yaml
    )r	   Ú__file__ÚparentÚresolvern   ra   r`   Úget_torchgen_rootrµ  Ì
  s   € ô
 ”‹>× Ñ ×(Ñ(Ó*Ð*ra   c                 ó€  — t        j                  d¬«      } | j                  dddd¬«       | j                  dd	d
¬«       | j                  ddd¬«       | j                  ddd¬«       | j                  ddddd¬«       | j                  dddd¬«       | j                  ddd¬«       | j                  ddd¬«       | j                  ddd ¬«       | j                  d!d"d#d$¬%«       | j                  d&d'd(¬«       | j                  d)d*d#d+¬%«       | j                  d,d-d#d.¬%«       | j                  d/d0dd1¬«       | j                  d2d3dd4¬«       | j                  d5t        d#g d6¢g d6¢d7¬8«       | j                  d9dd:¬«       | j                  d;dd<¬«       | j	                  «       }t        |j                  |j                  «      }t        j                  j                  |j                  d=«      }t        j                  j                  |j                  d>«      }d?d@lm} t        «       }|j                  sQ|j!                  t"        j$                  «       t"        j$                  |v r ||j'                  t"        j$                  «      = |j(                  sQ|j!                  t"        j*                  «       t"        j*                  |v r ||j'                  t"        j*                  «      = t-        |||«      }t.        |   }|j0                  |j2                  }
}	t5        |	«      }|D �cg c]  }t7        |t8        «      sŒ|‘Œ }}t;        |	«      }|D �cg c]  }t7        |t<        «      r|‘Œ }}|j>                  › dA�}tA        |«      jC                  dBdB¬C«       |j>                  › dD�}tA        |«      jC                  dBdB¬C«       |jD                  › }tA        |«      jC                  dBdB¬C«       tG        ||¬E«      }tG        |¬F«      }tG        |¬F«      }tG        |¬F«      }tG        ||¬E«      }tG        ||¬E«      }dG|i}|j(                  rtG        |¬F«      |dH<   t"        jH                  t"        jJ                  t"        jL                  t"        jN                  t"        jP                  t"        jR                  t"        jT                  h}t"        jH                  t"        jJ                  h}|j                  r|j!                  t"        j$                  «       |j(                  r>|j!                  t"        j*                  «       |j!                  t"        j*                  «       |jV                  r1|D �cg c]&  }tY        |«      st        |«      |jV                  v r|‘Œ( }}g }|jZ                  rk|jZ                  D �cg c]  }|
t#        j\                  |«         ‘Œ }}|jZ                  D ]-  }t#        j\                  |«      }||vsŒ|j!                  |«       Œ/ dI|j^                  v r„ta        dhi dJ|	“dK|“dL|“dM|“dN|“dO|“dP|
“dQ|“dR|“dS|“dT|“dU|“dV|“dW|“dX|jb                  “dY|jd                  “dZ|jf                  “d[|jh                  “d\|jj                  “d]|“d^|jl                  “Ž d_|j^                  v r.to        |	||||||
|||||||jb                  |jf                  ¬`«       da|j^                  v rtq        |	|¬b«       |jr                  r­tA        |jr                  «      ju                  «       } | jv                  }!| jx                  }"|dcf|ddf|def|dffg|j{                  «       D �#�$cg c]  \  }#}$|$|#› dg�f‘Œ c}$}#z   D ]7  \  }%}&|&|"z   }'| j|                  |&|!z   z  }(|%j                  |'t        |(«      «       Œ9 y y c c}w c c}w c c}w c c}w c c}$}#w )iNzGenerate ATen source files)Údescriptionz-sz--source-pathz!path to source directory for ATenzaten/src/ATen)Úhelpr  z-oz--output-dependenciesz:output a list of dependencies into the given file and exit)r¸  z	--dry-runÚ
store_truez5run without writing any files (still updates outputs))Úactionr¸  z--per-operator-headersz2generate separate headers per operator in ATen/opsz-dz--install-dirz--install_dirzoutput directoryzbuild/aten/src/ATenz--aoti-install-dirz--aoti_install_dirz%output directory for AOTInductor shimz(torch/csrc/inductor/aoti_torch/generatedz--rocmz=reinterpret CUDA as ROCm/HIP and adjust filepaths accordinglyz--mpsz'Generate MPS registration code when setz--xpuz'Generate XPU registration code when setz--op-registration-whitelistz--op_registration_whitelistÚ*z–filter op registrations by the whitelist (if set); each item is `namespace`::`operator name` without overload name; e.g.: aten::empty aten::conv2d ...)Únargsr¸  z--op-selection-yaml-pathz--op_selection_yaml_pathaD  Provide a path to the operator selection (for custom build) YAML that contains the information about the set of selected operators and their categories (training, ...). Each operator is either a full operator name with overload or just a bare operator name. The operator names also contain the namespace prefix (e.g. aten::)z--backend-whitelistz--backend_whitelistzRfilter dispatch backend by the whitelist (if set), e.g.: CPU CUDA QuantizedCPU ...z--static-dispatch-backendz--static_dispatch_backendz?generate static dispatch code for the specific backend (if set)z!--skip-dispatcher-op-registrationz!--skip_dispatcher_op_registrationz0Avoid registering operators into the dispatcher.z--force-schema-registrationz--force_schema_registrationz}force it to generate schema-only registrations for all ops, includingthose that are not listed on --op-registration-whitelistz
--generate)r5  ÚsourcesÚdeclarations_yamlzGenerate only a subset of files)r  r¼  Úchoicesr  r¸  z--update-aoti-c-shimz­Update AOTInductor C shim after adding an entry to inductor_fallback_ops in torchgen/aoti/fallback_ops.py. WARNING: Do not use this unless you are sure what you are doing!!!z--extend-aoti-c-shima…  This Flag indicates the generation of c shims for out-of-tree ATen ops,which is an extension to the In-tree ATen op c shims. This flag needs to be combined with---source-path=<out-of-tree native_functions.yaml>--aoti-install-dir=<in-tree aoti_install_dir>/extend   default is torch/csrc/inductor/aoti_torch/generated/extendWARNING: Do not use this unless you are sure what you are doing!!!znative/native_functions.yamlznative/tags.yamlr   )ri  z/coreT)ÚparentsÚexist_okz/ops)Úoptionsr™  )rÂ  ÚcudaÚxpur½  rg   rf  r·  r‡  rI  rÀ  rh   rž  r-  rŸ  rÜ  rx   ri  rÝ  r„  r   r.  r†  r¡  r¢  r]  r5  )rg   r“   rf  r·  rÀ  rI  rh   r-  rÜ  rx   r  ri  rÝ  r„  r.  r¾  )rg   rÜ  rt   Úcpu_vec_Úcore_Úops_rõ   rn   )@ÚargparseÚArgumentParserÚadd_argumentrÈ   Ú
parse_argsrI  Úop_registration_whitelistrG  r˜  r•   rú   Úsource_pathÚtorchgen.modelri  r¤   Úmpsr§   r-   ÚMPSrˆ   rÄ  ÚXPUr¶   rj   rg   rh   rc  rŠ   r6   rY  r7   r™  r	   ÚmkdirÚaoti_install_dirrJ   r”  r–  rä   rå   ræ   rç   r4  Úbackend_whitelistr1   Ústatic_dispatch_backendÚparseÚgenerater­  r„  r   r.  r†  r¡  r]  r/  r°  Úoutput_dependenciesr´  r©   Ústemrw   r³  Úwrite_outputs))ÚparserrÂ  rI  Únative_yaml_pathrµ   ri  r”   Úparsed_yamlr“   rg   rh   rf  r­  r·  Ú!native_functions_with_view_groupsr‡  Úcore_install_dirÚops_install_dirrÓ  r-  rÜ  rŸ  Úcuda_fmr  rž  rx   rÝ  r¢  rœ   rÀ  ÚkeyÚdp_keyÚdepfile_pathÚdepfile_nameÚdepfile_stemrq   Ú	device_fmrz   r‹  Úvarnamer•   s)                                            r`   Úmainré  Ô
  s¢  € Ü×$Ñ$Ð1MÔN€FØ
×ÑØØØ0Øð	 ô ð ×ÑØØØIð ô ð
 ×ÑØØØDð ô ð
 ×ÑØ ØØAð ô ð
 ×ÑØØØØØ%ð ô ð ×ÑØØØ4Ø:ð	 ô ð ×ÑØØØLð ô ð
 ×ÑØØØ6ð ô ð
 ×ÑØØØ6ð ô ð ×ÑØ%Ø%Øð-ð	 ô ð ×ÑØ"Ø"ðMð ô ð ×ÑØØØð*ð	 ô ð ×ÑØ#Ø#ØØNð	 ô ð ×ÑØ+Ø+ØØ?ð	 ô ð ×ÑØ%Ø%ØðCð	 ô ð ×ÑØÜØÚ;Ú;Ø.ð ô ð ×ÑØØðMð ô ð ×ÑØØðMð ô 	ð ×ÑÓ!€Gä(Ø×)Ñ)Ø×&Ñ&ó€Hô
 —w‘w—|‘| G×$7Ñ$7Ð9WÓXÐÜ—W‘W—\‘\ '×"5Ñ"5Ð7IÓJ€Nå,ô “%€KØ�;Š;Ø�‰œŸ™Ô(ä�?‰?˜mÑ+Ø˜m×1Ñ1´+·/±/ÓBÐCà�;Š;Ø�‰œŸ™Ô(ä�?‰?˜mÑ+Ø˜m×1Ñ1´+·/±/ÓBÐCä#Ð$4°nÀkÓR€KÜ.¨~Ñ>€Jà×$Ñ$Ø×#Ñ#ð &Ðô
  <Ð<LÓMÐð ,ö#Ø¬z¸!Ô=QÕ/RŠð#Ðð #ô )MØó)Ð%ð
 3öàÜ�aÔ1Ô2ò 	
ð€Kð ð  "×-Ñ-Ð.¨eÐ4ÐÜÐ	Ó× Ñ ¨¸Ð Ô=Ø ×,Ñ,Ð-¨TÐ2€OÜˆÓ×Ñ¨°tÐÔ<à!×2Ñ2Ð3ÐÜÐ	Ó× Ñ ¨¸Ð Ô=ä¨Ð=MÔN€GÜ wÔ/€FÜ"¨7Ô3€JÜ¨Ô0€GÜ w¸OÔL€FÜ¨Ð=MÔN€GØ˜'Ð"€JØ‡{‚{Ü-°gÔ>ˆ
�5Ñô
 	�‰Ü×ÑÜ×-Ñ-Ü×9Ñ9Ü×-Ñ-Ü×:Ñ:Ü×Ñð€Nô 	�‰Ü×Ñð€Mð
 ‡{‚{Ø×Ñœ;Ÿ?™?Ô+à‡{‚{Ø×Ñœ;Ÿ?™?Ô+Ø×Ñœ+Ÿ/™/Ô*à× Ò ð #ö
àÜ& qÔ)¬S°«V°w×7PÑ7PÑ-Pò ð
ˆð 
ð /1ÐØ×&Ò&ð ×6Ñ6ö
àð œK×-Ñ-¨cÓ2Ó3ð
Ðð 
ð ×2Ñ2ò 	+ˆCÜ ×&Ñ& sÓ+ˆFØ˜^Ò+Ø×"Ñ" 6Õ*ð	+ð
 �G×$Ñ$Ñ$Üò 	
Ù-ð	
á%=ð	
ñ )Dð	
ñ $ð		
ñ
 ð	
ñ !4ð	
ñ ,ð	
ñ ð	
ñ ð	
ñ "ð	
ñ ð	
ñ "ð	
ñ (ð	
ñ *ð	
ð —’ð	
ð  '.×&GÒ&Gð!	
ð" ")×!=Ò!=ð#	
ð$ -4×,SÒ,Sð%	
ð&  '×9Ò9ð'	
ñ( (ð)	
ð*  '×9Ò9ñ+	
ð0 �G×$Ñ$Ñ$ÜØ-Ø!Ø%=Ø(CØ 3ØØ+ØØØ!ØØ'Ø)Ø—‘Ø!(×!=Ñ!=õ	
ð$ ˜g×.Ñ.Ñ.ÜÐ/?ÈÕOà×"Ò"Ü˜G×7Ñ7Ó8×@Ñ@ÓBˆØ#×(Ñ(ˆØ#×(Ñ(ˆð �RˆLØ˜Ð$Ø�gÐØ�VÐð	
ð
 AK×@PÑ@PÓ@R×SÑ+<¨6°9ˆi˜F˜8 1˜Ò&ÓSñTò 	1‰JˆB�ð ˜|Ñ+ˆGØ×&Ñ&¨&°<Ñ*?Ñ@ˆDØ×Ñ˜W¤c¨$£iÕ0ñ	1ð #ùòC#ùòùòv
ùò
ùóD Ts$   Ì^&Ì4^&Í	^+Õ+^0Ö&^5Ý^:Ú__main__)rr   r-   rx   údict[str, FileManager]ry   rI   r  rI   )Nú<stdin>F)r’   Úobjectr“   úset[str]r”   úset[DispatchKey] | Noner•   rÈ   r–   r  r  rf   )rì  )r’   rí  r•   rÈ   r  rî  )r•   rÈ   r  rî  rm   )r•   rÈ   rµ   rÈ   r”   rï  r–   r  r³   zobject | Noner  rf   )r€   úSequence[NativeFunction]r  ÚNone)rá   rÈ   r  rÈ   )rè   r^  r  zlist[DispatchKey])r±   r5   rñ   r(   r  zDispatchKey | None)r±   r5   rñ   r^  r  rX  )rè   r^  r  ry  )r  ú"CppSignature | DispatcherSignaturer  r   r  rÈ   )r  rò  r±   r5   rñ   r(   r  rÈ   )r  rò  r±   r5   rh   r^  r  rÈ   rs  )r­  r6   r  rX  )r±   r5   rI  rE   r  r  )rß  rí  r  rÈ   )rá   rÈ   r  rí  )rö  r>   r  rÈ   )r€  zset[Variant]r  ry  )r±   r5   r  z+tuple[list[dict[str, str]], dict[str, str]])r  r   r  r  r  rî  r  rî  r  r,  r  rí  )r  r'   r  r  r  rî  r  rî  r  r,  r  rí  )r±   r5   r  rí  )r±   r5   r  r  )r±   r5   rh   údict[DispatchKey, BackendIndex]r  rÈ   )rF  zlist[str] | NonerG  rX  r  rE   )rg   rð  r  z3Sequence[NativeFunction | NativeFunctionsViewGroup])rg   rð  r  ra  )rf  ra  rh   ró  rd  úJCallable[[NativeFunctionsGroup | NativeFunction, BackendIndex], list[str]]r  r�  )rg  r�  r  ry  )rf  ra  rh   ró  rd  rô  r  ry  )r±   r�  rj  r(   r  rÈ   )rz   rI   rf  ra  rr   r-   rj  r(   rI  rE   r„  r  r.  r  r†  r  r™  r  r  ry  )rf  ra  rr   r-   rj  r(   rI  rE   r„  r  r.  r  r  ry  )rg   rð  r¨  rE   r  ztuple[list[str], str])rg   rð  rf  ra  r·  úSequence[NativeFunctionsGroup]rÀ  r^  rI  rE   rh   ró  rÜ  rI   rx   rë  rÝ  úset[DispatchKey]ri  úSequence[DispatchKey]r„  r  r  rñ  )rg   rð  rf  ra  rÀ  r^  rI  rE   rh   ró  rÜ  rI   rx   rë  r  rI   rÝ  rö  ri  r÷  r„  r  r  rñ  ) rg   rð  r“   rî  rf  ra  r·  rõ  rÀ  r^  rI  rE   rh   ró  r-  rI   rÜ  rI   rx   rë  r  rI   ri  r÷  rÝ  rö  r„  r  r.  r  r  rñ  ),rg   rð  rf  ra  r·  rõ  r‡  z"Sequence[NativeFunctionsViewGroup]rI  rE   rÀ  r^  rh   ró  rž  rI   r-  rI   rŸ  rI   rÜ  rI   rx   rë  ri  r÷  rÝ  rö  r„  r  r   r  r.  r  r†  r  r¡  r  r¢  rö  r]  r  r  rñ  )rÜ  rI   rg   rð  r  rñ  )r  r	   )r  rñ  )­Ú
__future__r   rÈ  Ú	functoolsr>  rÄ   r˜  Úcollectionsr   r   r   Údataclassesr   r   Úpathlibr	   Útypingr
   r   r   r   r   r¯   Útorchgen.api.dispatcherÚapir<  Útorchgen.api.metar¥  Útorchgen.api.nativerÖ  Útorchgen.api.structuredrÃ   Útorchgen.destr”  Útorchgen.aoti.fallback_opsr   Útorchgen.apir   Útorchgen.api.translater   Útorchgen.api.typesr   r   r   r   r   r   r   Útorchgen.contextr   r   r   r   Útorchgen.gen_aoti_c_shimr   r   r   r    Ú#torchgen.gen_functionalization_typer!   r"   r#   r$   Útorchgen.gen_vmap_plumbingr&   rÎ  r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   Ú#torchgen.native_function_generationrA   rB   rC   rD   Ú!torchgen.selective_build.selectorrE   Útorchgen.utilsrF   rG   rH   rI   rJ   rK   rL   rM   Útorchgen.yaml_utilsrN   rO   Úcollections.abcrP   rQ   rS   rf   ri   rY  rj   r{   rž   rª   Úcacher²   r¶   r‘   râ   rê   rò   rü   r   r  r(  r3  rE  rH  r[  rv  r‰  r�  r”  rÈ  rÎ  rÐ  rê  rï  rô  rú  r  r  r  r2  r6  rA  rI  rY  rc  r  rk  r|  r  r�  rŸ  r£  r±  rß  r  r/  r­  r°  rµ  ré  rb   rn   ra   r`   ú<module>r     s”	  ðÞ "ã Û Û Û Û 	ß <Ñ <ß (Ý ß AÕ Aã ç ,Ð ,ß  Ð  ß $Ð $ß ,Ð ,Ý Ý <Ý Ý ,÷÷ ñ ÷ó ÷ó ÷ó õ =÷÷ ÷ ÷ ÷ ÷ ÷ ÷8ó õ ?÷	÷ 	ó 	÷ 7ñ Ý(ñ ˆCƒL€ôB�ô ñ ˜Ð'9Ð;LÐ&MÓN€
ð :<Ð Ð!6Ó ;Ø57Ð Ð2Ó 7ðØðà&ðð ðð ó	ð, ,0ØØ %ð-#Øð-#àð-#ð )ð-#ð ð	-#ð
 ð-#ð ó-#ô`ð" ‡�ò/ó ð/ð ,0ð1ð
 !&Ø!%ñ1Ø
ð1àð1ð )ð1ð
 ð1ð ð1ð ó1ó@9óx
ó4	
ðØðØ&2ðàóð(ØðØ&8ðàóó ð ,Ø	+ð ,àð ,ð 	ó ,ðFRØ	+ðRàðRð  ðRð 	ó	Rð$KØ	+ðKàðKð (ðKð 	ó	Kð:FØ	+ðFàðFð (ðFð 	ó	FñX �$Ô÷`ð `ó ð`ñ0 �$Ô÷W&ð W&ó ðW&ñx �$Ô÷*ð *ó ð*ñ^ �$Ô÷'ð 'ó ð'ñZ �$Ô÷ð ó ðð< òMó ðMó
yóx3ñ �$Ô÷:&ð :&ó ð:&óHSó&ó0
óð?'Øð?'à0ó?'ðF
Øð
ð ð
ð ð	
ð
 ð
ð 'ð
ð ó
ð@!Øð!ð ð!ð ð	!ð
 ð!ð 'ð!ð ó!ðH òUó ðUórð "ðØðØ(Gðàòó "ðð@Ø(8ðà&ðð óð>,OØ.ð,Oà8ó,Oð^Ø.ðà4óð8 	×0Ò0ñàMðð 5ððð	ð óð:à,ðð óð@ 	×0Ò0ñàMðð 5ððð	ð óð4Ø
/ðØ>Jðàóð _àð_ð Nð_ð ð	_ð
 ð_ð ð_ð ð_ð ð_ð &*ð_ð ð_ð ó_ðH,àMð,ð ð,ð ð	,ð
 ð,ð ð,ð ð,ð ó,ð`!=à.ð!=ð &ð!=ð ó	!=ðHvà.ðvð Nðvð "@ð	vð
 ,ðvð ðvð 5ðvð ðvð 'ðvð %ðvð )ðvð ðvð 
óvðrà.ðð Nðð ,ð	ð
 ðð 5ðð ðð 'ðð ðð %ðð )ðð ðð 
óðDG/à.ðG/ð ðG/ð Nð	G/ð
 "@ðG/ð ,ðG/ð ðG/ð 5ðG/ð ðG/ð ðG/ð 'ðG/ð ðG/ð )ðG/ð %ðG/ð ðG/ð  ð!G/ð" 
ó#G/ðThà.ðhð Nðhð "@ð	hð
 4ðhð ðhð ,ðhð 5ðhð ðhð ðhð ðhð ðhð 'ðhð )ðhð %ðhð  ð!hð"  $ð#hð$ ð%hð& &*ð'hð( ð)hð* $ð+hð, ð-hð. 
ó/hðVØðØ+Cðà	óó+ól1ð^	 ˆzÒÙ…Fð ra   