Ë
    ÃÓ^jwÊ ã                   ó@  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlmZmZ d dlmZmZmZmZ d dlmZ d dlmZmZ d dlmZ d dlmZmZm Z m!Z!m"Z" d dl#Z#d dl$Z$d dl%m&c m'Z( d dl)m*Z* d d	l+m,Z, d d
l-m.Z.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z; d dl<m=Z=m>Z> d dl?m@Z@ d dlAmBZBmCZC d dlDmEZE d dlFmGZG d dlHmIZI ddlJmKZK ddlLmMZM ddlMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZm€Z€m�Z� ddl‚mƒZƒ g d¢Z„ e	�j
                  e†«      Z‡ G d„ deˆ«      Z‰deŠeef   fd „Z‹e1eŒz  e$jò                  z  e�z  e$jî                  z  eŽz  e$jæ                  z  e(j¦                  z  Z�dZ�d!Z‘i e$�j$                  ep�j&                  “e$�j(                  ep�j*                  “e$�j,                  ep�j.                  “e$�j0                  ep�j2                  “e$�j4                  ep�j6                  “e$�j8                  ep�j:                  “e$�j<                  ep�j>                  “e$�j@                  ep�jB                  “e$�jD                  ep�jF                  “e$�jH                  ep�jJ                  “e$�jL                  ep�jN                  “e$�jP                  ep�jR                  “e$�j                  ep�jT                  “e$�jV                  ep�jX                  “e$�jZ                  ep�j\                  “e$�j^                  ep�j`                  “e$�jb                  ep�jd                  “e$�jf                  ep�jh                  e$�jj                  ep�jl                  e$�jn                  ep�jp                  e$�jr                  ep�jt                  i¥Z» e‹e»«      Z¼e$�jz                  ec�j|                  e$�j~                  ec�j€                  e$�j‚                  ec�j„                  e$�j†                  ec�jˆ                  e$�jŠ                  ec�jŒ                  e$�jŽ                  ec�jŽ                  e$�j�                  ec�j’                  iZÊ e‹eÊ«      ZËe$�j˜                  ee�jš                  e$�jœ                  ee�jž                  e$�j                   ee�j¢                  e$�j¤                  ee�j¦                  iZÔ e‹eÔ«      ZÕe�j¬                  e�j®                  e�j°                  e�j²                  e�j´                  e�j¶                  e�j¸                  e�jº                  e
�j¼                  e$�j¾                  e�jÀ                  e�jÂ                  e�jÄ                  e�jÆ                  e�jÈ                  e�jÊ                  e$�jÌ                  e$�jÎ                  e$�jÐ                  e$�jÒ                  e$�jÔ                  e$�jÖ                  e�jØ                  e�jÚ                  e�jÜ                  e�jÞ                  e�jà                  hZñ eòd"„ eñD «       «      r eód#«      ‚e G d$„ d%«      «       Zôe G d&„ d'«      «       Zõ G d(„ d)eŠ«      ZödeTd*e$�jî                  fd+„Zød,eey   d*eùeŒd-f   fd.„Zúd/eey   d*eùeŒd-f   fd0„Zûd1epd*e$�jø                  fd2„Zýd3eyd*eŒfd4„Zþd5e$jò                  e$jæ                  z  e$jî                  z  e#�jþ                  z  fd6„�Z d5eŒe$jò                  z  d*eyfd7„�Zd5e�e$jî                  z  d*ewfd8„�Zd5eŽe$jæ                  z  d*esfd9„�Zd:e$�j                  d*e|fd;„�Zd�ae"d<   �ed=<   d>e1fd?„�Zd@�e	dAeŽd*e1fdB„�Z
e�fdCedz  dDeŒd*�e	fdE„�ZdFeŠ�eef   eùed-f   z  �e	z  fdG„�ZdHe#�jþ                  dI�ed*eŒdz  fdJ„�ZdHeŒdz  d*e#�jþ                  fdK„�ZdLe#�j                   dMeCfdN„�ZdOeŠe#�j                   eEf   d*eŠ�eeof   fdP„�ZdQ„ �Ze G dR„ dS«      «       �Z G dT„ dU�e«      �ZdV„ �ZdWe$�j0                  jÔ                  fdX„�Ze! G dY„ dZ�e¬[«      «       �Ze! G d\„ d]�e¬[«      «       �Ze! G d^„ d<�e¬[«      «       �Ze! G d_„ d`�e¬[«      «       �Z G da„ dbe�j<                  «      �Zdc„ �Z dded*�e	fde„�Z!de�fdfdfdfdgœdhe(jª                  dieŠ�eeŒf   dz  dDeŒdjeŽdkeŽdleŽd*eôfdm„�Z"dn„ �Z#do„ �Z$dpedq�e	d*efdr„�Z%	 dƒdsdtœdCeôdueŠ�eeŒf   dz  d*e(jª                  fdv„�Z&d*eùeXeŠ�e�ef   f   fdw„�Z'	 dƒdxeUdy�e(�e   dz  d*eUfdz„�Z) G d{„ d|«      �Z*d}�ee   d~�e�e*   fd„�Z+d€„ �Z,i �Z-eŠ�ee   �e�e*   f   �ed�<   i �Z.eŠ�e�e�e*   f   �ed‚<   y)„é    N)Ú
namedtupleÚOrderedDict)ÚCallableÚIterableÚIteratorÚSequence)Úcontextmanager)Ú	dataclassÚfield)ÚEnum)Ú	AnnotatedÚAnyÚcastÚfinalÚOptional)Ú&_enable_graph_inputs_of_type_nn_module)Úload_verifier)Úget_opaque_type_nameÚis_opaque_value)Ú
FakeTensorÚFakeTensorMode)Ú_ConstantAttributeType)Úsymbolic_shapes)Ú
NodeSource)Ú_pytree)Útreespec_dumpsÚtreespec_loads)Úint_oo)Ú
prefix_strÚSymT)ÚValueRanges)ÚCapturedTraceback)Ú
has_tritoné   )Úremove_proxy_from_state_dicté   )Úschema)4ÚArgumentÚArgumentKindÚBufferMutationSpecÚComplexValueÚConstantValueÚCustomObjArgumentÚDeviceÚExportedProgramÚGradientToParameterSpecÚGradientToUserInputSpecÚGraphÚGraphArgumentÚGraphModuleÚGraphSignatureÚ	InputSpecÚInputToBufferSpecÚInputToConstantInputSpecÚInputToCustomObjSpecÚInputTokenSpecÚInputToParameterSpecÚInputToTensorConstantSpecÚLayoutÚLossOutputSpecÚMemoryFormatÚModuleCallEntryÚModuleCallSignatureÚNamedArgumentÚNamedTupleDefÚNodeÚOptionalTensorArgumentÚ
OutputSpecÚOutputTokenSpecÚParameterMutationSpecÚRangeConstraintÚ
ScalarTypeÚSCHEMA_VERSIONÚSchemaVersionÚSymBoolÚSymBoolArgumentÚSymExprÚSymExprHintÚSymFloatÚSymFloatArgumentÚSymIntÚSymIntArgumentÚTensorArgumentÚ
TensorMetaÚTokenArgumentÚTREESPEC_VERSIONÚUserInputMutationSpecÚUserInputSpecÚUserOutputSpec)Ú_Union)Ú	serializeÚGraphModuleSerializerÚExportedProgramSerializerÚGraphModuleDeserializerÚExportedProgramDeserializerc                   ó   — e Zd Zy)ÚSerializeErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úh/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_export/serde/serialize.pyrc   rc   r   s   „ Ørh   rc   Údc                 ój   — | j                  «       D ��ci c]  \  }}|j                  |“Œ c}}S c c}}w ©N)ÚitemsÚvalue)rj   ÚkÚvs      ri   Ú_reverse_maprq   v   s(   € Ø#$§7¡7£9×-™4˜1˜aˆA�G‰G�Q‰JÓ-Ð-ùÓ-s   ”/ú;c              #   ód   K  — | ](  }t        |t        j                  j                  «      –— Œ* y ­wrl   )Ú
isinstanceÚtorchÚ_opsÚ
OpOverload)Ú.0Úops     ri   ú	<genexpr>rz   Ü   s!   è ø€ Ò@°„z�"”e—j‘j×+Ñ+×,Ñ@ùó   ‚.0z0_SYM_OPS should not contain OpOverload instancesc                   ó6   — e Zd ZU eed<   eed<   eed<   eed<   y)ÚSerializedArtifactÚexported_programÚ
state_dictÚ	constantsÚexample_inputsN)rd   re   rf   ÚbytesÚ__annotations__rg   rh   ri   r}   r}   à   s   … àÓØÓØÓØÔrh   r}   c                   ó6   — e Zd ZU eed<   eed<   eed<   eed<   y)Ú_SerializedProgramr~   r   r€   r�   N)rd   re   rf   r/   rƒ   r‚   rg   rh   ri   r…   r…   è   s   … à%Ó%ØÓØÓØÔrh   r…   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚLazyMapz²
    Dictionary class for deferred instantiation of node metadata values.
    Purpose is to avoid creation of symbolic-shape tensors before relevant shape guards are parsed.
    c                 ó0   — i | _         t        «       | _        y rl   )ÚmapÚsetÚ	evaluated©Úselfs    ri   Ú__init__zLazyMap.__init__ö   s   € ØˆŒÜ›ˆ�rh   c                 ó"   — || j                   |<   y rl   )r‰   )r�   ro   rp   s      ri   Ú__setitem__zLazyMap.__setitem__ú   s   € Øˆ�‰�Šrh   c                 ó¼   — | j                   |   }|| j                  v r|S | j                  j                  |«        |«       | j                   |<   | j                   |   S rl   )r‰   r‹   Úadd)r�   ro   Úouts      ri   Ú__getitem__zLazyMap.__getitem__ý   sO   € Ø�h‰h�q‰kˆØ�—‘ÑØˆJØ�‰×Ñ˜1ÔÙ“eˆ�‰�‰Ø�x‰x˜‰{Ðrh   c                 ó6   — | j                   j                  «       S rl   )r‰   Ú__repr__rŒ   s    ri   r–   zLazyMap.__repr__  s   € Ø�x‰x× Ñ Ó"Ð"rh   N)rd   re   rf   Ú__doc__rŽ   r�   r”   r–   rg   rh   ri   r‡   r‡   ð   s   „ ñò
òòó#rh   r‡   Úreturnc                 ó°   — | j                   € t        j                  | j                  ¬«      S t        j                  | j                  | j                   ¬«      S )N)Útype©rš   Úindex)rœ   ru   Údevicerš   )rj   s    ri   Údeserialize_devicerž   	  s7   € Ø‡w�w€Ü�|‰| §¡Ô(Ð(Ü�<‰<˜QŸV™V¨1¯7©7Ô3Ð3rh   Úsizes.c                 ó‚   — | D ])  }|j                   dk7  sŒt        d|j                   › �«      ‚ t        d„ | D «       «      S )NÚas_intúOnly as_int is supported, got c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrl   ©r¡   )rx   Úsym_int_sizes     ri   rz   z#deserialize_size.<locals>.<genexpr>  s   è ø€ Ò?¨�×$Õ$Ñ?ùó   ‚©rš   ÚAssertionErrorÚtuple)rŸ   r¥   s     ri   Údeserialize_sizerª     sN   € Øò WˆØ×Ñ Ó(Ü Ð#AÀ,×BSÑBSÐATÐ!UÓVÐVðWô Ñ?¸Ô?Ó?Ð?rh   Ústridesc                 ó‚   — | D ])  }|j                   dk7  sŒt        d|j                   › �«      ‚ t        d„ | D «       «      S )Nr¡   r¢   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrl   r¤   )rx   Úsym_int_strides     ri   rz   z%deserialize_stride.<locals>.<genexpr>  s   è ø€ ÒE¨>�×&Õ&ÑEùr¦   r§   )r«   r®   s     ri   Údeserialize_strider¯     sN   € Ø!ò YˆØ×Ñ (Ó*Ü Ð#AÀ.×BUÑBUÐAVÐ!WÓXÐXðYô ÑE¸WÔEÓEÐErh   Ústc                 ó   — t         |    S rl   )Ú_SERIALIZE_TO_TORCH_DTYPE)r°   s    ri   Údeserialize_scalar_typer³     s   € Ü$ RÑ(Ð(rh   Úoffsetc                 óh   — | j                   dk7  rt        d| j                   › �«      ‚| j                  S )Nr¡   r¢   )rš   r¨   r¡   )r´   s    ri   Údeserialize_storage_offsetr¶   !  s/   € Ø‡{�{�hÒÜÐ=¸f¿k¹k¸]ÐKÓLÐLØ�=‰=Ðrh   Úsc                 óò   — t        | t        j                  t        j                  t        j                  f«      r| j
                  j                  } t        j                  j                  j                  | «      S rl   )rt   ru   rS   rM   rQ   ÚnodeÚexprÚsympyÚprintingÚreprÚsrepr©r·   s    ri   Ú_print_sympyrÀ   '  sG   € Ü�!”e—l‘l¤E§M¡M´5·>±>ÐBÔCØ�F‰F�K‰KˆÜ�>‰>×Ñ×$Ñ$ QÓ'Ð'rh   c                 ó¶  — t        | t        j                  t        j                  t
        f«      �rt        j                  | «      rt        j                  t        | «      ¬«      S t        | t        j                  t        j                  f«      s!t        dt        | «      j                  › �«      ‚| j                  j                  €(t        j                  t        t        | «      «      ¬«      S t        j                  t        t        | «      t!        j                  | j                  j                  ¬«      ¬«      ¬«      S t#        d| › dt        | «      › d�«      ‚)Nr¤   zexpected SymInt or Symbol, got ©Úas_expr©Úhintz,SymInt should be either symbol or int, got `ú` of type `ú`)rt   ru   rS   r»   ÚSymbolÚintr   Úis_concrete_intÚcreater¨   rš   rd   r¹   rÅ   rO   rÀ   rP   rc   r¿   s    ri   Úserialize_sym_intrÌ   -  sù   € Ü�!”e—l‘l¤E§L¡L´#Ð6Õ7Ü×*Ñ*¨1Ô-Ü—=‘=¬¨A«Ô/Ð/ä˜a¤%§,¡,´·±Ð!=Ô>Ü$Ø5´d¸1³g×6FÑ6FÐ5GÐHóð ð �v‰v�{‰{Ð"Ü—}‘}¬W´\À!³_Ó-EÔFÐFä—}‘}Ü#Ü$ Q›Ü(×/Ñ/°q·v±v·{±{ÔCôôð ô Ø:¸1¸#¸[ÌÈaËÈ	ÐQRÐSó
ð 	
rh   c                 ó¶  — t        | t        j                  t        j                  t
        f«      �rt        j                  | «      rt        j                  t        | «      ¬«      S t        | t        j                  t        j                  f«      s!t        dt        | «      j                  › �«      ‚| j                  j                  €(t        j                  t        t        | «      «      ¬«      S t        j                  t        t        | «      t!        j                  | j                  j                  ¬«      ¬«      ¬«      S t#        d| › dt        | «      › d�«      ‚)N©Úas_floatz!expected SymFloat or Symbol, got rÂ   rÄ   z0SymFloat should be either symbol or float, got `rÆ   rÇ   )rt   ru   rQ   r»   rÈ   Úfloatr   Úis_concrete_floatrË   r¨   rš   rd   r¹   rÅ   rO   rÀ   rP   rc   r¿   s    ri   Úserialize_sym_floatrÒ   E  sú   € Ü�!”e—n‘n¤e§l¡l´EÐ:Õ;Ü×,Ñ,¨QÔ/Ü—?‘?¬E°!«HÔ5Ð5ä˜a¤%§.¡.´%·,±,Ð!?Ô@Ü$Ø7¼¸Q»×8HÑ8HÐ7IÐJóð ð �v‰v�{‰{Ð"Ü—‘¬w´|ÀA³Ó/GÔHÐHä—‘Ü#Ü$ Q›Ü(×/Ñ/¸¿¹¿¹ÔEôôð ô Ø>¸q¸cÀÌTÐRSËWÈIÐUVÐWó
ð 	
rh   c                 ó2  — t        | t        j                  t        f«      r]t	        j
                  | «      rt        j                  t        | «      ¬«      S t        j                  t        t        | «      ¬«      ¬«      S t        d| › dt        | «      › d�«      ‚)N©Úas_bool)Úexpr_strrÂ   z.SymBool should be either symbol or bool, got `rÆ   rÇ   )rt   ru   rM   Úboolr   Úis_concrete_boolrË   rO   rÀ   rc   rš   r¿   s    ri   Úserialize_sym_boolrÙ   ]  ss   € Ü�!”e—m‘m¤TÐ*Ô+Ü×+Ñ+¨AÔ.Ü—>‘>¬$¨q«'Ô2Ð2ä—>‘>¬'¼<È»?Ô*KÔLÐLäØ<¸Q¸C¸{Ì4ÐPQË7È)ÐSTÐUó
ð 	
rh   Útc                 ó²  — t        t        | j                     | j                  D �cg c]  }t	        |«      ‘Œ c}| j
                  t        | j                  j                  | j                  j                  ¬«      | j                  «       D �cg c]  }t	        |«      ‘Œ c}t	        | j                  «       «      t        | j                     ¬«      S c c}w c c}w )z.
    Extract a TensorMeta describing `t`.
    r›   )ÚdtyperŸ   Úrequires_gradr�   r«   Ústorage_offsetÚlayout)rV   Ú_TORCH_TO_SERIALIZE_DTYPErÜ   ÚshaperÌ   rÝ   r.   r�   rš   rœ   ÚstriderÞ   Ú_TORCH_TO_SERIALIZE_LAYOUTrß   )rÚ   r·   s     ri   Úserialize_tensor_metarä   i  s•   € ô Ü'¨¯©Ñ0Ø-.¯W©WÖ5¨Ô  Õ#Ò5Ø—o‘oÜ˜1Ÿ8™8Ÿ=™=°·±·±Ô?Ø/0¯x©x«zÖ:¨!Ô" 1Õ%Ò:Ü(¨×)9Ñ)9Ó);Ó<Ü)¨!¯(©(Ñ3ôð ùâ5ùò ;s   ¦C
ÂCr`   Ú_CURRENT_DESERIALIZERÚfake_tensorc                 óÚ   — t        | t        j                  j                  «      }t	        | «      }t        j                  t        |«      t        ¬«      j                  d«      }t        ||ffS )N©Úclsúutf-8)rt   ru   ÚnnÚ	Parameterrä   ÚjsonÚdumpsÚ_dataclass_to_dictÚEnumEncoderÚencodeÚ_reconstruct_fake_tensor)ræ   Úis_parameterÚtensor_metaÚtensor_meta_bytess       ri   Ú_reduce_fake_tensorrö   {  sY   € Ü˜k¬5¯8©8×+=Ñ+=Ó>€LÜ'¨Ó4€KÜŸ
™
Ü˜;Ó'¬[ôç�fˆWƒoð ô $Ð&7¸Ð%FÐFÐFrh   Úserialized_tensor_metaró   c                 óü   — t        j                  | j                  d«      «      }t        t        |«      }t
        €t        d«      ‚t
        j                  |«      }|rt        j                  j                  |«      }|S )Nrê   z)Need access to current deserializer state)rí   ÚloadsÚdecodeÚ_dict_to_dataclassrV   rå   r¨   Údeserialize_tensor_metaru   rë   rì   )r÷   ró   Újson_tensor_metarô   ræ   s        ri   rò   rò   „  sk   € ô —z‘zÐ"8×"?Ñ"?ÀÓ"HÓIÐÜ$¤ZÐ1AÓB€KäÐ$ÜÐHÓIÐIÜ'×?Ñ?ÀÓL€KÙÜ—h‘h×(Ñ(¨Ó5ˆàÐrh   ÚartifactÚpickle_protocolc                 ó^  — | €yt         t        j                  v rt        d«      ‚	 t        j                  t         t
        «       t        j                  «       }t        j                  | ||¬«       |j                  «       t        j                  t         = S # t        j                  t         = w xY w)Nrh   z0Refusing to stomp on existing FakeTensor reducer)rÿ   )r   ÚcopyregÚdispatch_tabler¨   Úpicklerö   ÚioÚBytesIOru   ÚsaveÚgetvalue)rþ   rÿ   Úbuffers      ri   Úserialize_torch_artifactr	  ”  s   € ð ÐØä”W×+Ñ+Ñ+ÜÐOÓPÐPð/Ü�‰”zÔ#6Ô7Ü—‘“ˆô 	�
‰
�8˜V°_ÕEØ�‰Ó ä×"Ñ"¤:Ñ.øŒG×"Ñ"¤:Ñ.ús   ¦AB ÂB,Ú
serializedc                 óþ  — t        | t        t        f«      r| S t        | «      dk(  ri S t	        j
                  | «      }|j                  d«       	 t        j                  |d¬«      }t        |t        t        f«      s!t        dt        |«      j                  › �«      ‚|S # t        $ rS}|j                  d«       t        j                  |d¬«      }t        j                  dt        |«      |¬«       Y d }~Œ�d }~ww xY w)Nr   T)Úweights_onlyFz\Fallback to weights_only=False succeeded. Loaded object of type %s after initial failure: %s)Úexc_infozexpected tuple or dict, got )rt   Údictr©   Úlenr  r  Úseekru   ÚloadÚ	ExceptionÚlogÚwarningrš   r¨   rd   )r
  r  rþ   Úes       ri   Údeserialize_torch_artifactr  «  sÝ   € ô �*œt¤U˜mÔ,ØÐÜ
ˆ:ƒ˜!ÒØˆ	Ü�Z‰Z˜
Ó#€FØ
‡K�K�„Nð

Ü—:‘:˜f°4Ô8ˆô �h¤¬ Ô.ÜÐ;¼DÀ»N×<SÑ<SÐ;TÐUÓVÐVØ€Oøô ò 
Ø�‰�AŒÜ—:‘:˜f°5Ô9ˆÜ�‰ðAä�‹NØð	 	÷ 	
ñ 	
ûð
ús   ÁB  Â 	C<Â)A	C7Ã7C<ÚvalÚadjustc                 óz  — | t         j                  t        fv ry | t         j                   t         fv ry t        | t         j                  «      rt        | «      S t        j                  dt        | «      | |«       |dk(  rt        j                  | «      S |dk(  rt        j                  | «      S t        d|› �«      ‚)NztExport constraints cannot be non-integer expressions. Found type %s, and value %s. We will attempt to %s this value.ÚfloorÚceilzGot invalid adjustment )r»   Úoor   rt   ÚIntegerrÉ   r  r  rš   Úmathr  r  ÚRuntimeError)r  r  s     ri   Ú_sympy_int_to_intr   Å  s¨   € à
Œu�x‰xœÐ Ñ ØØ
”—‘ˆyœ6˜'Ð"Ñ"ØÜ�#”u—}‘}Ô%Ü�3‹xˆô ‡K�Kð	ô 	ˆS‹	ØØôð �ÒÜ�z‰z˜#‹ÐØ	�6Ò	Ü�y‰y˜‹~ÐäÐ4°V°HÐ=Ó>Ð>rh   c                 ó¾   — | €|S | t          t         fv r| S | t        j                  k(  rt         S | t        j                   k(  rt          S t        j                  | «      S rl   )r   r  Úinfr»   r  )r  Údefaults     ri   Ú_int_to_sympy_intr$  à  sT   € à
€{ØˆØ
”ˆwœÐÑØˆ
Ø
Œd�h‰h‚ÜˆØ
Œt�x‰xˆiÒÜˆwˆÜ�=‰=˜ÓÐrh   ÚsymÚsym_typec                 óP   — t        t        | «      t        t        |   «      d  «      S rl   )rÉ   Ústrr  r   )r%  r&  s     ri   Ú_symbol_indexr)  í  s#   € ÜŒs�3‹xœœJ xÑ0Ó1Ð3Ð4Ó5Ð5rh   Úrange_constraintsc                 óÌ   — | j                  «       D ��ci c]C  \  }}t        |«      t        t        |j                  d«      t        |j
                  d«      «      “ŒE c}}S c c}}w )Nr  r  )rm   r(  rI   r   ÚlowerÚupper)r*  ro   rp   s      ri   Úserialize_range_constraintsr.  ñ  s_   € ð &×+Ñ+Ó-÷ñ
 ˆAˆqô	 	ˆA‹”Ü˜aŸg™g vÓ.Ü˜aŸg™g wÓ/ó
ñ 	
óð ùó s   ”AA c                 óô   — t        | t        j                  j                  «      r| j                  S t        | «      t        v r!t        t        | «         j                  | «      S t        dt        | «      › �«      ‚)NzCannot find schema for )	rt   ru   rv   rw   Ú_schemarš   Ú_serialization_registryÚ	op_schemar  )Útargets    ri   Ú_get_schema_from_targetr4  ý  s^   € Ü�&œ%Ÿ*™*×/Ñ/Ô0Ø�~‰~ÐÜ	ˆf‹Ô0Ñ	0Ü&¤t¨F£|Ñ4×>Ñ>¸vÓFÐFÜ
Ð0´°f³°Ð?Ó
@Ð@rh   c                   ó@  — e Zd ZU  ee¬«      Zee   ed<    ee¬«      Zee   ed<    ee¬«      Z	ee
   ed<    ee¬«      Zeeef   ed<    ee¬«      Zeeef   ed<    ee¬«      Zeeef   ed<    ee¬«      Zeeef   ed<   d	Zeed
<    ee¬«      Zeeef   ed<   y)Ú
GraphState)Údefault_factoryÚinputsÚoutputsÚnodesÚtensor_valuesÚsym_int_valuesÚsym_bool_valuesÚsym_float_valuesFÚis_single_tensor_returnÚcustom_obj_valuesN)rd   re   rf   r   Úlistr8  r(   rƒ   r9  r:  rD   r  r;  r(  rV   r<  rS   r=  rM   r>  rQ   r?  r×   r@  r-   rg   rh   ri   r6  r6    sÂ   … á"°4Ô8€FˆD�‰NÓ8Ù#°DÔ9€GˆT�(‰^Ó9Ù¨dÔ3€Eˆ4�‰:Ó3Ù+0ÀÔ+F€M�4˜˜Z˜Ñ(ÓFÙ(-¸dÔ(C€N�D˜˜f˜Ñ%ÓCÙ*/ÀÔ*E€O�T˜#˜w˜,Ñ'ÓEÙ,1À$Ô,GÐ�d˜3 ˜=Ñ)ÓGØ$)Ð˜TÓ)Ù6;ÈDÔ6QÐ�t˜CÐ!2Ð2Ñ3ÔQrh   r6  c                   ó   — e Zd Zd„ Zy)ÚFinalc                 ó¤   — |D ]+  }t        |t        «      sŒt        d|j                  › d�«      ‚ t        j                  | ||t        |«      «      S )Nztype 'z ' is not an acceptable base type)rt   rC  Ú	TypeErrorrd   rš   Ú__new__r  )ÚmetaclsÚnameÚbasesÚ	classdictÚbs        ri   rF  zFinal.__new__  sQ   € Øò 	WˆAÜ˜!œUÕ#Ü &¨¯©¨Ð4TÐ UÓVÐVð	Wô �|‰|˜G T¨5´$°y³/ÓBÐBrh   N)rd   re   rf   rF  rg   rh   ri   rC  rC    s   „ óCrh   rC  c                 ó„   — g d¢}|D ]7  }t        | |«      sŒt        ||«      sŒt        | |«      t        ||«      k7  sŒ7 y y)N)Únum_cpu_threadsÚ	num_warpsÚ
num_stagesÚnum_ctasFT)ÚhasattrÚgetattr)ÚconfigÚentry_metadataÚmetadata_attrsÚattrs       ri   Úis_metadata_matchedrW    sG   € ÚO€NØò ˆÜ�6˜4Õ ¤W¨^¸TÕ%BÜ�v˜tÓ$¬°ÀÓ(EÓEÙðð rh   r¹   c                 óè
  — | j                   t        j                  j                  j                  urt        d| j                   › �«      ‚t        «       st        d«      ‚ddlm} ddl	m
} t        | j                  d   t        «      s$t        dt        | j                  d   «      › �«      ‚t        j                  j                  j                  j!                  | j                  d   «      }t        ||«      }|r|j"                  n|}t%        |d«      rs|j&                  }t)        |j+                  «       «      d	k7  r%t        d
t)        |j+                  «       «      › �«      ‚t-        t/        |j1                  «       «      «      d   }n”t%        |d«      rp|j2                  }t)        |j+                  «       «      d	k7  r%t        dt)        |j+                  «       «      › �«      ‚t-        t/        |j1                  «       «      «      }nt        d|j4                  › �«      ‚t)        |j+                  «       «      d	k(  r$|t-        t/        |j1                  «       «      «      fS t        ||«      xr& t%        |d«      xr t)        |j6                  «      dkD  }|�r‰i }	|j6                  D ]d  }
|
t)        |j8                  «      k  sŒ|j8                  |
   }| j                  j;                  di «      }t        |t<        «      sŒX||v sŒ]||   |	|<   Œf |j6                  D �cg c]%  }|j8                  |   |	v r|	|j8                  |      ‘Œ' }}g }|D ]I  }t        |t>        t        t@        f«      r|jC                  |«       Œ0|jC                  tE        |«      «       ŒK g }|jG                  «       D ]t  \  }}tI        jJ                  d|«      }|sŒg }|D ]6  }|dv r|jC                  |dk(  «       Œ	 |jC                  tA        |«      «       Œ8 ||k(  sŒb|jC                  ||f«       Œv ntO        |jG                  «       «      }t)        |«      dk(  r2t        d|j4                  › dtO        |j+                  «       «      › �«      ‚t)        |«      d	k(  r
||d   d	   fS |r[|D ]6  \  }}|jP                  }|jR                  D ]  }tU        ||«      sŒ||fc c S  Œ8 t        d|j4                  › d|rdnd› d�«      ‚t        d|j4                  › d|rdnd› d|D ��cg c]  \  }}|‘Œ	 c}}› �«      ‚c c}w # tL        $ r@ 	 |jC                  t        |«      «       n # tL        $ r |jC                  |«       Y nw xY wY �Œ¥w xY wc c}}w )Nz/expected triton_kernel_wrapper_functional, got z+triton required to serialize triton kernelsr   )Ú	Autotuner)ÚJITFunctionÚ
kernel_idxz#expected kernel_idx to be int, got Údevice_cachesr&   z%expected exactly 1 device cache, got Úcachez"expected exactly 1 cache key, got z#kernel caches not found for kernel Ú
constexprsÚkwargsz\('constexpr',\s*([^)]+)\))ÚTrueÚFalser`  z[couldn't find a kernel cache entry with metadata matching the autotuner configs for kernel z. Available cache keys: z2Multiple cache entries found for autotuned kernel ú zwith same constexpr valueszwith no constexprz* and couldn't disambiguate using configs. z6Multiple cache entries found for non-autotuned kernel z0. This should not happen. Available cache keys: )+r3  ru   Ú_higher_order_opsÚtriton_kernel_wrapÚ triton_kernel_wrapper_functionalr¨   r#   Útriton.runtime.autotunerrY  Útriton.runtime.jitrZ  rt   r_  rÉ   rš   Úkernel_side_tableÚ
get_kernelÚfnrQ  r\  r  ÚkeysÚnextÚiterÚvaluesr]  rd   r^  Ú	arg_namesÚgetr  r×   rÐ   Úappendr(  rm   ÚreÚfindallÚ
ValueErrorrA  ÚmetadataÚconfigsrW  )r¹   rY  rZ  ÚkernelÚis_autotunerÚactual_kernelÚcachesr]  Úhas_constexprsÚconstexpr_valsÚconstexpr_idxÚ
param_nameÚkwargs_dictÚidxÚexpected_valuesÚnormalized_expectedr  Úmatching_entriesÚsig_keyÚcache_entryÚconstexpr_matchesÚconstexpr_valuesÚmatchÚ_sig_keyrT  rS  ÚkeyÚ_s                               ri   Ú!get_triton_kernel_and_cache_entryrŒ  #  s…  € à�‰Ü×&Ñ&×9Ñ9×ZÑZñ	[ô Ø=¸d¿k¹k¸]ÐKó
ð 	
ô Œ<ÜÐJÓKÐKÝ2Ý.ä�d—k‘k ,Ñ/´Ô5ÜØ1´$°t·{±{À<Ñ7PÓ2QÐ1RÐSó
ð 	
ô ×$Ñ$×7Ñ7×IÑI×TÑTØ�‰�LÑ!ó€Fô ˜f iÓ0€Lá!-�F—I’I°6€Mäˆ}˜oÔ.Ø×,Ñ,ˆÜˆv�{‰{‹}Ó Ò"Ü Ø7¼¸F¿K¹K»MÓ8JÐ7KÐLóð ô ”T˜&Ÿ-™-›/Ó*Ó+¨AÑ.‰Ü	� Ô	(à×$Ñ$ˆÜˆv�{‰{‹}Ó Ò"Ü Ø4´S¸¿¹»Ó5GÐ4HÐIóð ô ”T˜&Ÿ-™-›/Ó*Ó+‰äà1°-×2HÑ2HÐ1IÐJó
ð 	
ô
 ˆ5�:‰:‹<Ó˜AÒØœd¤4¨¯©«Ó#7Ó8Ð8Ð8ô 	�= +Ó.ò 	.Ü�M <Ó0ò	.ä�×(Ñ(Ó)¨AÑ-ð ò Øˆà*×5Ñ5ò 	MˆMàœs =×#:Ñ#:Ó;Ó;à*×4Ñ4°]ÑC�
Ø"Ÿk™kŸo™o¨h¸Ó;�Ü˜k¬4Õ0Ø! [Ò0Ø5@ÀÑ5L˜ zÒ2ð	Mð %×/Ñ/ö	
ð à×&Ñ& sÑ+¨~Ñ=ð	 ˜=×2Ñ2°3Ñ7Ó8ð
ˆð 
ð !ÐØ"ò 	5ˆCÜ˜#¤¤c¬5Ð1Ô2Ø#×*Ñ*¨3Õ/ð $×*Ñ*¬3¨s«8Õ4ð	5ð ÐØ$)§K¡K£Mò 	DÑ ˆG�[Ü "§
¡
Ð+HÈ'Ó RÐÚ ð
 $&Ð Ø.ò 
?�EØÐ 1Ñ1Ø(×/Ñ/°¸±Õ@ð?Ø,×3Ñ3´E¸%³LÕAð
?ð $Ð':Ó:Ø$×+Ñ+¨W°kÐ,BÕCñ+	Dô.   §¡£Ó.Ðä
ÐÓ Ò!ÜàiÐjw÷  kAñ  kAð  jBð B%Ü%)¨%¯*©*«,Ó%7Ð$8ð:ó
ð 	
ô ÐÓ Ò!ØÐ.¨qÑ1°!Ñ4Ð4Ð4áØ%5ò 	6Ñ!ˆH�kØ(×1Ñ1ˆNà Ÿ.™.ò 6�Ü& v¨~Õ>Ø(¨+Ð5Ô5ñ6ð	6ô à@À×AWÑAWÐ@XÐXYÙ/=Ñ+ÐCVÐWð X8ð9ó
ð 	
ô à
@À×AWÑAWÐ@XÐXYÙ+9Ñ'Ð?RÐ
Sð T9ØL\×9]Á&À#Àqº#Ó9]Ð8^ð	`óð ùòU
øôL  *ò ?ð?Ø 0× 7Ñ 7¼¸E»
Õ CøÜ#-ò ?Ø 0× 7Ñ 7¸Ö >ð?ýð?üóP :^sB   Ì*TÏ"T"ÔU.Ô"	U+Ô,UÕU+ÕU$	Õ!U+Õ#U$	Õ$U+Õ*U+c                   óø  — e Zd Zdej                  deej                     fd„Zed„ «       Z	de
j                  j                  fd„Zde
j                  j                  fd„Zdefd	„Zde
j                  j                  fd
„Zd„ Zde
j                  j                  dz  fd„Zdefd„Zde
j                  j                  deeef   fd„Zdee   dz  deeeef      dz  fd„Zdej4                  defd„Zdee   fd„Z	 d9dedee   fd„Zdee   fd„Zde fd„Z!de fd„Z"de fd„Z#de fd„Z$d9dedz  de%fd„Z&de'fd„Z(de)fd„Z*de+fd „Z,de)fd!„Z-d"ej\                  de.fd#„Z/d"ej`                  de0fd$„Z1d%ej                  de2fd&„Z3d'ejh                  de%fd(„Z5d)e6jn                  defd*„Z8d+ejr                  de9fd,„Z:deej                     dee   fd-„Z;de
j                  j                  dee%   fd.„Z<de
j                  j                  dee%   fd/„Z=d0ed1ede%fd2„Z>de
j                  j                  dee'   fd3„Z?d4e
j                  j€                  deAfd5„ZBd6eeef   fd7„ZCd4e
j                  j€                  de@fd8„ZDy):r^   Úgraph_signatureÚmodule_call_graphc                 óh   — t        «       | _        || _        || _        i | _        i | _        i | _        y rl   )r6  Úgraph_staterŽ  r�  Úcustom_objsÚduplicate_getitem_nodesÚtreespec_namedtuple_fields)r�   rŽ  r�  s      ri   rŽ   zGraphModuleSerializer.__init__¾  s6   € ô
 &›<ˆÔØ.ˆÔØ!2ˆÔØ+-ˆÔØ79ˆÔ$ØDFˆÕ'rh   c              #   ór   K  — | j                   }t        «       | _         	 d –— || _         y # || _         w xY w­wrl   )r‘  r6  ©r�   Úsaveds     ri   Úsave_graph_statez&GraphModuleSerializer.save_graph_stateÊ  s3   è ø€ à× Ñ ˆÜ%›<ˆÔð	%Ûà$ˆDÕø˜uˆDÕüs   ‚7Ÿ+ £7«	4´7r¹   c           
      ó,  — |j                   dk7  rt        d|j                   › �«      ‚|j                  d   }t        j	                  d|j
                  |«       t        |t        j                  «      r2t        j                  | j                  |j
                  |«      ¬«      }�nLt        |t        j                  «      r2t        j                  | j                  |j
                  |«      ¬«      }�n t        |t        j                  «      rt        d«      ‚t        |t        t         t"        t$        t'        d «      f«      r| j)                  |«      }nŸt        |t*        j,                  «      rj|j.                  }t        j                  t-        |j
                  |¬«      ¬	«      }| j1                  |«      | j2                  j4                  |j
                  <   nt        d
|j                  d   › �«      ‚| j2                  j6                  j9                  |«       y )NÚplaceholderzexpected placeholder op, got r  z[handle_placeholder] %s: %s©Ú	as_tensor©Ú
as_sym_intz,SymFloat graph input is not implemented yet.©rH  Ú	class_fqn©Úas_custom_objz Unimplemented graph input type: )ry   r¨   Úmetar  ÚdebugrH  rt   ru   ÚTensorr(   rË   Úserialize_tensor_outputrS   Úserialize_sym_int_outputrQ   rÉ   r×   r(  rÐ   rš   Úserialize_inputÚepr-   r   Úserialize_script_obj_metar‘  r@  r8  rq  )r�   r¹   r  Úgraph_inputr   s        ri   Úhandle_placeholderz(GraphModuleSerializer.handle_placeholderÓ  s‡  € Ø�7‰7�mÒ#Ü Ð#@ÀÇÁÀ	Ð!JÓKÐKØ�i‰i˜ÑˆÜ�	‰	Ð/°·±¸CÔ@Ü�cœ5Ÿ<™<Ô(Ü"Ÿ/™/Ø×6Ñ6°t·y±yÀ#ÓFôŠKô ˜œUŸ\™\Ô*Ü"Ÿ/™/Ø×8Ñ8¸¿¹ÀCÓHôŠKô ˜œUŸ^™^Ô,Ü Ð!OÓPÐPÜ˜œc¤4¬¬e´T¸$³ZÐ@ÔAØ×.Ñ.¨sÓ3‰KÜ˜œR×1Ñ1Ô2ØŸ™ˆIÜ"Ÿ/™/Ü/°T·Y±YÈ)ÔTôˆKð ×.Ñ.¨sÓ3ð ×Ñ×.Ñ.¨t¯y©yÒ9ô !Ð#CÀDÇIÁIÈeÑDTÐCUÐ!VÓWÐWØ×Ñ×Ñ×&Ñ& {Õ3rh   c                 ó’  — |j                   dk7  rt        d|j                   › �«      ‚t        |j                  «      dk7  r!t        dt        |j                  «      › �«      ‚|j                  d   }t        j                  d|j                  |«       t        |t        j                  j                  «      r3d| j                  _        | j                  |«      g| j                  _        y t        |t        t         f«      st        dt#        |«      › �«      ‚|D �cg c]  }| j                  |«      ‘Œ c}| j                  _        y c c}w )	NÚoutputzexpected output op, got r&   z(FX.Node's args should have one arg, got r   z[handle_output] %s: %sTzexpected tuple or list, got )ry   r¨   r  Úargsr  r¤  rH  rt   ru   ÚfxrD   r‘  r?  r¨  r9  r©   rA  rš   )r�   r¹   Ú	node_argsÚargs       ri   Úhandle_outputz#GraphModuleSerializer.handle_outputð  s  € Ø�7‰7�hÒÜ Ð#;¸D¿G¹G¸9Ð!EÓFÐFÜˆt�y‰y‹>˜QÒÜ Ø:¼3¸t¿y¹y»>Ð:JÐKóð ð —I‘I˜a‘Lˆ	Ü�	‰	Ð*¨D¯I©I°yÔAÜ�i¤§¡§¡Ô/à7;ˆD×ÑÔ4Ø(,×(<Ñ(<¸YÓ(GÐ'HˆD×ÑÕ$ä˜i¬%´¨Ô7Ü$Ð'CÄDÈÃOÐCTÐ%UÓVÐVØMVÖ'WÀc¨×(<Ñ(<¸SÕ(AÒ'WˆD×ÑÕ$ùÒ'Ws   ÄEr˜   c                 óì   — t        |t        «      r|S |j                  j                  d«      r-|j                  j	                  dd«      }|› d|j
                  › �S |j                  › d|j
                  › �S )Nz
torch._opsz	torch.opsú.)rt   r(  re   Ú
startswithÚreplacerd   )r�   r3  Úmodules      ri   Úserialize_operatorz(GraphModuleSerializer.serialize_operator  sr   € Ü�fœcÔ"ØˆMØ×Ñ×)Ñ)¨,Ô7ð ×&Ñ&×.Ñ.¨|¸[ÓIˆFØ�X˜Q˜vŸ™Ð/Ð0Ð0à×'Ñ'Ð(¨¨&¯/©/Ð):Ð;Ð;rh   c                 ó&  ‡ — |j                   dk7  rt        d|j                   › �«      ‚|j                  j                  d«      }t        j                  d|j                  |j                  |j                  |j                  |«       |j                  t        j                  u ry |j                  t        v s;|�õt        |t        j                  t        j                   t        j"                  f«      r¼t%        |j                  «      dk7  r!t        dt%        |j                  «      › �«      ‚t'        |j                  ‰ j)                  |j                  «      ‰ j+                  |j                  |j                  «      ‰ j-                  |j                  |«      g‰ j/                  |«      ¬«      }�	n§t        |j                  t        j0                  j2                  «      r‚t'        |j                  ‰ j)                  |j                  «      ‰ j5                  |j                  |j                  |j                  «      ‰ j7                  |«      ‰ j/                  |«      ¬«      }�n÷t        |j                  t        j0                  j8                  «      �r§dt:        fd	„}|j                  t        j<                  j>                  u �r�tA        |j                  «      }|j                  d   j                  }tC        |jD                  jF                  |«      st        d
|› �«      ‚tI        |jD                  jF                  |«      }|jJ                  |d<   d |d<   g }|d   �Œt        |d   tL        «      ry|d   D ]l  }	t        |	t        jN                  j&                  «      r5t        |	j                  j                  dd «      tP        jR                  «      rŒ\|jU                  |	«       Œn ||d<   ˆ fd„}
t'        |j                  ‰ j)                  |j                  «      ‰ jW                  ||j                  «       |
|«      ‰ j/                  |«      d¬«      }�n
|j                  t        j<                  jX                  jZ                  u �r:t]        |«      \  }}|j^                  }|j                  d   }t        |t`        «      s!t        dtc        |«      jd                  › �«      ‚|jg                  «       }g }|jh                  D �ch c]  }|jj                  sŒ|j                  ’Œ }}d}g }d}t        |j                  d   t`        «      s$t        dtc        |j                  d   «      › �«      ‚|j                  d   jm                  «       D ]m  \  }}||v rd}Œ|rt        d«      ‚||v r|jU                  |«       |jU                  to        |‰ jq                  |«      tr        jt                  ¬«      «       |dz  }Œo t        |j                  d   t@        «      s$t        dtc        |j                  d   «      › �«      ‚|jv                  jd                  › d|jx                  › �}||j                  d   d   ||jz                  dœ}tC        |d«      r|j|                  |d<   tC        |d«      rBt        |j~                  t:        «      rt�        |j~                  «      |d<   n|j~                  |d<   tC        |d«      r|j‚                  |d<   tC        |d«      r|j„                  |d<   tC        |d«      r|j†                  |d<   |jh                  D �cg c]  }|jj                  rŒ|j                  ‘Œ c}|d <   tI        tI        |d!d «      d"d «      }|�W|jh                  D �cg c]=  }|jj                  s/t‰        |j                  |j                  |jŠ                  «      «      ‘Œ? c}|d#<   n=|jh                  D �cg c]$  }|jj                  rŒt‰        |jŠ                  «      ‘Œ& c}|d#<   t'        |j                  ‰ j)                  |j                  «      ||jm                  «       D ��cg c]0  \  }}to        |‰ jq                  |«      tr        jŒ                  ¬«      ‘Œ2 c}}z   ‰ j�                  |«      ‰ j/                  |«       ||«      ¬«      }�nŸt'        |j                  ‰ j)                  |j                  «      ‰ jW                  |j                  |j                  «      ‰ j�                  |«      ‰ j/                  |«       ||«      ¬«      }�n!tc        |j                  «      t�        v �ratc        |j                  «      t�        vr!t        tc        |j                  «      › d$�«      ‚t�        tc        |j                  «         }|j“                  «       }|j•                  |j                  «      }t        |tˆ        «      rt        |tˆ        «      s7t        d%tc        |«      jd                  › d&tc        |«      jd                  › �«      ‚d'|v sd'|v rt        d(|›d&|›�«      ‚t'        |j                  d)|› d'|› �‰ j5                  |j                  |j                  |j                  «      ‰ j7                  |«      ‰ j/                  |«      ¬«      }n¤t—        |j                  «      rvt'        |j                  ‰ j)                  |j                  «      ‰ jW                  |j                  |j                  «      ‰ j�                  |«      ‰ j/                  |«      ¬«      }nt™        d*|j                  › d+�«      ‚‰ jš                  jœ                  jU                  |«       y c c}w c c}w c c}w c c}w c c}}w ),NÚcall_functionzexpected call_function op, got r  z-[handle_call_function] %s: %s(%s, {%s}) -> %sr   z#expected no kwargs for sym op, got )rH  r3  r8  r9  ru  r˜   c                 ó,  — t        | j                  t        j                  j                  «      s+t        dt        | j                  «      j                  › �«      ‚| j                  j                  dd «      }|d uxr t        |t        j                  «      S )Nz"expected HigherOrderOperator, got r  )rt   r3  ru   rv   ÚHigherOrderOperatorr¨   rš   rd   r£  rp  r¥  )r¹   Úmeta_vals     ri   Ú_is_hop_single_tensor_returnzPGraphModuleSerializer.handle_call_function.<locals>._is_hop_single_tensor_return8  sr   € Ü! $§+¡+¬u¯z©z×/MÑ/MÔNÜ(Ø<¼TÀ$Ç+Á+Ó=N×=WÑ=WÐ<XÐYóð ð  Ÿ9™9Ÿ=™=¨°Ó5�Ø tÐ+ÒR´
¸8ÄUÇ\Á\Ó0RÐRrh   z&owning_module does not have attribute r&   r$   c                 óú   •— | j                   j                  dd «      }g }t        |«      D ]8  \  }}‰j                  | |«      }|j	                  ‰j                  ||«      «       Œ: t        j                  |¬«      gS )Nr  ©Ú
as_tensors)r£  rp  Ú	enumerateÚ_output_node_name_at_indexrq  r¦  r(   rË   )r¹   r¾  Útensor_argsr€  r£  rH  r�   s         €ri   Úserialize_tensor_list_outputzPGraphModuleSerializer.handle_call_function.<locals>.serialize_tensor_list_outputa  sw   ø€ Ø#Ÿy™yŸ}™}¨U°DÓ9�HØ"$�KÜ%.¨xÓ%8ò U™	˜˜TØ#×>Ñ>¸tÀSÓI˜Ø#×*Ñ*¨4×+GÑ+GÈÈdÓ+SÕTðUô %ŸO™O°{ÔCÐDÐDrh   F)rH  r3  r8  r9  ru  Úis_hop_single_tensor_returnz"expected meta_val to be dict, got r_  z*expected kwargs['kwargs'] to be dict, got Tz/non-constexpr args found after constexpr arg(s)©rH  r²  ÚkindÚgridzexpected grid to be list, got r‹  )rH  rÊ  Úoutput_indicesrN  rM  ÚsharedÚshared_memory_bytesÚ
tile_widthÚtile_heightÚbase_peÚkernel_param_namesÚsrcÚ	signatureÚkernel_param_typesz* is not supported in export serialization.z.expected namespace and op_name to be str, got z and ú:z2namespace and op_name should not contain ':', got ú#zSerializing z is not supported)Ory   r¨   r£  rp  r  r¤  rH  r3  r¯  r_  ÚoperatorÚgetitemÚ_SYM_OPSrt   ru   rS   rM   rQ   r  rD   r¹  Úserialize_sym_op_inputsÚserialize_outputÚserialize_metadatarv   rw   Úserialize_inputsÚserialize_outputsr½  r×   rc  Úaoti_call_delegaterA  rQ  ÚgraphÚowning_modulerR  Ú	aoti_pathr   r°  r©  r-   rq  Úserialize_hoo_inputsrd  re  rŒ  ru  r  rš   rd   rk  ÚparamsÚis_constexprrm   rB   r¨  r)   Ú
POSITIONALrj  ÚhashrN  rM  rÌ  rÉ   rÎ  rÏ  rÐ  r(  Ú
annotationÚKEYWORDÚserialize_hoo_outputsr1  Ú	namespaceÚ
to_op_nameÚcallablerc   r‘  r:  )r�   r¹   r¾  Úex_noder¿  Úserializable_argsÚlowered_module_nameÚlowered_moduleÚserializable_weight_nodesÚweight_noderÆ  rw  Úkernel_cache_entryÚkernel_cache_metadataÚoutput_keysrË  ÚpÚconstexpr_keysÚfound_constexprÚ
inputs_newÚiro   rp   Úkernel_name_with_hashÚ
kwargs_newÚcompiled_signaturerH  ÚaÚhandlerrë  Úop_names   `                              ri   Úhandle_call_functionz*GraphModuleSerializer.handle_call_function  s#
  ø€ Ø�7‰7�oÒ%Ü Ð#BÀ4Ç7Á7À)Ð!LÓMÐMØ—9‘9—=‘= Ó'ˆÜ�	‰	Ø;Ø�I‰IØ�K‰KØ�I‰IØ�K‰KØô	
ð �;‰;œ(×*Ñ*Ñ*Øà�;‰;œ(Ñ"ØÐ Ü˜8¤e§l¡l´E·M±MÄ5Ç>Á>Ð%RÔSä�4—;‘;Ó 1Ò$Ü$Ø9¼#¸d¿k¹kÓ:JÐ9KÐLóð ô Ø—Y‘YØ×.Ñ.¨t¯{©{Ó;Ø×3Ñ3°D·K±KÀÇÁÓKØ×.Ñ.¨t¯y©y¸(ÓCÐDØ×0Ñ0°Ó6ôŠGô ˜Ÿ™¤U§Z¡Z×%:Ñ%:Ô;ÜØ—Y‘YØ×.Ñ.¨t¯{©{Ó;Ø×,Ñ,¨T¯[©[¸$¿)¹)ÀTÇ[Á[ÓQØ×.Ñ.¨tÓ4à×0Ñ0°Ó6ôŠGô ˜Ÿ™¤U§Z¡Z×%CÑ%CÕDðS´dó Sð �{‰{œe×5Ñ5×HÑHÒHÜ$(¨¯©£OÐ!ð ,0¯9©9°Q©<×+<Ñ+<Ð#Ü˜tŸz™z×7Ñ7Ð9LÔMÜ(Ø@ÐATÐ@UÐVóð ô ")¨¯©×)AÑ)AÐCVÓ!W�Ø'5×'?Ñ'?Ð! !Ñ$ð (,Ð! !Ñ$à,.Ð)Ø$ QÑ'Ð3¼
Ø% aÑ(¬(ô9ð (9¸Ñ';ò F˜ô & k´5·8±8·=±=ÔAÄjØ'×,Ñ,×0Ñ0°¸Ó=¼r×?SÑ?SôGð %Ø1×8Ñ8¸ÕEðFð ,EÐ% aÑ(ôEô ØŸ™Ø×2Ñ2°4·;±;Ó?Ø×4Ñ4Ð5FÈÏÉÓTÙ8¸Ó>Ø!×4Ñ4°TÓ:Ø05ô’ð —‘Ü×*Ñ*×=Ñ=×^Ñ^ò_ô .OÈtÓ-TÑ*�Ð*Ø(:×(CÑ(CÐ%àŸ9™9 UÑ+�Ü! (¬DÔ1Ü(Ø<¼TÀ(»^×=TÑ=TÐ<UÐVóð ð 'Ÿm™m›o�Ø!#�à28·-±-Ö!R¨QÀ1Ç>Ã> !§&£&Ð!R�Ð!RØ"'�Ø�
Ø�ä! $§+¡+¨hÑ"7¼Ô>Ü(ØDÄTÈ$Ï+É+ÐV^ÑJ_ÓE`ÐDaÐbóð ð !ŸK™K¨Ñ1×7Ñ7Ó9ò ‘D�A�qð ˜NÑ*Ø*.˜Ø á&Ü,ØMóð ð ˜KÑ'Ø&×-Ñ-¨aÔ0Ø×%Ñ%Ü%Ø!"Ø $× 4Ñ 4°QÓ 7Ü!-×!8Ñ!8ôôð ˜‘F‘Að-ô0 " $§+¡+¨fÑ"5´tÔ<Ü(Ø8¼¸d¿k¹kÈ&Ñ>QÓ9RÐ8SÐTóð ð
 —y‘y×)Ñ)Ð*¨!Ð,A×,FÑ,FÐ+GÐHð &ð 2Ø ŸK™K¨Ñ/°Ñ2Ø&4Ø!6×!@Ñ!@ñ	�
ô Ð0Ð2CÔDà-×=Ñ=ð Ð0Ñ1ô Ð0°(Ô;Ü!Ð"7×">Ñ">ÄÔEÜ<?Ø1×8Ñ8ó=˜
Ð#8Ò9ð =R×<XÑ<X˜
Ð#8Ñ9ô Ð0°,Ô?Ø/D×/OÑ/O�J˜|Ñ,ÜÐ0°-Ô@Ø0E×0QÑ0Q�J˜}Ñ-ÜÐ0°)Ô<Ø,A×,IÑ,I�J˜yÑ)ð %+§M¡Mö4Ø ¸¿»�A—F“Fò4�
Ð/Ñ0ô &-ÜÐ.°°tÓ<¸kÈ4ó&Ð"ð &Ð1ð "(§¡ö8àØ Ÿ~š~ô Ð.×2Ñ2°1·6±6¸1¿<¹<ÓHÕIò8�JÐ3Ò4ð 4:·=±=ö8Ø./ÈÏËœ˜AŸL™LÕ)ò8�JÐ3Ñ4ô ØŸ™Ø×2Ñ2°4·;±;Ó?Ø%ð (2×'7Ñ'7Ó'9÷ñ $˜D !ô &Ø!%Ø $× 4Ñ 4°QÓ 7Ü!-×!5Ñ!5öóñð !×6Ñ6°tÓ<Ø!×4Ñ4°TÓ:Ù0LÈTÓ0Rô’ô" ØŸ™Ø×2Ñ2°4·;±;Ó?Ø×4Ñ4°T·Y±YÀÇÁÓLØ ×6Ñ6°tÓ<Ø!×4Ñ4°TÓ:Ù0LÈTÓ0Rô’ô �$—+‘+ÓÔ"9Ò9ä�D—K‘KÓ Ô(?Ñ?Ü$Ü˜DŸK™KÓ(Ð)Ð)SÐTóð ô .¬d°4·;±;Ó.?Ñ@ˆGØ×)Ñ)Ó+ˆIØ×(Ñ(¨¯©Ó5ˆGÜ˜i¬Ô-´ZÀÌÔ5MÜ$ØDÄTÈ)Ã_×E]ÑE]ÐD^Ð^cÔdhÐipÓdq×dzÑdzÐc{Ð|óð ð �iÑ 3¨'¡>Ü$ØHÈÈÐUZÐ[bÐZeÐfóð ô Ø—Y‘YØ˜9˜+ Q w iÐ0Ø×,Ñ,¨T¯[©[¸$¿)¹)ÀTÇ[Á[ÓQØ×.Ñ.¨tÓ4Ø×0Ñ0°Ó6ô‰Gô �d—k‘kÔ"ô Ø—Y‘YØ×.Ñ.¨t¯{©{Ó;Ø×0Ñ0°·±¸D¿K¹KÓHØ×2Ñ2°4Ó8Ø×0Ñ0°Ó6ô‰Gô ! <°·±¨}Ð<MÐ!NÓOÐOà×Ñ×Ñ×%Ñ% gÕ.ùòw "SùòJ4ùò8ùò8ùós1   Ó4m9Ôm9Ü9m>Ým>ÞAnßnß0ná5nc                 óD   — t         j                  d|j                  «       y )Nz[handle_get_attr] %s)r  r¤  rH  )r�   r¹   s     ri   Úhandle_get_attrz%GraphModuleSerializer.handle_get_attr  s   € Ü�	‰	Ð(¨$¯)©)Õ4rh   Nc                 óö   — d }|j                   D ]g  }|j                  t        j                  urt	        |› d�«      ‚||j
                  d   k(  sŒ@|€|}ŒE|j                  | j                  |j                  <   Œi |S )Nz is not a getitem noder&   )Úusersr3  r×  rØ  r¨   r¯  rH  r“  )r�   r¹   rœ   Ú	user_nodeÚusers        ri   Ú_output_node_at_indexz+GraphModuleSerializer._output_node_at_index!  s   € Øˆ	Ø—J‘Jò 		MˆDØ�{‰{¤(×"2Ñ"2Ñ2Ü$¨ vÐ-CÐ%DÓEÐEØ˜Ÿ	™	 !™Ó$ØÐ$Ø $‘Ið ?H¿n¹n�D×0Ñ0°·±Ò;ð		Mð Ðrh   c                 ód   — | j                  ||«      }|€|j                  › d|› �S |j                  S )NÚ_unused_)r	  rH  )r�   r¹   rœ   r  s       ri   rÄ  z0GraphModuleSerializer._output_node_name_at_index/  s9   € Ø×.Ñ.¨t°UÓ;ˆ	ØÐØ—i‘i�[ ¨¨Ð0Ð0à—>‘>Ð!rh   c           	      ó´  — i }|j                   j                  d«      x}r||d<   |j                   j                  d«      x}rHd„ }|j                  «       D ��cg c]  \  }}|› d ||«      › �‘Œ }}}t        j	                  |«      |d<   |j                   j                  d«      x}	rA|	D �
cg c]  }
|
d   › d| j                  |
d   «      › �‘Œ  }}
t        j	                  |«      |d<   |j                   j                  d«      x}r!t        j	                  t        |«      «      |d<   |j                   j                  d	«      x}r	 t        j                  |«      |d	<   d|j                   v r6|j                   d   }t        j                  | j                  |«      «      |d<   |S c c}}w c c}
w # t        $ r!}t        d
|j                  › d|› �«      |‚d }~ww xY w)NÚstack_traceÚnn_module_stackc                 óž  — t        | t        «      rt        | «      dk7  rAt        | t        «      rt        | «      nd}t        dt	        | «      j
                  › d|› �«      ‚| \  }}t        |t        «      s!t        dt	        |«      j
                  › �«      ‚t        |t        «      s!t        dt	        |«      j
                  › �«      ‚|dz   |z   S )Nr$   zN/Az expected tuple of length 2, got z of length zexpected path to be str, got zexpected ty to be str, got ú,)rt   r©   r  r¨   rš   rd   r(  )r  Úval_lenÚpathÚtys       ri   Úexport_nn_module_stackzHGraphModuleSerializer.serialize_metadata.<locals>.export_nn_module_stack>  sÉ   € Ü! #¤uÔ-´°S³¸Q²Ü*4°S¼%Ô*@œc #œhÀe�GÜ(Ø:¼4À»9×;MÑ;MÐ:NÈkÐZaÐYbÐcóð ð ‘��bä! $¬Ô,Ü(Ø7¼¸T»
×8KÑ8KÐ7LÐMóð ô " "¤cÔ*Ü(Ø5´d¸2³h×6GÑ6GÐ5HÐIóð ð ˜c‘z B‘Ð&rh   r  Úsource_fn_stackr   r&   Útorch_fnÚcustomz-Failed to serialize custom metadata for node z with error Ú	from_node)r£  rp  rm   ÚST_DELIMITERÚjoinr¹  rA  rí   rî   r  rc   rH  Ú_serialize_from_node)r�   r¹   Úretr  r  r  ro   rp   Únn_module_listÚsource_fn_stÚ	source_fnÚsource_fn_listr  r  r  r  s                   ri   rÜ  z(GraphModuleSerializer.serialize_metadata6  së  € ØˆàŸ)™)Ÿ-™-¨Ó6Ð6ˆ;Ð6Ø!,ˆC�Ñà"Ÿi™iŸm™mÐ,=Ó>Ð>ˆ?Ð>ò'ð* @O×?TÑ?TÓ?V÷Ù7;°q¸!�1�#�QÑ-¨aÓ0Ð1Ò2ðˆNñ ô &2×%6Ñ%6°~Ó%FˆCÐ!Ñ"àŸ9™9Ÿ=™=Ð):Ó;Ð;ˆ<Ð;ð ".öàð ˜Q‘<�.  $×"9Ñ"9¸)ÀA¹,Ó"GÐ!HÒIðˆNð ô &2×%6Ñ%6°~Ó%FˆCÐ!Ñ"à—y‘y—}‘} ZÓ0Ð0ˆ8Ð0Ü*×/Ñ/´°X³Ó?ˆC�
‰Oà—Y‘Y—]‘] 8Ó,Ð,ˆ6Ð,ðÜ $§
¡
¨6Ó 2��H‘ð ˜$Ÿ)™)Ñ#ØŸ	™	 +Ñ.ˆIä#Ÿz™z¨$×*CÑ*CÀIÓ*NÓOˆC�Ñàˆ
ùó9ùòøô ò Ü$ØCÀDÇIÁIÀ;ÈlÐ[\ÐZ]Ð^óàðûðús$   ÁF"Â+#F(ÅF- Æ-	GÆ6GÇGr  c                 ón   — |€y|D �cg c]"  }t        |t        «      r|j                  «       ‘Œ$ c}S c c}w )zk
        Serialize from_node metadata from a list of NodeSource objects to a list of dictionaries.
        N)rt   r   Úto_dict)r�   r  Únode_sources      ri   r  z*GraphModuleSerializer._serialize_from_nodep  sB   € ð ÐØð  )ö
àÜ˜+¤zÔ2ð ×ÑÕ!ò
ð 	
ùò 
s   ˆ'2Úscript_obj_metac                 óp   — t         j                  d|«       t        |j                  |j                  ¬«      S )Nz[serialize_script_obj_meta] %srŸ  )r  r¤  r-   rH  r   ©r�   r$  s     ri   rª  z/GraphModuleSerializer.serialize_script_obj_meta  s2   € ô 	�	‰	Ð2°OÔDÜ Ø ×%Ñ%Ø%×/Ñ/ô
ð 	
rh   c           	      óî  — t        |t        j                  j                  «      r.|j                  j
                  D �cg c]  }|j                  ‘Œ }}nM|t        vrt        d|› d�«      ‚t        t        j                  |«      j                  j                  «       «      }g }t        ||«      D ]?  \  }}|j                  t!        || j#                  |«      t$        j&                  ¬«      «       ŒA |S c c}w )Nzop z is not in _SYM_OPSrÈ  )rt   ru   rv   rw   r0  Ú	argumentsrH  rÙ  r¨   rA  ÚinspectrÓ  Ú
parametersrk  Úziprq  rB   r¨  r)   ræ  )r�   ry   r¯  r²  Ú
args_namesÚserialized_argsÚ	args_names          ri   rÚ  z-GraphModuleSerializer.serialize_sym_op_inputsˆ  sÕ   € Ü�bœ%Ÿ*™*×/Ñ/Ô0Ø.0¯j©j×.BÑ.BÖC s˜#Ÿ(›(ÐCˆJÑCàœÑ!Ü$ s¨2¨$Ð.AÐ%BÓCÐCÜœg×/Ñ/°Ó3×>Ñ>×CÑCÓEÓFˆJØˆÜ! *¨dÓ3ò 	‰NˆI�sØ×"Ñ"ÜØ"Ø×,Ñ,¨SÓ1Ü%×0Ñ0ôõð	ð Ðùò Ds   ½C2r3  c           
      ól  — d }g }t        |t        j                  j                  j                  «      r|d   }|d   }|j                  ||«      }n\t        |t        j                  j                  gt        «       ¢­«      s!t        dt        |«      j                  › �«      ‚t        |«      }|€t        d«      ‚|xs i }t        |j                  «      D ]Ý  \  }}	|	j                  |v r]|j!                  t#        |	j                  | j%                  ||	j                     |	j                  «      t&        j(                  ¬«      «       Œq|	j*                  sa|t-        |«      k  rS|j!                  t#        |	j                  | j%                  ||   |	j                  «      t&        j.                  ¬«      «       ŒÞŒß |S )Nr   r&   z6expected OpOverload or registered extension type, got zschema should not be NonerÈ  )rt   ru   rc  Ú	torchbindÚCallTorchBindr'   rv   rw   Ú_registered_extension_typesr¨   rš   rd   r4  rÃ  r(  rH  rq  rB   r¨  r)   ré  Ú
kwarg_onlyr  ræ  )
r�   r3  r¯  r_  r'   r-  ÚobjÚmethodrû  Ú
schema_args
             ri   rÝ  z&GraphModuleSerializer.serialize_inputsš  sŒ  € ð ˆØˆä�fœe×5Ñ5×?Ñ?×MÑMÔNØ�q‘'ˆCØ˜!‘WˆFØ—]‘] 3¨Ó/‰FäØœŸ™×.Ñ.ÐOÔ1LÓ1NÑOôô %ØLÌTÐRXË\×MbÑMbÐLcÐdóð ô -¨VÓ4ˆFØˆ>Ü Ð!<Ó=Ð=Ø’˜2ˆä& v×'7Ñ'7Ó8ò 	‰MˆAˆzØ�‰ &Ñ(Ø×&Ñ&Ü!Ø'Ÿ_™_Ø ×0Ñ0Ø" :§?¡?Ñ3°Z·_±_óô *×1Ñ1ôõð  ×*Ò*¨q´3°t³9ª}Ø×&Ñ&Ü!Ø'Ÿ_™_Ø ×0Ñ0°°a±¸*¿/¹/ÓJÜ)×4Ñ4ôõð ð-	ð0 Ðrh   c                 óB  — |D �cg c]-  }t        d| j                  |«      t        j                  ¬«      ‘Œ/ }}|j	                  |j                  «       D ��cg c]0  \  }}t        || j                  |«      t        j                  ¬«      ‘Œ2 c}}«       |S c c}w c c}}w )zM
        For serializing HOO inputs since HOOs do not have a schema.
        Ú rÈ  )rB   r¨  r)   ræ  Úextendrm   ré  )r�   r¯  r_  rÿ  r8  rH  s         ri   rã  z*GraphModuleSerializer.serialize_hoo_inputsÍ  s¢   € ð ö	
ð ô Ø˜T×1Ñ1°!Ó4¼<×;RÑ;Röð
ˆð 
ð 	�‰ð  &Ÿ|™|›~÷ñ �D˜!ô ØØ×,Ñ,¨QÓ/Ü%×-Ñ-öóô		
ð ˆùò!
ùós   …2BÁ5B
c                 ó\   — t        |«      t        u xs t        |t        j                  «      S rl   )rš   rÉ   rt   ru   rS   ©r�   r²  s     ri   Úis_inductor_sym_int_argz-GraphModuleSerializer.is_inductor_sym_int_argã  s#   € ô
 �C‹yœCÐÒ@¤:¨c´5·<±<Ó#@Ð@rh   c                 ó¸   — t        |«      t        u xsH t        |t        j                  j
                  «      xr" |j                  | j                  j                  v S rl   )	rš   rÉ   rt   ru   r°  rD   rH  r‘  r<  r;  s     ri   Úis_sym_int_argz$GraphModuleSerializer.is_sym_int_argê  sG   € Ü�C‹yœCÐò 
Ü�sœEŸH™HŸM™MÓ*ò <Ø—‘˜D×,Ñ,×;Ñ;Ð;ð	
rh   c                 ó¶   — t        |t        «      xsH t        |t        j                  j                  «      xr" |j
                  | j                  j                  v S rl   )rt   rÐ   ru   r°  rD   rH  r‘  r>  r;  s     ri   Úis_sym_float_argz&GraphModuleSerializer.is_sym_float_argð  sE   € Ü˜#œuÓ%ò 
Ü�sœEŸH™HŸM™MÓ*ò >Ø—‘˜D×,Ñ,×=Ñ=Ð=ð	
rh   c                 ó¶   — t        |t        «      xsH t        |t        j                  j                  «      xr" |j
                  | j                  j                  v S rl   )rt   r×   ru   r°  rD   rH  r‘  r=  r;  s     ri   Úis_sym_bool_argz%GraphModuleSerializer.is_sym_bool_argö  sE   € Ü˜#œtÓ$ò 
Ü�sœEŸH™HŸM™MÓ*ò =Ø—‘˜D×,Ñ,×<Ñ<Ð<ð	
rh   Úarg_typec           
      ól#  ‡ ‡— dd l mc m} |j                  |j                  fŠt        |t        j                  j                  «      �r[|j                  dk(  �r˜t        |j                  t        «      s+t        dt        |j                  «      j                  › �«      ‚t        |j                   j"                  |j                  «      }t        |t        j$                  «      rt'        d«      ‚t        |t        j                  j(                  «      rU‰ j+                  «       5  ‰ j-                  |«      }d d d «       t/        j0                  t3        |j                  ¬«      ¬«      S t        |«      j                  dk(  rOt        |dd «      }t        |d	d «      }|€t        d
«      ‚|€t        d«      ‚t/        j0                  |› d|› �¬«      S t'        d|j                  › dt        |«      › �«      ‚‰ j5                  |«      r4t/        j0                  t7        j0                  |j8                  ¬«      ¬«      S ‰ j;                  |«      r4t/        j0                  t=        j0                  |j8                  ¬«      ¬«      S ‰ j?                  |«      r4t/        j0                  tA        j0                  |j8                  ¬«      ¬«      S t        |jB                  d   tD        jF                  «      rBt/        j0                  tG        |j8                  |jB                  d   jH                  ¬«      ¬«      S |j8                  ‰ jJ                  v r9‰ jJ                  |j8                     }t/        j0                  tM        |¬«      ¬«      S t/        j0                  tM        |j8                  ¬«      ¬«      S t        |‰«      r=|jO                  «       }	|	€t        d«      ‚t/        j0                  tM        |	¬«      ¬«      S t        ||jP                  «      rz|jO                  «       }	|	€t        d«      ‚|jS                  «       }
|
jU                  «       jW                  «       }|
‰ jX                  |	<   t/        j0                  tG        |	|«      ¬«      S t        |t        jZ                  «      r3t/        j0                  t7        j0                  t        |«      ¬«      ¬«      S t        |t        j\                  «      r3t/        j0                  t=        j0                  t        |«      ¬«      ¬«      S t        |«      t^        u rt/        j0                  |¬«      S t        |«      t        u rt/        j0                  |¬«      S t        |«      t`        u rt/        j0                  |¬«      S t        |«      tb        u rt/        j0                  |¬«      S t        |«      td        u r5t/        j0                  tg        |jh                  |jj                  ¬«      ¬«      S |€t/        j0                  d¬ «      S t        |tl        «      rki }|jo                  «       D ]@  \  }}t        |t        «      st'        d!t        |«      › �«      ‚‰ jq                  |«      ||<   ŒB t/        j0                  |¬"«      S t        |tr        tt        f«      �r\tw        |«      dk(  �rÌ|��žt        |t        jx                  «      r|j{                  «       }t        |t        j|                  «      s!t        d#t        |«      j                  › �«      ‚|j{                  «       }t        |t        jx                  «      r|j{                  «       }t        |t        j~                  «      rt/        j0                  g ¬$«      S t        |t        j€                  «      rt/        j0                  g ¬%«      S t        |t        j‚                  «      rt/        j0                  g ¬&«      S t        |t        j„                  «      rt/        j0                  g ¬'«      S t        |t        j†                  «      rt/        j0                  g ¬(«      S t'        d)|› d*�«      ‚tˆ        j‹                  d+«       t/        j0                  g ¬(«      S t�        d,„ |D «       «      rt/        j0                  ts        |«      ¬$«      S t�        d-„ |D «       «      rt/        j0                  ts        |«      ¬%«      S t�        d.„ |D «       «      rt/        j0                  ts        |«      ¬&«      S t�        d/„ |D «       «      rt/        j0                  ts        |«      ¬'«      S t�        ˆ fd0„|D «       «      rŸg }|D ]‚  }t        |t        jZ                  «      r/|j�                  t7        j0                  t        |«      ¬«      «       ŒLt        |«      t`        u sŒ^|j�                  t7        j0                  |¬«      «       Œ„ t/        j0                  |¬1«      S t�        d2„ |D «       «      rAt/        j0                  |D �cg c]!  }t=        j0                  t        |«      ¬«      ‘Œ# c}¬3«      S t�        ˆ fd4„|D «       «      rªg }|D ]�  }t        |t        j                  j                  «      r0|j�                  t7        j0                  |j8                  ¬«      «       ŒWt        |«      t`        u sŒi|j�                  t7        j0                  |¬«      «       Œ� t/        j0                  |¬1«      S t�        ˆ fd5„|D «       «      r©g }|D ]Œ  }t        |t        j                  j                  «      r0|j�                  t=        j0                  |j8                  ¬«      «       ŒWt        |tb        «      sŒh|j�                  t=        j0                  |¬«      «       ŒŽ t/        j0                  |¬3«      S t�        ˆ fd6„|D «       «      r©g }|D ]Œ  }t        |t        j                  j                  «      r0|j�                  tA        j0                  |j8                  ¬«      «       ŒWt        |t^        «      sŒh|j�                  tA        j0                  |¬«      «       ŒŽ t/        j0                  |¬7«      S t�        d8„ |D «       «      r^g }|D ]A  }|j                  dk(  rt'        d«      ‚|j�                  tM        |j8                  ¬«      «       ŒC t/        j0                  |¬(«      S t�        d9„ |D «       «      rŠt�        d:„ |D «       «      rxg }|D ][  }g }|D ]A  }|j                  dk(  rt'        d«      ‚|j�                  tM        |j8                  ¬«      «       ŒC |j�                  |«       Œ] t/        j0                  |¬;«      S t�        d<„ |D «       «      r,d=„ }t/        j0                  ts        t‘        ||«      «      ¬>«      S t�        ˆfd?„|D «       «      r<t/        j0                  |D �cg c]  }tM        |jO                  «       ¬«      ‘Œ c}¬(«      S t�        ˆfd@„|D «       «      r.ˆfdA„}t/        j0                  ts        t‘        ||«      «      ¬>«      S t�        dB„ |D «       «      r-t/        j0                  |D �cg c]  }ts        |«      ‘Œ c}¬C«      S t�        dD„ |D «       «      r-t/        j0                  |D �cg c]  }ts        |«      ‘Œ c}¬E«      S t'        dF|D �cg c]  }t        |«      ‘Œ c}› �«      ‚t        |t        j’                  «      rt/        j0                  t”        |   ¬G«      S t        |t        j–                  «      r5t/        j0                  t™        |j                  |jš                  ¬H«      ¬I«      S t        |t        jœ                  «      rt/        j0                  tž        |   ¬J«      S t        |t        j                   «      rt/        j0                  t¢        |   ¬K«      S t        |t        j¤                  j¦                  «      r–|j©                  dL«      r|j©                  dM«      st'        dN|› dO�«      ‚dPtw        ‰ jX                  «      › �}|‰ jX                  |<   |jU                  «       jW                  «       }t/        j0                  tG        ||«      ¬«      S t«        |«      r[dPtw        ‰ jX                  «      › �}|‰ jX                  |<   t­        t        |«      «      }t/        j0                  tG        ||«      ¬«      S t        |t        j®                  j°                  t        j®                  j²                  f«      r%t/        j0                  ‰ jµ                  |«      ¬Q«      S t'        dRt        |«      › dS|› �«      ‚# 1 sw Y   �Œ_xY wc c}w c c}w c c}w c c}w c c}w )TNr   Úget_attrz#expected arg.target to be str, got z?getattr nodes containing tensors should not appear in the graph)rH  rà  )Úas_graphÚLoweredBackendModuleÚmodule_nameÚ
backend_idzmodule_name should not be Nonezbackend_id should not be Noneú-©Ú	as_stringzUnsupported getattr attribute z with type: ©Úas_namer�  ©Úas_sym_float©Úas_sym_boolr  rŸ  r¡  ©rH  r›  zBuffer must have valid namerÔ   r¤   rÎ   )ÚrealÚimag)Ú
as_complexT©Úas_nonezDict keys must be strings, got )Úas_string_to_argumentzexpected ListType, got )Úas_bools)Úas_ints)Ú	as_floats)Ú
as_stringsrÁ  zEmpty list with type z nyi.z�Unsure how to serialize the given empty list, as we don't know what is the type of this argument. Serializing it as a tensor list by default.c              3   ó>   K  — | ]  }t        |«      t        u –— Œ y ­wrl   )rš   r×   ©rx   rÿ  s     ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>™  s   è ø€ Ò0 q”4˜“7œd”?Ñ0ùó   ‚c              3   ó>   K  — | ]  }t        |«      t        u –— Œ y ­wrl   ©rš   rÉ   r_  s     ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>›  ó   è ø€ Ò1¨”T˜!“W¤”^Ñ1ùr`  c              3   ó>   K  — | ]  }t        |«      t        u –— Œ y ­wrl   )rš   rÐ   r_  s     ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>�  s   è ø€ Ò3¨!”T˜!“W¤Ô%Ñ3ùr`  c              3   ó>   K  — | ]  }t        |«      t        u –— Œ y ­wrl   )rš   r(  r_  s     ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>Ÿ  rc  r`  c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrl   )r<  ©rx   rÿ  r�   s     €ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>¡  s   øè ø€ ÒB¸�T×1Ñ1°!×4ÑBùó   ƒ)Úas_sym_intsc              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrl   )rt   ru   rQ   r_  s     ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>¬  s   è ø€ Ò@°q”Z ¤5§>¡>×2Ñ@ùs   ‚$&)Úas_sym_floatsc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrl   )r>  rg  s     €ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>°  s   øè ø€ Ò9°�T×(Ñ(¨×+Ñ9ùrh  c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrl   )r@  rg  s     €ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>¹  s   øè ø€ Ò;°!�T×*Ñ*¨1×-Ñ;ùrh  c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrl   )rB  rg  s     €ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>Â  s   øè ø€ Ò:°�T×)Ñ)¨!×,Ñ:ùrh  )Úas_sym_boolsc              3   ód   K  — | ](  }t        |t        j                  j                  «      –— Œ* y ­wrl   ©rt   ru   r°  rD   r_  s     ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>Ë  s   è ø€ Ò?°a”Z ¤5§8¡8§=¡=×1Ñ?ùr{   c              3   óH   K  — | ]  }t        |t        t        f«      –— Œ y ­wrl   )rt   rA  r©   r_  s     ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>Õ  s   è ø€ Ò?°a”Z ¤D¬% =×1Ñ?ùs   ‚ "c              3   ó@   K  — | ]  }t        d „ |D «       «      –— Œ y­w)c              3   ód   K  — | ](  }t        |t        j                  j                  «      –— Œ* y ­wrl   rq  ©rx   rÚ   s     ri   rz   zBGraphModuleSerializer.serialize_input.<locals>.<genexpr>.<genexpr>Ö  s   è ø€ Ò@°Q”J˜q¤%§(¡(§-¡-×0Ñ@ùr{   N)Úall)rx   Úinners     ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>Õ  s"   è ø€ ò HØEJ”Ñ@¸%Ô@×@ñHùs   ‚)Úas_nested_tensorsc              3   óz   K  — | ]3  }t        |t        j                  j                  t	        d «      f«      –— Œ5 y ­wrl   )rt   ru   r°  rD   rš   r_  s     ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>ä  s(   è ø€ ÒMÀA”Z ¤E§H¡H§M¡M´4¸³:Ð#>×?ÑMùs   ‚9;c                 óê   — | €t        j                  d¬«      S t        | t        j                  j
                  «      r*t        j                  t        | j                  ¬«      ¬«      S t        d| › �«      ‚©NTrW  rS  r›  z!Unsupported list/tuple argument: )	rE   rË   rt   ru   r°  rD   rU   rH  rc   ©rÿ  s    ri   Úserialize_optional_tensor_argszMGraphModuleSerializer.serialize_input.<locals>.serialize_optional_tensor_argsæ  s`   € Ø�yÜ5×<Ñ<ÀTÔJÐJÜ# A¤u§x¡x§}¡}Ô5Ü5×<Ñ<Ü&4¸!¿&¹&Ô&Aô ð ô -Ð/PÐQRÐPSÐ-TÓUÐUrh   )Úas_optional_tensorsc              3   ó6   •K  — | ]  }t        |‰«      –— Œ y ­wrl   )rt   ©rx   rÿ  Úinductor_tensor_bufferss     €ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>ó  s   øè ø€ ÒIÀ”Z Ð#:×;ÑIùs   ƒc              3   óR   •K  — | ]  }t        |g ‰¢t        d «      ‘­«      –— Œ  y ­wrl   )rt   rš   r€  s     €ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>ø  s-   øè ø€ ò ØJK”
˜1ÐDÐ 7ÐD¼¸d»ÑD×Eñùs   ƒ$'c                 óÄ   •— | €t        j                  d¬«      S t        | ‰«      r.t        j                  t        | j	                  «       ¬«      ¬«      S t        d| › �«      ‚r{  )rE   rË   rt   rU   Úget_namerc   )rÿ  r�  s    €ri   r}  zMGraphModuleSerializer.serialize_input.<locals>.serialize_optional_tensor_argsü  s\   ø€ Ø�yÜ5×<Ñ<ÀTÔJÐJÜ# AÐ'>Ô?Ü5×<Ñ<Ü&4¸!¿*¹*»,Ô&Gô ð ô -Ð/PÐQRÐPSÐ-TÓUÐUrh   c              3   ód   K  — | ](  }t        |t        «      xr t        d „ |D «       «      –— Œ* y­w)c              3   ó>   K  — | ]  }t        |«      t        u –— Œ y ­wrl   rb  ©rx   Úxs     ri   rz   zBGraphModuleSerializer.serialize_input.<locals>.<genexpr>.<genexpr>
  s   è ø€ Ò,GÀ¬T°!«W¼¬^Ñ,Gùr`  N)rt   r©   rv  r_  s     ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>	  s/   è ø€ ò ØLM”
˜1œeÓ$ÒG¬Ñ,GÀQÔ,GÓ)GÓGñùr{   )Úas_int_listsc              3   óp   K  — | ].  }t        |t        t        f«      xr t        d „ |D «       «      –— Œ0 y­w)c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wrl   )rt   rÐ   r‡  s     ri   rz   zBGraphModuleSerializer.serialize_input.<locals>.<genexpr>.<genexpr>  s   è ø€ Ò4UÈa´ZÀÄ5×5IÑ4Uùs   ‚N)rt   rA  r©   rv  r_  s     ri   rz   z8GraphModuleSerializer.serialize_input.<locals>.<genexpr>  s7   è ø€ ò àô ˜1œt¤U˜mÓ,ÒU´Ñ4UÐSTÔ4UÓ1UÓUñùs   ‚46)Úas_float_listsz&Unsupported list/tuple argument type: )Úas_scalar_typer›   )Ú	as_device)Úas_memory_format)Ú	as_layoutÚ__getstate__Ú__setstate__z!Unable to serialize custom class z7. Please define serialization methods via def_pickle().Ú_custom_obj_)Úas_operatorzUnsupported argument type: z with schema arg_type )[Útorch._inductor.irÚ	_inductorÚirÚBufferÚReinterpretViewrt   ru   r°  rD   ry   r3  r(  r¨   rš   rd   rR  rà  rá  r¥  rc   r4   r˜  Úserialize_graphr(   rË   r3   r>  rT   rH  r@  rR   rB  rN   r£  r©  r-   r   r“  rU   r„  ÚTorchBindObjectÚget_real_objÚ_typeÚqualified_namer’  rS   rQ   r×   rÉ   rÐ   Úcomplexr+   rT  rU  r  rm   r¨  rA  r©   r  ÚOptionalTypeÚgetElementTypeÚListTypeÚBoolTypeÚIntTypeÚ	FloatTypeÚ
StringTypeÚ
TensorTyper  r  rv  rq  r‰   rÜ   rà   r�   r.   rœ   Úmemory_formatÚ!_TORCH_TO_SERIALIZE_MEMORY_FORMATrß   rã   Ú_CÚScriptObjectÚ_has_methodr   r   rv   rw   r½  r¹  )r�   r²  rC  Úinductor_irrV  rà  rH  rI  Ú
dedup_nameÚarg_nameÚarg_valr   Úserialized_dictrŠ  rn   Ú	elem_typern  rÿ  r(  Únested_argumentsÚ
inner_listÚinner_argumentsr¹   r}  rÚ   Úcustom_obj_namer�  s   `                         @ri   r¨  z%GraphModuleSerializer.serialize_inputý  sÜ  ù€ ß0Ð0ð ×ÑØ×'Ñ'ð#
Ðô
 �cœ5Ÿ8™8Ÿ=™=Õ)Ø�v‰v˜Ó#Ü! #§*¡*¬cÔ2Ü(Ø=¼dÀ3Ç:Á:Ó>N×>WÑ>WÐ=XÐYóð ô ˜sŸy™y×6Ñ6¸¿
¹
ÓC�ä˜d¤E§L¡LÔ1Ü(ØYóð ô   ¤e§h¡h×&:Ñ&:Ô;Ø×.Ñ.Ó0ñ ;Ø $× 4Ñ 4°TÓ :˜÷;ä#Ÿ?™?Ü!.°C·J±JÀeÔ!Lôð ô ˜$“Z×(Ñ(Ð,BÒBô #*¨$°¸tÓ"D�KÜ!(¨¨|¸TÓ!B�JØ"Ð*Ü,Ð-MÓNÐNØ!Ð)Ü,Ð-LÓMÐMÜ#Ÿ?™?¸°}ÀAÀjÀ\Ð5RÔSÐSä(Ø8¸¿¹¸ÀLÔQUÐVZÓQ[ÐP\Ð]óð ð ×$Ñ$ SÔ)Ü—‘Ü-×4Ñ4¸S¿X¹XÔFôð ð ×&Ñ& sÔ+Ü—‘Ü!1×!8Ñ!8ÀÇÁÔ!Jôð ð ×%Ñ% cÔ*Ü—‘Ü /× 6Ñ 6¸s¿x¹xÔ Hôð ô ˜CŸH™H U™O¬R×-AÑ-AÔBÜ—‘Ü"3Ø ŸX™X°·±¸%±×1JÑ1Jô#ôð ð
 —‘˜T×9Ñ9Ñ9Ø!×9Ñ9¸#¿(¹(ÑC�
Ü—‘´ÀZÔ1PÔQÐQä—‘´ÀSÇXÁXÔ1NÔOÐOÜ˜Ð4Ô5ð
 —|‘|“~ˆHØÐÜ$Ð%BÓCÐCÜ—?‘?¬^ÀÔ-JÔKÐKÜ˜˜[×8Ñ8Ô9ð —|‘|“~ˆHØÐÜ$Ð%BÓCÐCØ×&Ñ&Ó(ˆGØŸ™›×6Ñ6Ó8ˆIØ)0ˆD×Ñ˜XÑ&Ü—?‘?Ô1BÀ8ÈYÓ1WÔXÐXÜ˜œUŸ\™\Ô*ô
 —?‘?¬n×.CÑ.CÌCÐPSËHÔ.UÔVÐVÜ˜œUŸ^™^Ô,ô
 —?‘?Ü-×4Ñ4¼SÀ»XÔFôð ô �#‹Yœ$ÑÜ—?‘?¨3Ô/Ð/Ü�#‹Yœ#ÑÜ—?‘?¨SÔ1Ð1Ü�#‹Yœ#ÑÜ—?‘?¨#Ô.Ð.Ü�#‹Yœ%ÑÜ—?‘?¨CÔ0Ð0Ü�#‹Yœ'Ñ!Ü—?‘?Ü'¨S¯X©X¸C¿H¹HÔEôð ð ˆ[Ü—?‘?¨4Ô0Ð0Ü˜œTÔ"Ø ˆOØ!Ÿi™i›kò C‘
��UÜ! #¤sÔ+Ü(Ð+JÌ4ÐPSË9È+Ð)VÓWÐWØ'+×';Ñ';¸EÓ'B� Ò$ðCô —?‘?¸ÔIÐIÜ˜œd¤E˜]Õ+Ü�3‹x˜1‹}ØÑ'Ü! (¬E×,>Ñ,>Ô?Ø#+×#:Ñ#:Ó#<˜Ü% h´·±Ô?Ü,Ø5´d¸8³n×6MÑ6MÐ5NÐOóð ð !)× 7Ñ 7Ó 9�IÜ! )¬U×-?Ñ-?Ô@Ø$-×$<Ñ$<Ó$>˜	ä! )¬U¯^©^Ô<Ü'Ÿ™¸Ô;Ð;Ü# I¬u¯}©}Ô=Ü'Ÿ™°rÔ:Ð:Ü# I¬u¯©Ô?Ü'Ÿ™¸Ô<Ð<Ü# I¬u×/?Ñ/?Ô@Ü'Ÿ™¸"Ô=Ð=Ü# I¬u×/?Ñ/?Ô@Ü'Ÿ™¸"Ô=Ð=ô -Ð/DÀYÀKÈuÐ-UÓVÐVô —K‘KðFôô
 $Ÿ?™?°bÔ9Ð9äÑ0¨CÔ0Ô0Ü—‘´°S³	Ô:Ð:ÜÑ1¨SÔ1Ô1Ü—‘¬t°C«yÔ9Ð9ÜÑ3¨sÔ3Ô3Ü—‘´°c³Ô;Ð;ÜÑ1¨SÔ1Ô1Ü—‘´$°s³)Ô<Ð<ÜÓB¸cÔBÔBð �Øò G�AÜ! !¤U§\¡\Ô2ØŸ™¤n×&;Ñ&;ÄCÈÃFÔ&KÕLÜ˜a›¤CšØŸ™¤n×&;Ñ&;À1Ô&EÕFð	Gô
  —‘°6Ô:Ð:ÜÑ@¸CÔ@Ô@Ü—‘ØTWÖ"XÈqÔ#3×#:Ñ#:Ä3ÀqÃ6Ö#JÒ"Xôð ô Ó9°SÔ9Ô9à�Øò G�AÜ! !¤U§X¡X§]¡]Ô3ØŸ™¤n×&;Ñ&;ÀAÇFÁFÔ&KÕLÜ˜a›¤CšØŸ™¤n×&;Ñ&;À1Ô&EÕFð	Gô
  —‘°6Ô:Ð:ÜÓ;°sÔ;Ô;à�Øò K�AÜ! !¤U§X¡X§]¡]Ô3ØŸ™Ô&6×&=Ñ&=ÀaÇfÁfÔ&MÕNÜ# A¤uÕ-ØŸ™Ô&6×&=Ñ&=ÀqÔ&IÕJð	Kô
  —‘°VÔ<Ð<ÜÓ:°cÔ:Ô:à�Øò I�AÜ! !¤U§X¡X§]¡]Ô3ØŸ™¤o×&<Ñ&<ÀQÇVÁVÔ&LÕMÜ# A¤tÕ,ØŸ™¤o×&<Ñ&<ÀQÔ&GÕHð	Iô
  —‘°FÔ;Ð;ÜÑ?¸3Ô?Ô?à�	Øò B�AØ—t‘t˜zÒ)Ü,Ø]óð ð ×$Ñ$¤^¸¿¹Ô%@ÕAðBô  —‘°)Ô<Ð<ÜÑ?¸3Ô?Ô?ÄCñ HØNQôHô Eð $&Ð Ø"%ò =�JØ&(�OØ *ò O˜ØŸ7™7 jÒ0Ü"0Ø aó#ð ð (×.Ñ.¬~À4Ç9Á9Ô/MÕNðOð %×+Ñ+¨OÕ<ð=ô  —‘Ð9IÔJÐJÜÑMÈÔMÔMòVô  —‘Ü(,¬SÐ1OÐQTÓ-UÓ(Vôð ô ÓIÀSÔIÔIä—‘ØKNÖOÀa¤°A·J±J³LÖ AÒOôð ô ó ØORôô ôVô  —‘Ü(,¬SÐ1OÐQTÓ-UÓ(Vôð ô ñ ØQTôô ô  —‘ÀcÖ4JÀ´T¸!µWÒ4JÔKÐKÜñ àôô ô
  —‘ÈÖ6LÀ1´t¸AµwÒ6LÔMÐMä$Ø<ÈsÖ=SÈ!¼dÀ1½gÒ=SÐ<TÐUóð ô ˜œUŸ[™[Ô)Ü—?‘?Ô2KÈCÑ2PÔQÐQÜ˜œUŸ\™\Ô*Ü—?‘?¬V¸¿¹ÈÏÉÔ-SÔTÐTÜ˜œU×0Ñ0Ô1Ü—?‘?Ü!BÀ3Ñ!Gôð ô ˜œUŸ\™\Ô*Ü—?‘?Ô-GÈÑ-LÔMÐMÜ˜œUŸX™X×2Ñ2Ô3à—‘ Ô/Ø—O‘O NÔ3ä$Ø7¸°uð =>ð >óð ð !-¬S°×1AÑ1AÓ-BÐ,CÐDˆOØ03ˆD×Ñ˜_Ñ-ØŸ	™	›×2Ñ2Ó4ˆIÜ—?‘?Ü/°ÀÓKôð ô ˜SÔ!Ø ,¬S°×1AÑ1AÓ-BÐ,CÐDˆOØ03ˆD×Ñ˜_Ñ-Ü,¬T°#«YÓ7ˆIÜ—?‘?Ü/°ÀÓKôð ô ˜œeŸj™j×3Ñ3´U·Z±Z×5SÑ5SÐTÔUÜ—?‘?¨t×/FÑ/FÀsÓ/KÔLÐLä Ø-¬d°3«i¨[Ð8NÈxÈjÐYóð ÷[	;ñ ;üòx #YùòP  Pùò. 5Kùò 7Mùò >Ts2   Ä!AFè&AF÷1!AF"úAF'û AF,û$AF1
ÁFAFc                 ó¬   — || j                   j                  v rt        d|›d�«      ‚t        |«      | j                   j                  |<   t	        |¬«      S )Núname z already in tensor_valuesrS  )r‘  r;  r¨   rä   rU   ©r�   rH  r¾  s      ri   r¦  z-GraphModuleSerializer.serialize_tensor_outputC  sQ   € Ø�4×#Ñ#×1Ñ1Ñ1Ü  5¨¨Ð0IÐ!JÓKÐKÜ/DÀXÓ/Nˆ×Ñ×&Ñ& tÑ,Ü 4Ô(Ð(rh   c                 óÀ   — || j                   j                  v rt        d|›d�«      ‚t        |«      | j                   j                  |<   t	        j
                  |¬«      S )Nr¸  z already in sym_int_valuesrM  )r‘  r<  r¨   rÌ   rT   rË   r¹  s      ri   r§  z.GraphModuleSerializer.serialize_sym_int_outputI  sW   € Ø�4×#Ñ#×2Ñ2Ñ2Ü  5¨¨Ð0JÐ!KÓLÐLÜ0AÀ(Ó0Kˆ×Ñ×'Ñ'¨Ñ-Ü×$Ñ$¨TÔ2Ð2rh   c                 óÀ   — || j                   j                  v rt        d|›d�«      ‚t        |«      | j                   j                  |<   t	        j
                  |¬«      S )Nr¸  z already in sym_float_valuesrM  )r‘  r>  r¨   rÒ   rR   rË   r¹  s      ri   Úserialize_sym_float_outputz0GraphModuleSerializer.serialize_sym_float_outputO  sW   € Ø�4×#Ñ#×4Ñ4Ñ4Ü  5¨¨Ð0LÐ!MÓNÐNÜ2EÀhÓ2Oˆ×Ñ×)Ñ)¨$Ñ/Ü×&Ñ&¨tÔ4Ð4rh   c                 óÀ   — || j                   j                  v rt        d|›d�«      ‚t        |«      | j                   j                  |<   t	        j
                  |¬«      S )Nr¸  z already in sym_bool_valuesrM  )r‘  r=  r¨   rÙ   rN   rË   r¹  s      ri   Úserialize_sym_bool_outputz/GraphModuleSerializer.serialize_sym_bool_outputU  sW   € Ø�4×#Ñ#×3Ñ3Ñ3Ü  5¨¨Ð0KÐ!LÓMÐMÜ1CÀHÓ1Mˆ×Ñ×(Ñ(¨Ñ.Ü×%Ñ%¨dÔ3Ð3rh   Úspecc                 óh  — t         j                  d|«       |j                  t        j                  j
                  k(  �r$t        |j                  t        j                  «      �rÆt        |j                  j                  «      t        u r,t        j                  |j                  j                  ¬«      }�n@t        |j                  j                  «      t        u r+t        j                  |j                  j                  ¬«      }nðt        |j                  j                  «      t        u r+t        j                  |j                  j                  ¬«      }n t        |j                  j                  «      t         u r+t        j                  |j                  j                  ¬«      }nP|j                  j                  €t        j                  d¬«      }n#t#        d|j                  j                  › d	�«      ‚t%        j                  t'        |j                  j(                  |¬
«      ¬«      S t%        j                  t+        | j-                  |j                  «      ¬«      ¬«      S |j                  t        j                  j.                  k(  r¯|j0                  €t3        d«      ‚t        |j                  t        j4                  «      s+t3        dt        |j                  «      j6                  › �«      ‚t%        j                  t9        t5        |j                  j(                  ¬«      |j0                  ¬«      ¬«      S |j                  t        j                  j:                  k(  rÑ|j0                  €t3        d«      ‚t        |j                  t        j4                  «      s+t3        dt        |j                  «      j6                  › �«      ‚|j<                  €t3        d«      ‚t%        j                  t?        t5        |j                  j(                  ¬«      |j0                  |j<                  ¬«      ¬«      S |j                  t        j                  j@                  k(  r¯|j0                  €t3        d«      ‚t        |j                  t        j4                  «      s+t3        dt        |j                  «      j6                  › �«      ‚t%        j                  tC        t5        |j                  j(                  ¬«      |j0                  ¬«      ¬«      S |j                  t        j                  jD                  k(  rÄ|j0                  €t3        d«      ‚t        |j                  t        jF                  «      s+t3        dt        |j                  «      j6                  › �«      ‚t%        j                  tI        tG        |j                  j(                  |j                  jJ                  ¬«      |j0                  ¬«      ¬«      S |j                  t        j                  jL                  k(  r�t        |j                  t        jN                  «      s+t3        dt        |j                  «      j6                  › �«      ‚t%        j                  tQ        tO        |j                  j(                  ¬«      ¬«      ¬ «      S t3        d!|› �«      ‚)"Nz[serialize_input_spec] %sr¤   rÔ   rK  rÎ   TrW  zUnhandled constant input z to serialize©rH  rn   )Úconstant_input©r²  )Ú
user_inputz,spec.target should not be None for PARAMETERúexpected TensorArgument, got rS  ©r²  Úparameter_name)Ú	parameterz)spec.target should not be None for BUFFERz-spec.persistent should not be None for BUFFER)r²  Úbuffer_nameÚ
persistent)r  z2spec.target should not be None for CONSTANT_TENSOR)r²  Útensor_constant_name)Útensor_constantz-spec.target should not be None for CUSTOM_OBJz expected CustomObjArgument, got rŸ  )r²  r¶  )Ú
custom_objúexpected TokenArgument, got ©ÚtokenúUnknown argument kind: ))r  r¤  rÉ  r©  Ú	InputKindÚ
USER_INPUTrt   r²  ÚConstantArgumentrš   rn   rÉ   r,   rË   r×   r(  rÐ   rc   r6   r8   rH  rZ   Úserialize_argument_specÚ	PARAMETERr3  r¨   rU   rd   r;   ÚBUFFERrÊ  r7   ÚCONSTANT_TENSORr<   Ú
CUSTOM_OBJr-   r9   r   ÚTOKENrW   r:   )r�   r¿  Úconstant_specs      ri   Úserialize_input_specz*GraphModuleSerializer.serialize_input_spec[  s½  € Ü�	‰	Ð-¨tÔ4Ø�9‰9œŸ™×/Ñ/Ó/Ü˜$Ÿ(™(¤B×$7Ñ$7Õ8Ü˜Ÿ™Ÿ™Ó'¬3Ñ.Ü$1×$8Ñ$8ÀÇÁÇÁÔ$O’MÜ˜$Ÿ(™(Ÿ.™.Ó)¬TÑ1Ü$1×$8Ñ$8ÀÇÁÇÁÔ$P‘MÜ˜$Ÿ(™(Ÿ.™.Ó)¬SÑ0Ü$1×$8Ñ$8À4Ç8Á8Ç>Á>Ô$R‘MÜ˜$Ÿ(™(Ÿ.™.Ó)¬UÑ2Ü$1×$8Ñ$8À$Ç(Á(Ç.Á.Ô$Q‘MØ—X‘X—^‘^Ð+Ü$1×$8Ñ$8ÀÔ$F‘Mä(Ø3°D·H±H·N±NÐ3CÀ=ÐQóð ô !×'Ñ'Ü#;Ø!ŸX™XŸ]™]°-ô$ôð ô !×'Ñ'Ü,°×1MÑ1MÈdÏhÉhÓ1WÔXôð ð �Y‰Yœ"Ÿ,™,×0Ñ0Ò0Ø�{‰{Ð"Ü$Ð%SÓTÐTÜ˜dŸh™h¬×(9Ñ(9Ô:Ü$Ø3´D¸¿¹³N×4KÑ4KÐ3LÐMóð ô ×#Ñ#Ü.Ü&¨D¯H©H¯M©MÔ:Ø#'§;¡;ôôð ð �Y‰Yœ"Ÿ,™,×-Ñ-Ò-Ø�{‰{Ð"Ü$Ð%PÓQÐQÜ˜dŸh™h¬×(9Ñ(9Ô:Ü$Ø3´D¸¿¹³N×4KÑ4KÐ3LÐMóð ð �‰Ð&Ü$Ð%TÓUÐUÜ×#Ñ#Ü(Ü&¨D¯H©H¯M©MÔ:Ø $§¡Ø#Ÿ™ôôð ð �Y‰Yœ"Ÿ,™,×6Ñ6Ò6Ø�{‰{Ð"Ü$ØHóð ô ˜dŸh™h¬×(9Ñ(9Ô:Ü$Ø3´D¸¿¹³N×4KÑ4KÐ3LÐMóð ô ×#Ñ#Ü 9Ü&¨D¯H©H¯M©MÔ:Ø)-¯©ô!ôð ð �Y‰Yœ"Ÿ,™,×1Ñ1Ò1Ø�{‰{Ð"Ü$Ð%TÓUÐUÜ˜dŸh™h¬×(<Ñ(<Ô=Ü$Ø6´t¸D¿H¹H³~×7NÑ7NÐ6OÐPóð ô ×#Ñ#Ü/Ü)Ø!ŸX™XŸ]™]°d·h±h×6HÑ6Hôð %)§K¡Kô	ôð ð �Y‰Yœ"Ÿ,™,×,Ñ,Ò,Ü˜dŸh™h¬×(8Ñ(8Ô9Ü$Ø2´4¸¿¹³>×3JÑ3JÐ2KÐLóð ô ×#Ñ#Ü$Ü%¨4¯8©8¯=©=Ô9ôôð ô !Ð#:¸4¸&Ð!AÓBÐBrh   c                 ó6  — t         j                  d|«       |j                  t        j                  j
                  k(  r9t        j                  t        | j                  |j                  «      ¬«      ¬«      S |j                  t        j                  j                  k(  r�t        |j                  t        j                  «      s+t        dt        |j                  «      j                   › �«      ‚t        j                  t#        t        |j                  j$                  ¬«      ¬«      ¬«      S |j                  t        j                  j&                  k(  r¯|j(                  €t        d«      ‚t        |j                  t        j                  «      s+t        dt        |j                  «      j                   › �«      ‚t        j                  t+        t        |j                  j$                  ¬«      |j(                  ¬«      ¬	«      S |j                  t        j                  j,                  k(  r¯|j(                  €t        d
«      ‚t        |j                  t        j                  «      s+t        dt        |j                  «      j                   › �«      ‚t        j                  t/        t        |j                  j$                  ¬«      |j(                  ¬«      ¬«      S |j                  t        j                  j0                  k(  r¯|j(                  €t        d«      ‚t        |j                  t        j                  «      s+t        dt        |j                  «      j                   › �«      ‚t        j                  t3        t        |j                  j$                  ¬«      |j(                  ¬«      ¬«      S |j                  t        j                  j4                  k(  r¯|j(                  €t        d«      ‚t        |j                  t        j                  «      s+t        dt        |j                  «      j                   › �«      ‚t        j                  t7        t        |j                  j$                  ¬«      |j(                  ¬«      ¬«      S |j                  t        j                  j8                  k(  r¯|j(                  €t        d«      ‚t        |j                  t        j                  «      s+t        dt        |j                  «      j                   › �«      ‚t        j                  t;        t        |j                  j$                  ¬«      |j(                  ¬«      ¬«      S |j                  t        j                  j<                  k(  r�t        |j                  t        j>                  «      s+t        dt        |j                  «      j                   › �«      ‚t        j                  tA        t?        |j                  j$                  ¬«      ¬«      ¬«      S t        d|› �«      ‚)Nz[serialize_output_spec] %srÃ  )Úuser_outputrÅ  rS  )Úloss_outputz2spec.target should not be None for BUFFER_MUTATION)r²  rÉ  )Úbuffer_mutationz5spec.target should not be None for PARAMETER_MUTATIONrÆ  )Úparameter_mutationz8spec.target should not be None for GRADIENT_TO_PARAMETER)Úgradient_to_parameterz9spec.target should not be None for GRADIENT_TO_USER_INPUT)r²  Úuser_input_name)Úgradient_to_user_inputz6spec.target should not be None for USER_INPUT_MUTATION)Úuser_input_mutationrÎ  rÏ  rÑ  )!r  r¤  rÉ  r©  Ú
OutputKindÚUSER_OUTPUTrF   rË   r[   rÕ  r²  ÚLOSS_OUTPUTrt   rU   r¨   rš   rd   r>   rH  ÚBUFFER_MUTATIONr3  r*   ÚPARAMETER_MUTATIONrH   ÚGRADIENT_TO_PARAMETERr0   ÚGRADIENT_TO_USER_INPUTr1   ÚUSER_INPUT_MUTATIONrY   rÚ  rW   rG   )r�   r¿  s     ri   Úserialize_output_specz+GraphModuleSerializer.serialize_output_spec¾  s‹  € Ü�	‰	Ð.°Ô5Ø�9‰9œŸ™×1Ñ1Ò1Ü×$Ñ$Ü*¨t×/KÑ/KÈDÏHÉHÓ/UÔVôð ð �Y‰Yœ"Ÿ-™-×3Ñ3Ò3Ü˜dŸh™h¬×(9Ñ(9Ô:Ü$Ø3´D¸¿¹³N×4KÑ4KÐ3LÐMóð ô ×$Ñ$Ü*¬~À4Ç8Á8Ç=Á=Ô/QÔRôð ð �Y‰Yœ"Ÿ-™-×7Ñ7Ò7Ø�{‰{Ð"Ü$ØHóð ô ˜dŸh™h¬×(9Ñ(9Ô:Ü$Ø3´D¸¿¹³N×4KÑ4KÐ3LÐMóð ô ×$Ñ$Ü 2Ü&¨D¯H©H¯M©MÔ:Ø $§¡ô!ôð ð �Y‰Yœ"Ÿ-™-×:Ñ:Ò:Ø�{‰{Ð"Ü$ØKóð ô ˜dŸh™h¬×(9Ñ(9Ô:Ü$Ø3´D¸¿¹³N×4KÑ4KÐ3LÐMóð ô ×$Ñ$Ü#8Ü&¨D¯H©H¯M©MÔ:Ø#'§;¡;ô$ôð ð �Y‰Yœ"Ÿ-™-×=Ñ=Ò=Ø�{‰{Ð"Ü$ØNóð ô ˜dŸh™h¬×(9Ñ(9Ô:Ü$Ø3´D¸¿¹³N×4KÑ4KÐ3LÐMóð ô ×$Ñ$Ü&=Ü&¨D¯H©H¯M©MÔ:Ø#'§;¡;ô'ôð ð �Y‰Yœ"Ÿ-™-×>Ñ>Ò>Ø�{‰{Ð"Ü$ØOóð ô ˜dŸh™h¬×(9Ñ(9Ô:Ü$Ø3´D¸¿¹³N×4KÑ4KÐ3LÐMóð ô ×$Ñ$Ü'>Ü&¨D¯H©H¯M©MÔ:Ø$(§K¡Kô(ôð ð �Y‰Yœ"Ÿ-™-×;Ñ;Ò;Ø�{‰{Ð"Ü$ØLóð ô ˜dŸh™h¬×(9Ñ(9Ô:Ü$Ø3´D¸¿¹³N×4KÑ4KÐ3LÐMóð ô ×$Ñ$Ü$9Ü&¨D¯H©H¯M©MÔ:Ø$(§K¡Kô%ôð ð �Y‰Yœ"Ÿ-™-×-Ñ-Ò-Ü˜dŸh™h¬×(8Ñ(8Ô9Ü$Ø2´4¸¿¹³>×3JÑ3JÐ2KÐLóð ô ×$Ñ$Ü%Ü%¨4¯8©8¯=©=Ô9ôôð ô !Ð#:¸4¸&Ð!AÓBÐBrh   Úsigc           	      óö   — t         j                  d«       t        |j                  D �cg c]  }| j	                  |«      ‘Œ c}|j
                  D �cg c]  }| j                  |«      ‘Œ c}¬«      S c c}w c c}w )Nz
[serialize_signature]©Úinput_specsÚoutput_specs)r  r¤  r5   rò  rÜ  ró  rî  )r�   rï  r·   s      ri   Úserialize_signaturez)GraphModuleSerializer.serialize_signature$  s^   € Ü�	‰	Ð+Ô,ÜØ?B¿¹ÖO¸!˜×2Ñ2°1Õ5ÒOØAD×AQÑAQÖR¸A˜$×4Ñ4°QÕ7ÒRô
ð 	
ùÚOùÚRs   ©A1ÁA6
rˆ  c                 óà  — t        |t        j                  «      r*t        j                  t        |j
                  ¬«      ¬«      S t        |t        j                  «      r4t        j                  t        j                  |j
                  ¬«      ¬«      S t        |t        j                  «      r4t        j                  t        j                  |j
                  ¬«      ¬«      S t        |t        j                  «      r| j                  |j                  «      S t        |t        j                  «      r5t        j                  t        |j
                  |j                  ¬«      ¬«      S t        d«      ‚)	NrS  r›  rM  r�  rO  rŸ  r¡  ÚTODO)rt   r©  rU   r(   rË   rH  rT   rR   rÔ  r¨  rn   r-   r   r¨   ©r�   rˆ  s     ri   rÕ  z-GraphModuleSerializer.serialize_argument_spec+  sï   € Ü�aœ×*Ñ*Ô+Ü—?‘?¬^ÀÇÁÔ-HÔIÐIÜ˜œ2×,Ñ,Ô-Ü—?‘?¬n×.CÑ.CÈAÏFÉFÔ.SÔTÐTÜ˜œ2×.Ñ.Ô/Ü—?‘?Ô0@×0GÑ0GÐPQ×PVÑPVÔ0WÔXÐXÜ˜œ2×.Ñ.Ô/Ø×'Ñ'¨¯©Ó0Ð0Ü˜œ2×/Ñ/Ô0Ü—?‘?Ü/°Q·V±VÀqÇ{Á{ÔSôð ô ! Ó(Ð(rh   Útreespecc                 ól   ‡ ‡— dt         j                  dd fˆ ˆfd„Št        |t        «      } ‰|«       |S )NÚtsr˜   c           	      óJ  •— | j                   €y | j                   t        u st        j                  | j                   «      rÇt        j                  | j
                     j                  }|‰j                  v re‰j                  |   j                  }|| j
                  j                  k7  r`t        d| j
                  › d| j
                  j                  › d|› d�«      ‚t        | j
                  j                  ¬«      ‰j                  |<   | j                  «       D ]
  } ‰|«       Œ y )Nz%The given TreeSpec's namedtuple type z was found to have field names z6 but somehow previously was found to have field names rµ  )Úfield_names)rš   r   ÚpytreeÚis_namedtuple_classÚSUPPORTED_SERIALIZED_TYPESÚcontextÚserialized_type_namer”  rü  Ú_fieldsrc   rC   Úchildren)rú  r  rü  Úchildr�   Ústore_namedtuple_fieldss       €€ri   r  zIGraphModuleSerializer.serialize_treespec.<locals>.store_namedtuple_fields>  s  ø€ Ø�w‰wˆØØ�w‰wœ*Ñ$¬×(BÑ(BÀ2Ç7Á7Ô(KÜ'-×'HÑ'HØ—J‘Jñ(ç&Ñ&ð %ð (¨4×+JÑ+JÑJØ"&×"AÑ"AØ,ñ#ç!‘kð  ð # b§j¡j×&8Ñ&8Ò8Ü,ØCÀBÇJÁJÀ<ð P=Ø=?¿Z¹Z×=OÑ=OÐ<Pð QTØT_ÐS`Ð`aðcóð ô &°"·*±*×2DÑ2DÔEð ×3Ñ3Ð4HÑIð Ÿ™›ò /�Ù'¨Õ.ñ/rh   )rý  ÚTreeSpecr   rX   )r�   rø  Úserialized_treespecr  s   `  @ri   Úserialize_treespecz(GraphModuleSerializer.serialize_treespec;  s8   ù€ ð	/¬¯©ð 	/¸Dö 	/ô2 -¨XÔ7GÓHÐÙ Ô)Ø"Ð"rh   Úmodule_call_signaturec           	      óŒ  — t         j                  d|«       t        |j                  D �cg c]  }| j	                  |«      ‘Œ c}|j
                  D �cg c]  }| j	                  |«      ‘Œ c}| j                  |j                  «      | j                  |j                  «      |j                  x}r|¬«      S d ¬«      S c c}w c c}w )Nz$[serialize_module_call_signature] %s©r8  r9  Úin_specÚout_specÚforward_arg_names)
r  r¤  rA   r8  rÕ  r9  r  r  r  r  ©r�   r	  rˆ  Únamess       ri   Úserialize_module_call_signaturez5GraphModuleSerializer.serialize_module_call_signature[  sÆ   € ô 	�	‰	Ð8Ð:OÔPÜ"à9N×9UÑ9UöØ45�×,Ñ,¨QÕ/òð :O×9VÑ9VöØ45�×,Ñ,¨QÕ/òð ×+Ñ+Ð,A×,IÑ,IÓJØ×,Ñ,Ð-B×-KÑ-KÓLà#8×#JÑ#JÐJ˜%ÐJ�ô
ð 	
ð RVô
ð 	
ùòùòs   ªB<ÁC
c           	      óÎ   — t         j                  d«       |D �cg c]@  }t        |j                  |j                  r| j                  |j                  «      nd ¬«      ‘ŒB c}S c c}w )Nz
[serialize_module_call_graph]©ÚfqnrÓ  )r  r¤  r@   r  rÓ  r  ©r�   r�  Úentrys      ri   Úserialize_module_call_graphz1GraphModuleSerializer.serialize_module_call_graphm  sa   € ô 	�	‰	Ð3Ô4ð +ö

ð ô Ø—I‘Ið —’ð ×8Ñ8¸¿¹ÔIàöò

ð 
	
ùò 

s   šAA"c                 óâ  — dt         dt        fd„}|j                  dk(  r:t        |j                  t
        j                  j                  gt        «       ¢­«      s8t        d|j                  › dt        |j                  «      j                  › �«      ‚t        |j                  «      }|j                  }t        |«      dk(  rg S |j                  d   } ||j                  «      r_g }t!        |«      D ]8  \  }}| j#                  ||«      }	|j%                  | j'                  |	|«      «       Œ: t)        j*                  |¬	«      gS t        |«      d
k(  r| j-                  |j.                  |«      gS g }
t!        t1        ||«      «      D �]æ  \  }\  }}|€…t        |j2                  t
        j4                  t
        j6                  f«      s+t        dt        |j2                  «      j                  › �«      ‚|
j%                  t)        j*                  d¬«      «       Œ‘t        |t
        j8                  «      r”t        |j2                  t
        j4                  t
        j6                  f«      s+t        dt        |j2                  «      j                  › �«      ‚| j#                  ||«      }	|
j%                  | j-                  |	|«      «       �Œ?t        |t:        «      �rt        |j2                  t
        j<                  «      r2t        |j2                  j?                  «       t
        j6                  «      s+t        dt        |j2                  «      j                  › �«      ‚| jA                  ||«      }g }t!        |«      D ]R  \  }}|€Œ	|€|j.                  › d|› d|› �}	n| j#                  ||«      }	|j%                  | j'                  |	|«      «       ŒT |
j%                  t)        j*                  |¬	«      «       �Œlt        |tB        tD        tF        tH        f«      r5| j#                  ||«      }|
j%                  | j-                  ||«      «       �ŒÁtK        dt        |«      › d|jM                  «       › �«      ‚ |
S )a5  For a given node, return the dataclass representing its output values.

        [NOTE: Multiple outputs] We handle aggregates differently than FX. For
        FX, it looks like:

            x = call_function("multiple_return", ...)
            element0 = call_function(getitem, x, 0)
            foo = call_function("use_output", element0)

        We do not want the intermediate `getitem` call, so our serialized thing looks like:

            element0, element1, element2 = call_function("multiple_return", ...)
            foo = call_function("use_output", element0)

        We want names to be consistent across these two schemes, so that we can
        mostly reuse the names coming from FX. This function computes a mapping from
        the FX representation to our representation, preserving the names.
        r3  r˜   c                 óô   — t        | «      }|j                  }t        |«      dk7  ry|d   j                  }t	        |t
        j                  «      xr( t	        |j                  «       t
        j                  «      S )Nr&   Fr   )	r4  Úreturnsr  Ú	real_typert   ru   r¢  r¡  r§  )r3  r'   r  Úreturn_types       ri   Ú_is_single_tensor_list_returnzNGraphModuleSerializer.serialize_outputs.<locals>._is_single_tensor_list_return‘  sg   € Ü,¨VÓ4ˆFØ—n‘nˆGä�7‹|˜qÒ ØØ! !™*×.Ñ.ˆKÜ˜k¬5¯>©>Ó:ò ¼zØ×*Ñ*Ó,¬e×.>Ñ.>ó@ð rh   r»  zIexpected call_function with OpOverload or registered extension type, got z with r   r  rÁ  r&   z)expected OptionalType or TensorType, got TrW  z/expected ListType with TensorType element, got r  r‹  zUnhandled output type z from node )'r   r×   ry   rt   r3  ru   rv   rw   r2  r¨   rš   rd   r4  r  r  r£  rÃ  rÄ  rq  r¦  r(   rË   rÛ  rH  r+  r  r   r§  r¥  rA  r¢  r¡  r	  rÉ   rS   rÐ   rQ   rt  Úformat_node)r�   r¹   r  r'   r  r¾  rÅ  r€  r£  rH  Úoutput_argumentsÚreturn_schemar  r¯  rû  ÚmÚuser_node_names                    ri   rÞ  z'GraphModuleSerializer.serialize_outputs}  sõ  € ð(		´#ð 		¼$ó 		ð �G‰G�Ò&ÜØ—‘œeŸj™j×3Ñ3ÐTÔ6QÓ6SÑTôô !ðØ—w‘w�i˜v¤d¨4¯;©;Ó&7×&@Ñ&@Ð%AðCóð ô
 )¨¯©Ó5ˆØ—.‘.ˆäˆw‹<˜1ÒØˆIà—9‘9˜UÑ#ˆñ )¨¯©Ô5àˆKÜ& xÓ0ò M‘	��TØ×6Ñ6°t¸SÓA�Ø×"Ñ" 4×#?Ñ#?ÀÀdÓ#KÕLðMô —O‘O¨{Ô;Ð<Ð<Ü�‹\˜QÒØ×)Ñ)¨$¯)©)°XÓ>Ð?Ð?ð ÐÜ*3´C¸À'Ó4JÓ*Kó 0	Ñ&ˆCÑ&�$˜Øˆ|Ü!Ø!×+Ñ+¬e×.@Ñ.@Ä%×BRÑBRÐ-Sôô )ØCÄDÈ×I`ÑI`ÓDa×DjÑDjÐCkÐlóð ð
 !×'Ñ'¬¯©ÀÔ(EÕFÜ˜D¤%§,¡,Ô/Ü!Ø!×+Ñ+¬e×.@Ñ.@Ä%×BRÑBRÐ-Sôô )ØCÄDÈ×I`ÑI`ÓDa×DjÑDjÐCkÐlóð ð ×6Ñ6°t¸SÓA�Ø ×'Ñ'¨×(=Ñ(=¸dÀDÓ(IÖJÜ˜D¤$Õ'ô ˜}×6Ñ6¼¿¹ÔGÜ"Ø%×/Ñ/×>Ñ>Ó@Ä%×BRÑBRôô )ØIÌ$È}×OfÑOfÓJg×JpÑJpÐIqÐróð ð !×6Ñ6°t¸SÓA�	Ø�Ü% d›Oò G‘D�A�qØ�yØ Ø Ð(Ø"&§)¡) ¨H°S°E¸¸1¸#Ð>™à#×>Ñ>¸yÈ!ÓL˜Ø—K‘K × <Ñ <¸TÀ1Ó EÕFðGð !×'Ñ'¬¯©À4Ô(HÖIÜ˜D¤3¬´´xÐ"@ÔAØ!%×!@Ñ!@ÀÀsÓ!K�Ø ×'Ñ'¨×(=Ñ(=¸nÈdÓ(SÖTä Ø,¬T°$«Z¨L¸ÀD×DTÑDTÓDVÐCWÐXóð ð]0	ðd  Ðrh   c                 ó,  — |j                   d   }t        |t        «      �r2g }t        |«      D �]  \  }}| j	                  ||«      }t        |t
        «      r·g }t        |«      D ]�  \  }}	t        |	t        j                  «      st        dt        |	«      › d�«      ‚|€|j                  › d|› d|› �}
n| j                  ||«      }
|j                  | j                  |
|	«      «       Œƒ |j                  t        j                  |¬«      «       Œà|�|j                  n|j                  › d|› �}
|j                  | j!                  |
|«      «       �Œ" |S t        |t"        «      r–g }|j%                  «       D ]j  \  }}t        |t        j                  «      st        dt        |«      › d�«      ‚| j                  ||«      }
|j                  | j                  |
|«      «       Œl t        j                  |¬«      gS | j!                  |j                  |«      gS )zN
        For serializing HOO outputs since HOOs do not have a schema.
        r  z Serialize list output with type z nyir  r‹  rÁ  )r£  rt   r©   rÃ  r	  rA  ru   r¥  rc   rš   rH  rÄ  rq  r¦  r(   rË   rÛ  r  rm   )r�   r¹   r¾  r9  rû  Úelement_meta_valr  ÚtensorsÚjr!  rH  rÅ  r€  r£  s                 ri   rê  z+GraphModuleSerializer.serialize_hoo_outputs÷  s  € ð —9‘9˜UÑ#ˆä�h¤Õ&ØˆGÜ'0°Ó':ó RÑ#�Ð#Ø ×6Ñ6°t¸QÓ?�	ÜÐ.´Ô5à �GÜ )Ð*:Ó ;ò 
N™˜˜1Ü)¨!¬U¯\©\Ô:Ü"0Ø"BÄ4ÈÃ7À)È4Ð Pó#ð ð %Ð,Ø&*§i¡i [°¸¸¸1¸Q¸CÐ#@™Dà#'×#BÑ#BÀ9ÈaÓ#P˜DØŸ™ t×'CÑ'CÀDÈ!Ó'LÕMð
Nð —N‘N¤8§?¡?¸gÔ#FÕGð
 %Ð0ð "Ÿšà $§	¡	˜{¨(°1°#Ð6ð ð —N‘N 4×#8Ñ#8¸Ð?OÓ#PÖQð3Rð6 ˆNÜ˜¤$Ô'ØˆKà%Ÿ^™^Ó-ò M‘	��TÜ! $¬¯©Ô5Ü(Ø:¼4À»:¸,ÀdÐKóð ð ×6Ñ6°t¸SÓA�Ø×"Ñ" 4×#?Ñ#?ÀÀdÓ#KÕLðMô —O‘O¨{Ô;Ð<Ð<à×)Ñ)¨$¯)©)°XÓ>Ð?Ð?rh   rH  r¾  c                 ó¨  — |€t        j                  d¬«      S t        |t        j                  «      r&t        j                  | j                  ||«      ¬«      S t        |t        t        j                  f«      r&t        j                  | j                  ||«      ¬«      S t        |t        t        j                  f«      rAt        |t        «      rt        d«      ‚t        j                  | j                  ||«      ¬«      S t        |t        t        j                  f«      r&t        j                  | j                  ||«      ¬«      S t!        d|› �«      ‚)	NTrW  r›  rQ  z1meta_val should not be bool when returning SymIntr�  rO  zUnable to serialize output )r(   rË   rt   ru   r¥  r¦  r×   rM   r¾  rÉ   rS   r¨   r§  rÐ   rQ   r¼  rc   r¹  s      ri   rÛ  z&GraphModuleSerializer.serialize_output)  s  € àÐÜ—?‘?¨4Ô0Ð0Ü�h¤§¡Ô-ä—?‘?Ø×6Ñ6°t¸XÓFôð ô ˜¤4¬¯©Ð"7Ô8ä—?‘?Ø ×:Ñ:¸4ÀÓJôð ô ˜¤3¬¯©Ð"5Ô6ä˜(¤DÔ)Ü$ØGóð ô —?‘?Ø×8Ñ8¸¸xÓHôð ô ˜¤5¬%¯.©.Ð"9Ô:ä—?‘?Ø!×<Ñ<¸TÀ8ÓLôð ô
 Ð:¸8¸*ÐEÓFÐFrh   c                 ó¨  — |j                   d   }i }|j                  D ]L  }|j                  t        j                  urt        d|› d|› d�«      ‚|j                  ||j                  d   <   ŒN t        |«      D ]  \  }}||vsŒ|j                  › d|› �||<   Œ  g }t        |«      D ])  \  }}	|j                  | j                  ||   |	«      «       Œ+ |S )Nr  z
User node z of z is incorrectr&   r  )r£  r  r3  r×  rØ  r¨   rH  r¯  rÃ  rq  r¦  )
r�   r¹   r¾  Úidx_to_namer  r€  r‹  Úarg_listrû  r$  s
             ri   Ú_handle_getitem_usersz+GraphModuleSerializer._handle_getitem_usersI  sð   € Ø—9‘9˜UÑ#ˆàˆØ—J‘Jò 	2ˆDØ�{‰{¤(×"2Ñ"2Ñ2Ü$ z°$°°t¸D¸6ÀÐ%OÓPÐPà(,¯	©	ˆK˜Ÿ	™	 !™Ò%ð		2ô   Ó)ò 	?‰FˆC�ð ˜+Ò%à&*§i¡i [°¸¸Ð#>�˜CÒ ð	?ð ˆÜ#,¨XÓ#6ò 	ÑˆAÐØ�O‰Oà×,Ñ,¨[¸©^Ð=MÓNõð	ð ˆrh   Úgraph_modulec                 ój  — t        |t        j                  j                  «      s!t	        dt        |«      j                  › �«      ‚t        j                  d|j                  d¬«      «       |j                  j                  D ]"  }	  t        | d|j                  › �«      |«       Œ$ t'        | j(                  j*                  | j(                  j                  | j(                  j,                  | j(                  j.                  | j(                  j0                  | j(                  j2                  | j(                  j4                  | j(                  j6                  | j(                  j8                  ¬	«	      S # t        $ r:}t        d|› d|j!                  «       › dt#        j$                  «       › �«      |‚d }~ww xY w)
Nzexpected GraphModule, got z[serialize_graph]

%sF)Úprint_outputÚhandle_zFailed serializing node z in graph: ú
 Original exception )	r8  r:  r;  r<  r>  r=  r@  r9  r?  )rt   ru   r°  r4   r¨   rš   rd   r  r¤  Úprint_readablerà  r:  rR  ry   r  rc   r  Ú	tracebackÚ
format_excr2   r‘  r8  r;  r<  r>  r=  r@  r9  r?  )r�   r,  r¹   r  s       ri   rš  z%GraphModuleSerializer.serialize_graphd  sˆ  € Ü˜,¬¯©×(<Ñ(<Ô=Ü Ø,¬T°,Ó-?×-HÑ-HÐ,IÐJóð ô 	�	‰	Ø% |×'BÑ'BÐPUÐ'BÓ'Vô	
ð !×&Ñ&×,Ñ,ò 	ˆDðØ2”˜ ¨¯© yÐ1Ó2°4Õ8ð	ô Ø×#Ñ#×*Ñ*Ø×"Ñ"×(Ñ(Ø×*Ñ*×8Ñ8Ø×+Ñ+×:Ñ:Ø!×-Ñ-×>Ñ>Ø ×,Ñ,×<Ñ<Ø"×.Ñ.×@Ñ@Ø×$Ñ$×,Ñ,Ø$(×$4Ñ$4×$LÑ$Lô

ð 
	
øô ò Ü$Ø.¨t¨f°KÀ×@PÑ@PÓ@RÐ?SÐSiÔjs×j~Ñj~ó  kAð  jBð  Cóàðûðús   ÂE/Å/	F2Å85F-Æ-F2r£  c                 óÒ   — i }|j                  d«      x}r1t        j                  d|«       	 t        j                  |«      |d<   |S |S # t
        $ r}t        d|› �«      |‚d }~ww xY w)Nr  z%
[serialize_graph_module_metadata] %sz9Failed to serialize custom metadata for graph with error )rp  r  r¤  rí   rî   r  rc   )r�   r£  r  r  r  s        ri   Úserialize_graph_module_metadataz5GraphModuleSerializer.serialize_graph_module_metadata�  sy   € ØˆØ—X‘X˜hÓ'Ð'ˆ6Ð'Ü�I‰IÐ>ÀÔGðÜ $§
¡
¨6Ó 2��H‘ð ˆ
ˆsˆ
øô ò Ü$ØOÐPQÈsÐSóàðûðús   ­A	 Á		A&ÁA!Á!A&c                 ó  — t         j                  d«       | j                  |«      }t        || j	                  | j
                  «      | j                  | j                  «      | j                  |j                  «      | j                  ¬«      S )Nz
[serialize])rà  rÓ  r�  ru  r”  )r  r¤  rš  r4   rô  rŽ  r  r�  r5  r£  r”  )r�   r,  rà  s      ri   r]   zGraphModuleSerializer.serializeŽ  ss   € Ü�	‰	�/Ô"Ø×$Ñ$ \Ó2ˆäØØ×.Ñ.¨t×/CÑ/CÓDØ"×>Ñ>¸t×?UÑ?UÓVØ×9Ñ9¸,×:KÑ:KÓLØ'+×'FÑ'Fô
ð 	
rh   rl   )Erd   re   rf   r©  ÚExportGraphSignaturerA  r@   rŽ   r	   r˜  ru   r°  rD   r¬  r³  r(  r¹  r  r  r	  rÄ  r  rÜ  r   r   r  r-   rª  rB   rÚ  rÝ  rã  r×   r<  r>  r@  rB  r(   r¨  rU   r¦  rT   r§  rR   r¼  r¾  r6   rÜ  rF   rî  r5   rô  ÚArgumentSpecrÕ  rý  r  r  rA   r  r  rÞ  rê  rÛ  r+  r4   r2   rš  r5  r]   rg   rh   ri   r^   r^   ¼  s�  „ ð
Gà×0Ñ0ð
Gð   × 2Ñ 2Ñ3ó
Gð ñ%ó ð%ð4 u§x¡x§}¡}ó 4ð:X %§(¡(§-¡-ó Xð$	<¨Có 	<ðO/¨¯©¯©ó O/òb5ð°E·H±H·M±MÀDÑ4Hó ð"¸ó "ð8 u§x¡x§}¡}ð 8¸¸cÀ3¸h¹ó 8ðt
Ø˜jÑ)¨DÑ0ð
à	ˆd�3˜�8‰nÑ	 Ñ	$ó
ð
Ø!×3Ñ3ð
à	ó
ð°4¸Ñ3Fó ð, ñ	1àð1ð
 
ˆmÑ	ó1ðf°D¸Ñ4Gó ð,A¨dó Að
 Tó 
ð
 tó 
ð
 dó 
ñD¨S°4©Zð DÀ8ó DðL
)¸ó )ð3¸.ó 3ð5Ð<Ló 5ð4¸>ó 4ðaC¨¯©ð aC¸)ó aCðFdC¨"¯-©-ð dC¸Jó dCðL
 r×'>Ñ'>ð 
À>ó 
ð)¨¯©ð )¸Xó )ð #¨6¯?©?ð #¸só #ð@
Ø%'×%;Ñ%;ð
à	ó
ð$
Ø!% b×&8Ñ&8Ñ!9ð
à	ˆoÑ	ó
ð x  e§h¡h§m¡mð x ¸¸X¹ó x ðt0@¨%¯(©(¯-©-ð 0@¸DÀ¹Nó 0@ðdG Sð G°Cð G¸Hó Gð@¨%¯(©(¯-©-ð ¸DÀÑ<Pó ð6
¨E¯H©H×,@Ñ,@ð 
ÀUó 
ð:°D¸¸c¸±Nó ð

 e§h¡h×&:Ñ&:ð 

¸{ô 

rh   r^   )Ú	metaclassc                   ól   — e Zd Zdefdeeef   dz  defd„Zddddœdej                  de
d	e
d
e
def
d„Zy)r_   NÚopset_versionrÿ   c                 óÌ   — i | _         |r| j                   j                  |«       d| j                   vr+t        j                  j	                  «       | j                   d<   || _        y ©NÚaten)r;  Úupdateru   rª  Ú_get_max_operator_versionrÿ   )r�   r;  rÿ   s      ri   rŽ   z"ExportedProgramSerializer.__init__�  sV   € ð
 .0ˆÔÙØ×Ñ×%Ñ% mÔ4Ø˜×+Ñ+Ñ+Ü).¯©×)KÑ)KÓ)MˆD×Ñ˜vÑ&à.ˆÕrh   T©Úserialize_state_dictÚserialize_constantsÚserialize_example_inputsr~   rB  rC  rD  r˜   c          
      ó’  — |j                  «        t        |j                  |j                  «      }|j	                  |j
                  «      }t        |j                  «      }|j                  j                  «       }|j                  j                  «       D ]  \  }	}
|	|v rt        d|	›d�«      ‚|
||	<   Œ t        || j                  |t        t         d   t         d   ¬«      |j"                  D �cg c]  }|j$                  ‘Œ c}t&        j(                  |j*                  ¬«      }t-        |t/        |j1                  «       «      «       t3        |j4                  d¬«      }d	}|rt7        || j8                  «      }d	}|rt7        || j8                  «      }d	}|r t7        |j:                  | j8                  «      }t=        ||||«      S c c}w )
zS
        Args:
            exported_program: Exported Program to serialize
        zconstant name z already exists in constantsr   r&   )ÚmajorÚminor©r,  r;  r*  Úschema_versionÚ	verifiersÚtorch_versionÚguards_codeF)Úin_placerh   )Úvalidater^   rŽ  r�  r]   r,  r.  r*  r’  Úcopyr€   rm   r¨   r/   r;  rL   rK   rJ  Údialectru   Ú__version__Ú_guards_codeÚcanonicalizerŠ   rk  r%   r   r	  rÿ   r�   r…   )r�   r~   rB  rC  rD  Úgm_serializerÚserialized_graph_moduleÚserialized_range_constraintsr€   ÚnrÚ   rp   Úserialized_epÚnew_state_dictÚserialized_state_dictÚserialized_constantsÚserialized_example_inputss                    ri   r]   z#ExportedProgramSerializer.serializeª  sÏ  € ð 	×!Ñ!Ô#ä-Ø×,Ñ,Ð.>×.PÑ.Pó
ˆð #0×"9Ñ"9Ð:J×:WÑ:WÓ"XÐÜ'BØ×.Ñ.ó(
Ð$ð %2×$=Ñ$=×$BÑ$BÓ$Dˆ	Ø$×.Ñ.×4Ñ4Ó6ò 	‰DˆAˆqØ�I‰~Ü$ ~°a°UÐ:VÐ%WÓXÐXØˆI�aŠLð	ô
 (Ø0Ø×,Ñ,Ø:Ü(Ü$ QÑ'Ü$ QÑ'ôð +;×*DÑ*DÖE Q�q—y“yÒEÜ×+Ñ+Ø(×5Ñ5ô
ˆô 	�]¤C¨	¯©Ó(8Ó$9Ô:ô 6Ø×'Ñ'°%ô
ˆð !$ÐÙÜ$<Ø × 4Ñ 4ó%Ð!ð  #ÐÙÜ#;Ø˜4×/Ñ/ó$Ð ð %(Ð!Ù#Ü(@Ø ×/Ñ/°×1EÑ1Eó)Ð%ô "ØØ!Ø Ø%ó	
ð 	
ùò= Fs   Ã/G)rd   re   rf   ÚDEFAULT_PICKLE_PROTOCOLr  r(  rÉ   rŽ   r©  r/   r×   r…   r]   rg   rh   ri   r_   r_   ›  sz   „ ð 04Ø6ñ/à˜C ˜H‘~¨Ñ,ð/ð ó/ð" &*Ø$(Ø)-òJ
à×,Ñ,ðJ
ð #ð	J
ð
 "ðJ
ð #'ðJ
ð 
ôJ
rh   r_   c                   ó²  — e Zd Zej                   G d„ d«      «       ZdEd„Zeded   fd„«       Z	de
fd„Zde
fd	„Z	 dFd
e
deez  ez  dz  dej"                  fd„Zdedeej&                  z  fd„Zdedeej,                  z  fd„Zdedeej0                  z  fd„Zdedefd„Zdedej:                  fd„Zdej@                  jB                  ez  dz  fd„Z"de#dej@                  jF                  fd„Z$de!de%ddfd„Z&de'dejN                  fd„Z(de)dejR                  fd„Z*de+dejX                  fd „Z-	 	 dGd!e.d"e/e
ej`                  f   e1z  d#e/e
e2f   e1z  d$e3e3ej`                  d%f   e/e
e2f   f   e1z  dz  d&e/e
e4jj                  f   dz  defd'„Z6d(e
d)ej@                  jB                  fd*„Z7d+„ Z8de!fd,„Z9d-e:e;   fd.„Z<d/e=de2fd0„Z>d/e?de2fd1„Z@d2„ ZAde!d)ej@                  jB                  fd3„ZBde!d)ej@                  jB                  fd4„ZCd)ej@                  jB                  d5eDeEz  eFz  d6ed7e/e
e2f   fd8„ZGd)ej@                  jB                  d7e/e
e2f   fd9„ZHde!d)ej@                  jB                  ddfd:„ZId;e/e
e
f   de/e
e2f   fd<„ZJd=e:e/e
e2f      dz  de:eK   dz  fd>„ZLd?e=dejš                  fd@„ZNdAeOdejž                  fdB„ZPdCe:eQ   de:ej¢                     fdD„ZRy)Hr`   c                   óV  — e Zd ZU ej                  j
                  ed<   ej                  ed<   e	ej                     ed<   eeej                  f   ed<   eeej                  ej                   j"                  z  f   ed<   eeef   ed<   eeej                  df   eeef   f   dz  ed	<   y)
úGraphModuleDeserializer.Resultr,  rÓ  r�  Únames_to_symbolsr   r€   .Nr�   )rd   re   rf   ru   r°  r4   rƒ   r©  r7  rA  r@   r  r(  r»   rÈ   r¥  rë   rì   r   r©   r   rg   rh   ri   ÚResultr`  ù  s¢   … à—h‘h×*Ñ*Ó*Ø×*Ñ*Ó*Ø × 2Ñ 2Ñ3Ó3Ø˜s E§L¡LÐ0Ñ1Ó1Ø˜˜eŸl™l¨U¯X©X×-?Ñ-?Ñ?Ð?Ñ@Ó@Ø˜Ð3Ð3Ñ4Ó4Ø˜e E§L¡L°#Ð$5Ñ6¸¸SÀ#¸X¹ÐFÑGÈ$ÑNÔNrh   rb  r˜   Nc                 ó¼   — i | _         t        «       | _        t        j                  j                  «       | _        t        j                  j                  «       | _	        y rl   )
Úserialized_name_to_noder‡   Úserialized_name_to_metaru   r°  r2   rà  rë   ÚModuler¸  rŒ   s    ri   rŽ   z GraphModuleDeserializer.__init__	  s8   € ØACˆÔ$Ü07³	ˆÔ$Ü—X‘X—^‘^Ó%ˆŒ
Ü—h‘h—o‘oÓ'ˆ�rh   c              #   óì  K  — | j                   | j                  | j                  | j                  | j                  f}t
        j                  j                  «       | _         t
        j                  j                  «       | _        i | _        t        «       | _        t        «       | _        	 d –— |\  | _         | _        | _        | _        | _        y # |\  | _         | _        | _        | _        | _        w xY w­wrl   )rà  r¸  rd  re  Úunbacked_symbolsru   r°  r2   rë   rf  r‡   rŠ   r–  s     ri   Úsave_graph_modulez)GraphModuleDeserializer.save_graph_module		  sÍ   è ø€ ð �J‰JØ�K‰KØ×(Ñ(Ø×(Ñ(Ø×!Ñ!ð
ˆô —X‘X—^‘^Ó%ˆŒ
Ü—h‘h—o‘oÓ'ˆŒØ')ˆÔ$Ü'.£yˆÔ$Ü36³5ˆÔð		Ûð ñØ”
Ø”ØÔ,ØÔ,ØÕ%øØñØ”
Ø”ØÔ,ØÔ,ØÕ%üs   ‚B%C4Â(C Â,"C4Ã#C1Ã1C4Úserialized_targetc                 óh   — |j                  d«      \  }}|dd  }t        |   }|j                  |«      S )NrÕ  r&   )ÚsplitÚ_deserialization_registryÚfrom_op_name)r�   rj  rë  r  r   s        ri   Údeserialize_extension_operatorz6GraphModuleDeserializer.deserialize_extension_operator"	  s=   € Ø.×4Ñ4°SÓ9Ñˆ	�7Ø˜a˜b�Mˆ	Ü+¨IÑ6ˆØ×#Ñ# GÓ,Ð,rh   c                 ó   — |j                  d«      rt        }|j                  d«      dd  }n||j                  d«      rt        }|j                  d«      dd  }nP|j                  d«      rt        }|j                  d«      dd  }n$|j                  d«      r| j                  |«      S |S |}|D ]  }t        ||«      s|c S t        ||«      }Œ  |S )NÚ	_operatorrµ  r&   ru   r  rÖ  )r¶  r×  rl  ru   r  ro  rQ  rR  )r�   rj  r¸  Úserialized_target_namesr3  rH  s         ri   Údeserialize_operatorz,GraphModuleDeserializer.deserialize_operator(	  så   € Ø×'Ñ'Øô
ô ˆFØ&7×&=Ñ&=¸cÓ&BÀ1À2Ð&FÑ#Ø×)Ñ)¨'Ô2ÜˆFØ&7×&=Ñ&=¸cÓ&BÀ1À2Ð&FÑ#Ø×)Ñ)¨&Ô1ÜˆFØ&7×&=Ñ&=¸cÓ&BÀ1À2Ð&FÑ#Ø×)Ñ)¨#Ô.Ø×6Ñ6Ð7HÓIÐIà$Ð$àˆØ+ò 	/ˆDÜ˜6 4Ô(Ø(Ò(ä  ¨Ó.‘ð		/ð
 ˆrh   rÖ   rÅ   c                 óò   ‡ — 	 ddt         j                  dt        t        z  t        z  dz  dt         j                  fˆ fd„}t        j
                  |i ‰ j                  ¥‰ j                  ¥¬«      } |||«      S )z„
        Parses and does bottom-up processing of sympy.Expr nodes,
        populating ShapeEnv & caching symbols as needed.
        Nr%  rÅ   r˜   c                 ór  •— | j                   s| j                  s| j                  r| S t        | «      }| j                  D ]  }‰j                  |«       Œ |‰j                  v r‰j                  |   } nx| ‰j                  |<   t        | t        j                  «      rOt        j                  | t        j                  t        j                  f«      r‰j                  j!                  | «       |�4| ‰j"                  j$                  vr‰j"                  j'                  | |«       ‰j(                  j+                  |«      x}r2‰j"                  j-                  | |j.                  |j0                  ¬«       t        | t        j                  «      r-t3        j4                  d¬«      ‰j"                  j6                  | <   | S )N)Úcompiler_minÚcompiler_maxr&   )Úskip)Ú
is_IntegerÚis_FloatÚ
is_Booleanr(  r¯  Ú_parse_sym_exprÚsymbol_name_to_symbolrt   r»   rÈ   r   Úsymbol_is_typer    ÚUNBACKED_INTÚUNBACKED_FLOATrh  r’   Ú	shape_envÚbacked_var_to_valÚadd_backed_var_to_valÚsymbol_name_to_rangerp  Úconstrain_symbol_ranger,  r-  r"   ÚextractÚvar_to_stack)r%  rÅ   rÖ   r²  Úvrr�   s        €ri   Ú_process_sym_exprzBGraphModuleDeserializer._parse_sym_expr.<locals>._process_sym_exprI	  sd  ø€ ð �~Š~ §¢°·²Ø�
ô ˜s›8�ØŸ8™8ò .�CØ×(Ñ(¨Õ-ð.ð ˜t×9Ñ9Ñ9Ø×4Ñ4°XÑ>‘Cà;>�D×.Ñ.¨xÑ8Ü! #¤u§|¡|Ô4¼×9WÑ9WØœd×/Ñ/´×1DÑ1DÐEô:ð ×-Ñ-×1Ñ1°#Ô6àÐ#¨°4·>±>×3SÑ3SÑ(SØ—N‘N×8Ñ8¸¸dÔCà×2Ñ2×6Ñ6°xÓ@Ð@�2Ð@Ø—N‘N×9Ñ9ØØ%'§X¡XØ%'§X¡Xð :ô ô ˜c¤5§<¡<Ô0Ü7H×7PÑ7PÐVWÔ7X�D—N‘N×/Ñ/°Ñ4ØˆJrh   )Úlocalsrl   )r»   ÚExprrÉ   r×   rÐ   ÚsympifyÚsympy_functionsr}  )r�   rÖ   rÅ   r‰  rº   s   `    ri   r|  z'GraphModuleDeserializer._parse_sym_exprA	  sy   ø€ ð @Dñ!	Ü—‘ð!	Ü#&¬¡:´Ñ#5¸Ñ#<ð!	ä�Z‰Zõ!	ôF �}‰}ØØI�d×*Ñ*ÐI¨d×.HÑ.HÐIô
ˆñ !  tÓ,Ð,rh   r·   c                 ó:  — |j                   }|j                  dk(  r™|j                  €d }nQ|j                  j                  dk7  r"t        d|j                  j                  ›�«      ‚|j                  j                   }| j	                  |j
                  |«      }| j                  j                  ||¬«      S |j                  dk(  r4t        |«      t        ur!t        dt        |«      j                  › �«      ‚|S t        d|j                  › d|j                   › �«      ‚)NrÃ   r¡   z!expected hint type 'as_int', got rÄ   zexpected int, got zSymInt has invalid field type ú with value )rn   rš   rÅ   r¨   r|  rÖ   r�  Úcreate_symintnoderÉ   rd   rc   ©r�   r·   r  rÅ   r%  s        ri   Údeserialize_sym_intz+GraphModuleDeserializer.deserialize_sym_intr	  sõ   € Ø�g‰gˆØ�6‰6�YÒØ�x‰xÐØ‘à—8‘8—=‘= HÒ,Ü(Ø;¸C¿H¹H¿M¹MÐ;LÐMóð ð —x‘x—~‘~�à×&Ñ& s§|¡|°TÓ:ˆCØ—>‘>×3Ñ3°C¸dÐ3ÓCÐCØ�V‰V�xÒÜ�C‹y¤Ñ#Ü$Ð'9¼$¸s»)×:LÑ:LÐ9MÐ%NÓOÐOØˆJä Ø0°·±°¸ÀQÇWÁWÀIÐNóð rh   c                 óÀ  — |j                   }|j                  dk(  r]|j                  r|j                  j                  nd }| j	                  |j
                  |«      }| j                  j                  ||¬«      S |j                  dk(  r3t        |t        «      s!t        dt        |«      j                  › �«      ‚|S t        d|j                  › d|j                   › �«      ‚)NrÃ   rÄ   rÏ   zexpected float, got z SymFloat has invalid field type r�  )rn   rš   rÅ   rÏ   r|  rÖ   r�  Úcreate_symfloatnodert   rÐ   r¨   rd   rc   r‘  s        ri   Údeserialize_sym_floatz-GraphModuleDeserializer.deserialize_sym_float‰	  s¼   € Ø�g‰gˆØ�6‰6�YÒØ(+¯ª�3—8‘8×$Ò$°dˆDØ×&Ñ& s§|¡|°TÓ:ˆCØ—>‘>×5Ñ5°cÀÐ5ÓEÐEØ�V‰V�zÒ!Ü˜c¤5Ô)Ü$Ð';¼DÀ»I×<NÑ<NÐ;OÐ%PÓQÐQØˆJä Ø2°1·6±6°(¸,ÀqÇwÁwÀiÐPóð rh   c                 ór  — |j                   }|j                  dk(  r6| j                  |j                  «      }| j                  j                  |«      S |j                  dk(  r3t        |t        «      s!t        dt        |«      j                  › �«      ‚|S t        d|j                  › d|j                   › �«      ‚)NrÃ   rÕ   zexpected bool, got zSymBool has invalid field type r�  )rn   rš   r|  rÖ   r�  Úcreate_symboolnodert   r×   r¨   rd   rc   )r�   r·   r  rº   s       ri   Údeserialize_sym_boolz,GraphModuleDeserializer.deserialize_sym_bool˜	  sž   € Ø�g‰gˆØ�6‰6�YÒØ×'Ñ'¨¯©Ó5ˆDØ—>‘>×4Ñ4°TÓ:Ð:Ø�V‰V�yÒ Ü˜c¤4Ô(Ü$Ð':¼4À»9×;MÑ;MÐ:NÐ%OÓPÐPØˆJä Ø1°!·&±&°¸ÀaÇgÁgÀYÐOóð rh   rô   c                 ód  ‡ — ‰ j                   5  t        t        t        j                  t        ˆ fd„|j                  D «       «      t        ˆ fd„|j                  D «       «      t        |j                  «      t        |j                     |j                  ¬«      «      cd d d «       S # 1 sw Y   y xY w)Nc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrl   ©r’  ©rx   r  r�   s     €ri   rz   zBGraphModuleDeserializer.deserialize_tensor_meta.<locals>.<genexpr>®	  s   øè ø€ ÒU¸C˜$×2Ñ2°3×7ÑUùrh  c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrl   r›  rœ  s     €ri   rz   zBGraphModuleDeserializer.deserialize_tensor_meta.<locals>.<genexpr>¯	  s   øè ø€ ÒW¸C˜$×2Ñ2°3×7ÑWùrh  )r�   rÜ   rÝ   )Úfake_tensor_moder   r   ru   Úempty_stridedr©   rŸ   r«   rž   r�   r²   rÜ   rÝ   )r�   rô   s   ` ri   rü   z/GraphModuleDeserializer.deserialize_tensor_meta¦	  s‰   ø€ ð ×"Ñ"ñ 
	ÜÜÜ×#Ñ#ÜÓUÀ;×CTÑCTÔUÓUÜÓWÀ;×CVÑCVÔWÓWÜ-¨k×.@Ñ.@ÓAÜ3°K×4EÑ4EÑFØ"-×";Ñ";ôó	÷
	÷ 
	ò 
	ús   ŽBB&Â&B/r$  c                 óX   — t        j                  |j                  |j                  ¬«      S )NrŸ  )r©  r-   rH  r   r&  s     ri   Údeserialize_script_obj_metaz3GraphModuleDeserializer.deserialize_script_obj_meta¶	  s)   € ô ×#Ñ#Ø ×%Ñ%Ø%×/Ñ/ô
ð 	
rh   c                 óp  — |j                   dk(  r#| j                  |j                  j                     S |j                   dk(  r#| j                  |j                  j
                     S |j                   dk(  r#| j                  |j                  j
                     S |j                   dk(  r#| j                  |j                  j
                     S |j                   dk(  r|j                  S |j                   dk(  r|j                  S |j                   dk(  r|j                  S |j                   dk(  ry t        d	|› �«      ‚)
Nrœ  rž  rR  rP  r¡   rÏ   rÕ   rX  z"Unable to deserialize output node )rš   rd  rœ  rH  rž  rN  rR  rP  r¡   rÏ   rÕ   rc   )r�   r®  s     ri   Údeserialize_graph_outputz0GraphModuleDeserializer.deserialize_graph_output¾	  s
  € Ø�;‰;˜+Ò%Ø×/Ñ/°×0@Ñ0@×0EÑ0EÑFÐFØ�[‰[˜LÒ(Ø×/Ñ/°×0AÑ0A×0IÑ0IÑJÐJØ�[‰[˜MÒ)Ø×/Ñ/°×0BÑ0B×0JÑ0JÑKÐKØ�[‰[˜NÒ*Ø×/Ñ/°×0CÑ0C×0KÑ0KÑLÐLØ�[‰[˜HÒ$Ø—=‘=Ð Ø�[‰[˜JÒ&Ø—?‘?Ð"Ø�[‰[˜IÒ%Ø—>‘>Ð!Ø�[‰[˜IÒ%Øä Ð#EÀfÀXÐ!NÓOÐOrh   Úserialized_graphc           	      ó  ‡ — t         j                  d«       |j                  j                  «       D ]0  \  }}t         j                  d||«       |fˆ fd„	‰ j                  |<   Œ2 |j
                  j                  «       D ]0  \  }}t         j                  d||«       |fˆ fd„	‰ j                  |<   Œ2 |j                  j                  «       D ]0  \  }}t         j                  d||«       |fˆ fd„	‰ j                  |<   Œ2 |j                  j                  «       D ]0  \  }}t         j                  d||«       |fˆ fd	„	‰ j                  |<   Œ2 |j                  j                  «       D ]/  \  }}t         j                  d
|«       |fˆ fd„	‰ j                  |<   Œ1 t         j                  d«       t        |j                  «      D �]Š  \  }}	t         j                  d|	«       |	j                  dv rK|	j                  j                  }
‰ j                  j                  |
«      }|
|_        ‰ j!                  |
|«       Œv|	j                  dk(  r}|	j                  j                  dk(  rK|	j                  j"                  }
‰ j                  j                  |
«      }|
|_        ‰ j!                  |
|«       Œét%        d|	j                  › d�«      ‚|	j                  dv ro‰ j&                  j(                  |   j*                  j                  xs d|› �}
‰ j                  j                  |
«      }‰ j-                  |	«      |j.                  d<   �Œt%        d|	› �«      ‚ |j0                  D ]0  }	 ‰ j3                  |j4                  «      }‰ j7                  ||«       Œ2 g }|j>                  D ]8  }t         j                  d|«       |jA                  ‰ jC                  |«      «       Œ: |jD                  r+tG        |«      dk7  rtI        dtG        |«      › �«      ‚|d   }ntK        |«      }‰ j                  jM                  |«      }|jD                  rg|jN                  d   }tQ        |tR        jT                  jV                  «      stI        dt        |«      › �«      ‚|j.                  d   |j.                  d<   n[|jN                  d   }tQ        |tJ        tX        f«      stI        dt        |«      › �«      ‚tK        d„ |D «       «      |j.                  d<   ‰ j                  j0                  D ]`  }|j.                  j[                  d«      x}€Œ!t]        j^                  |d ‰ j`                  ‰ jb                  d!¬"«      x}sŒR||j.                  d#<   Œb tG        ‰ jb                  «      dk7  r.tI        d$tG        ‰ jb                  «      › d%‰ jb                  › �«      ‚‰ j                  S # t8        $ r)}t%        d|› dt;        j<                  «       › �«      |‚d }~ww xY w)&Nz
[deserialize_graph]z([deserialize_tensor_meta] %s (input): %sc                 ó&   •— ‰j                  | «      S rl   )rü   ©rp   r�   s    €ri   ú<lambda>z;GraphModuleDeserializer.deserialize_graph.<locals>.<lambda>Ù	  s   ø€  t×'CÑ'CÀAÓ'F€ rh   z$[deserialize_sym_int] %s (input): %sc                 ó&   •— ‰j                  | «      S rl   r›  r§  s    €ri   r¨  z;GraphModuleDeserializer.deserialize_graph.<locals>.<lambda>ß	  s   ø€ ¨×(@Ñ(@ÀÓ(C€ rh   z&[deserialize_sym_float] %s (input): %sc                 ó&   •— ‰j                  | «      S rl   )r•  r§  s    €ri   r¨  z;GraphModuleDeserializer.deserialize_graph.<locals>.<lambda>å	  s   ø€ ¨$×*DÑ*DÀQÓ*G€ rh   z%[deserialize_sym_bool] %s (input): %sc                 ó&   •— ‰j                  | «      S rl   )r˜  r§  s    €ri   r¨  z;GraphModuleDeserializer.deserialize_graph.<locals>.<lambda>ë	  s   ø€ ¨×)BÑ)BÀ1Ó)E€ rh   z [deserialize_script_obj_meta] %sc                 ó&   •— ‰j                  | «      S rl   )r¡  r§  s    €ri   r¨  z;GraphModuleDeserializer.deserialize_graph.<locals>.<lambda>ñ	  s   ø€ ¨$×*JÑ*JÈ1Ó*M€ rh   z
[deserialize graph nodes]z[deserialize input] %s)rœ  r¢  rž  rN  z Deserializing a constant symint z as an input)r¡   rÏ   rÕ   rX  rL  r²  r  zInvalid input type zFailed deserializing node r0  z[deserialize output] %sr&   z5expected single output for single_tensor_return, got r   z,Expected Node for single tensor return, got z1Expected tuple/list for multi tensor return, got c              3   ó†   K  — | ]9  }t        |t        j                  j                  «      r|j                  d    n|–— Œ; y­w)r  N)rt   ru   r°  rD   r£  )rx   r²  s     ri   rz   z<GraphModuleDeserializer.deserialize_graph.<locals>.<genexpr>A
  s6   è ø€ ò ,àô $.¨c´5·8±8·=±=Ô#A�—‘˜’ÀsÓJñ,ùs   ‚?Arg   T)r�  ÚpendingÚsimplifyÚunbacked_bindingsz"expected no unbacked symbols, got ú: )2r  r¤  r;  rm   re  r<  r>  r=  r@  rÃ  r8  rš   rn   rH  rà  rš  Úsync_fx_noderN  rc   rÓ  rò  r²  Údeserialize_inputr£  r:  rs  r3  Údeserialize_noder  r2  r3  r9  rq  r£  r?  r  r¨   r©   r®  r¯  rt   ru   r°  rD   rA  rp  r   Ú _free_unbacked_symbols_with_pathr�  rh  )r�   r¤  rH  Útensor_valueÚsym_int_valueÚsym_float_valueÚsym_bool_valuer$  rû  Úinput_Ú	node_nameÚplaceholder_nodeÚserialized_noder3  r  r9  r®  Úoutput_nodeÚ	first_argr¹   r  r°  s   `                     ri   Údeserialize_graphz)GraphModuleDeserializer.deserialize_graphÒ	  sÆ  ø€ Ü�	‰	Ð)Ô*ð #3×"@Ñ"@×"FÑ"FÓ"Hò 	ÑˆD�,Ü�I‰IÐ@À$ÈÔUà%ÔFð ×(Ñ(¨Ò.ð	ð $4×#BÑ#B×#HÑ#HÓ#Jò 	ÑˆD�-Ü�I‰IÐ<¸dÀMÔRà&ÔCð ×(Ñ(¨Ò.ð	ð &6×%FÑ%F×%LÑ%LÓ%Nò 	Ñ!ˆD�/Ü�I‰IÐ>ÀÀoÔVà(ÔGð ×(Ñ(¨Ò.ð	ð %5×$DÑ$D×$JÑ$JÓ$Lò 	Ñ ˆD�.Ü�I‰IÐ=¸tÀ^ÔTà'ÔEð ×(Ñ(¨Ò.ð	ð &6×%GÑ%G×%MÑ%MÓ%Oò 	Ñ!ˆD�/Ü�I‰IÐ8¸/ÔJà(ÔMð ×(Ñ(¨Ò.ð	ô 	�	‰	Ð/Ô0ä"Ð#3×#:Ñ#:Ó;ó  	E‰IˆAˆvÜ�I‰IÐ.°Ô7Ø�{‰{Ð<Ñ<Ø"ŸL™L×-Ñ-�	Ø#'§:¡:×#9Ñ#9¸)Ó#DÐ ð )2Ð Ô%Ø×!Ñ! )Ð-=Õ>Ø—‘ Ò,Ø—<‘<×$Ñ$¨	Ò1Ø &§¡× 4Ñ 4�IØ'+§z¡z×'=Ñ'=¸iÓ'HÐ$ð -6Ð$Ô)Ø×%Ñ% iÐ1AÕBä(Ø:¸6¿<¹<¸.ÈÐUóð ð —‘ð !ñ ð !ŸN™N×6Ñ6°qÑ9×=Ñ=×BÑBÒOÈÈAÈ3Ài�	Ø#'§:¡:×#9Ñ#9¸)Ó#DÐ Ø/3×/EÑ/EÀfÓ/MÐ ×%Ñ% eÓ,ä$Ð':¸6¸(Ð%CÓDÐDðA 	EðF  0×5Ñ5ò 	ˆOðØ×2Ñ2°?×3IÑ3IÓJ�Ø×%Ñ% o°vÕ>ð	ð ˆØ&×.Ñ.ò 	BˆFÜ�I‰IÐ/°Ô8Ø�N‰N˜4×8Ñ8¸Ó@ÕAð	Bð ×3Ò3Ü�7‹|˜qÒ Ü$ØKÌCÐPWËLÈ>ÐZóð ð ˜a‘j‰Gä˜G“nˆGà—j‘j×'Ñ'¨Ó0ˆà×3Ò3Ø#×(Ñ(¨Ñ+ˆIÜ˜i¬¯©¯©Ô7Ü$ØBÄ4È	Ã?ÐBSÐTóð ð '0§n¡n°UÑ&;ˆK×Ñ˜UÒ#à#×(Ñ(¨Ñ+ˆIÜ˜i¬%´¨Ô7Ü$ØGÌÈYËÐGXÐYóð ô ',ñ ,à$ô,ó 'ˆK×Ñ˜UÑ#ð —J‘J×$Ñ$ò 
	CˆDØ—y‘y—}‘} UÓ+Ð+�Ñ8Ü%4×%UÑ%UØØØ"Ÿn™nØ ×1Ñ1Ø!ô&ð Ð!ñ ð 2C�—	‘	Ð-Ò.ð
	Cô ˆt×$Ñ$Ó%¨Ò*Ü Ø4´S¸×9NÑ9NÓ5OÐ4PÐPRÐSW×ShÑShÐRiÐjóð ð �z‰zÐøôs ò Ü$Ø0°Ð0AÐAWÔXa×XlÑXlÓXnÐWoÐpóàðûðús   Í-W×	W?×$W:×:W?r½  r3  c           
      óú  — dt         fd„}|t        v s1|t        j                  j                  j
                  j                  k(  r‰|j                  r|j                  n"|j                  d   j                  j                  }| j                  |j                  «      }| j                  j                  d||i |«      }| j                  ||«       �n4|t        j                   j"                  j$                  u rt'        d«      ‚t)        |t        j*                  j,                  «      �rm| j/                  |j                  «      \  }}| j1                  |j2                  «      }g |¢|j5                  «       ¢­D ]R  }	t)        |	t        j6                  j8                  «      sŒ(|	j:                  dk(  sŒ8|	j<                  j?                  |«       ŒT |j                  r|j                  }nctA        |j                  «      dk(  rItC        |j                  d   d«      r0tE        |d	d
«      r#|j                  d   jF                  j                  nd }| j                  j                  d||||«      }| jI                  ||«       |j<                  j?                  |«       �nqt)        |t        j*                  jJ                  gtM        «       ¢­«      r�|j                  r|j                  }n- ||«      r#|j                  d   jF                  j                  nd }| jO                  ||«      \  }}| j                  j                  d||||«      }| jI                  ||«       n´tQ        |«      rj| j/                  |j                  «      \  }}|j                  r|j                  nd }| j                  j                  d||||«      }| jI                  ||«       n?t)        |tR        «      rd|› d�dz   dz   dz   nd}
t'        |
d|› dtU        |«      › d�z   «      ‚|j<                  j?                  | j1                  |j2                  «      «       tV        jY                  d|j                  |jZ                  |j\                  |j^                  |j<                  ja                  d«      «       |t        j                  j                  jb                  j                  u rzt)        |j\                  d   x}t         «      sð|j<                  d   }t)        |t        jd                  «      rÇ| jf                  ji                  |jj                  jl                  d|«       n•|t        j                  j                  jn                  j                  u re|j\                  d   j<                  d   }t)        |t        jp                  «      r/| jf                  js                  |jj                  jl                  «       |j:                  dvrd|j<                  vri |j<                  d<   y y y )Nr˜   c                 óž   — t        | «      }|j                  }t        |«      dk(  xr' t        |d   j                  t
        j                  «      S )Nr&   r   )r4  r  r  rt   r  ru   r§  )r3  r'   r  s      ri   Ú_is_single_tensor_returnzJGraphModuleDeserializer.deserialize_node.<locals>._is_single_tensor_returnZ
  sG   € Ü,¨VÓ4ˆFØ—n‘nˆGÜ�w“< 1Ñ$ò ¬Ø˜‘
×$Ñ$¤e×&6Ñ&6ó*ð rh   r   r»  z_deserialize nyi for torch._higher_order_ops.triton_kernel_wrap.triton_kernel_wrapper_functionalrE  r&   rœ  rÇ  TzWe failed to resolve z to an operator. z]If it's a custom op/custom triton op, this is usually because the custom op is not registeredzU when deserializing. Please import the custom op to register it before deserializing.z+ Otherwise, please file an issue on github.r8  z" Unsupported target type for node r±  rµ  z)[deserialize_node] %s: %s(%s, {%s}) -> %sr  )rš  r®  r  ):r×   rÙ  ru   Úopsr>  Úitemr#  rH  r9  rn   rN  Údeserialize_sym_op_inputsr8  rà  Úcreate_nodeÚdeserialize_sym_op_outputsrc  rd  re  rc   rt   rv   r½  Údeserialize_hoo_inputsÚdeserialize_metadataru  rn  r°  rD   ry   r£  r?  r  rQ  rR  rœ  Údeserialize_outputsrw   r2  Údeserialize_inputsrí  r(  rš   r  r¤  r3  r¯  r_  rp  Ú_assert_scalarrM   r�  Úguard_or_defer_runtime_assertr¹   rº   Úsym_constrain_range_for_sizerS   Ú_constrain_range_for_size)r�   r½  r3  rÃ  rH  r¯  Úfx_noder_  ru  rˆ  Ú_additional_msgr²  rº   r%  s                 ri   r´  z(GraphModuleDeserializer.deserialize_nodeY
  s  € ð	´ó 	ð ”hÑØÜ�y‰y�~‰~×"Ñ"×*Ñ*ò+ð #×'Ò'ð  ×$Ò$à$×,Ñ,¨QÑ/×5Ñ5×=Ñ=ð ð
 ×1Ñ1°/×2HÑ2HÓIˆDà—j‘j×,Ñ,¨_¸fÀdÈBÐPTÓUˆGØ×+Ñ+¨O¸WÖEàÜ×&Ñ&×9Ñ9×ZÑZñ[ô !Øqóð ô ˜¤§
¡
× >Ñ >Õ?Ø×6Ñ6°×7MÑ7MÓN‰LˆD�&Ø×0Ñ0°×1IÑ1IÓJˆHØ.�tÐ.˜fŸm™m›oÑ.ò ,�Ü˜a¤§¡§¡Õ/°A·D±D¸JÓ4Fð —F‘F—M‘M (Õ+ð,ð  ×#Ò#Ø&×+Ñ+‘ô ˜?×2Ñ2Ó3°qÒ8Ü × 7Ñ 7¸Ñ :¸KÔHÜ Ð1NÐPTÔUð $×+Ñ+¨AÑ.×8Ñ8×=Ò=ð ð ð —j‘j×,Ñ,Ø ¨¨v°tóˆGð ×$Ñ$ _°gÔ>Ø�L‰L×Ñ Ö)äØ”U—Z‘Z×*Ñ*ÐKÔ-HÓ-JÑKô
ð ×#Ò#Ø&×+Ñ+‘ñ 0°Ô7ð $×+Ñ+¨AÑ.×8Ñ8×=Ò=àð ð  ×2Ñ2°6¸?ÓK‰LˆD�&Ø—j‘j×,Ñ,Ø ¨¨v°tóˆGð ×$Ñ$ _°gÕ>Ü�fÔà×6Ñ6°×7MÑ7MÓN‰LˆD�&Ø+:×+?Ò+?�?×'Ò'ÀTˆDØ—j‘j×,Ñ,Ø ¨¨v°tóˆGð ×$Ñ$ _°gÕ>ô ˜f¤cÔ*ð ,¨F¨8Ð3DÐEØuñvàmñnð DòDð ð ô !ØØ6°Ð6GÀrÌ$ÈvË,ÈÐWXÐYñZóð ð
 	�‰×Ñ˜D×5Ñ5°o×6NÑ6NÓOÔPÜ�	‰	Ø7Ø�L‰LØ�N‰NØ�L‰LØ�N‰NØ�L‰L×Ñ˜UÓ#ô	
ð ”U—Y‘Y—^‘^×2Ñ2×:Ñ:Ñ:Ü g§l¡l°1¡oÐ5˜s¼Ô=Ø—x‘x ‘�Ü˜d¤E§M¡MÔ2Ø—N‘N×@Ñ@ØŸ	™	Ÿ™¨¨Gõð ”u—y‘y—~‘~×BÑB×JÑJÑJØ—,‘,˜q‘/×&Ñ& uÑ-ˆCÜ˜#œuŸ|™|Ô,Ø—‘×8Ñ8¸¿¹¿¹ÔGð �J‰JÐ7Ñ7Ø!¨¯©Ñ5à.0ˆG�L‰LÐ*Ò+ð 6ð 8rh   rû  c           	      ó–  — t         j                  d|«       |j                  dk(  rSt        j                  t        j
                  j                  | j                  |j                  j                  «      d ¬«      S |j                  dk(  rvt        j                  t        j
                  j                  t        j                  |j                  j                  j                  ¬«      |j                  j                  ¬«      S |j                  dk(  r‹t        j                  t        j
                  j                  t        j                  |j                   j                  j                  ¬«      |j                   j"                  |j                   j$                  ¬«      S |j                  dk(  rvt        j                  t        j
                  j&                  t        j                  |j(                  j                  j                  ¬«      |j(                  j*                  ¬«      S |j                  d	k(  r•t        j                  t        j
                  j,                  t        j.                  |j0                  j                  j                  |j0                  j                  j2                  ¬
«      |j0                  j4                  ¬«      S |j                  dk(  rbt        j                  t        j
                  j6                  t        j8                  |j:                  j                  j                  ¬«      d ¬«      S |j                  dk(  r|t        j                  t        j
                  j                  t        j<                  |j>                  j                  | jA                  |j>                  jB                  «      ¬«      d ¬«      S tE        d|› �«      ‚)Nz[deserialize_input_spec] %srÄ  ©rÉ  r²  r3  rÈ  rS  r  )rÉ  r²  r3  rÊ  rÌ  rÍ  rŸ  rÐ  rÂ  rÁ  zUnknown input spec )#r  r¤  rš   r©  r6   rÒ  rÓ  Údeserialize_argument_specrÄ  r²  rÖ  rU   rÈ  rH  rÇ  r×  r  rÉ  rÊ  rØ  rÌ  rË  rÙ  r-   rÍ  r   r¶  rÚ  rW   rÐ  rÔ  rÂ  Údeserialize_constant_inputrn   r¨   )r�   rû  s     ri   Údeserialize_input_specz.GraphModuleDeserializer.deserialize_input_specå
  s   € Ü�	‰	Ð/°Ô3Ø�6‰6�\Ò!Ü—<‘<Ü—\‘\×,Ñ,Ø×2Ñ2°1·<±<×3CÑ3CÓDØôð ð
 �V‰V�{Ò"Ü—<‘<Ü—\‘\×+Ñ+Ü×%Ñ%¨1¯;©;¯?©?×+?Ñ+?Ô@Ø—{‘{×1Ñ1ôð ð
 �V‰V�xÒÜ—<‘<Ü—\‘\×(Ñ(Ü×%Ñ%¨1¯8©8¯<©<×+<Ñ+<Ô=Ø—x‘x×+Ñ+ØŸ8™8×.Ñ.ô	ð ð �V‰VÐ(Ò(Ü—<‘<Ü—\‘\×1Ñ1Ü×%Ñ%¨1×+<Ñ+<×+@Ñ+@×+EÑ+EÔFØ×(Ñ(×=Ñ=ôð ð
 �V‰V�|Ò#Ü—<‘<Ü—\‘\×,Ñ,Ü×(Ñ(ØŸ™×)Ñ)×.Ñ.¸!¿,¹,×:JÑ:J×:TÑ:Tôð —|‘|×3Ñ3ôð ð �V‰V�wÒÜ—<‘<Ü—\‘\×'Ñ'Ü×$Ñ$¨!¯'©'¯+©+×*:Ñ*:Ô;Øôð ð
 �V‰VÐ'Ò'Ü—<‘<Ü—\‘\×,Ñ,Ü×'Ñ'Ø×)Ñ)×.Ñ.Ø×9Ñ9¸!×:JÑ:J×:PÑ:PÓQôð ôð ô !Ð#6°q°cÐ!:Ó;Ð;rh   Úoc                 ó  — t         j                  d|«       |j                  dk(  rSt        j                  t        j
                  j                  | j                  |j                  j                  «      d ¬«      S |j                  dk(  rbt        j                  t        j
                  j                  t        j                  |j                  j                  j                  ¬«      d ¬«      S |j                  dk(  rvt        j                  t        j
                  j                  t        j                  |j                  j                  j                  ¬«      |j                  j                   ¬«      S |j                  dk(  rvt        j                  t        j
                  j"                  t        j                  |j$                  j                  j                  ¬«      |j$                  j&                  ¬«      S |j                  dk(  rvt        j                  t        j
                  j(                  t        j                  |j*                  j                  j                  ¬«      |j*                  j&                  ¬«      S |j                  d	k(  rvt        j                  t        j
                  j,                  t        j                  |j.                  j                  j                  ¬«      |j.                  j0                  ¬«      S |j                  d
k(  rvt        j                  t        j
                  j2                  t        j                  |j4                  j                  j                  ¬«      |j4                  j0                  ¬«      S |j                  dk(  rbt        j                  t        j
                  j6                  t        j8                  |j:                  j                  j                  ¬«      d ¬«      S t=        d|› �«      ‚)Nz[deserialize_output_spec] %srÞ  rÔ  rß  rS  rà  rá  râ  rä  rå  rÐ  zUnknown output spec )r  r¤  rš   r©  rF   ræ  rç  rÕ  rÞ  r²  rè  rU   rß  rH  ré  rà  rÉ  rê  rá  rÇ  rë  râ  rì  rä  rã  rí  rå  rÚ  rW   rÐ  r¨   )r�   rØ  s     ri   Údeserialize_output_specz/GraphModuleDeserializer.deserialize_output_spec  sÏ  € Ü�	‰	Ð0°!Ô4Ø�6‰6�]Ò"Ü—=‘=Ü—]‘]×.Ñ.Ø×2Ñ2°1·=±=×3DÑ3DÓEØôð ð
 �V‰V�}Ò$Ü—=‘=Ü—]‘]×.Ñ.Ü×%Ñ%¨1¯=©=×+<Ñ+<×+AÑ+AÔBØôð ð
 �V‰VÐ(Ò(Ü—=‘=Ü—]‘]×2Ñ2Ü×%Ñ%¨1×+<Ñ+<×+@Ñ+@×+EÑ+EÔFØ×(Ñ(×4Ñ4ôð ð
 �V‰VÐ+Ò+Ü—=‘=Ü—]‘]×5Ñ5Ü×%Ñ%¨1×+?Ñ+?×+CÑ+C×+HÑ+HÔIØ×+Ñ+×:Ñ:ôð ð
 �V‰VÐ.Ò.Ü—=‘=Ü—]‘]×8Ñ8Ü×%Ñ%¨1×+BÑ+B×+FÑ+F×+KÑ+KÔLØ×.Ñ.×=Ñ=ôð ð
 �V‰VÐ/Ò/Ü—=‘=Ü—]‘]×9Ñ9Ü×%Ñ%¨1×+CÑ+C×+GÑ+G×+LÑ+LÔMØ×/Ñ/×?Ñ?ôð ð
 �V‰VÐ,Ò,Ü—=‘=Ü—]‘]×6Ñ6Ü×%Ñ%¨1×+@Ñ+@×+DÑ+D×+IÑ+IÔJØ×,Ñ,×<Ñ<ôð ð
 �V‰V�wÒÜ—=‘=Ü—]‘]×(Ñ(Ü×$Ñ$¨!¯'©'¯+©+×*:Ñ*:Ô;Øôð ô !Ð#7¸°sÐ!;Ó<Ð<rh   rï  c           	      ó
  — t         j                  d«       t        j                  |j                  D �cg c]  }| j                  |«      ‘Œ c}|j                  D �cg c]  }| j                  |«      ‘Œ c}¬«      S c c}w c c}w )Nz
[deserialize_signature]rñ  )r  r¤  r©  r7  rò  r×  ró  rÚ  )r�   rï  rû  rØ  s       ri   Údeserialize_signaturez-GraphModuleDeserializer.deserialize_signatureO  sd   € Ü�	‰	Ð-Ô.Ü×&Ñ&ØADÇÁÖQ¸A˜×4Ñ4°QÕ7ÒQØCF×CSÑCSÖT¸a˜$×6Ñ6°qÕ9ÒTô
ð 	
ùÚQùÚTs   ³A;ÁB 
rU  rZ  r€   r�   .r„  c           	      óH  — t         �t        d«      ‚| a 	 t        j                  d«       t	        j
                  d¬«      | _        t        dd| j                  ¬«      | _        i dt        j                  j                  j                  j                  “dt        j                  j                  j                  j                  “d	t        j                  j                  j                  j                  “d
t        j                  j                  j                  j                   “dt        j                  j                  j                  j"                  “dt        j                  j                  j                  j$                  “dt        j                  j                  j                  j&                  “dt        j                  j                  j                  j(                  “dt        j                  j                  j                  j*                  “dt        j                  j                  j                  j,                  “dt        j                  j                  j                  j.                  “dt        j                  j                  j                  j0                  “dt        j                  j                  j                  j2                  “dt        j                  j                  j                  j4                  “dt        j                  j                  j                  j6                  “dt        j                  j                  j                  j8                  “dt        j                  j                  j                  j:                  “t        j                  j                  j                  j<                  t        j                  j                  j                  j>                  t        j                  j                  j                  j@                  t        j                  j                  j                  jB                  t        j                  j                  j                  jD                  dœ¥| _#        i | _$        tK        |«      | _&        | jO                  |jP                  «      | _(        i | _)        tU        «       | _+        d\  }}d„ tX        jZ                  tX        j\                  fD «       \  }}	|rÊ|j_                  «       D ]·  \  }
}|j`                  }t	        jb                  te        |tf         «      |jh                  «      | jR                  |
<   |
jk                  |«      r$tm        |
to        |«      d  «      }tq        ||«      }Œƒ|
jk                  |	«      sŒ•tm        |
to        |	«      d  «      }tq        ||«      }Œ¹ ts        |dz   «      D ]!  }| j                  xjt                  dz  c_:        Œ# ts        |dz   «      D ]!  }| j                  xjv                  dz  c_;        Œ# |�to        |«      dkD  rtK        |«      | _<        nd | _<        | j{                  |j|                  «       t        | jx                  «      5  | j�                  |j‚                  «      }d d d «       t…        j†                  | jˆ                  | j|                  «      }i }|jŠ                  j�                  d«      x}rt�        j�                  |«      |d<   t“        |d«      r9i |d<   |j”                  j_                  «       D ]  \  }}|j–                  |d   |<   Œ ||_L        tš        j�                  || jP                  | jH                  tK        |«      | jL                  | jx                  ¬«      d a S # 1 sw Y   �ŒxY w# d a w xY w) Nz$_CURRENT_DESERIALIZER is already setz
[deserialize]T)Úassume_static_by_defaultF)Úallow_fallback_kernelsÚallow_non_fake_inputsr�  ÚFloorDivÚModularIndexingÚWhereÚ	PythonModÚModÚCleanDivÚ	CeilToIntÚ
FloorToIntÚCeilDivÚLShiftÚRShiftÚPowByNaturalÚFloatPowÚFloatTrueDivÚ
IntTrueDivÚ!IsNonOverlappingAndDenseIndicatorÚTruncToFloat)Ú
TruncToIntÚ
RoundToIntÚRoundDecimalÚToFloatÚIdentity)éÿÿÿÿr÷  c              3   ó.   K  — | ]  }t         |   –— Œ y ­wrl   )r   ru  s     ri   rz   z6GraphModuleDeserializer.deserialize.<locals>.<genexpr>•  s   è ø€ ò @Ø"#”
˜1•ñ@ùs   ‚r&   r   r  r”  )r,  rÓ  r�  ra  r   r€   r�   )Orå   r¨   r  r¤  r   ÚShapeEnvr�  r   rž  ru   ÚutilsÚ_sympyÚ	functionsrá  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€   rÜ  rÓ  r„  rŠ   rh  r    r€  r  rm   r,  r!   r$  r   r-  r¶  rÉ   r  ÚmaxÚrangeÚunbacked_symfloat_counterÚunbacked_symint_counterr�   rÀ  rà  r   Údeserialize_module_call_graphr�  r©  Ú_create_graph_module_for_exportr¸  ru  rp  rí   rù   rQ  r”  rü  r£  r`   rb  )r�   rU  rZ  r€   r�   r„  Úcount_unbacked_symfloatÚcount_unbacked_symintÚunbacked_symfloat_prefixÚunbacked_symint_prefixro   rˆ  r,  rû  r‹  r�  r,  r£  r  Útype_Úfieldss                        ri   Údeserializez#GraphModuleDeserializer.deserializeV  sI  € ô !Ð,Ü Ð!GÓHÐHØ $Ððh	)Ü�I‰IÐ'Ô(Ü,×5Ñ5ÈtÔTˆDŒNÜ$2Ø',Ø&*ØŸ.™.ô%ˆDÔ!ð
$ð
 œEŸK™K×.Ñ.×8Ñ8×AÑAð$ð "¤5§;¡;×#5Ñ#5×#?Ñ#?×#OÑ#Oð$ð œŸ™×+Ñ+×5Ñ5×;Ñ;ð$ð œUŸ[™[×/Ñ/×9Ñ9×CÑCð$ð ”u—{‘{×)Ñ)×3Ñ3×7Ñ7ð$ð œEŸK™K×.Ñ.×8Ñ8×AÑAð$ð œUŸ[™[×/Ñ/×9Ñ9×CÑCð$ð œeŸk™k×0Ñ0×:Ñ:×EÑEð$ð œ5Ÿ;™;×-Ñ-×7Ñ7×?Ñ?ð$ð œ%Ÿ+™+×,Ñ,×6Ñ6×=Ñ=ð$ð œ%Ÿ+™+×,Ñ,×6Ñ6×=Ñ=ð$ð  ¤§¡× 2Ñ 2× <Ñ <× IÑ Ið!$ð" œEŸK™K×.Ñ.×8Ñ8×AÑAð#$ð$ ¤§¡× 2Ñ 2× <Ñ <× IÑ Ið%$ð& œeŸk™k×0Ñ0×:Ñ:×EÑEð'$ð( 4´U·[±[×5GÑ5G×5QÑ5Q×5sÑ5sð)$ð* ¤§¡× 2Ñ 2× <Ñ <× IÑ Ið+$ô, $Ÿk™k×0Ñ0×:Ñ:×EÑEÜ#Ÿk™k×0Ñ0×:Ñ:×EÑEÜ %§¡× 2Ñ 2× <Ñ <× IÑ IÜ Ÿ;™;×-Ñ-×7Ñ7×?Ñ?Ü!ŸK™K×.Ñ.×8Ñ8×AÑAò5$ˆDÔ ð8 CEˆDÔ&Ü7¸	ÓBˆDŒNØ!×7Ñ7Ø'×1Ñ1óˆDŒNð )+ˆDÔ%ô %(£EˆDÔ!Ø=CÑ:Ð#Ð%:ñ@Ü(,×(;Ñ(;¼T×=NÑ=NÐ'Oô@Ñ<Ð$Ð&<ñ $Ø1×7Ñ7Ó9ò 
N‘E�A�rØŸH™H�EÜ3B×3NÑ3NÜ)¨%´&°Ó9¸2¿8¹8ó4�D×-Ñ-¨aÑ0ð —|‘|Ð$<Ô=Ü ¤#Ð&>Ó"?Ð"AÐ BÓC˜Ü25Ð6MÈqÓ2QÑ/ØŸ™Ð&<Õ=Ü ¤#Ð&<Ó"=Ð"?Ð @ÓA˜Ü03Ð4IÈ1Ó0MÑ-ð
Nô Ð2°QÑ6Ó7ò >�Ø—‘×8Ò8¸AÑ=Ö8ð>äÐ0°1Ñ4Ó5ò <�Ø—‘×6Ò6¸!Ñ;Ö6ð<ð Ð)¬c°.Ó.AÀAÒ.EÜ&@ÀÓ&P�Õ#à&*�Ô#Ø×"Ñ"Ð#:×#@Ñ#@ÔAä7¸×8KÑ8KÓLñ Ø$(×$FÑ$FØ+×=Ñ=ó%Ð!÷ô ×=Ñ=¸d¿k¹kÈ4Ï:É:ÓVˆLØˆDØ0×9Ñ9×=Ñ=¸hÓGÐGˆvÐGÜ!%§¡¨FÓ!3��X‘ÜÐ.Ð0LÔMØ57�Ð1Ñ2ð -×GÑG×MÑMÓOòSñ ØØà@F×@RÑ@R�DÐ5Ñ6°uÒ=ð	Sð
 !%ˆLÔÜ*×1Ñ1Ø)ØŸ.™.Ø"3Ø!%×!;Ñ!;Ü5Ð6KÓLØŸ.™.Ø#×2Ñ2ð 2ó ð %)Ñ!÷5ñ ûð4 %)Ñ!ús,   •U9^ ÖC!^ Ù0^ÚD^ Þ^Þ^ Þ^!rH  rÑ  c                 óÜ   — || j                   v rt        d|› d�«      ‚||_        || j                   |<   d|j                  v rt	        d|› d�«      ‚| j
                  |   |j                  d<   y )NzNode z& has already been deserialized before.r  zfx_node z already has 'val' in meta)rd  rc   rH  r£  r¨   re  )r�   rH  rÑ  s      ri   r²  z$GraphModuleDeserializer.sync_fx_nodeÎ  sv   € Ø�4×/Ñ/Ñ/Ü  5¨¨Ð.TÐ!UÓVÐVàˆŒØ-4ˆ×$Ñ$ TÑ*Ø�G—L‘LÑ Ü  8¨D¨6Ð1KÐ!LÓMÐMØ"×:Ñ:¸4Ñ@ˆ�‰�UÒrh   c                 ó,   ‡ — t        ˆ fd„|D «       «      S )Nc              3   óT   •K  — | ]  }‰j                  |j                  «      –— Œ! y ­wrl   )r³  r²  )rx   Úinputr�   s     €ri   rz   zDGraphModuleDeserializer.deserialize_sym_op_inputs.<locals>.<genexpr>Ù  s    øè ø€ ÒK¸5�T×+Ñ+¨E¯I©I×6ÑKùs   ƒ%()r©   )r�   r8  s   ` ri   rÆ  z1GraphModuleDeserializer.deserialize_sym_op_inputsØ  s   ø€ ÜÓKÀFÔKÓKÐKrh   c                 ó¢  — t        |«      j                  }|j                  D �ci c]  }|j                  |j                  “Œ }}|j                  D �ci c](  }|j                  | j                  |j                  «      “Œ* }}g }t        «       }|D �]§  }	|	j                  |v r…||	j                     }
||	j                     }|t        j                  k(  r|j                  |
«       ŒU|t        j                  k(  r/t        j                  |	j                  «      s|
||	j                  <   Œ—|	j                  «        xr |	j                   }|r|j                  ||	j                     «       ŒØt        j                  |	j                  «      r…|	j                  rt!        d|	j                  › d�«      ‚t#        |«      dkD  r2t        «       }|j%                  t'        |j)                  «       «      «       |j                  ||	j                     «       �Œ||	j                  |v s�ŒŒ||	j                     ||	j                  <   �Œª t+        |«      |fS c c}w c c}w )Nzschema_arg z should not be kwarg_onlyr   )r4  r(  r8  rH  rÉ  r³  r²  r   r)   ræ  rq  ré  ÚkeywordÚ	iskeywordÚhas_default_valuer3  r¨   r  r9  rA  rn  r©   )r�   r3  r½  Úschema_argsr  Úargument_kindsÚactual_argsr¯  r_  r6  r²  rÉ  Úis_positionals                ri   rÌ  z*GraphModuleDeserializer.deserialize_inputsÛ  s  € Ü-¨fÓ5×?Ñ?ˆØ>M×>TÑ>TÖU°U˜%Ÿ*™* e§j¡jÑ0ÐUˆÐUð )×/Ñ/ö
àð �J‰J˜×.Ñ.¨u¯y©yÓ9Ñ9ð
ˆð 
ð ˆÜ(3«ˆØ%ó 	KˆJØ�‰ +Ñ-Ø! *§/¡/Ñ2�Ø% j§o¡oÑ6�Øœ<×2Ñ2Ò2Ø—K‘K Ô$ØØœ\×1Ñ1Ò1¼'×:KÑ:KØ—O‘Oô;ð /2�F˜:Ÿ?™?Ñ+Øð ×0Ñ0Ó2Ð2ÒP¸:×;PÑ;PÐ7Pð ñ Ø—‘˜K¨
¯©Ñ8Õ9Ü×"Ñ" :§?¡?Ô3Ø×(Ò(Ü(Ø% j§o¡oÐ%6Ð6OÐPóð ô �v“; ’?Ü(›]�FØ—K‘K¤ V§]¡]£_Ó 5Ô6Ø—‘˜K¨
¯©Ñ8Ö9à—?‘? kÓ1Ø.9¸*¿/¹/Ñ.J�F˜:Ÿ?™?Ó+ð=	Kô> �T‹{˜FÐ"Ð"ùòM Vùò
s   ¤IÁ-Ir8  c                 ó0  — g }i }|D ]�  }|j                   t        j                  k(  s|j                  dk(  r+|j	                  | j                  |j                  «      «       ŒZ| j                  |j                  «      ||j                  <   Œƒ t        |«      |fS )zO
        For deserializing HOO inputs since HOOs do not have a schema.
        r8  )rÉ  r)   ræ  rH  rq  r³  r²  r©   )r�   r8  r¯  r_  rº  s        ri   rÉ  z.GraphModuleDeserializer.deserialize_hoo_inputs  s…   € ð ˆØˆØò 	IˆFØ�{‰{œl×5Ñ5Ò5¸¿¹ÈÒ9JØ—‘˜D×2Ñ2°6·:±:Ó>Õ?à&*×&<Ñ&<¸V¿Z¹ZÓ&H��v—{‘{Ò#ð		Iô
 �d“˜VÐ$Ð$rh   Úinpc           	      óz	  ‡ ‡— ‰j                   }‰j                  }|dk(  ry |dk(  r#‰ j                  ‰j                  j                     S |dk(  rt
        ‰j                     S |dk(  rt        ‰j                     S |dk(  rt        ‰j                     S |dk(  rçt        |t        «      s!t        dt        |«      j                  › �«      ‚‰ j                  «       5  ‰ j!                  |j"                  «       t%        j&                  ‰ j(                  ‰ j"                  «      }d d d «       ‰ j(                  j+                  |j                  «       ‰ j"                  j-                  d|j                  |j                  ¬	«      S |d
k(  rt/        ‰j0                  «      S |dk(  r‰j2                  S |dk(  r‰j4                  S |dk(  r‰j6                  S |dk(  r‰j8                  S |dk(  r4t;        ‰j<                  j>                  ‰j<                  j@                  «      S |dk(  r‰ jC                  ‰jD                  «      S |dk(  r‰ jC                  ‰jF                  «      S |dk(  r‰ jC                  ‰jH                  «      S t        |tJ        «      rF|dk(  r3|jM                  «       D ��ci c]  \  }}|‰ jO                  |«      “Œ c}}S tQ        d|› �«      ‚t        |tR        «      �rtU        |«      dk(  rg S |dk(  r(|D �cg c]  }‰ j                  |j                     ‘Œ }}|S |dv rtS        |«      S |dk(  r|D �	cg c]  }	tW        |	«      ‘Œ c}	S |dk(  r|D �
cg c]  }
tS        |
«      ‘Œ c}
S |dk(  r7|D ��cg c])  }|D �cg c]  }‰ j                  |j                     ‘Œ c}‘Œ+ c}}S |dv r|D �cg c]  }‰ jC                  |«      ‘Œ c}S |dk(  rˆˆ fd„}tS        tY        ||«      «      S tQ        d‰› �«      ‚|dk(  rh‰jZ                  j                  ‰ j                  v r#‰ j                  ‰jZ                  j                     S ‰ j\                  ‰jZ                  j                     S |d k(  r‰ j_                  ‰j`                  «      S tQ        d‰› �«      ‚# 1 sw Y   �ŒpxY wc c}}w c c}w c c}	w c c}
w c c}w c c}}w c c}w )!NrX  rœ  r�  r�  r�  rF  zexpected GraphArgument, got rE  rS  rŽ  r¡   rÏ   rÕ   rL  rV  rž  rP  rR  rY  zUnknown dict type: r   rÂ  )r[  r\  rZ  r]  r‰  rŒ  rx  )ri  ro  rk  r~  c                 ó¤   •— | j                   dk(  ry | j                   dk(  r#‰j                  | j                  j                     S t	        d‰› �«      ‚)NrX  rœ  úUnhandled argument )rš   rd  rn   rH  rc   )rÿ  r  r�   s    €€ri   Ú deserialize_optional_tensor_argszSGraphModuleDeserializer.deserialize_input.<locals>.deserialize_optional_tensor_args_  sJ   ø€ Ø—v‘v Ò*Ø#ØŸ™ ;Ò.Ø#×;Ñ;¸A¿G¹G¿L¹LÑIÐIä,Ð/BÀ3À%Ð-HÓIÐIrh   r  r¢  r”  )1rn   rš   rd  rœ  rH  r²   r�  Ú!_SERIALIZE_TO_TORCH_MEMORY_FORMATr�  Ú_SERIALIZE_TO_TORCH_LAYOUTr�  rt   r3   r¨   rd   ri  rÀ  rà  r©  r  r¸  Úregister_modulerÇ  rž   rŽ  r¡   rÏ   rÕ   rL  rŸ  rV  rT  rU  Údeserialize_sym_argumentrž  rP  rR  r  rm   r³  rc   rA  r  r©   r‰   r¢  r€   rs  r”  )r�   r  rn   Útyp_Ú	submodulero   rp   r²  ÚresultÚdimsÚfloatsr´  r  s   ``           ri   r³  z)GraphModuleDeserializer.deserialize_input  sx  ù€ Ø—	‘	ˆØ�x‰xˆØ�9Òð Ø�[Ò Ø×/Ñ/°·±×0BÑ0BÑCÐCØÐ%Ò%Ü,¨S×-?Ñ-?Ñ@Ð@ØÐ'Ò'Ü4°S×5IÑ5IÑJÐJØ�[Ò Ü-¨c¯m©mÑ<Ð<Ø�ZÒÜ˜e¤]Ô3Ü$Ø2´4¸³;×3GÑ3GÐ2HÐIóð ð ×'Ñ'Ó)ñ XØ×&Ñ& u§{¡{Ô3Ü×>Ñ>¸t¿{¹{ÈDÏJÉJÓW�	÷Xð �K‰K×'Ñ'¨¯
©
°IÔ>Ø—:‘:×)Ñ)ØØ—
‘
Ø—Z‘Zð *ó ð ð
 �[Ò Ü% c§m¡mÓ4Ð4Ø�XÒØ—:‘:ÐØ�ZÒØ—<‘<ÐØ�YÒØ—;‘;ÐØ�[Ò Ø—=‘=Ð Ø�\Ò!Ü˜3Ÿ>™>×.Ñ.°·±×0CÑ0CÓDÐDØ�\Ò!Ø×0Ñ0°·±Ó@Ð@Ø�^Ò#Ø×0Ñ0°×1AÑ1AÓBÐBØ�]Ò"Ø×0Ñ0°·±ÓAÐAÜ˜œtÔ$ØÐ.Ò.àAFÇÁÃ×O¹¸¸A˜˜4×1Ñ1°!Ó4Ñ4ÓOÐOä$Ð':¸4¸&Ð%AÓBÐBÜ˜œtÕ$Ü�5‹z˜QŠØ�	Ø˜Ò%ØLQÖRÀS˜$×6Ñ6°s·x±xÓ@ÐR�ÐRØ�ØÐKÑKä˜E“{Ð"Ø˜Ò'à05Ö6¨œ˜d�Ò6Ð6ØÐ)Ò)Ø38Ö9¨œ˜V�Ò9Ð9ØÐ,Ò,ð ',÷à"ð HRÖRÀ�T×1Ñ1°#·(±(Ó;ÔRóð ð ÐIÑIØFKÖL¸s˜×5Ñ5°cÕ:ÒLÐLØÐ.Ò.õJô œCÐ @À%ÓHÓIÐIä$Ð':¸3¸%Ð%@ÓAÐAØ�_Ò$Ø× Ñ ×%Ñ%¨×)EÑ)EÑEà×3Ñ3°C×4EÑ4E×4JÑ4JÑKÐKØ—>‘> #×"3Ñ"3×"8Ñ"8Ñ9Ð9Ø�]Ò"Ø×,Ñ,¨S¯_©_Ó=Ð=ä Ð#6°s°eÐ!<Ó=Ð=÷YXñ Xüó< Pùò Sùò 7ùâ9ùò Sùóùò
 MsC   ÃARÊRË4 RÌ0R#ÍR(Í-	R2Í6 R-ÎR2Î'R8ÒRÒ-R2c                 ó`  — |j                   dk(  rt        |j                  «      S |j                   dk(  rt        |j                  «      S |j                   dk(  rt        |j                  «      S |j                   dk(  rt        |j                  «      S |j                   dk(  ry t        d|› d�«      ‚)Nr¡   rÏ   rL  rÕ   rX  zUnhandled constant argument z to deserialize)
rš   rÉ   r¡   rÐ   rÏ   r(  rL  r×   rÕ   rc   )r�   r  s     ri   rÖ  z2GraphModuleDeserializer.deserialize_constant_inputt  s‘   € Ø�8‰8�xÒÜ�s—z‘z“?Ð"Ø�X‰X˜Ò#Ü˜Ÿ™Ó&Ð&Ø�X‰X˜Ò$Ü�s—}‘}Ó%Ð%Ø�X‰X˜Ò"Ü˜Ÿ™Ó$Ð$Ø�X‰X˜Ò"Øä Ð#?À¸uÀOÐ!TÓUÐUrh   c                 ó  — t        |t        «      rC|j                  dk(  r|j                  S |j                  dk(  r¿| j                  |j
                     S t        |t        «      rC|j                  dk(  r|j                  S |j                  dk(  rl| j                  |j
                     S t        |t        «      rC|j                  dk(  r|j                  S |j                  dk(  r| j                  |j
                     S t        d|› �«      ‚)Nr¡   rN  rÏ   rÕ   z Unknown symbolic argument type: )rt   rT   rš   r¡   rd  rN  rR   rÏ   rN   rÕ   rc   )r�   Úsym_args     ri   r  z0GraphModuleDeserializer.deserialize_sym_argument‚  sÛ   € Ü�gœ~Ô.Ø�|‰|˜xÒ'Ø—~‘~Ð%Ø—‘ Ò*Ø×3Ñ3°G·O±OÑDÐDÜ˜Ô!1Ô2Ø�|‰|˜zÒ)Ø×'Ñ'Ð'Ø—‘ Ò*Ø×3Ñ3°G·O±OÑDÐDÜ˜¤Ô1Ø�|‰|˜yÒ(Ø—‘Ð&Ø—‘ Ò*Ø×3Ñ3°G·O±OÑDÐDÜÐ?À¸yÐIÓJÐJrh   c                 ój   — | j                  |j                  d   j                  j                  |«       y )Nr   )r²  r9  rn   rN  )r�   r½  rÑ  s      ri   rÈ  z2GraphModuleDeserializer.deserialize_sym_op_outputs”  s)   € Ø×Ñ˜/×1Ñ1°!Ñ4×:Ñ:×BÑBÀGÕLrh   c                 óØ  ‡ — t        |j                  «      dk(  ry t        |j                  «      dk(  rEd|j                  v r7t        |dd«      s*|j                  d   j                  dk7  rˆ fd„} |||«      S t        |j                  «      dk(  rP|j                  d   j                  dk(  r4‰ j                  |j                  d   j                  j                  |«       y t        |j                  «      dk(  rft        |j                  d   j                  t        t        t        f«      r4‰ j                  |j                  d   j                  j                  |«       y t        |j                  «      dk(  rc|j                  d   j                  dk(  rGd |j                  d	<   |j                  ‰ j                   j#                  |j                  «      › d
�«       y ‰ j%                  ||«       y )Nr   r&   ztorch.ops.higher_orderrÇ  TrX  c                 óì  •— g }d }| j                   d   j                  dk(  r| j                   d   j                  }nKt        | j                   d   j                  t
        t        t        f«      r| j                   d   j                  }‰j                  | j                  «      }|€t        d«      ‚‰j                  |||d|«       t        |«      |j                  d<   |‰j                  |j                  <   y )Nr   rœ  zarg should not be Noner  )r9  rš   rœ  rt   rn   rT   rN   rR   rÊ  ru  r¨   Úgenerate_getitemr©   r£  rd  rH  )r½  rÑ  r¾  r²  Údeserialized_metadatar�   s        €ri   Ú#_deserialize_hop_with_single_returnzXGraphModuleDeserializer.deserialize_outputs.<locals>._deserialize_hop_with_single_return£  sè   ø€ Ø&(�Ø�Ø"×*Ñ*¨1Ñ-×2Ñ2°kÒAØ)×1Ñ1°!Ñ4×>Ñ>‘CÜØ#×+Ñ+¨AÑ.×4Ñ4Ü#¤_Ô6FÐGôð *×1Ñ1°!Ñ4×:Ñ:�CØ(,×(AÑ(AØ#×,Ñ,ó)Ð%ð �;Ü(Ð)AÓBÐBà×%Ñ% h°¸¸aÐAVÔWÜ&+¨H£o�—‘˜UÑ#Ø=D�×,Ñ,¨W¯\©\Ñ:Ørh   rœ  r  Ú_unused)r  r9  r3  rR  rš   r²  rœ  rH  rt   rn   rT   rN   rR   rN  r£  Ú_renamerà  Ú_target_to_strÚdeserialize_multiple_outputs)r�   r½  rÑ  r-  s   `   ri   rË  z+GraphModuleDeserializer.deserialize_outputs—  s©  ø€ äˆ×&Ñ&Ó'¨1Ò,Øô �×'Ñ'Ó(¨AÒ-Ø(¨O×,BÑ,BÑBÜ˜OÐ-JÈDÔQØ×'Ñ'¨Ñ*×/Ñ/°9Ò<ôñ* 7°ÈÓPÐPô �×'Ñ'Ó(¨AÒ-Ø×'Ñ'¨Ñ*×/Ñ/°;Ò>à×Ñ˜o×5Ñ5°aÑ8×BÑB×GÑGÈÔQØÜ�×(Ñ(Ó)¨QÒ.´:Ø×#Ñ# AÑ&×,Ñ,Üœ_Ô.>Ð?ô4
ð ×Ñ˜o×5Ñ5°aÑ8×>Ñ>×FÑFÈÔPØä�×'Ñ'Ó(¨AÒ-Ø×'Ñ'¨Ñ*×/Ñ/°9Ò<ð #'ˆG�L‰L˜ÑØ�O‰O˜tŸz™z×8Ñ8¸¿¹ÓHÐIÈÐQÔRØà×)Ñ)¨/¸7ÕCrh   r²  r€  r,  c                 óÔ  — t        |t        «      r|j                  }nQt        |t        «      r|j                  }n4t        |t
        «      r|j                  }nt        dt        |«      › �«      ‚| j                  j                  dt        j                  ||f|¬«      }| j                  ||«       |j                  | j                  |   «       |j                  j!                  |«       y )Nz+generate_getitem got unknown argument type r»  rS  )rt   rU   rH  rT   rN  rR   r¨   rš   rà  rÇ  r×  rØ  r²  rq  re  r£  r?  )r�   r¾  rÑ  r²  r€  r,  rH  Úindividual_outputs           ri   r+  z(GraphModuleDeserializer.generate_getitemÑ  sÌ   € ô �cœ>Ô*Ø—8‘8‰DÜ˜œ^Ô,Ø—;‘;‰DÜ˜Ô-Ô.Ø—;‘;‰Dä Ø=¼dÀ3»i¸[ÐIóð ð !ŸJ™J×2Ñ2ØÜ×ÑØ�cˆNØð	 3ó 
Ðð 	×Ñ˜$Ð 1Ô2Ø�‰˜×4Ñ4°TÑ:Ô;ð 	×Ñ×%Ñ%Ð&;Õ<rh   c                 ó”  — t        |«      D �]¹  \  }}t        |t        t        t        f«      r| j                  |||||«       Œ8t        |t        «      s!t        dt        |«      j                  › �«      ‚|j                  dv r | j                  |||j                  ||«       Œ—|j                  dv rŽ| j                  j                  dt        j                  ||f«      }|j                  g «       | j!                  |d   ||j                  |«       |j"                  j%                  |«       |d   |j"                  d<   �Œ3|j                  dk(  rl| j                  j                  dt        j                  ||fd¬«      }|j                  d «       d |j"                  d<   |j"                  j%                  |«       �Œ®t'        d	|› �«      ‚ y )
Núexpected Argument, got )rœ  rž  rP  )rÂ  ri  rk  r[  r\  r]  rZ  ro  r»  r÷  r  rX  rS  z Unimplemented node output type: )rÃ  rt   rU   rT   rR   r+  r(   r¨   rš   rd   rn   rà  rÇ  r×  rØ  rq  Úgenerate_getitemsr£  r?  ÚNotImplementedError)	r�   r¾  rÑ  r¯  r,  r€  r²  Úlist_outputr3  s	            ri   r6  z)GraphModuleDeserializer.generate_getitemsï  sº  € ô " $›ó -	T‰HˆC�Ü˜#¤´Ô@PÐQÔRØ×%Ñ%Ø˜g s¨CÐ1Fôð ä˜c¤8Ô,Ü$Ð'>¼tÀC»y×?QÑ?QÐ>RÐ%SÓTÐTØ�x‰xÐFÑFØ×%Ñ%Ø˜g s§y¡y°#Ð7Lõð —‘ð 	ñ 	ð #Ÿj™j×4Ñ4Ø#Ü×$Ñ$Ø˜c�Nó�ð
 —‘ Ô#Ø×&Ñ&Ø˜R‘L +¨s¯y©yÐ:Oôð × Ñ ×'Ñ'Ð(=Ô>Ø*2°2©,�× Ñ  Ó'Ø—‘˜YÒ&Ø$(§J¡J×$:Ñ$:Ø#Ü×$Ñ$Ø˜c�NØ"ð	 %;ó %Ð!ð —‘ Ô%Ø04Ð!×&Ñ& uÑ-Ø!×&Ñ&×-Ñ-Ð.CÖDä)Ð,LÈSÈEÐ*RÓSÐSñ[-	Trh   c                 óì  — | j                  |j                  «      }g }t        |j                  «      dk(  rðt	        |j                  d   j
                  t        «      s8t        dt        |j                  d   j
                  «      j                  › �«      ‚t	        |j                  d   j
                  d   t        «      s;t        dt        |j                  d   j
                  d   «      j                  › �«      ‚| j                  |||j                  d   j                  |«       n| j                  |||j                  |«       t        |«      |j                  d<   || j                  |j                   <   y )Nr&   r   úexpected list, got rÅ  r  )rÊ  ru  r  r9  rt   rn   rA  r¨   rš   rd   rU   r6  rÂ  r©   r£  rd  rH  )r�   r½  rÑ  r,  r¾  s        ri   r1  z4GraphModuleDeserializer.deserialize_multiple_outputs%  sV  € ð !%× 9Ñ 9¸/×:RÑ:RÓ SÐð !ˆÜˆ×&Ñ&Ó'¨1Ò,Ü˜o×5Ñ5°aÑ8×>Ñ>ÄÔEÜ$Ø)¬$¨×/FÑ/FÀqÑ/I×/OÑ/OÓ*P×*YÑ*YÐ)ZÐ[óð ô ˜o×5Ñ5°aÑ8×>Ñ>¸qÑAÄ>ÔRÜ$Ø3´D¸×9PÑ9PÐQRÑ9S×9YÑ9YÐZ[Ñ9\Ó4]×4fÑ4fÐ3gÐhóð ð ×"Ñ"ØØØ×'Ñ'¨Ñ*×5Ñ5Ø%õ	ð ×"Ñ"Ø˜' ?×#:Ñ#:Ð<Qôô
 $ H›oˆ�‰�UÑØ5<ˆ×$Ñ$ W§\¡\Ò2rh   ru  c                 óØ  ‡ ‡‡— i }|j                  d«      x}r||d<   dt        fˆ fd„}|j                  d«      x}r3d„ Šd„ Št        ˆˆfd„|j                  t        «      D «       «      }||d<   |j                  d«      x}rNg }|j                  t        «      D ]/  }	|	j                  d	«      \  }
}|j                  |
 ||«      f«       Œ1 ||d<   |j                  d
«      x}r!t        |j                  t        «      «      |d
<   |j                  d«      x}rt        j                  |«      |d<   |j                  d«      x}r'‰ j                  t        j                  |«      «      |d<   |S )Nr  rj  c                 ó<  •— d }| j                  d«      r%t        j                  }| j                  d«      dd  }n=| j                  d«      rt        }| j                  d«      dd  }n‰j	                  | «      S |}|D ]  }t        ||«      s| c S t        ||«      }Œ  |S )Nztorch.nnrµ  r$   ru   r&   )r¶  ru   rë   rl  rs  rQ  rR  )rj  r¸  rr  r3  rH  r�   s        €ri   Údeserialize_meta_funczKGraphModuleDeserializer.deserialize_metadata.<locals>.deserialize_meta_funcN  s«   ø€ ØˆFØ ×+Ñ+¨JÔ7ÜŸ™�Ø*;×*AÑ*AÀ#Ó*FÀqÀrÐ*JÑ'Ø"×-Ñ-¨gÔ6Ü�Ø*;×*AÑ*AÀ#Ó*FÀqÀrÐ*JÑ'à×0Ñ0Ð1BÓCÐCàˆFØ/ò 3�Ü˜v tÔ,Ø,Ò,ä$ V¨TÓ2‘Fð	3ð
 ˆMrh   r  c                 ó   — | ||ffS rl   rg   )rŠ  r  r  s      ri   Úimport_nn_module_stackzLGraphModuleDeserializer.deserialize_metadata.<locals>.import_nn_module_stackc  s   € Ø˜T 2˜J�Ð&rh   c                 ó(  — g }d\  }}d\  }}t        | «      D ]>  \  }}||v r|dz  }Œ||v r|dz  }Œ|dk(  sŒ |dk(  sŒ&|j                  | || «       |dz   }Œ@ |j                  | |d  «       t        |«      dk7  rt        dt        |«      › �«      ‚|S )N)r   r   )z[(z)]r&   r  r   é   z/expected metadata_split to return 3 parts, got )rÃ  rq  r  r¨   )ru  r“   ÚstartrW  rÿ  rK  ÚendÚcs           ri   Úmetadata_splitzDGraphModuleDeserializer.deserialize_metadata.<locals>.metadata_splitg  s¼   € Ø�Ø‘��qØ!‘��1Ü'¨Ó1ò (‘F�C˜Ø˜A‘vØ˜Q™™Ø˜a™Ø˜Q™™Ø˜c› a¨1£fØŸ
™
 8¨E°#Ð#6Ô7Ø # a¡™ð(ð —
‘
˜8 E FÐ+Ô,Ü�s“8˜q’=Ü(ØIÌ#ÈcË(ÈÐTóð ð �
rh   c              3   ó4   •K  — | ]  } ‰ ‰|«      Ž –— Œ y ­wrl   rg   )rx   rÅ  r?  rE  s     €€ri   rz   z?GraphModuleDeserializer.deserialize_metadata.<locals>.<genexpr>z  s#   øè ø€ ò #àñ '©°tÓ(<Ô=ñ#ùs   ƒr  r  r  r  r  )
rp  r(  r  rl  r  rq  r©   rí   rù   Ú_deserialize_from_node)r�   ru  r  r  r=  Únn_module_stack_strr  Úsource_fn_st_strr  Úsource_fn_strrH  Ú
target_strÚtorch_fn_strÚ
custom_strÚfrom_node_strr?  rE  s   `              @@ri   rÊ  z,GraphModuleDeserializer.deserialize_metadataI  s�  ú€ Ø ˆØ"Ÿ,™, }Ó5Ð5ˆ;Ð5Ø!,ˆC�Ñð	´Sõ 	ð& #+§,¡,Ð/@Ó"AÐAÐÐAò'òô& #ô #à/×5Ñ5´lÓCô#ó ˆOð &5ˆCÐ!Ñ"à'Ÿ|™|Ð,=Ó>Ð>ÐÐ>àˆLØ!1×!7Ñ!7¼Ó!Eò O�Ø#0×#6Ñ#6°sÓ#;Ñ ��jØ×#Ñ# TÑ+@ÀÓ+LÐ$MÕNðOð &2ˆCÐ!Ñ"à#Ÿ<™<¨
Ó3Ð3ˆ<Ð3Ü# L×$6Ñ$6´|Ó$DÓEˆC�
‰Oà!Ÿ™ hÓ/Ð/ˆ:Ð/Ü ŸJ™J zÓ2ˆC�‰Mà$ŸL™L¨Ó5Ð5ˆ=Ð5Ø#×:Ñ:¼4¿:¹:ÀmÓ;TÓUˆC�Ñàˆ
rh   Úfrom_node_datac                 óÂ   — |€yt        |t        «      s!t        dt        |«      j                  › �«      ‚|D �cg c]  }t        j                  |«      x}�|‘Œ c}S c c}w )z@
        Deserialize from_node metadata from JSON data.
        Nr:  )rt   rA  r¨   rš   rd   r   Ú
_from_dict)r�   rO  Úfn_dictr#  s       ri   rG  z.GraphModuleDeserializer._deserialize_from_node“  sn   € ð Ð!Øä˜.¬$Ô/Ü Ð#6´t¸NÓ7K×7TÑ7TÐ6UÐ!VÓWÐWð *ö
àÜ)×4Ñ4°WÓ=Ð=�ÐJò ò
ð 	
ùò 
s   ¹ Arˆ  c                 ób  — t         j                  d|«       |j                  dk(  r*t        j                  |j
                  j                  ¬«      S |j                  dk(  r*t        j                  |j                  j                  ¬«      S |j                  dk(  r*t        j                  |j                  j                  ¬«      S |j                  dk(  r:t        j                  |j                  j                  | j                  |«      ¬«      S t        j                  d| j                  |«      ¬«      S )	Nz[deserialize_argument_spec] %srœ  rS  rž  rP  r¢  rÁ  r8  )r  r¤  rš   r©  rU   rœ  rH  rT   rž  rN  rR   rP  rÔ  r¢  r³  r÷  s     ri   rÕ  z1GraphModuleDeserializer.deserialize_argument_spec¥  sß   € Ü�	‰	Ð2°AÔ6Ø�6‰6�[Ò Ü×$Ñ$¨!¯+©+×*:Ñ*:Ô;Ð;Ø�V‰V�|Ò#Ü×$Ñ$¨!¯,©,×*>Ñ*>Ô?Ð?Ø�V‰V�~Ò%Ü×&Ñ&¨A¯N©N×,BÑ,BÔCÐCØ�V‰V�Ò&Ü×&Ñ&Ø—_‘_×)Ñ)°×1GÑ1GÈÓ1Jôð ô ×&Ñ&¨B°d×6LÑ6LÈQÓ6OÔPÐPrh   r	  c           	      ó\  — t        j                  |j                  D �cg c]  }| j                  |«      ‘Œ c}|j                  D �cg c]  }| j                  |«      ‘Œ c}t        |j                  «      t        |j                  «      |j                  x}r|¬«      S d ¬«      S c c}w c c}w )Nr  )	r©  rA   r8  rÕ  r9  r   r  r  r  r  s       ri   Ú!deserialize_module_call_signaturez9GraphModuleDeserializer.deserialize_module_call_signature´  s°   € ô ×%Ñ%à;P×;WÑ;WöØ67�×.Ñ.¨qÕ1òð <Q×;XÑ;XöØ67�×.Ñ.¨qÕ1òô #Ð#8×#@Ñ#@ÓAÜ#Ð$9×$BÑ$BÓCà#8×#JÑ#JÐJ˜%ÐJ�ô
ð 	
ð RVô
ð 	
ùòùòs   žB$ÁB)
r�  c           	      óâ   — t         j                  d«       |D �cg c]J  }t        j                  |j                  |j
                  r| j                  |j
                  «      nd ¬«      ‘ŒL c}S c c}w )Nz 
[deserialize_module_call_graph]r  )r  r¤  r©  r@   r  rÓ  rU  r  s      ri   r  z5GraphModuleDeserializer.deserialize_module_call_graphÅ  sg   € ô 	�	‰	Ð5Ô6ð +ö

ð ô ×ÑØ—I‘Ið —’ð ×:Ñ:¸5¿?¹?ÔKàöò

ð 
	
ùò 

s   šAA,)r˜   Nrl   )NN)Srd   re   rf   Údataclassesr
   rb  rŽ   r	   r   ri  r(  ro  rs  rÉ   r×   rÐ   r»   r‹  r|  rS   ru   r’  rQ   r•  rM   r˜  rV   r   rü   r-   r©  r¡  r°  rD   r£  r2   rÀ  r   r´  r6   r×  rF   rÚ  r5   r7  rÜ  r4   r  r¥  r‚   r   r©   r   r!   r	  r²  rÆ  rÌ  rA  rB   rÉ  r(   r³  r,   rÖ  r  rÈ  rË  rU   rT   rR   r+  r6  r1  rÊ  r   rG  r8  rÕ  rA   rU  r@   r  rg   rh   ri   r`   r`   ÷  su  „ à×Ñ÷Oð Oó ðOó(ð ð 8¨D¡>ò ó ðð0-Àó -ð°có ð4 @Dñ/-Øð/-Ø#&¨¡:°Ñ#5¸Ñ#<ð/-à	�‰ó/-ðb Vð °°e·l±lÑ0Bó ð. xð °E¸E¿N¹NÑ4Jó ð gð °$¸¿¹Ñ2Fó ðàðð 
óð 
Ø0ð
à	×	Ñ	ó
ðP°%·(±(·-±-À#Ñ2EÈÑ2Ló Pð(E°%ð E¸E¿H¹H¿N¹Nó EðNJ1°ð J1¸hð J1È4ó J1ðX3<¨	ð 3<°b·l±ló 3<ðj3=¨ð 3=¸¿¹ó 3=ðj
¨ð 
¸B×<SÑ<Só 
ð ØNRñv)à!,ðv)ð  $ C¨¯©Ð$5Ñ6¸Ñ>ðv)ð ˜˜S˜‘> EÑ)ð	v)ð
 ˜e E§L¡L°#Ð$5Ñ6¸¸SÀ#¸X¹ÐFÑGØ
ñà
ñðv)ð # 3¨×(CÑ(CÐ#CÑDÀtÑKðv)ð 
óv)ðpA ð A¨u¯x©x¯}©}ó AòLð(#¸$ó (#ðT%¨T°-Ñ-@ó %ð`> Xð `>°#ó `>ðDV¨mð VÀó VòKð$M¸$ð MÈÏÉÏÉó Mð8D°4ð 8DÀ%Ç(Á(Ç-Á-ó 8Dðt=ð —‘—‘ð=ð ˜nÑ,Ð/?Ñ?ð	=ð
 ð=ð  $ C¨ H™~ó=ð<4Tð —‘—‘ð4Tð
  $ C¨ H™~ó4Tðl"=Ø#ð"=Ø.3¯h©h¯m©mð"=à	ó"=ðHH¨T°#°s°(©^ð HÀÀSÈ#ÀXÁó HðT
Ø" 4¨¨S¨¡>Ñ2°TÑ9ð
à	ˆjÑ	˜DÑ	 ó
ð$Q¨8ð Q¸¿¹ó Qð
Ø%8ð
à	×	Ñ	ó
ð"
Ø!% oÑ!6ð
à	ˆb× Ñ Ñ	!ô
rh   c                   óX  — e Zd Zddeeef   dz  fd„Zdeeej                  f   deee	j                  f   dee	j                  ef   fd„Z	 ddd	œd
edeeej                  f   ez  deeej                  f   ez  deeej                  df   eeef   f   ez  dz  dej                  f
d„Zy)ra   NÚexpected_opset_versionc                 óÀ   — i | _         |r| j                   j                  |«       d| j                   vr,t        j                  j	                  «       | j                   d<   y y r=  )rY  r?  ru   rª  r@  )r�   rY  s     ri   rŽ   z$ExportedProgramDeserializer.__init__Ø  sR   € Ø68ˆÔ#Ù!Ø×'Ñ'×.Ñ.Ð/EÔFØ˜×4Ñ4Ñ4Ü27·(±(×2TÑ2TÓ2VˆD×'Ñ'¨Ò/ð 5rh   r„  r}  r˜   c                 óð   — t         j                  d«       i }|j                  «       D ]K  \  }}|j                  |«      x}rt         j                  d||«       |||<   Œ6t         j	                  d|«       ŒM |S )Nz 
[deserialize_range_constraints]z([deserialize_range_constraints] %s -> %sz;Symbol %s did not appear in the graph that was deserialized)r  r¤  rm   rp  r  )r�   r„  r}  r*  ro   rp   Úsymbols          ri   Údeserialize_range_constraintsz9ExportedProgramDeserializer.deserialize_range_constraintsß  s   € ô
 	�	‰	Ð5Ô6ØÐØ(×.Ñ.Ó0ò 	‰DˆAˆqØ.×2Ñ2°1Ó5Ð5ˆvÐ5Ü—	‘	ÐDÀaÈÔKØ,-Ð! &Ò)ä—‘ØQÐSTõð	ð !Ð rh   F©Ú_unsafe_skip_version_checkr~   r   r€   r�   .c                ó  — t        |t        «      s!t        dt        |«      j                  › �«      ‚|j
                  }|j                  t        d   k7  r@|j                  dk(  r|j                  dk(  s"|s t        d|j
                  › dt        › d�«      ‚|j                  j                  «       D ��ci c]M  \  }}|t        j                  t        |j                  t          «      t        |j"                  t         «      «      “ŒO }	}}t%        «       j'                  |j(                  ||||	«      }
| j+                  |	|
j,                  «      }t/        j                  |
j(                  |
j(                  j0                  |
j2                  |
j4                  ||
j6                  |
j8                  |
j:                  |j<                  D �cg c]  }t?        |«      ‘Œ c}¬«	      }|j@                  |_!        tD        jG                  d|«       |S c c}}w c c}w )Núexpected ExportedProgram, got r   zSerialized schema version z+ does not match our current schema version rµ  )	Úrootrà  rŽ  r   r*  r�  r�   r€   rJ  z
[deserialize]: %s)$rt   r/   r¨   rš   rd   rI  rF  rK   rG  rc   r*  rm   r   r!   r$  Úmin_valr   Úmax_valr`   r	  r,  r]  ra  r©  rà  rÓ  r   r�  r�   r€   rJ  r   rL  rR  r  r¤  )r�   r~   r   r€   r�   r_  Úversionro   rp   r„  Úresr*  r"  s                ri   r	  z'ExportedProgramDeserializer.deserializeð  sê  € ô Ð*¬OÔ<Ü Ø0´Ð6FÓ1G×1PÑ1PÐ0QÐRóð ð #×1Ñ1ˆð �=‰=œN¨1Ñ-Ò-Ø�M‰M˜QÒ 7§=¡=°AÒ#5á-Ü$Ø0Ð1A×1PÑ1PÐ0Qð RAÜAOÐ@PÐPQðSóð ð )×:Ñ:×@Ñ@ÓB÷ 
ñ
 ��1ð	 Œ×*Ñ*Ü! !§)¡)¬f¨WÓ5Ü! !§)¡)¬VÓ4óñ ð 
Ðñ  
ô &Ó'×3Ñ3Ø×)Ñ)ØØØØ ó
ˆð !×>Ñ>Ø Ø× Ñ ó
Ðô
 ×#Ñ#Ø×!Ñ!Ø×"Ñ"×(Ñ(ØŸM™MØ—~‘~Ø/Ø!×3Ñ3Ø×-Ñ-Ø—m‘mØ1A×1KÑ1KÖL¨A”} QÕ'ÒLô

ˆð /×:Ñ:ˆÔÜ�	‰	Ð'¨Ô0ØˆùóA 
ùò8 Ms   Â1AHÆ>Hrl   )rd   re   rf   r  r(  rÉ   rŽ   r   r!   r»   rÈ   r]  r/   ru   r¥  r‚   r©   r   r©  r	  rg   rh   ri   ra   ra   Ö  s
  „ ñW¨t°C¸°H©~ÀÑ/Dó Wð!à" 3¨×(CÑ(CÐ#CÑDð!ð  $ C¨¯©Ð$5Ñ6ð!ð 
ˆe�l‰l˜KÐ'Ñ	(ó	!ð0 ð;ð $)ò;à)ð;ð ˜˜eŸl™lÐ*Ñ+¨eÑ3ð;ð ˜˜UŸ\™\Ð)Ñ*¨UÑ2ð	;ð
 ˜e E§L¡L°#Ð$5Ñ6¸¸SÀ#¸X¹ÐFÑGØ
ñà
ñð;ð 
×	Ñ	ô;rh   ra   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )rð   c                 óÂ   •— t        |t        «      r|j                  S t        |t        «      r$t	        j
                  |«      j                  d«      S t        ‰| �!  |«      S ©Nrê   )	rt   r   rn   r‚   Úbase64Ú	b64encoderú   Úsuperr#  )r�   r4  Ú	__class__s     €ri   r#  zEnumEncoder.default/  sL   ø€ Ü�cœ4Ô Ø—9‘9ÐÜ�cœ5Ô!Ü×#Ñ# CÓ(×/Ñ/°Ó8Ð8Ü‰w‰˜sÓ#Ð#rh   )rd   re   rf   r#  Ú__classcell__)rm  s   @ri   rð   rð   .  s   ø„ ÷$ð $rh   rð   c           
      óú  — t        | t        «      r!| j                  t        | j                  «      iS t        j                  | «      rKt        j                  | «      D �ci c],  }|j                  t        t        | |j                  «      «      “Œ. c}S t        | t        «      r| D �cg c]  }t        |«      ‘Œ c}S t        | t        «      rt        d„ | D «       «      S t        | t        «      r-| j                  «       D ��ci c]  \  }}|t        |«      “Œ c}}S t        | t        «      rA| t        j                   k(  ry| t        j                    k(  ryt        j"                  | «      ry| S | S c c}w c c}w c c}}w )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrl   )rï   r‡  s     ri   rz   z%_dataclass_to_dict.<locals>.<genexpr>B  s   è ø€ Ò8¨qÔ'¨×*Ñ8ùs   ‚ÚInfinityz	-InfinityÚNaN)rt   r\   rš   rï   rn   rW  Úis_dataclassr  rH  rR  rA  r©   r  rm   rÐ   r  r"  Úisnan)r4  Úfrˆ  ro   rp   s        ri   rï   rï   7  s4  € Ü�#”vÔØ—‘Ô,¨S¯Y©YÓ7Ð8Ð8Ü	×	!Ñ	! #Ô	&ô !×'Ñ'¨Ó,ö
àð �F‰FÔ&¤w¨s°A·F±FÓ';Ó<Ñ<ò
ð 	
ô 
�CœÔ	Ø/2Ö3¨!Ô" 1Õ%Ò3Ð3Ü	�CœÔ	ÜÑ8°CÔ8Ó8Ð8Ü	�CœÔ	Ø58·Y±Y³[×A©T¨Q°�Ô% aÓ(Ñ(ÓAÐAÜ	�CœÔ	Ø”$—(‘(Š?ØØ”T—X‘X�IÒØÜ�Z‰Z˜Œ_ØàˆJàˆ
ùò)
ùò
 4ùó Bs   Á1E-Â&E2Ä E7r4  c                 ój   — t        j                  t        | «      t        d¬«      j	                  d«      S )NF)ré   Ú	allow_nanrê   )rí   rî   rï   rð   rñ   )r4  s    ri   Ú_to_json_bytesrx  R  s+   € Ü�:‰:Ô(¨Ó-´;È%ÔP×WÑWØóð rh   TrA  r~   r;  rB  rC  rD  c                ó¤  — t        | j                  «      5  t        ||«      j                  | |||¬«      }d d d «       t	        j
                  t        «      s+t        dt        |j
                  «      j                  › �«      ‚t        |j
                  «      }t        ||j                  |j                  |j                  «      }|S # 1 sw Y   Œ‘xY w)NrA  ra  )r   r�   r_   r]   rt   r~   r/   r¨   rš   rd   rx  r}   r   r€   )	r~   r;  rÿ   rB  rC  rD  Úserialized_programÚ
json_bytesrþ   s	            ri   r]   r]   X  sÔ   € ô 
0Ð0@×0OÑ0OÓ	Pñ 
Ü6Ø˜?ó
ç
‰)ØØ!5Ø 3Ø%=ð	 ó 
ð 	÷
ô Ð(×9Ñ9¼?ÔKÜØ,¬TÐ2D×2UÑ2UÓ-V×-_Ñ-_Ð,`Ðaó
ð 	
ô  Ð 2× CÑ CÓD€JÜ!ØØ×%Ñ%Ø×$Ñ$Ø×)Ñ)ó	€Hð €O÷+
ð 
ús   – CÃCc                 ó®   — t        | t        «      rt        t        | d «      }|�|S t        | t        j
                  «      rt        | j                  «      S | S rl   )rt   r(  rR  r'   ÚtypingÚ
ForwardRefÚ_resolve_schema_clsÚ__forward_arg__)ré   Úresolveds     ri   r  r  y  sK   € Ü�#”sÔÜœ6 3¨Ó-ˆØÐØˆOÜ�#”v×(Ñ(Ô)Ü" 3×#6Ñ#6Ó7Ð7Ø€Jrh   c           	      óü  — t        | «      } t        | t        «      rt        d| › d�«      ‚t	        j
                  | «      t        u rt        | j                  |«      S t	        j
                  | «      t        j                  t        j                  fv rlt        d «      t	        j                  | «      v rL|€y t	        j                  | «      }t        |«      dk7  rt        dt        |«      › �«      ‚t        |d   |«      S t        | t        «      �r#t        | t         «      �rt        |t"        «      s!t        dt        |«      j$                  › �«      ‚t        |«      dk7  rt        dt        |«      › �«      ‚t'        t)        |j+                  «       «      «      }t'        t)        |j-                  «       «      «      }t        |t        «      s!t        d	t        |«      j$                  › �«      ‚t	        j.                  | t1        t2        «      ¬
«      }||   } | j4                  di |t        ||«      i¤ŽS t7        j8                  | «      rpi }t	        j.                  | t1        t2        «      ¬
«      }t7        j:                  | «      D ]*  }|j<                  }	|	|vrŒt        ||	   ||	   «      }
|
||	<   Œ,  | di |¤ŽS t        |t>        «      rBt        |«      dk(  r|S t	        j                  | «      d   }|D �cg c]  }t        ||«      ‘Œ c}S t        |t"        «      rFt	        j                  | «      d   }|jA                  «       D ��ci c]  \  }}|t        ||«      “Œ c}}S | tB        u rtC        |«      S |S c c}w c c}}w )NzUnresolved class type: 'z'.r$   zexpected 2 type args, got r   zexpected dict, got r&   zexpected dict with 1 key, got zexpected str key, got )Úglobalnsrg   )"r  rt   r(  r¨   r}  Ú
get_originr   rû   Ú
__origin__ÚUnionÚtypesÚ	UnionTyperš   Úget_argsr  Ú
issubclassr\   r  rd   rl  rm  rk  rn  Úget_type_hintsÚvarsr'   rË   rW  rs  r  rH  rA  rm   rÐ   )ré   ÚdataÚty_argsr�  Ú_valueÚ
type_hintsÚ
field_typer  ru  rH  Únew_field_objÚd_typerj   Úv_typero   rp   s                   ri   rû   rû   ƒ  sù  € Ü
˜cÓ
"€CÜ�#”sÔÜÐ7¸°u¸BÐ?Ó@Ð@Ü×Ñ˜Ó¤Ñ*Ü! #§.¡.°$Ó7Ð7Ü×Ñ˜Ó¤&§,¡,´·±Ð!@Ñ@ÄTØóFä	�‰˜Ó	ñFð ˆ<ØÜ—/‘/ #Ó&ˆÜˆw‹<˜1ÒÜ Ð#=¼cÀ'»l¸^Ð!LÓMÐMÜ! '¨!¡*¨dÓ3Ð3Ü	�CœÕ	¤:¨c´6Õ#:Ü˜$¤Ô%Ü Ð#6´t¸D³z×7JÑ7JÐ6KÐ!LÓMÐMÜˆt‹9˜Š>Ü Ð#AÄ#ÀdÃ)ÀÐ!MÓNÐNÜ”T˜$Ÿ)™)›+Ó&Ó'ˆÜ”d˜4Ÿ;™;›=Ó)Ó*ˆÜ˜%¤Ô%Ü Ð#9¼$¸u»+×:NÑ:NÐ9OÐ!PÓQÐQÜ×*Ñ*¨3¼¼f»ÔFˆ
Ø Ñ&ˆ
àˆs�z‰zÑL˜UÔ$6°zÀ6Ó$JÐKÑLÐLÜ	×	!Ñ	! #Ô	&ØˆÜ×*Ñ*¨3¼¼f»ÔFˆ
ô ×#Ñ# CÓ(ò 	)ˆAØ—6‘6ˆDØ˜4ÑØÜ.¨z¸$Ñ/?ÀÀdÁÓLˆMØ(ˆF�4ŠLð	)ñ ‰}�V‰}ÐÜ	�Dœ$Ô	Üˆt‹9˜Š>ØˆKÜ—‘ Ó% aÑ(ˆØ7;Ö<°!Ô" 6¨1Õ-Ò<Ð<Ü	�Dœ$Ô	Ü—‘ Ó% aÑ(ˆØ=A¿Z¹Z»\×J±T°Q¸�Ô% f¨aÓ0Ñ0ÓJÐJØ	”‰Ü�T‹{ÐØ€Kùò =ùó Ks   Ë2M3ÍM8ré   Úartifact_bytesc                 ój   — |j                  d«      }t        j                  |«      }t        | |«      }|S ri  )rú   rí   rù   rû   )ré   r•  Úartifact_strÚartifact_dictÚartifact_dataclasss        ri   Ú_bytes_to_dataclassrš  ¸  s3   € Ø!×(Ñ(¨Ó1€LÜ—J‘J˜|Ó,€MÜ+¨C°Ó?ÐØÐrh   Fr^  rY  c                ó:  — t        | j                  t        «      s+t        dt	        | j                  «      j
                  › �«      ‚t        t        | j                  «      }t        |«      j                  || j                  | j                  | j                  |¬«      S )Nzexpected bytes, got r^  )rt   r~   r‚   r¨   rš   rd   rš  r/   ra   r	  r   r€   r�   )rþ   rY  r_  Úserialized_exported_programs       ri   r	  r	  ¿  s—   € ô �h×/Ñ/´Ô7ÜØ"¤4¨×(AÑ(AÓ#B×#KÑ#KÐ"LÐMó
ð 	
ô #6Ü˜×2Ñ2ó#Ðô 'Ð'=Ó>×JÑJØ#Ø×ÑØ×ÑØ×ÑØ#=ð Kó ð rh   c                 óz  ‡ ‡‡‡‡‡— dt         fd„Šˆfd„Šˆˆˆ fd„} |‰j                  «      }t        |«      t        ‰j                  «      k7  r-t        dt        ‰j                  «      › dt        |«      › �«      ‚i Šˆˆfd„}ˆfd„}‰ D ]  } ‰||«       Œ |D ]  }	|	j                  D ]  }
 ‰||
«       Œ Œ |D ]&  }	|	j
                  D ]  } ‰||j                  «       Œ Œ( |D ]  }
 ‰||
«       Œ |D ]  }	|	j                  j                  «        Œ t        t        ‰j                  j                  «       t        j                  d	«      ¬
«      «      }t        t        ‰j                  j                  «       t        j                  d	«      ¬
«      «      }t        t        ‰j                   j                  «       t        j                  d	«      ¬
«      «      }t        t        ‰j"                  j                  «       t        j                  d	«      ¬
«      «      }t        t        ‰j$                  j                  «       t        j                  d	«      ¬
«      «      }d	}|D ]¸  }|j
                  D ]§  }|j                  }|j&                  dk(  sŒt)        |j*                  j,                  j
                  |j*                  j,                  j                  |j*                  j,                  ‰«      \  |j*                  _        }d|› �|j*                  _        |dz  }Œ© Œº t1        ‰ ||||||‰j2                  |¬«	      Š‰‰fS )Nrÿ  c                 óÐ  — | j                   dk(  ry | j                   dk(  r| j                  S | j                   dk(  r| j                  S | j                   dk(  ry | j                   dk(  ry | j                   dk(  ry | j                   dk(  ry | j                   dk(  ry | j                   d	k(  ry | j                   d
k(  ry | j                   dk(  r| j                  S | j                   dk(  r| j                  S | j                   dk(  r| j
                  S | j                   dk(  r| j                  S | j                   dk(  ry | j                   dk(  ry | j                   dk(  ry | j                   dk(  ry | j                   dk(  ry | j                   dk(  ry | j                   dk(  r| j                  S | j                   dk(  r| j                  S | j                   dk(  ry | j                   dk(  r| j                  S | j                   dk(  r| j                  S | j                   dk(  ry | j                   dk(  ry | j                   dk(  ry | j                   dk(  ry | j                   dk(  r| j                  S t        d| › �«      ‚) NrX  rœ  rÂ  r¡   r[  rÏ   r\  rL  r]  rV  rž  ri  rP  rk  r�  r�  r�  rŽ  rÕ   rZ  rR  ro  rF  r~  r¢  r”  r‰  rŒ  rY  rx  z+Unknown input type to the ExportedProgram: )rš   rœ  rÂ  rž  ri  rP  rk  rR  ro  r~  r¢  rx  r¨   r|  s    ri   Ú_get_argumentz*_canonicalize_graph.<locals>._get_argumentØ  s.  € Ø�6‰6�YÒØØ�V‰V�{Ò"Ø—;‘;ÐØ�V‰V�|Ò#Ø—<‘<ÐØ�V‰V�xÒØØ�V‰V�yÒ ØØ�V‰V�zÒ!ØØ�V‰V�{Ò"ØØ�V‰V�{Ò"ØØ�V‰V�|Ò#ØØ�V‰V�|Ò#ØØ�V‰V�|Ò#Ø—<‘<ÐØ�V‰V�}Ò$Ø—=‘=Ð Ø�V‰V�~Ò%Ø—>‘>Ð!Ø�V‰V�Ò&Ø—?‘?Ð"Ø�V‰VÐ'Ò'ØØ�V‰VÐ)Ò)ØØ�V‰V�{Ò"ØØ�V‰V�{Ò"ØØ�V‰V�yÒ ØØ�V‰V�zÒ!ØØ�V‰V�}Ò$Ø—=‘=Ð Ø�V‰V�~Ò%Ø—>‘>Ð!Ø�V‰V�zÒ!ØØ�V‰VÐ,Ò,Ø×(Ñ(Ð(Ø�V‰V�Ò&Ø—?‘?Ð"Ø�V‰V�}Ò$ØØ�V‰V�~Ò%ØØ�V‰VÐ'Ò'ØØ�V‰VÐ.Ò.ØØ�V‰VÐ*Ò*Ø×&Ñ&Ð&ä Ð#NÈqÈcÐ!RÓSÐSrh   c                 ó    •— t        |t        «      s!t        dt        |«      j                  › �«      ‚t        j                  |  ‰|«      «       y )Nr5  )rt   r(   r¨   rš   rd   rý  Útree_map)ru  rÿ  rŸ  s     €ri   Úfor_argsz%_canonicalize_graph.<locals>.for_args  s>   ø€ Ü˜!œXÔ&Ü Ð#:¼4À»7×;KÑ;KÐ:LÐ!MÓNÐNÜ�‰˜™=¨Ó+Õ,rh   c                 ón  •‡ ‡‡‡‡‡‡‡‡— t          G d„ d«      «       }t        «       Ši Ši Šg Ši Šg }dt        d z  fd„Š‰D ]  }ˆˆfd„} ‰||«       Œ t        ‰ «      D ]2  \  Š}ˆˆˆfd„}|j                  D ]  } ‰||«       Œ  |g d«      ‰‰<   Œ4 t        ‰ «      D ]3  \  Š}ˆˆˆˆˆˆfd„}	|j
                  D ]  } ‰|	|j                  «       Œ Œ5 ˆˆfd	„}
ˆˆˆfd
„Š‰D ]  } ‰|
|«       Œ dt        fˆˆˆˆ fd„}‰j                  «       D ]  \  Š}|j                  dk(  sŒ |‰«       Œ t        ‰«      dkD  rõt        j                  ‰«      \  }}Š‰ ‰   }|j                  D ]  } ‰|
|«       Œ |j                  |«       ‰‰vrt        d‰› d�«      ‚‰‰   j                  D ][  }‰|   }|j                  dk  rt        d|j                  › �«      ‚|xj                  dz  c_	        |j                  dk(  sŒT ||«       Œ] ‰‰   j                  j!                  «        t        ‰«      dkD  rŒõ|S )Nc                   ó(   — e Zd ZU ee   ed<   eed<   y)ú6_canonicalize_graph.<locals>.sort_nodes.<locals>.EdgesÚoutsÚinsN)rd   re   rf   rA  rÉ   rƒ   rg   rh   ri   ÚEdgesr¥    s   … à�s‘)‹OØŒHrh   r¨  r˜   c                 óà  — | €y t        | t        «      r| j                  S t        | t        t        t
        f«      r8| j                  dk(  r| j                  S | j                  dv ry t        d| › �«      ‚t        | t        «      rC| j                  dk(  r| j                  j                  S | j                  dk(  ry t        d| › �«      ‚t        | t        «      r| j                  S t        d| › �«      ‚)NrN  )r¡   rÕ   rÏ   úUnknown argument type: rœ  rX  zUnknown optional tensor type: )rt   rU   rH  rT   rN   rR   rš   rN  r¨   rE   rœ  r-   r|  s    ri   r„  z9_canonicalize_graph.<locals>.sort_nodes.<locals>.get_name+  sØ   € ØˆyØÜ˜!œ^Ô,Ø—v‘v�Ü˜A¤´ÔAQÐRÔSØ—6‘6˜YÒ&ØŸ9™9Ð$Ø—V‘VÐ@Ñ@Øä(Ð+BÀ1À#Ð)FÓGÐGÜ˜AÔ5Ô6Ø—6‘6˜[Ò(ØŸ;™;×+Ñ+Ð+Ø—V‘V˜yÒ(Øä(Ð+IÈ!ÈÐ)MÓNÐNÜ˜AÔ0Ô1Ø—v‘v�ä$Ð'>¸q¸cÐ%BÓCÐCrh   c                 ó>   •—  ‰| «      x}r‰j                  |«       y y rl   )r’   )rÿ  r·   r„  Úgraph_inputss     €€ri   Ú	add_inputz:_canonicalize_graph.<locals>.sort_nodes.<locals>.add_inputE  s%   ø€ Ù  ›Ð#�1Ð#Ø ×$Ñ$ QÕ'ð $rh   c                 óL   •—  ‰| «      x}r|‰v rt        d|›d�«      ‚‰‰|<   y y )Núsymbol z already in def_table)r¨   )rÿ  r·   Ú	def_tabler„  r€  s     €€€ri   Úadd_defz8_canonicalize_graph.<locals>.sort_nodes.<locals>.add_defM  s<   ø€ Ù  ›Ð#�1Ð#Ø˜I‘~Ü,¨w°q°eÐ;PÐ-QÓRÐRØ#&�I˜a’Lð $rh   r   c                 óÌ   •—  ‰| «      x}rY|‰v ry |‰vr|‰vrt        d|›d�«      ‚y ‰|   }‰|   j                  j                  ‰«       ‰‰   xj                  dz  c_        y y )Nr¯  z! not in def_table or graph_inputsr&   )r¨   r¦  rq  r§  )	rÿ  r·   rÒ  r€   r°  Úedgesr„  r¬  r€  s	      €€€€€€ri   Úadd_edgez9_canonicalize_graph.<locals>.sort_nodes.<locals>.add_edgeZ  s�   ø€ Ù  ›Ð#�1Ð#Ø˜I‘~ØØ 	Ñ)Ø LÑ0Ü"0Ø")¨!¨Ð.OÐ Pó#ð ð Ø# A™,�CØ˜#‘J—O‘O×*Ñ*¨3Ô/Ø˜#‘J—N’N aÑ'–Nð $rh   c                 ó^   •—  ‰| «      x}r"|‰v rt        d|›d�«      ‚t        ‰«      ‰|<   y y )Nr¯  z already in rank)r¨   r  )rÿ  r·   r„  Úranks     €€ri   Úadd_rankz9_canonicalize_graph.<locals>.sort_nodes.<locals>.add_rankk  s@   ø€ Ù˜Q“KÐˆqÐØ˜‘9Ü(¨7°1°%Ð7GÐ)HÓIÐIÜ˜d›)��Q’ð  rh   c                 ó,   •—  ‰| «      }|r	|‰vr‰|   S y)Nr÷  rg   )rÿ  r·   r€   r„  r¶  s     €€€ri   Úget_rankz9_canonicalize_graph.<locals>.sort_nodes.<locals>.get_rankq  s"   ø€ Ù˜“ˆAÙ�Q˜iÑ'Ø˜A‘w�àrh   r€  c                 óÖ   •— ˆˆfd„}‰|    }|j                   D �cg c]   }|j                   ||j                  «      f‘Œ" }}t        j                  ‰|j
                  || f«       y c c}w )Nc                 ó(   •‡— g Š ‰ˆˆfd„| «       ‰S )Nc                 ó2   •— ‰j                   ‰| «      «      S rl   )rq  )rˆ  r¹  Úrankss    €€ri   r¨  zc_canonicalize_graph.<locals>.sort_nodes.<locals>.add_candidate.<locals>.get_ranks.<locals>.<lambda>~  s   ø€  5§<¡<±¸³Ó#<€ rh   rg   )rû  r½  r¢  r¹  s    @€€ri   Ú	get_rankszQ_canonicalize_graph.<locals>.sort_nodes.<locals>.add_candidate.<locals>.get_ranks|  s   ù€ Ø�ÙÔ<¸aÔ@Ø�rh   )r8  rH  r²  ÚheapqÚheappushr3  )	r€  r¾  r¹   rÿ  Ú	args_rankÚ
candidatesr¢  r¹  r:  s	        €€€€ri   Úadd_candidatez>_canonicalize_graph.<locals>.sort_nodes.<locals>.add_candidate{  s[   ø€ õð
 ˜‘:ˆDØ=A¿[¹[ÖI¸˜!Ÿ&™&¡)¨A¯E©EÓ"2Ò3ÐIˆIÐIÜ�N‰N˜:¨¯©°YÀÐ'DÕEùò Js   ›%A&zidx z not in edgesze.ins should be > 0, got r&   )r
   rŠ   r(  rÃ  r9  r8  r²  rÉ   rm   r§  r  r¿  Úheappoprq  r¨   r¦  Úclear)r:  r¨  r  rû  r­  r¹   r±  rØ  r  r´  r·  rÃ  r  r‹  rÂ  r°  r³  r„  r¹  r¬  r€  r¶  r€   r¢  Úsorted_inputss   `             @@@@@@@@€€€ri   Ú
sort_nodesz'_canonicalize_graph.<locals>.sort_nodes  sk  ÿù€ Ü	÷	ð 	ó 
ð	ô "%£ˆØ$&ˆ	Ø"$ˆØIKˆ
Ø!ˆØˆð	Dœ3 ™:ó 	Dð0 ò 	#ˆAõ(ñ �Y Õ"ð	#ô # 5Ó)ò 	&‰IˆC�ö'ð —\‘\ò %�Ù˜ !Õ$ð%ñ ˜r 1›ˆE�#ŠJð	&ô # 5Ó)ò 	*‰IˆC�÷(ñ (ð —[‘[ò *�Ù˜ 1§5¡5Õ)ñ*ð!	*õ&	$ö	ð ò 	"ˆAÙ�X˜qÕ!ð	"ð	Fœs÷ 	Fð 	Fð —k‘k“mò 	#‰FˆC�Ø�u‰u˜‹zÙ˜cÕ"ð	#ô �*‹o Ò!ÜŸ™ jÓ1‰IˆAˆq�#Ø˜‘:ˆDØ—\‘\ò &�Ù˜ 1Õ%ð&à�J‰J�tÔØ˜%ÑÜ$ t¨C¨5°Ð%>Ó?Ð?Ø˜c™
Ÿ™ò (�Ø˜$‘K�Ø—5‘5˜A’:Ü(Ð+DÀQÇUÁUÀGÐ)LÓMÐMØ—’˜‘
•Ø—5‘5˜A“:Ù! $Õ'ð(ð �#‰J�O‰O×!Ñ!Ô#ô �*‹o Ó!ð" ˆ
rh   z	expected z sorted nodes, got c                 óŽ  •— ˆfd„}| €y t        | t        «      r# || j                  ‰j                  «      | _        y t        | t        «      r3| j
                  dk(  r# || j                  ‰j                  «      | _        y y t        | t        «      r3| j
                  dk(  r# || j                  ‰j                  «      | _        y y t        | t        «      r3| j
                  dk(  r# || j                  ‰j                  «      | _        y y t        | t        «      r# || j                  ‰j                  «      | _        y t        d| › �«      ‚)Nc                 ó¢   •— dt        ‰«      › �}| ‰v rt        d| ›d�«      ‚|‰| <   | |vrt        d| ›d�«      ‚|j                  | «      ||<   |S )Nr‹  z	arg_name z already in name_tablez not in values)r  r¨   Úpop)r¯  rn  Únew_nameÚ
name_tables      €ri   r/  z8_canonicalize_graph.<locals>.rename_def.<locals>._rename¦  so   ø€ Øœ3˜z›?Ð+Ð,ˆHØ˜:Ñ%Ü$ y°°Ð<RÐ%SÓTÐTØ#+ˆJ�xÑ Ø˜vÑ%Ü$ y°°¸NÐ%KÓLÐLØ%Ÿz™z¨(Ó3ˆF�8ÑØˆOrh   rN  rª  )rt   rU   rH  r;  rT   rš   rN  r<  rR   r>  rN   r=  r-   r@  r¨   )rÿ  r/  rà  rÌ  s     €€ri   Ú
rename_defz'_canonicalize_graph.<locals>.rename_def¥  s  ø€ ô	ð ˆ9ØÜ�aœÔ(Ù˜QŸV™V U×%8Ñ%8Ó9ˆA�FÜ˜œ>Ô*Ø�v‰v˜Ò"Ù# A§I¡I¨u×/CÑ/CÓD�•	ð #ä˜Ô+Ô,Ø�v‰v˜Ò"Ù# A§I¡I¨u×/EÑ/EÓF�•	ð #ä˜œ?Ô+Ø�v‰v˜Ò"Ù# A§I¡I¨u×/DÑ/DÓE�•	ð #ä˜Ô,Ô-Ù˜QŸV™V U×%<Ñ%<Ó=ˆA�Fä Ð#:¸1¸#Ð!>Ó?Ð?rh   c                 ó&  •— | €y t        | t        «      r,‰j                  | j                  | j                  «      | _        y t        | t        t
        f«      r<| j                  dk(  r,‰j                  | j                  | j                  «      | _        y y t        | t        «      r<| j                  dk(  r,‰j                  | j                  | j                  «      | _        y y t        | t        «      rZ| j                  dk(  rJ‰j                  | j                  j                  | j                  j                  «      | j                  _        y y t        | t        «      r,‰j                  | j                  | j                  «      | _        y t        d| › �«      ‚)NrN  rœ  rª  )rt   rU   rp  rH  rT   rR   rš   rN  rN   rE   rœ  r-   r¨   )rÿ  rÌ  s    €ri   Úreplace_usez(_canonicalize_graph.<locals>.replace_useÂ  s  ø€ Øˆ9ØÜ�aœÔ(Ø—^‘^ A§F¡F¨A¯F©FÓ3ˆA�FÜ˜œNÔ,<Ð=Ô>Ø�v‰v˜Ò"Ø&ŸN™N¨1¯9©9°a·i±iÓ@�•	ð #ä˜œ?Ô+Ø�v‰v˜Ò"Ø&ŸN™N¨1¯9©9°a·i±iÓ@�•	ð #ä˜Ô1Ô2Ø�v‰v˜Ò$Ø#-§>¡>°!·+±+×2BÑ2BÀAÇKÁK×DTÑDTÓ#U�—‘Õ ð %ä˜Ô,Ô-Ø—^‘^ A§F¡F¨A¯F©FÓ3ˆA�Fä Ð#:¸1¸#Ð!>Ó?Ð?rh   r   ©rŠ  rF  Ú_gr&   )	r8  r9  r:  r;  r<  r>  r=  r?  r@  )r(   r:  r  r¨   r9  r8  r²  ru  rÅ  r  Úsortedr;  rm   r×  Ú
itemgetterr<  r>  r=  r@  rš   Ú_canonicalize_graphrF  rà  rH  r2   r?  )rÆ  Úsorted_outputsrà  r€   rÇ  Úsorted_nodesrÍ  rÏ  rû  rW  rØ  Úsorted_tensor_valuesÚsorted_sym_int_valuesÚsorted_sym_float_valuesÚsorted_sym_bool_valuesÚsorted_custom_obj_valuesÚcounterr¹   rÿ  r‹  rŸ  r¢  rÌ  s   ` ``                @@@ri   rÔ  rÔ  Õ  s  ý€ ð>Tœó >TôB-ö
|ñ| ˜eŸk™kÓ*€LÜ
ˆ<ÓœC §¡Ó,Ò,ÜØœ˜EŸK™KÓ(Ð)Ð)<¼SÀÓ=NÐ<OÐPó
ð 	
ð
 "$€Jõ@ô:@ð& ò  ˆÙ�˜QÕð ð ò $ˆØ—‘ò 	$ˆAÙ�Z Õ#ñ	$ð$ð ò )ˆØ—‘ò 	)ˆAÙ�[ !§%¡%Õ(ñ	)ð)ð ò !ˆÙ�˜aÕ ð!ð ò ˆØ	�
‰
×ÑÕðô
  Üˆu×"Ñ"×(Ñ(Ó*´×0CÑ0CÀAÓ0FÔGóÐô !Üˆu×#Ñ#×)Ñ)Ó+´×1DÑ1DÀQÓ1GÔHóÐô #Üˆu×%Ñ%×+Ñ+Ó-´8×3FÑ3FÀqÓ3IÔJóÐô "Üˆu×$Ñ$×*Ñ*Ó,´(×2EÑ2EÀaÓ2HÔIóÐô  $Üˆu×&Ñ&×,Ñ,Ó.´H×4GÑ4GÈÓ4JÔKó Ðð
 €GØò ˆØ—‘ò 
	ˆAØ—‘ˆAØ�v‰v˜Ó#Ü&9Ø—J‘J×$Ñ$×+Ñ+Ø—J‘J×$Ñ$×,Ñ,Ø—J‘J×$Ñ$Øó	'Ñ#�—
‘
Ô  !ð %' w i .�—
‘
”Ø˜1‘‘ñ
	ðô ØØØØ*Ø,Ø0Ø.Ø %× =Ñ =Ø2ô
€Eð �*ÐÐrh   r©  r€   c                 ó~  ‡‡— t        j                  | «      } |xs
 t        «       }t        t	        | j
                  j                  «       t        j                  d«      ¬«      «      }t        t	        | j                  j                  «       t        j                  d«      ¬«      «      }t	        | j                  «      }t	        | j                  j                  d„ ¬«      }| j                  j                  }| j                  j                  }t        |j                   «      t        |j"                  «      k7  r7t%        dt        |j                   «      › dt        |j"                  «      › �«      ‚t        |j&                  «      t        |j(                  «      k7  r7t%        dt        |j&                  «      › dt        |j(                  «      › �«      ‚dt*        t,        t.        d	z  t,        f   fd
„}dt*        t,        t.        d	z  t,        f   fd„}	t	        t1        t3        |j                   |j"                  «      «      |¬«      }
t        |
«      dkD  rt3        d„ |
D «       Ž \  }}nd}d}t	        t1        t3        |j&                  |j(                  «      «      |	¬«      }t3        d„ |D «       Ž \  }}t5        ||||«      \  }Šˆfd„}ˆˆfd„}|D ]
  Š |‰«       Œ |D ]
  Š |‰«       Œ t7        t9        |t;        t=        |«      t=        |«      ¬«      |¬«      ||| j>                  | j@                  | jB                  |¬«      S )ak  
    Normalize a serialized ExportedProgram, so that different eager program which
    shares the same semantics can get a single representation on disk.

    This function canonicalizes an ExportedProgram by:

    1. Sorting nodes in topological order.
    2. Rename nodes to have unique names.
    3. Remove unstable fields.
    4. Aggregate the above program fields.
    5. Recurse in subgraphs.

    Args:
        ep (ExportedProgram): The ExportedProgram to canonicalize.
        constants (Optional[set[str]]): Set of constants names

    Returns:
        ExportedProgram: The canonicalized exported program.
    r   rÐ  c                 ó   — | j                   S rl   )r  )rˆ  s    ri   r¨  zcanonicalize.<locals>.<lambda>9  s   € ÐPQ×PUÑPU€ rh   zgraph.inputs length z! != signature.input_specs length zgraph.outputs length z" != signature.output_specs length r˜   Nc                 óp  — | \  }\  }}t        |t        «      s!t        dt        |«      j                  › �«      ‚|j                  dk(  rdd |fS |j                  dk(  rd|j
                  j                  |fS |j                  dk(  rd|j                  j                  |fS |j                  dk(  rd	|j                  j                  |fS |j                  d
k(  rd|j                  j                  |fS |j                  dk(  rdd |fS |j                  dk(  rd|j                  j                  |fS t        d|› �«      ‚)Núexpected InputSpec, got rÄ  é   rÈ  r&   r  r$   rÌ  rA  rÍ  é   rÐ  r   rÂ  é   úUnknown input type: )rt   r6   r¨   rš   rd   rÈ  rÇ  r  rÉ  rÌ  rË  rÍ  r¶  rÂ  rH  )r  r€  Ú_argr¿  s       ri   Ú
rank_inputz canonicalize.<locals>.rank_inputF  s0  € ØÑˆ‰\ˆd�DÜ˜$¤	Ô*Ü Ð#;¼DÀ»J×<OÑ<OÐ;PÐ!QÓRÐRØ�9‰9˜Ò$Ø�d˜C�<ÐØ�Y‰Y˜+Ò%Ø�d—n‘n×3Ñ3°SÐ8Ð8Ø�Y‰Y˜(Ò"Ø�d—k‘k×-Ñ-¨sÐ2Ð2Ø�Y‰YÐ+Ò+Ø�d×*Ñ*×?Ñ?ÀÐDÐDØ�Y‰Y˜,Ò&Ø�d—o‘o×5Ñ5°sÐ:Ð:Ø�Y‰Y˜'Ò!Ø�d˜C�<ÐØ�Y‰YÐ*Ò*Ø�d×)Ñ)×.Ñ.°Ð3Ð3ä Ð#7¸°vÐ!>Ó?Ð?rh   c                 óH  — | \  }\  }}t        |t        «      s!t        dt        |«      j                  › �«      ‚|j                  dk(  rdd |fS |j                  dk(  rdd |fS |j                  dk(  rd|j
                  j                  |fS |j                  dk(  rd|j                  j                  |fS |j                  d	k(  rd
|j                  j                  |fS |j                  dk(  rdd |fS |j                  dk(  rdd |fS |j                  dk(  rdd |fS t        d|› �«      ‚)Núexpected OutputSpec, got rÞ  râ  rß  rá  r&   rà  r$   râ  rá  rä  rã  rå  rA  rÐ  r   úUnknown output type: )
rt   rF   r¨   rš   rd   rá  rÇ  rà  rÉ  râ  )r“   r€  rå  r¿  s       ri   Úrank_outputz!canonicalize.<locals>.rank_output[  s7  € ØÑˆ‰\ˆd�DÜ˜$¤
Ô+Ü Ð#<¼TÀ$»Z×=PÑ=PÐ<QÐ!RÓSÐSØ�9‰9˜Ò%Ø�d˜C�<ÐØ�Y‰Y˜-Ò'Ø�d˜C�<ÐØ�Y‰YÐ.Ò.Ø�d×-Ñ-×<Ñ<¸cÐAÐAØ�Y‰YÐ+Ò+Ø�d×*Ñ*×6Ñ6¸Ð;Ð;Ø�Y‰YÐ1Ò1Ø�d×0Ñ0×?Ñ?ÀÐDÐDØ�Y‰YÐ2Ò2Ø�d˜C�<ÐØ�Y‰YÐ/Ò/Ø�d˜C�<ÐØ�Y‰Y˜'Ò!Ø�d˜C�<Ðä Ð#8¸¸Ð!?Ó@Ð@rh   c              3   ó&   K  — | ]	  \  }}|–— Œ y ­wrl   rg   ©rx   r€  rû  s      ri   rz   zcanonicalize.<locals>.<genexpr>w  s   è ø€ Ò*F±°°a¬1Ñ*Fùó   ‚rg   c              3   ó&   K  — | ]	  \  }}|–— Œ y ­wrl   rg   rì  s      ri   rz   zcanonicalize.<locals>.<genexpr>  s   è ø€ Ò(E©v¨s°A¬Ñ(Eùrí  c                 ó@  •— t        | t        «      s!t        dt        | «      j                  › �«      ‚| j                  dk(  �r| j
                  j                  }|j                  dk(  r!|j                  }‰|j                     |_        y |j                  dk(  rN|j                  }|j                  dk(  r‰|j                     |_
        y |j                  dk(  ry t        d|› �«      ‚|j                  dk(  rN|j                  }|j                  dk(  r‰|j                     |_
        y |j                  d	k(  ry t        d
|› �«      ‚|j                  dv ry t        d|› �«      ‚| j                  dk(  r+| j                  j                  }‰|j                     |_        y | j                  dk(  r+| j                  j                  }‰|j                     |_        y | j                  dk(  r+| j                  j                  }‰|j                     |_        y | j                  dk(  r+| j                  j                  }‰|j                     |_        y | j                  dk(  r+| j                   j                  }‰|j                     |_        y | j                  dk(  ry t        d| › �«      ‚)Nrà  rÄ  rœ  rž  rN  r¡   úUnknown sym_int type: rP  rÏ   úUnknown sym_float type: )rX  rÕ   r¡   rÏ   rL  r¢  rä  rÈ  r  rÌ  rÍ  rÐ  rÂ  )rt   r6   r¨   rš   rd   rÄ  r²  rœ  rH  rž  rN  rP  rÈ  r  rÌ  rÍ  rÐ  )r¿  r²  rÚ   r·   ru  Út_custom_objÚtokÚreplace_tables          €ri   Úreplace_inputz#canonicalize.<locals>.replace_input…  s;  ø€ Ü˜$¤	Ô*Ü Ð#;¼DÀ»J×<OÑ<OÐ;PÐ!QÓRÐRØ�9‰9˜Ó$Ø—/‘/×%Ñ%ˆCØ�x‰x˜;Ò&Ø—M‘M�Ø& q§v¡vÑ.�•Ø—‘˜\Ò)Ø—N‘N�Ø—6‘6˜YÒ&Ø -¨a¯i©iÑ 8�A•IØ—V‘V˜xÒ'Øä(Ð+AÀ!ÀÐ)EÓFÐFØ—‘˜^Ò+Ø×$Ñ$�Ø—6‘6˜YÒ&Ø -¨a¯i©iÑ 8�A•IØ—V‘V˜zÒ)Øä(Ð+CÀAÀ3Ð)GÓHÐHØ—‘ð ñ ð ä$Ð';¸C¸5Ð%AÓBÐBØ�Y‰Y˜+Ò%Ø—‘×"Ñ"ˆAØ" 1§6¡6Ñ*ˆA�FØ�Y‰Y˜(Ò"Ø—‘—‘ˆAØ" 1§6¡6Ñ*ˆA�FØ�Y‰YÐ+Ò+Ø×$Ñ$×(Ñ(ˆAØ" 1§6¡6Ñ*ˆA�FØ�Y‰Y˜,Ò&ØŸ?™?×.Ñ.ˆLØ -¨l×.?Ñ.?Ñ @ˆLÔØØ�Y‰Y˜'Ò!Ø—*‘*—.‘.ˆCØ$ S§X¡XÑ.ˆC�HØ�Y‰YÐ*Ò*Øä Ð#7¸°vÐ!>Ó?Ð?rh   c                 ó€  •— t        ‰	t        «      s!t        dt        ‰	«      j                  › �«      ‚‰	j                  dk(  �r‰	j
                  j                  }|j                  dk(  r!|j                  }‰|j                     |_        y |j                  dk(  rN|j                  }|j                  dk(  r‰|j                     |_
        y |j                  dk(  ry t        d|› �«      ‚|j                  dk(  rN|j                  }|j                  dk(  r‰|j                     |_
        y |j                  d	k(  ry t        d
|› �«      ‚|j                  dv ry t        d|› �«      ‚‰	j                  dk(  r+‰	j                  j                  }‰|j                     |_        y ‰	j                  dk(  r+‰	j                  j                  }‰|j                     |_        y ‰	j                  dk(  r+‰	j                  j                  }‰|j                     |_        y ‰	j                  dk(  r+‰	j                  j                  }‰|j                     |_        y ‰	j                  dk(  rI‰	j                   }‰|j                  j                     |j                  _        ‰|j"                     |_        y ‰	j                  dk(  rI‰	j$                  }‰|j                  j                     |j                  _        ‰|j"                     |_        y ‰	j                  dk(  r+‰	j&                  j                  }‰|j                     |_        y t        d‰	› �«      ‚)Nrè  rÞ  rœ  rž  rN  r¡   rð  rP  rÏ   rñ  )rX  rÕ   r¡   rÏ   rL  rä  rß  rà  rá  râ  rä  rå  rÐ  ré  )rt   rF   r¨   rš   rd   rÞ  r²  rœ  rH  rž  rN  rP  rß  rà  rá  râ  rä  rã  rå  rÐ  )
r“   r²  rÚ   r·   ru  ÚgÚuró  rô  r¿  s
           €€ri   Úreplace_outputz$canonicalize.<locals>.replace_output½  s±  ø€ Ü˜$¤
Ô+Ü Ð#<¼TÀ$»Z×=PÑ=PÐ<QÐ!RÓSÐSØ�9‰9˜Ó%Ø×"Ñ"×&Ñ&ˆCØ�x‰x˜;Ò&Ø—M‘M�Ø& q§v¡vÑ.�•Ø—‘˜\Ò)Ø—N‘N�Ø—6‘6˜YÒ&Ø -¨a¯i©iÑ 8�A•IØ—V‘V˜xÒ'Øä(Ð+AÀ!ÀÐ)EÓFÐFØ—‘˜^Ò+Ø×$Ñ$�Ø—6‘6˜YÒ&Ø -¨a¯i©iÑ 8�A•IØ—V‘V˜zÒ)Øä(Ð+CÀAÀ3Ð)GÓHÐHØ—‘ÐVÑVØä$Ð';¸C¸5Ð%AÓBÐBØ�Y‰Y˜-Ò'Ø× Ñ ×$Ñ$ˆAØ" 1§6¡6Ñ*ˆA�FØ�Y‰YÐ+Ò+Ø×$Ñ$×(Ñ(ˆAØ" 1§6¡6Ñ*ˆA�FØ�Y‰YÐ.Ò.Ø×'Ñ'×+Ñ+ˆAØ" 1§6¡6Ñ*ˆA�FØ�Y‰YÐ1Ò1Ø×*Ñ*×.Ñ.ˆAØ" 1§6¡6Ñ*ˆA�FØ�Y‰YÐ2Ò2Ø×+Ñ+ˆAØ& q§u¡u§z¡zÑ2ˆA�E‰EŒJØ -¨a×.?Ñ.?Ñ @ˆAÕØ�Y‰YÐ/Ò/Ø×(Ñ(ˆAØ& q§u¡u§z¡zÑ2ˆA�E‰EŒJØ -¨a×.?Ñ.?Ñ @ˆAÕØ�Y‰Y˜'Ò!Ø—*‘*—.‘.ˆCØ$ S§X¡XÑ.ˆC�Hä Ð#8¸¸Ð!?Ó@Ð@rh   rñ  )rà  rÓ  r�  rH  )"rO  ÚdeepcopyrŠ   r  rÒ  r;  rm   r×  rÓ  r*  rL  r,  r�  rÓ  rà  r  r8  rò  r¨   r9  ró  r©   rÉ   r(  rÃ  r+  rÔ  r/   r4   r5   rA  rI  rJ  rK  )r©  r€   r;  r*  rL  r�  rÓ  rà  ræ  rê  Ú
sorted_insrÆ  rò  Úsorted_outsrÕ  ró  Úsorted_graphrõ  rù  rô  r¿  s                      @@ri   rS  rS    sä  ù€ ô, 
�‰�rÓ	€Bà#Ò,¤s£u€Iäœ × 0Ñ 0× 6Ñ 6Ó 8¼h×>QÑ>QÐRSÓ>TÔUÓV€MÜÜˆr×#Ñ#×)Ñ)Ó+´×1DÑ1DÀQÓ1GÔHóÐô ˜Ÿ™Ó(€KÜ˜rŸ™×@Ñ@ÁoÔVÐØ—‘×)Ñ)€IØ�O‰O×!Ñ!€Eä
ˆ5�<‰<ÓœC 	× 5Ñ 5Ó6Ò6ÜØ"¤3 u§|¡|Ó#4Ð"5Ð5VÔWZÐ[d×[pÑ[pÓWqÐVrÐsó
ð 	
ô ˆ5�=‰=ÓœS ×!7Ñ!7Ó8Ò8ÜØ#¤C¨¯©Ó$6Ð#7Ð7YÔZ]Ð^g×^tÑ^tÓZuÐYvÐwó
ð 	
ð@œ5¤¤c¨D¡j´#Ð!5Ñ6ó @ð*AœE¤#¤s¨T¡z´3Ð"6Ñ7ó Aô. Ü”#�e—l‘l I×$9Ñ$9Ó:Ó;Àô€Jô ˆ:ƒ˜ÒÜ%(Ñ*F¸:Ô*FÐ%GÑ"ˆ‘{àˆØˆäÜ”#�e—m‘m Y×%;Ñ%;Ó<Ó=À;ô€Kô $'Ñ(E¸Ô(EÐ#FÑ €N�Lä"5Ø�~ u¨ió#Ñ€L�-ô6@õp4Aðl ò ˆÙ�dÕðð ò ˆÙ�tÕðô Ü ØÜ$Ü  Ó-Ü! ,Ó/ôð 0ô
ð $Ø+Ø×(Ñ(Ø—,‘,Ø×&Ñ&Øôð rh   c                   ó|   — e Zd ZdZedefd„«       Zedefd„«       Zedefd„«       Zede	j                  fd„«       Zy)	ÚExtensionHandlerz6
    Base class for handling extension operators.
    r˜   c                 ó2   — t        | j                  › d�«      ‚)Nz  namespace() must be implemented©r7  rm  rè   s    ri   rë  zExtensionHandler.namespace  ó   € ä! S§]¡] OÐ3SÐ"TÓUÐUrh   c                 ó2   — t        | j                  › d�«      ‚©Nz op_name() must be implementedr  ©ré   ry   s     ri   rì  zExtensionHandler.to_op_name  ó   € ä! S§]¡] OÐ3QÐ"RÓSÐSrh   rH  c                 ó2   — t        | j                  › d�«      ‚r  r  )ré   rH  s     ri   rn  zExtensionHandler.from_op_name  r  rh   c                 ó2   — t        | j                  › d�«      ‚)Nz  op_schema() must be implementedr  r  s     ri   r2  zExtensionHandler.op_schema  r  rh   N)rd   re   rf   r—   Úclassmethodr(  rë  rì  rn  ru   ÚFunctionSchemar2  rg   rh   ri   rÿ  rÿ    s…   „ ñð ðV˜#ò Vó ðVð ðT˜sò Tó ðTð ðT ò Tó ðTð ðV˜e×2Ñ2ò Vó ñVrh   rÿ  Úop_typeÚextension_handlerc                 ó  — t        |t        «      st        d|› d�«      ‚| t        v rt        | › d�«      ‚t	        | t
        «      s!t        dt        | «      j                  › �«      ‚| j                  j                  d«      s| j                  j                  d«      rt        d| j                  › d�«      ‚|j                  «       t        v rt        d	|j                  «       ›d
�«      ‚|t        | <   |t        |j                  «       <   y)zJRegister custom de/serialization method for a node with non-standard type.zExpected ExtensionHandler, got rµ  z is already registered.zop_type must be a type, got ru   Úbuiltinszop_type module z, should not start with 'torch' or 'builtins'z
namespace z is already registeredN)rŠ  rÿ  r¨   r1  rt   rš   rd   re   r¶  rë  rm  )r  r  s     ri   Úregister_extensionr  !  s  € ô
 Ð'Ô)9Ô:ÜÐ>Ð?PÐ>QÐQRÐSÓTÐTØÔ)Ñ)Ü ˜yÐ(?Ð@ÓAÐAÜ�gœtÔ$ÜÐ;¼DÀ»M×<RÑ<RÐ;SÐTÓUÐUØ×Ñ×$Ñ$ WÔ-°×1CÑ1C×1NÑ1NØô2ô Ø˜g×0Ñ0Ð1Ð1]Ð^ó
ð 	
ð ×"Ñ"Ó$Ô(AÑAÜØÐ*×4Ñ4Ó6Ð9Ð9OÐPó
ð 	
ð (9Ô˜GÑ$Ø?PÔÐ/×9Ñ9Ó;Ò<rh   c                  ó<   — t        t        j                  «       «      S rl   )r©   r1  rk  rg   rh   ri   r2  r2  :  s   € ÜÔ(×-Ñ-Ó/Ó0Ð0rh   r1  rm  rl   (/  rj  rO  r  rW  r¿  r)  r  rí   r  Úloggingr  r×  rr  r2  r‡  r}  Úcollectionsr   r   Úcollections.abcr   r   r   r   Ú
contextlibr	   r
   r   Úenumr   r   r   r   r   r   r»   ru   Útorch.export.exported_programÚexportr~   r©  Útorch._export.non_strict_utilsr   Útorch._export.verifierr   Útorch._library.opaque_objectr   r   Útorch._subclasses.fake_tensorr   r   Útorch.fx._symbolic_tracer   Útorch.fx.experimentalr   Útorch.fx.tracebackr   Útorch.utilsr   rý  Útorch.utils._pytreer   r   Útorch.utils._sympy.numbersr   Útorch.utils._sympy.symbolr   r    Útorch.utils._sympy.value_rangesr!   Útorch.utils._tracebackr"   Útorch.utils._tritonr#   rú  r%   r8  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@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   Úunionr\   Ú__all__Ú	getLoggerrd   r  r  rc   r  rq   rÉ   rÐ   r×   ÚMetaTyper]  r  Úuint8ÚBYTEÚint8ÚCHARÚuint16ÚUINT16Úint16ÚSHORTÚint32ÚINTÚint64ÚLONGÚfloat16ÚHALFÚfloat32ÚFLOATÚfloat64ÚDOUBLEÚ	complex32ÚCOMPLEXHALFÚ	complex64ÚCOMPLEXFLOATÚ
complex128ÚCOMPLEXDOUBLEÚBOOLÚbfloat16ÚBFLOAT16Úfloat8_e4m3fnÚFLOAT8E4M3FNÚfloat8_e5m2Ú
FLOAT8E5M2Úfloat8_e4m3fnuzÚFLOAT8E4M3FNUZÚfloat8_e5m2fnuzÚFLOAT8E5M2FNUZÚfloat8_e8m0fnuÚFLOAT8E8M0FNUÚuint32ÚUINT32Úuint64ÚUINT64rà   r²   Ú
sparse_cooÚ	SparseCooÚ
sparse_csrÚ	SparseCsrÚ
sparse_cscÚ	SparseCscÚ
sparse_bsrÚ	SparseBsrÚ
sparse_bscÚ	SparseBscÚ_mkldnnÚstridedÚStridedrã   r  Úcontiguous_formatÚContiguousFormatÚchannels_lastÚChannelsLastÚchannels_last_3dÚChannelsLast3dÚpreserve_formatÚPreserveFormatr©  r  ÚeqÚneÚleÚgeÚltÚgtÚnegÚposÚtruncÚsym_notÚmulr’   ÚsubÚfloordivÚmodÚpowÚsym_intÚ	sym_floatÚsym_iteÚsym_maxÚsym_minÚsym_sqrtÚtruedivÚand_Úor_ÚlshiftÚrshiftrÙ  Úanyr¨   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(  r  r   r$  rÈ   r)  r.  r4  r6  rš   rC  rW  r°  rŒ  r^   r_   r`   ra   ÚJSONEncoderrð   rï   rx  r]   r  rû   rš  r	  rÔ  rŠ   rS  rÿ  r  r2  r1  rm  rg   rh   ri   ú<module>r„     s
  ðä Û Û Û Û Û Û 	Û Û Û Û Û Û 	Û Û Û ß /ß BÓ BÝ %ß (Ý ß 8Õ 8ã ã ß *Ð *Ý QÝ 0ß Nß DÝ ;Ý 1Ý )Ý )ß >Ý -ß 6Ý 7Ý 4Ý *å 0Ý ÷5÷ 5÷ 5÷ 5÷ 5÷ 5÷ 5÷ 5÷ 5÷ 5÷ 5÷ 5÷ 5ó 5õl ò€ð €g×Ò˜Ó!€ô	�\ô 	ð.�D˜˜d˜‘Oó .ð
 Ø	ñ
à‡l�lñð ñð ‡n�nñ	ð
 ñð ‡m�mñð 	×Ññð 	ð Ð à€ðØ	‡K‚K�—’ðà	‡J‚J�
—’ðð 
‡L‚L�*×#Ò#ðð 
‡K‚K�×!Ò!ð	ð
 
‡K‚K�—’ðð 
‡K‚K�—’ðð 
‡M‚M�:—?’?ðð 
‡M‚M�:×#Ò#ðð 
‡M‚M�:×$Ò$ðð 
‡O‚O�Z×+Ò+ðð 
‡O‚O�Z×,Ò,ðð 
×Ò�j×.Ò.ðð 
‡J‚J�
—’ðð 
‡N‚N�J×'Ò'ðð 
×Ò˜×0Ò0ðð  
×Ò�z×,Ò,ð!ð" 
×Ò˜:×4Ò4ð#ð$ 
×Ò˜:×4Ò4Ø	×Ò˜*×2Ò2Ø	‡L‚L�*×#Ò#Ø	‡L‚L�*×#Ò#ñ+Ð ñ2 )Ð)BÓCÐ ð 
×Ò�f×&Ò&Ø	×Ò�f×&Ò&Ø	×Ò�f×&Ò&Ø	×Ò�f×&Ò&Ø	×Ò�f×&Ò&Ø	‡M‚M�6—>’>Ø	‡M‚M�6—>’>ðÐ ñ *Ð*DÓEÐ ð 
×Ò˜\×:Ò:Ø	×Ò˜×2Ò2Ø	×Ò˜L×7Ò7Ø	×Ò˜<×6Ò6ð	%Ð !ñ %1Ð1RÓ$SÐ !ð ‡K‚KØ‡K‚KØ‡K‚KØ‡K‚KØ‡K‚KØ‡K‚KØ‡L‚LØ‡L‚LØ‡J‚JØ	‡M‚MØ‡L‚LØ‡L‚LØ‡L‚LØ×ÒØ‡L‚LØ‡L‚LØ	‡M‚MØ	‡O‚OØ	‡M‚MØ	‡M‚MØ	‡M‚MØ	‡N‚NØ×ÒØ‡M‚MØ‡L‚LØ‡O‚OØ‡O‚Oð7€ñ> Ñ@°xÔ@Ô@Ù
ÐKÓ
LÐLð ÷ð ó ðð ÷ð ó ðô#ˆdô #ð24˜&ð 4 U§\¢\ó 4ð@˜H VÑ,ð @°°s¸C°x±ó @ðF ¨Ñ 0ð F°U¸3À¸8±_ó Fð) 
ð )¨u¯{ª{ó )ð vð °#ó ð(�E—L‘L 5§=¡=Ñ0°5·>±>ÑAÀEÇJÂJÑNô (ð
˜˜uŸ|™|Ñ+ð 
°ô 
ð0
˜5 5§>¡>Ñ1ð 
°hô 
ð0	
˜$ §¡Ñ.ð 	
°7ô 	
ð˜UŸ\š\ð ¨jô ð >BÑ �xÐ 9Ñ:Ô AðG Zô GðÙ!ðØ15ðàôð" 2Iñ/Ø�D‰jð/Ø+.ð/á
ô/ð.Ø‘S˜#�X‘  s¨C x¡Ñ0±5Ñ8ôð4?˜5Ÿ:š:ð ?©sð ?°s¸T±zô ?ð6
˜3 ™:ð 
°5·:²:ô 
ð6�u—|’|ð 6¨tô 6ð	Ø˜EŸLšL¨+Ð5Ñ6ð	à	‰#ˆÐ
Ñô	óAð ÷	Rð 	Ró ñ	RôC‰Dõ CóðV¨E¯HªH¯M©Mô Vðr ô[
¡eô [
ó ñ[
ð|. ôX
©%ô X
ó ñX
ðv ô[
©ô [
ó ñ[
ð|& ôT©Eô Tó ñTôn$�$×"Ò"õ $óð6˜ð ¡ô ð ,0Ø2ðð
 "&Ø $Ø%)òØ×(Ñ(ðà™˜S˜‘> DÑ(ðð ðð
 ðð ðð #ðð ôóBó2ðj˜Sð ±%ð ¸Cô ð 59ðð  %ò	Ø ðà ¡ c ™N¨TÑ1ðð
 ×Ñôð,Bà
ˆ5�$‘s™C�x‘.Ð Ñ!ôBðL
 7;ñnØðnÙ$'©¡H¨t¡Oðnàôn÷bVò Vð,QÙ�#‰YðQáÑ,Ñ-ôQó21ð DFÑ ˜™d 3™i©Ñ.>Ñ)?Ð?Ñ@Ô EØ?AÑ ˜4¡¡TÑ*:Ñ%;Ð ;Ñ<Õ Arh   