Ë
    f^(hø  ã                   ó&  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dl mZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZ d dlm Z m!Z! d dl"m#Z#m$Z$ d dl%m&Z& er
d dl'Z'd dl(m)Z) d dl*Z*d dl+m,c m-Z. d dl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlmCZC d dlDmEZEmFZF d dlGmHZH d dlImJZJ d dlKmLZL d dlMmNZN ddlOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\ g d¢Z]ee*j¼                  j¾                  geeL   f   Z`ejÂ                   G d„ d«      «       ZbejÂ                   G d„ d«      «       Zcd„ Zdd eee   d!e.jÌ                  d"eee   d#e.jÌ                  d$egf
d%„Zhe*jÒ                  jÔ                  jÖ                  e*jÒ                  jÔ                  jØ                  e*jÒ                  jÔ                  jÚ                  e*jÒ                  jÔ                  jÜ                  e*jÒ                  jÔ                  jÞ                  e*jÒ                  jÔ                  jà                  e*jÒ                  jÔ                  jâ                  e*jÒ                  jÔ                  jä                  e*jÒ                  jÔ                  jæ                  e*jÒ                  jÔ                  jè                  e*jÒ                  jÔ                  jê                  e*jÒ                  jÔ                  jì                  gZwe*jÒ                  jÔ                  jð                  e*jÒ                  jÔ                  jò                  e*jÒ                  jÔ                  jô                  e*jÒ                  jÔ                  jö                  e*jÒ                  jÔ                  jø                  e*jÒ                  jÔ                  jú                  e*jÒ                  jÔ                  jü                  e*jÒ                  jÔ                  jþ                  e*jÒ                  jÔ                  �j                   g	Z�ed@d&„«       Z‚ed'„ «       Zƒd(e„e*�j
                  �j                  ef   d$e‡e„e*�j
                  �j                  ef   d)f   fd*„ZˆdAd+„Z‰d,e„e*�j
                  �j                  ef   d-e„e*�j
                  �j                  ef   d.eeŠ   fd/„Z‹d0e*j¼                  j¾                  d1eSd$e‡e*j¼                  j¾                  eSf   fd2„ZŒd0e*j¼                  j¾                  fd3„Z�d0e*j¼                  j¾                  d4eŽec   fd5„Z�d,e„e*�j
                  �j                  ef   d-e„e*�j
                  �j                  ef   d.eeŠ   d6egfd7„Z� G d8„ d9«      Z‘d:„ Z’	 dBd0e*j¼                  j¾                  d;d<d$d=fd>„Z“d?„ Z”y)Cé    N)Ú
namedtuple)ÚIterator)Úcontextmanager)ÚAnyÚCallableÚfinalÚOptionalÚTYPE_CHECKINGÚUnion)Úautograd_not_implemented)ÚFakeScriptObject)Ú_deregister_op_implÚ_is_op_registered_to_fake_ruleÚregister_op_impl)ÚFakeTensorMode)Ú#first_call_function_nn_module_stack)Ú_PyTreeCodeGenÚ_PyTreeInfo)Úimmutable_dictÚimmutable_list)Úinsert_deferred_runtime_asserts)ÚValueRanges)Ú_collect_all_valid_cia_opsÚ_collect_and_set_constant_attrsÚ_collect_param_buffer_metadataÚ_detect_fake_mode_from_gmÚ_fakify_params_buffersÚ_get_decomp_for_ciaÚ_is_preservable_cia_opÚ_name_hoo_subgraph_placeholdersÚ7_override_graph_signature_for_temp_registered_constantsÚ/_overwrite_signature_for_non_persistent_buffersÚ)_populate_param_buffer_metadata_to_new_gmÚ_register_constants_as_buffersÚ_rename_without_collisionsÚ_special_op_to_preserve_ciaÚplaceholder_naming_pass)ÚVerifier©Údetect_fake_mode©Úunset_fake_temporarily)Úis_equivalentÚreorder_kwargs©ÚCustomDecompTable)Úcompatibility)Ú
PassResult)ÚPassManageré   )ÚArgumentSpecÚConstantArgumentÚCustomObjArgumentÚExportGraphSignatureÚ	InputKindÚ	InputSpecÚ
OutputKindÚ
OutputSpecÚSymBoolArgumentÚSymFloatArgumentÚSymIntArgumentÚTensorArgumentÚTokenArgument)ÚExportedProgramÚModuleCallEntryÚModuleCallSignatureÚdefault_decompositionsc                   óŠ   — e Zd ZU ee   ed<   ee   ed<   ej                  ed<   ej                  ed<   dZe	ee
      ed<   d„ Zy)rD   ÚinputsÚoutputsÚin_specÚout_specNÚforward_arg_namesc                 óô   — | j                   D ]-  }|j                  |j                  k(  sŒ|j                  |_        Œ/ | j                  D ]-  }|j                  |j                  k(  sŒ|j                  |_        Œ/ y ©N)rG   ÚnamerH   )ÚselfÚoriginal_nodeÚnew_nodeÚiÚos        ú[/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/export/exported_program.pyÚreplace_all_uses_withz)ModuleCallSignature.replace_all_uses_withf   sd   € Ø—‘ò 	'ˆAØ�v‰v˜×+Ñ+Ó+Ø!Ÿ™�•ð	'ð —‘ò 	'ˆAØ�v‰v˜×+Ñ+Ó+Ø!Ÿ™�•ñ	'ó    )Ú__name__Ú
__module__Ú__qualname__Úlistr5   Ú__annotations__ÚpytreeÚTreeSpecrK   r	   ÚstrrU   © rV   rT   rD   rD   ^   sE   … à�ÑÓØ�,ÑÓØ�_‰_ÓØ�o‰oÓØ-1Ð�x  S¡	Ñ*Ó1ó'rV   rD   c                   ó,   — e Zd ZU eed<   dZee   ed<   y)rC   ÚfqnNÚ	signature)rW   rX   rY   r^   r[   rb   r	   rD   r_   rV   rT   rC   rC   o   s   … à	ƒHØ/3€IˆxÐ+Ñ,Ô3rV   rC   c                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )Nc                  óT   •— t        «       5   ‰| i |¤Žcd d d «       S # 1 sw Y   y xY wrM   r+   )ÚargsÚkwargsÚfns     €rT   Úwrapperz/_disable_prexisiting_fake_mode.<locals>.wrapperv   s+   ø€ ä#Ó%ñ 	'Ù�tÐ&˜vÑ&÷	'÷ 	'ò 	'ús   Œž')Ú	functoolsÚwraps)rg   rh   s   ` rT   Ú_disable_prexisiting_fake_moderk   u   s%   ø€ Ü‡_�_�RÓó'ó ð'ð €NrV   Ú
spec1_typeÚspec1_contextÚ
spec2_typeÚspec2_contextÚreturnc                 óú   — | �|€| |u xr ||k(  S t        | t        t        f«      rt        |t        t        f«      r||k(  S t        | t        t        f«      rt        |t        t        f«      r||k(  S | |u xr ||k(  S )zeTreat containers and their immutable variants as the same type. Otherwise
    compare as normal.
    )Ú
issubclassÚdictr   rZ   r   )rl   rm   rn   ro   s       rT   Ú_fx_collection_equivalence_fnrt   ~   s“   € ð Ð˜ZÐ/Ø˜ZÐ'ÒJ¨M¸]Ñ,JÐJä�*œt¤^Ð4Ô5¼*Ø”Tœ>Ð*ô;ð  Ñ-Ð-ä�*œt¤^Ð4Ô5¼*Ø”Tœ>Ð*ô;ð  Ñ-Ð-à˜Ð#ÒF¨¸Ñ(FÐFrV   c              #   óä  K  — i }t        «       }| j                  «       D �]z  \  }}|j                  j                  «       ||<   |j	                  |«       t
        D ]3  }||j                  vsŒ |j                  |«      t        |d¬«      «       Œ5 t        |«      }t        j                  j                  j                  |j                  v r/|j                  t        j                  j                  j                  = |r9 |j                  t        j                  j                  j                  «      |«       d„ }t        |«      s& t        |«      t        j                   ||¬«      «       t"        D ](  }	|	|j                  vsŒ |j                  |	«      |«       Œ* �Œ} 	 d –— |D ]_  }
|
j                  j%                  «        |
j                  j'                  ||
   «       |
j(                  j%                  «        t+        |
«       Œa y # |D ]_  }
|
j                  j%                  «        |
j                  j'                  ||
   «       |
j(                  j%                  «        t+        |
«       Œa w xY w­w)NT)Údeferred_errorc                 óR   — |d   }|d= | 5   ||i |¤Žcd d d «       S # 1 sw Y   y xY w)NÚoriginal_callabler_   )Úfake_tensor_modeÚopre   rf   Úorig_cia_callables        rT   Ú$_force_dispatch_to_orig_cia_callablezQ_override_composite_implicit_decomp.<locals>._force_dispatch_to_orig_cia_callableí   s<   € Ø &Ð':Ñ ;ÐØÐ*Ð+Ø!ñ :Ù(¨$Ð9°&Ñ9÷:÷ :ò :ús   ‹�&)rx   )ÚsetÚitemsÚ
py_kernelsÚcopyÚaddÚ(_AUTOGRAD_ALIAS_BACKEND_KEYS_TO_OVERRIDEÚpy_implr   r   ÚtorchÚ_CÚDispatchKeyÚCompositeImplicitAutogradr   r   ri   ÚpartialÚ_BACKEND_KEYS_TO_OVERRIDEÚclearÚupdateÚ_dispatch_cacher   )Úcia_ops_to_callableÚsafeÚsaved_tablesÚpatched_opsÚop_overloadÚdecomp_callableÚoverride_dispatch_keyr{   r|   Úkeyrz   s              rT   Ú#_override_composite_implicit_decompr•   ¼   s  è ø€ ð  €LÜ“%€KØ(;×(AÑ(AÓ(Có ><Ñ$ˆ�_Ø$/×$:Ñ$:×$?Ñ$?Ó$Aˆ�[Ñ!Ø�‰˜Ô$Ü%Mò 	Ð!Ø$¨K×,BÑ,BÒBà:�×#Ñ#Ð$9Ó:Ü,¨[ÈÔNõð	ô 0°Ó<ÐÜ�8‰8×Ñ×9Ñ9¸[×=SÑ=SÑSØ×&Ñ&¤u§x¡x×';Ñ';×'UÑ'UÐVáØOˆK×Ñ¤§¡× 4Ñ 4× NÑ NÓOØôò	:ô .¨kÔ:Ø)Ô˜[Ó)Ü×!Ñ!Ø8Ø&7ôôô -ò 	<ˆCØ˜+×0Ñ0Ò0ð  )�×#Ñ# CÓ(Ð):Õ;ò#	<ð[><ð@$Ûàò 	$ˆBØ�M‰M×ÑÔ!Ø�M‰M× Ñ  ¨bÑ!1Ô2Ø×Ñ×$Ñ$Ô&Ü Õ#ñ		$ø�+ò 	$ˆBØ�M‰M×ÑÔ!Ø�M‰M× Ñ  ¨bÑ!1Ô2Ø×Ñ×$Ñ$Ô&Ü Õ#ñ		$üs-   ‚A)I0Á,DI0ÆI0ÆH Æ"A%I0ÈA&I-É-I0c               #   ó   K  — t        t        j                  j                  j                  j
                  t        t        j                  j                  j                  j                  t        id¬«      5  d –— d d d «       y # 1 sw Y   y xY w­w)NF)rŽ   )r•   r„   ÚopsÚatenÚtoÚdtype_layoutr&   Údtyper_   rV   rT   Ú!_override_decomp_aten_to_variantsrœ     sg   è ø€ ô
 
-ä�I‰I�N‰N×Ñ×*Ñ*Ô,GÜ�I‰I�N‰N×Ñ×#Ñ#Ô%@ð	
ð ô
ñ ó 	÷÷ ñ üs   ‚A2BÁ4BÁ9	BÂBÂBÚdecomp_table.c                 óJ  — t        t        «       «      }i }t        | j                  «       «      D ]_  }||v r| |   ||<   |j	                  |«       | |= Œ$t        |«      sŒ0|j                  «       }|j                  d«      rJ d«       ‚| |   ||<   Œa |D ]  }t        ||<   Œ || fS )Nr˜   zThis should be a custom op)	r}   r   rZ   ÚkeysÚremover   rN   Ú
startswithr&   )r�   Úall_preservable_cia_opsr�   rz   Úop_nameÚks         rT   Ú,_split_decomp_table_to_cia_and_python_decompr¥   '  sÐ   € ô "Ô"<Ó">Ó?ÐØÐä�<×$Ñ$Ó&Ó'ò 7ˆð$ Ð(Ñ(Ø&2°2Ñ&6Ð Ñ#Ø#×*Ñ*¨2Ô.Ø˜RÑ ô $ BÕ'Ø—g‘g“iˆGØ×)Ñ)¨&Ô1ÐOÐ3OÓOÐ1Ø&2°2Ñ&6Ð Ò#ð97ð@ %ò =ˆÜ!<Ð˜AÒð=ð  Ð,Ð,rV   c                  ó   — t        «       S )z¸
    This is the default decomposition table which contains decomposition of
    all ATEN operators to core aten opset. Use this API together with
    :func:`run_decompositions()`
    r/   r_   rV   rT   rE   rE   S  s   € ô ÓÐrV   Úcia_to_decompÚpython_decomp_tableÚjoint_loss_indexc                ó   — ddl m} ddlm} ddlm}m}m}	m}
m	}m
} ddlm} d„ } || |«      �sã| j                  «       }i t        |j                  d¬«      «      ¥t        |j!                  d¬«      «      ¥}dd	lm}  ||«       i t        |j                  d¬«      «      ¥t        |j!                  d¬«      «      ¥}t'        | j(                  «      }|€t+         |«       d
¬«      }|j,                  }|j.                  j0                  j2                  j4                  }|j6                  t8        t:        fvrt=        j>                  t:        d |g«      }tA        tC        ||jD                  |«      «      |j.                  _        |jG                  «        tI        | jJ                  | jL                  |«       tO        || jP                  | jJ                  jR                  «      }tU        ||«      }tW        |«      }ddl,m-}m.} g }|j.                  j^                  D ]Ä  }|j`                  dk(  sŒtc        |jd                  d   tf        «      rwd }|jd                  d   jh                  €'| jL                  |jd                  d   jj                     }n#|jd                  d   jh                  jl                  }|jo                  |«       Œ§|jo                  |jd                  d   «       ŒÆ |5  tq        «       5  ts        |«      5   || jt                  «      5  t=        jv                  ||jD                  «      } ||g |d   ¢|d   jy                  «       ¢­i |«      5 \  }} }!}"}# ||| |!||"|dd|¬«	      }$|$jL                  j{                  «       D �%�&ci c]  \  }%}&|%tc        |&t|        «      r|#|&   n|&“Œ c}&}%|$_&        |$j~                  }'|$j€                  }(tƒ        |(|«      }(t…        ||'|(«       t‡        | jJ                  |(«      }( ||'|(|"«      })t‰        |'|(|| |!||)«       d d d «       d d d «       d d d «       d d d «       d d d «        |
'«        ||'«        ||'(«       t‹        |'|(«      \  }'}(|j{                  «       D ]  \  }*}+|*|vsŒ|+| jP                  |*<   Œ |j{                  «       D ]h  \  }*}+|*| jP                  vr&tc        |+tŒ        jŽ                  j�                  «      rJ ‚|*| jP                  v sŒI|*|vsŒN| jP                  j“                  |*«       Œj |'|(| jP                  fS | j(                  j.                  j^                  D �cg c]  }|j`                  dk(  sŒ|‘Œ },}|,D �cg c]  }|jd                  d   ‘Œ }-}| j(                  j!                  «       D �*�.cg c]  \  }*}.|*‘Œ	 }/}*}.|/D ]  }*t•        | j(                  |*«       Œ t—        |-«      }|€t™        jš                  «       n|}|rt˜        jš                  n|}0 |	«       5  |5  ts        |«      5   |0«       5   || j(                  |-||�d
nd|�|nd ¬«      \  }'}1|'j.                  j�                  «        d d d «       d d d «       d d d «       d d d «       d„ }2'j.                  j^                  D �cg c]  }|j`                  dk(  sŒ|‘Œ }3}t9        |'j.                  j^                  «      d   jž                  d   }4t¡        |3«      t¡        |,«      k(  sJ ‚t£        |,|3«      D ]  \  }5}6|5jj                  x|6_5        |6_R        Œ |3D �7ci c]  }7|7jj                  |7jj                  “Œ }8}7|'j.                  j^                  D ]8  }|j`                  dk(  rŒt§        |8|jj                  |jj                  «      |_5        Œ: t©        |'«       ddlUmV}9mW}: ddlXmY}; tŒ        j´                  j¶                  j¸                  s[d}<t»        |'«      }=|=�L |:|'t½        j¾                  |9|<¬«      «      5  tÁ        |'|=dtÃ        |'j.                  «      › �d
¬«       d d d «       |'jG                  «        tÅ         |;|'«      «      D ]7  \  }>}*tc        |4|>   tŒ        jÆ                  jÈ                  «      sŒ.|*|4|>   _5        Œ9 tÅ        | jJ                  jÊ                  «      D �>�?ci c]C  \  }>}?tc        |?jÌ                  tÎ        «      s$|?jÌ                  jj                  |3|>   jj                  “ŒE }@}>}?tÅ        | jJ                  jÊ                  «      D �>�?cg c]E  \  }>}?tÑ        |?jÒ                   |2|?jÌ                  |3|>   «      |?j¤                  |?jÔ                  «      ‘ŒG }A}>}?g }BtÅ        1jÖ                  «      D �>�*ci c]  \  }>}*|*|>“Œ
 }C}>}*t9        |1jØ                  jÛ                  «       «      }D|D|4d t¡        |D«       D �cg c]  }|jj                  ‘Œ c}k(  sJ ‚|1jØ                  j{                  «       D ]ô  \  }E}FC|F   }>| jJ                  jÊ                  |>   }G|GjÒ                  tÜ        jÞ                  tÜ        jà                  fv sJ ‚GjÒ                  tÜ        jà                  k(  rtâ        jä                  ntâ        jæ                  }HGjÒ                  tÜ        jà                  k(  rGj¤                  nGjÌ                  jj                  }IBjo                  té        Htë        E¬«      |I¬«      «       Œö tÅ        | jJ                  jì                  «      D ]„  \  }>}?Bjo                  té        |>|k(  rtâ        jî                  n|?jÒ                   |2|?jÌ                  |4t¡        D«      |>z      «      @jñ                  |?j¤                  |?j¤                  «      «      «       Œ† |��™|1jò                  €J ‚|1jò                  jô                  }Jt¡        |1jÖ                  «      t¡        | jJ                  jÊ                  «      k(  sJ ‚tÅ        | jJ                  jÊ                  «      D �>�?ci c]/  \  }>}?tc        |?jÌ                  tê        «      r|1jÖ                  |>   |?“Œ1 }K}>}?tÅ        |4t¡        B«      d  «      D ]Ë  \  }>}J|jj                     }LK|L   }?|?jÒ                  tÜ        jö                  k(  rtâ        jø                  }M|?j¤                  }InH|?jÒ                  tÜ        jÞ                  k(  rtâ        jú                  }ML}Intý        d|?jÒ                  › �«      ‚Bjo                  té        Mtë        |jj                  ¬«      I«      «       ŒÍ t¡        |3«      t¡        |,«      k(  sJ ‚tÿ        AB¬«      }(t£        |,|3«      D ]­  \  }N}Otc        |Njd                  d   tŒ        �j                   «      sNjd                  d   Ojd                  d<   Oj¤                  |(�j                  v sOj¤                  |(�j                  v sŒ}Njd                  j{                  «       D ]  \  }P}Q|QOjd                  |P<   Œ Œ¯ |'|(| jP                  fS c c}&}%w # 1 sw Y   �
ŒxY w# 1 sw Y   �
ŒxY w# 1 sw Y   �
ŒxY w# 1 sw Y   �
ŒxY w# 1 sw Y   �
Œ xY wc c}w c c}w c c}.}*w # 1 sw Y   �Œ#xY w# 1 sw Y   �Œ(xY w# 1 sw Y   �Œ-xY w# 1 sw Y   �Œ2xY wc c}w c c}7w # 1 sw Y   �Œ’xY wc c}?}>w c c}?}>w c c}*}>w c c}w c c}?}>w )Nr   )Ú_materialize_and_lift_constants)Úaot_export_module)Ú2_disable_custom_triton_op_functional_decompositionÚ_export_to_aten_irÚ_ignore_backend_decompsÚ_verify_nn_module_stackÚ_verify_placeholder_namesÚ_verify_stack_trace)ÚShapeEnvc                 ó>   — |d uxs | j                   j                  d uS rM   )Úgraph_signatureÚbackward_signature)Úepr©   s     rT   Ú_is_joint_ir_decompzO_decompose_and_get_gm_with_new_signature_constants.<locals>._is_joint_ir_decompp  s)   € à DÐ(ò AØ×!Ñ!×4Ñ4¸DÐ@ð	
rV   F)Úremove_duplicate)Ú!unwrap_tensor_subclass_parametersT)Ú	shape_envÚexport)Ú&_enable_graph_inputs_of_type_nn_moduleÚ_fakify_script_objectsÚplaceholderÚvalr4   )r�   Ú_check_autograd_stateÚ_prettify_placeholder_namesÚdecompose_custom_triton_ops)ÚdecompositionsÚtrace_jointÚoutput_loss_indexc                 ó„  — t        | t        «      r| S t        | t        «      rt        |j                  ¬«      S t        | t        «      rt	        |j                  ¬«      S t        | t
        «      rt        |j                  ¬«      S t        | t        «      rt        |j                  ¬«      S t        dt        | «      › �«      ‚)N©rN   zType of old_arg not supported: )	Ú
isinstancer6   r@   rN   r?   r>   r=   ÚRuntimeErrorÚtype)Úold_argÚnew_phs     rT   Ú
update_argzF_decompose_and_get_gm_with_new_signature_constants.<locals>.update_argb  sŽ   € Ü�gÔ/Ô0ØˆNÜ˜¤Ô0Ü! v§{¡{Ô3Ð3Ü˜¤Ô0Ü! v§{¡{Ô3Ð3Ü˜Ô!1Ô2Ü#¨¯©Ô5Ð5Ü˜¤Ô1Ü"¨¯©Ô4Ð4ÜÐ<¼TÀ'»]¸OÐLÓMÐMrV   éÿÿÿÿ)Ú_node_metadata_hookÚ_set_node_metadata_hook)Ú_graph_output_nameszUFile "torch/fx/passes/runtime_assert.py", line 24, in insert_deferred_runtime_asserts)Ústack_tracezexported program: )r¼   rÈ   )ÚkindÚargÚtargetzUnknown input kind: ©Úinput_specsÚoutput_specs)ƒÚ(torch._export.passes.lift_constants_passr«   Útorch._functorch.aot_autogradr¬   Útorch.export._tracer­   r®   r¯   r°   r±   r²   Ú%torch.fx.experimental.symbolic_shapesr³   Úmodulers   Únamed_parametersÚnamed_buffersÚ7torch._functorch._aot_autograd.subclass_parametrizationrº   r   Úgraph_moduler   Ú	_out_specÚgraphÚ_codegenÚpytree_infoÚ	orig_argsrË   rZ   Útupler\   r]   r   r   Ú_in_specÚ	recompiler   rµ   Ú	constantsr$   Ú
state_dictÚnon_persistent_buffersr   r   Útorch._export.non_strict_utilsr½   r¾   Únodesrz   rÉ   Úmetar7   Úfake_valrN   Úreal_objÚappendrœ   r•   Úexample_inputsÚtree_unflattenÚvaluesr~   r   ÚgmÚsigr!   r#   r"   r'   Ú!_remove_unneccessary_copy_op_passr„   ÚnnÚ	ParameterÚpopÚdelattrr*   Ú
contextlibÚnullcontextÚeliminate_dead_codere   ÚlenÚziprÖ   r%   r    Ú(torch._export.passes._node_metadata_hookrÐ   rÑ   Ú4torch._functorch._aot_autograd.input_output_analysisrÒ   Ú_dynamoÚconfigÚdo_not_emit_runtime_assertsÚ_get_shape_envri   rˆ   r   r   Ú	enumerateÚfxÚNoderØ   rÕ   r6   r:   rÔ   Ú
persistentÚuser_inputsÚuser_inputs_to_mutaterŸ   r9   Ú
USER_INPUTÚBUFFERr;   ÚBUFFER_MUTATIONÚUSER_INPUT_MUTATIONr<   r@   rÙ   ÚLOSS_OUTPUTÚgetr¶   Úgradients_to_user_inputsÚ	PARAMETERÚGRADIENT_TO_PARAMETERÚGRADIENT_TO_USER_INPUTÚAssertionErrorr8   ÚTensorÚinputs_to_parametersÚinputs_to_buffers)Rr·   r§   r¨   r©   rÃ   r«   r¬   r­   r®   r¯   r°   r±   r²   r³   r¸   ÚmodÚwrapped_params_buffersrº   Úunwrapped_params_buffersÚ	fake_moderJ   Úorig_arg_namesÚtemp_registered_constantsÚfake_params_buffersÚparams_buffers_to_node_metar½   r¾   Úretracing_argsÚnodeÚreal_script_objÚretracing_args_unwrappedÚpatched_modÚnew_fake_argsÚnew_fake_kwargsÚnew_fake_constant_attrsÚmap_fake_to_realÚaten_export_artifactra   Úobjr÷   Únew_graph_signaturerë   rN   ÚpÚold_placeholdersÚ	fake_argsÚ_Úbuffers_to_removeÚ#custom_triton_ops_decomposition_ctxrµ   rÎ   Únew_placeholdersÚnew_outputsÚold_phrÍ   ÚphÚname_maprÐ   rÑ   rÒ   rÓ   r»   rR   ÚspecÚold_new_placeholder_maprØ   rÙ   Úuser_inputs_indexÚmutation_namesÚoutput_nameÚ
input_nameÚ
input_specÚoutput_kindrÖ   Ú	gradientsÚspecsÚsourcerÔ   Úold_noderQ   r¤   ÚvsR                                                                                     rT   Ú2_decompose_and_get_gm_with_new_signature_constantsrI  \  s  € õ YÝ?÷÷ õ ?ò
ñ ˜rÐ#3Õ4Ø�i‰i‹kˆð"
Ü�3×'Ñ'¸Ð'Ó?Ó@ð"
ä�3×$Ñ$°eÐ$Ó<Ó=ð"
Ðõ
	
ñ 	*¨#Ô.ð$
Ü�3×'Ñ'¸Ð'Ó?Ó@ð$
ä�3×$Ñ$°eÐ$Ó<Ó=ð$
Ð ô .¨b¯o©oÓ>ˆ	ØÐÜ&±³ÀDÔIˆIð —=‘=ˆàŸ™×+Ñ+×7Ñ7×AÑAˆð �=‰=¤¤u Ñ-Ü—‘¤u¨d°X°JÓ?ˆHä+ÜØØ—‘Øóó
ˆ�	‰	Ôð 	�‰Œô
 	(¨×(:Ñ(:¸B¿L¹LÈ#ÔNô %CØ�—‘ × 2Ñ 2× IÑ Ió%
Ð!ô
 5°YÀÓDÐä&DÀSÓ&IÐ#÷
	
ð
 ˆØ—I‘I—O‘Oò 
	<ˆDØ�w‰w˜-Ó'Ü˜dŸi™i¨Ñ.Ô0AÔBØ&*�OØ—y‘y Ñ'×0Ñ0Ð8Ø*,¯,©,°t·y±yÀÑ7G×7LÑ7LÑ*M™à*.¯)©)°EÑ*:×*CÑ*C×*LÑ*L˜Ø"×)Ñ)¨/Õ:à"×)Ñ)¨$¯)©)°EÑ*:Õ;ð
	<ð ñP	ä,Ó.ñP	ä0SØó1
ñP	ñ 2Ø×Ñó
ñ	P	ô (.×'<Ñ'<Ø §¡ó(Ð$ñ (ØðØ-¨aÑ0ðà-¨aÑ0×7Ñ7Ó9ñð Øóð EñØØØØ'Ø á'9ØØ!Ø#Ø'Ø+Ø!4Ø*/Ø05Ø0Kô
(Ð$ð& %9×$BÑ$B×$HÑ$HÓ$J÷2ñ !˜˜Sð ä% cÔ+;Ô<ð )¨Ò-à ñ!ó2Ð$Ô.ð *×,Ñ,�Ø&:×&>Ñ&>Ð#ô
 LØ+Ð-Fóð $ô :Ø/°Ð5Hôô
 'VØ×&Ñ&Ð(;ó'Ð#ñ <ØÐ+Ð-Dó�	ô (ØØ'ØØ!Ø#Ø'Øô÷{E÷P	÷ P	÷ P	÷ P	ñd 	  Ô#Ù˜BÔÙ! "Ð&9Ô:ä"CØÐ#ó#
ÑˆÐð 0×5Ñ5Ó7ò 	(‰GˆD�!ØÐ1Ò1Ø&'�—‘˜dÒ#ð	(ð .×3Ñ3Ó5ò 	,‰GˆD�!à˜2Ÿ=™=Ñ(Ü% a¬¯©×);Ñ);Ô<Ð<Ð<à�r—}‘}Ò$ØÐ7Ò7Ø—M‘M×%Ñ% dÕ+ð	,ð Ð&¨¯©Ð5Ð5ð Ÿ™×.Ñ.×4Ñ4öØ¸¿¹À=Ó8PŠðÐð ð /?Ö? d�—‘˜5Ó!Ð?€IÐ?à-/¯_©_×-JÑ-JÓ-L×M¡' $¨šÐMÐÑMØ!ò 'ˆÜ�—‘ Õ&ð'ô ! Ó+€IØ,5Ð,=”
×&Ñ&Ô(À9€Iñ 'ô 	×Òà?ð (ñ
 
!Ó	"ñ ' Iñ 'Ô/RØó0ñ 'á*Ó,ñ'ñ 0Ø�O‰OØØ.Ø 0Ð <™À%à$4Ð$@Ñ Àdô
ÑˆˆOð 	�‰×$Ñ$Ô&÷'÷ '÷ '÷ 'ò Nð *,¯©¯©ÖT ¸4¿7¹7ÀmÓ;SšÐTÐÐTÜ�r—x‘x—~‘~Ó& rÑ*×/Ñ/°Ñ2€Kô ÐÓ ¤CÐ(8Ó$9Ò9Ð9Ð9ÜÐ.Ð0@ÓAò 2‰ˆ�Ø&,§k¡kÐ1ˆŒ�f•mð2ð ,<Ö< R�—‘˜Ÿ™Ñ Ð<€HÐ<Ø—‘—‘ò OˆØ�7‰7�mÒ#ØÜ.¨x¸¿¹ÀDÇIÁIÓNˆ�	ðOô $ BÔ'÷õ Yä�=‰=×Ñ×;Ò;ð1ð 	ô # 2Ó&ˆ	ØÐ Ù(Ø”I×%Ñ%Ð&9À{ÔSóñ ô 0ØØØ(Ô)LÈRÏXÉXÓ)VÐ(WÐXØõ	÷ð ‡L�L„NÜÑ0°Ó4Ó5ò '‰ˆˆ4Ü�k !‘n¤e§h¡h§m¡mÕ4Ø"&ˆK˜‰NÕð'ô ! ×!3Ñ!3×!?Ñ!?Ó@÷áˆAˆtÜ˜$Ÿ(™(Ô$4Ô5ð 	�‰�‰Ð'¨Ñ*×/Ñ/Ñ/ðÐñ ô ! ×!3Ñ!3×!?Ñ!?Ó@÷ñ ˆAˆtô 	Ø�I‰IÙ�t—x‘xÐ!1°!Ñ!4Ó5Ø�K‰KØ�O‰Oõ		
ð€Kñ ð €Lô 1:¸/×:UÑ:UÓ0V×W¡W Q¨˜˜q™ÐWÐÑWÜ˜/×?Ñ?×DÑDÓFÓG€NØ°KÐ@UÄ#ÀnÓBUÐ4VÖW¨D˜dŸi›iÒWÒWÐWÐWØ#2×#HÑ#H×#NÑ#NÓ#Pò 
Ñˆ�ZØ˜jÑ)ˆØ×'Ñ'×3Ñ3°AÑ6ˆ
Ø�‰¤9×#7Ñ#7¼×9IÑ9IÐ"JÑJÐJÐJð �‰¤)×"2Ñ"2Ò2ô ×&Ò&ä×/Ñ/ð 	ð �‰¤)×"2Ñ"2Ò2ð ×Òà—‘×$Ñ$ð 	ð
 	×ÑÜØ Ü"¨Ô4Øôõ	
ð
ô. ˜R×/Ñ/×<Ñ<Ó=ò 
‰ˆˆ4Ø×ÑÜØ*+Ð/?Ò*?”
×&Ò&ÀTÇYÁYÙ˜4Ÿ8™8 [´°^Ó1DÀqÑ1HÑ%IÓJØ'×+Ñ+¨D¯K©K¸¿¹ÓEóõ	
ð
ð Ñ#Ø×1Ñ1Ð=Ð=Ð=Ø#×6Ñ6×OÑOˆ	Ü�?×.Ñ.Ó/´3°r×7IÑ7I×7UÑ7UÓ3VÒVÐVÐVô % R×%7Ñ%7×%CÑ%CÓD÷
á��4Ü˜$Ÿ(™(¤NÔ3ð ×'Ñ'¨Ñ*¨DÑ0ð
ˆñ 
ô
 ! ¬S°Ó->Ð-@Ð!AÓBò 	‰GˆAˆtØ˜tŸy™yÑ)ˆFØ˜‘=ˆDØ�y‰yœI×/Ñ/Ò/Ü!×7Ñ7�ØŸ™‘Ø—‘œi×2Ñ2Ò2Ü!×8Ñ8�Ø‘ä$Ð';¸D¿I¹I¸;Ð%GÓHÐHØ×ÑÜØÜ"¨¯	©	Ô2Øóõð	ô& ÐÓ ¤CÐ(8Ó$9Ò9Ð9Ð9ä.Ø¨lôÐô "Ð"2Ð4DÓEò 	%Ñˆ�(Ü˜(Ÿ-™-¨Ñ.´·²Ô=Ø#+§=¡=°Ñ#7ˆH�M‰M˜%Ñ ð �O‰OÐ2×GÒGÑGØ�‰Ð"5×"GÒ"GÒGà Ÿ™×+Ñ+Ó-ò %‘��1Ø#$�—‘˜aÒ ñ%ð	%ð Ð" B§M¡MÐ1Ð1ùóg2÷9Eñ Eú÷P	ñ P	ú÷ P	ñ P	ú÷ P	ñ P	ú÷ P	ñ P	üò`ùò @ùãM÷'ñ 'ú÷ 'ñ 'ú÷ 'ñ 'ú÷ 'ñ 'üò: Uùò =÷0ñ üó$ùóùó" XùâWùóJ
s*  ËyË'x>Ë3x1ÌAx$	Í5xÎ "xÎ"A+xÐx$	Ðx1Ðx>Ð%yÔ5yÕ
yÕyÖ	y"×3z×6zØy5Ø
=y(	Ùy5ÙzÙzÚzÚzÜz!ß0&z&âAz3äA
z9å/z?æ3{ð4{
øxøx!øx$	ø$x.ø)x1ø1x;ø6x>ø>y	ùyùyù(y2ù-y5ù5y?ù:zúz	úzúzú&z0r÷   r0  c                 óÈ  — | j                  |j                  «       «      5  | j                  j                  D ]ÿ  }|j                  dk(  sŒt        j                  |j                  «      \  }}|D ]Å  }t        |t        j                  j                  «      sŒ(|j                  |j                  v sŒA|j                  dk(  sŒQ|j                  t        j                  j                   j"                  j$                  k(  sŒ�|j'                  |j                  d   «       | j                  j)                  |«       ŒÇ �Œ | j+                  «        ddd«       | |fS # 1 sw Y   | |fS xY w)zQ
    Removes redundant copy_ node that was introduced due to mutated buffer.
    ÚoutputÚcall_functionr4   N)Ú_set_replace_hookÚget_replace_hookrä   rï   rz   r\   Útree_flattenre   rÉ   r„   r
  r  rN   Úbuffers_to_mutaterÖ   r—   r˜   r€   ÚdefaultrU   Ú
erase_noderê   )r÷   r0  r&  re   r4  Úouts         rT   rù   rù     s  € ð 
×	Ñ	Ð1×BÑBÓDÓ	Eñ Ø—H‘H—N‘Nò 	5ˆDØ�w‰w˜(Ó"Ü ×-Ñ-¨d¯i©iÓ8‘��aØò 
5�Cä" 3¬¯©¯©Õ6ØŸH™HÐ(;×(MÑ(MÒMð  ŸF™F oÓ5Ø #§
¡
¬e¯i©i¯n©n×.AÑ.A×.IÑ.IÓ Ià×5Ñ5°c·h±h¸q±kÔBØŸH™H×/Ñ/°Õ4ò
5ð	5ð 	�‰Œ÷ð  Ð"Ð"Ð"÷!ð  Ð"Ð"Ð"ús+    )EÁ
AEÂEÂ/EÂ?;EÃ;AEÅE!c           	      óÂ  — | j                  |j                  «       «      5  | j                  «       D �]  }t        |t        j
                  j                  «      sŒ)i }i }t        |j                  j                  «      D ]È  }|j                  dk(  r¨|j                  t        j                  k(  r‹|j                  \  }}||   › d|› �}	|	|v rc|j                  ||	   «       |D ].  }
|
j                   €Œ|
j                   j                  |||	   «       Œ0 |j                  j#                  |«       Œ¯|||	<   |	||<   Œº|j$                  ||<   ŒÊ �Œ 	 d d d «       y # 1 sw Y   y xY w)NrL  ú.)rM  rN  ÚmodulesrÉ   r„   r
  ÚGraphModulerZ   rä   rï   rz   rÖ   ÚoperatorÚgetitemre   rU   rb   rR  rN   )r÷   rµ   Úmodule_call_graphrÞ   Únode_idÚgetitemsr&  rF  ÚidxÚnew_idÚentrys              rT   Ú _common_getitem_elimination_passr`  '  sG  € ð 
×	Ñ	˜o×>Ñ>Ó@Ó	Añ .Ø—j‘j“ló 	.ˆFÜ˜f¤e§h¡h×&:Ñ&:Ô;Øà02ˆGØ13ˆHÜ˜VŸ\™\×/Ñ/Ó0ò .�Ø—7‘7˜oÒ-°$·+±+Ä×AQÑAQÒ2QØ"&§)¡)‘K�F˜CØ '¨¡Ð0°°#°Ð7�FØ Ñ)Ø×2Ñ2°8¸FÑ3CÔDØ%6ò "˜EØ$Ÿ™Ñ:Ø %§¡× EÑ EØ$(¨(°6Ñ*:õ!"ð"ð
 Ÿ™×/Ñ/°Õ5à+/˜ Ñ(Ø(.˜ šà$(§I¡I�G˜D’Mò!.ñ	.÷.÷ .ñ .ús    CEÃ/AEÅEÚold_module_call_graphc                 ó   — t        j                  |«      }i }| j                  j                  D ]=  }|j                  j                  dg «      x}sŒ"|j                  ||d   j                  <   Œ? |D ][  }|j                  }|€Œg |j                  ¢|j                  ¢D ]-  }|j                  |j                  |j                  «      |_        Œ/ Œ] |S )NÚ	from_noderÏ   )
r€   Údeepcopyrä   rï   rð   r  rN   rb   rG   rH   )	r÷   ra  Únew_module_call_graphÚ
provenancer&  Úhistoryr_  rb   Úxs	            rT   Ú_get_updated_module_call_graphri  D  sÎ   € ô !ŸM™MÐ*?Ó@Ðð "$€JØ—‘—‘ò 5ˆØ—i‘i—m‘m K°Ó4Ð4ˆ7Ñ4Ø+/¯9©9ˆJ�w˜r‘{×'Ñ'Ò(ð5ð
 'ò 4ˆØ—O‘Oˆ	ØÐØØ8�9×#Ñ#Ð8 i×&7Ñ&7Ð8ò 	4ˆAØ—^‘^ A§F¡F¨A¯F©FÓ3ˆA�Fñ	4ð	4ð !Ð rV   rÃ   c          
      óF  — t        | ||||¬«      \  }}}t        || j                  «      }|j                  j	                  | j
                  j                  «       t        || j                  «      }	t        ||j                  |||	|| j                  | j                  ¬«      }
|
S )N©r§   r¨   r©   rÃ   )Úrooträ   rµ   rì   Úrange_constraintsrZ  rô   rë   )rI  ri  rZ  rð   r‹   râ   Ú_get_updated_range_constraintsrm  rB   rä   rô   rë   )r·   r§   r¨   r©   rÃ   r÷   r0  rì   re  Únew_range_constraintsÚexported_programs              rT   Ú_decompose_exported_programrq  \  s°   € ô 	;Ø
Ø#Ø/Ø)Ø$?ô	ñ	Ø
ØØô ;Ø
Ø
×ÑóÐð ‡G�G‡N�N�2—?‘?×'Ñ'Ô(ä:Ø
Ø
×ÑóÐô
 'ØØ�h‰hØ+ØØ/Ø/Ø×(Ñ(Ø—,‘,ô	Ðð ÐrV   c                   ó	  — e Zd ZdZ	 	 dDddœdeej                  j                  ee	e
f   f   dej                  j                  dedee	eej                  ej                  j                  f   f   dd	d
ee   deeee
df   ee	e
f   f      deee	eej                  eej*                  j,                  f   f      deeee         fd„Ze ed¬«      d„ «       «       Zej:                   ed¬«      d„ «       «       Ze ed¬«      d„ «       «       Zej:                   ed¬«      d„ «       «       Ze ed¬«      d„ «       «       Zej:                   ed¬«      d„ «       «       Ze ed¬«      d„ «       «       Z e j:                   ed¬«      d„ «       «       Z  ed¬«      de!ej                  j                     fd„«       Z" ed¬«      de!ee	ej                  j                  f      fd„«       Z# ed¬«      de!ej                     fd„«       Z$ ed¬«      de!ee	ej                  f      fd„«       Z%e ed¬«      d„ «       «       Z&e&j:                   ed¬«      d „ «       «       Z&e ed¬«      d!„ «       «       Z'e'j:                   ed¬«      d"„ «       «       Z'e ed¬«      d#„ «       «       Z(e(j:                   ed¬«      d$„ «       «       Z(e ed¬«      d%„ «       «       Z)e)j:                   ed¬«      d&„ «       «       Z)e ed¬«      de
fd'„«       «       Z*e*j:                   ed¬«      d(„ «       «       Z*e ed¬«      de	fd)„«       «       Z+e+j:                   ed¬«      d*„ «       «       Z+e ed¬«      d+„ «       «       Z,e,j:                   ed¬«      d,„ «       «       Z,e ed¬«      d-„ «       «       Z-e-j:                   ed¬«      d.„ «       «       Z-e ed¬«      d/„ «       «       Z.e.j:                   ed¬«      d0„ «       «       Z.d1„ Z/d2e
d3e
de
fd4„Z0d2e
d3e
de
fd5„Z1d6„ Z2de	fd7„Z3dej                  j                  fd8„Z4d9„ Z5e6	 	 dEd:eeejn                  jp                  e9f      d;e:dd fd<„«       Z;d=e<dd fd>„Z=d?„ Z> ed¬«      d@„ «       Z?e@dA„ «       ZAddddBœ	 dFdC„ZBy)GrB   aÄ  
    Package of a program from :func:`export`. It contains
    an :class:`torch.fx.Graph` that represents Tensor computation, a state_dict containing
    tensor values of all lifted parameters and buffers, and various metadata.

    You can call an ExportedProgram like the original callable traced by
    :func:`export` with the same calling convention.

    To perform transformations on the graph, use ``.module`` property to access
    an :class:`torch.fx.GraphModule`. You can then use
    `FX transformation <https://pytorch.org/docs/stable/fx.html#writing-transformations>`_
    to rewrite the graph. Afterwards, you can simply use :func:`export`
    again to construct a correct ExportedProgram.
    N)Ú	verifiersrl  rä   rµ   rì   rm  údict[sympy.Symbol, Any]rZ  rô   .rë   rs  c	                ó$  — t         j                  j                  j                  «       |_        t        ||«      | _        t        |t         j                  j                  «      r/| j                  j                  j                  |j                  «       t        | j                  ||«       || _        || _        || _        |€J ‚|| _        || _        |xs i | _        |	xs t$        g}	t'        d„ |	D «       «      sJ ‚|	| _        | j+                  «        y )Nc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wrM   )rr   r(   )Ú.0rH  s     rT   ú	<genexpr>z+ExportedProgram.__init__.<locals>.<genexpr>Â  s   è ø€ Ò>¨q”:˜a¤×*Ñ>ùs   ‚)r„   r
  rä   ÚCodeGenrå   Ú_create_graph_module_for_exportÚ_graph_modulerÉ   rW  rð   r‹   r`  Ú_graph_signatureÚ_state_dictÚ_range_constraintsÚ_module_call_graphÚ_example_inputsÚ
_constantsr(   ÚallÚ
_verifiersÚvalidate)
rO   rl  rä   rµ   rì   rm  rZ  rô   rë   rs  s
             rT   Ú__init__zExportedProgram.__init__   så   € ô  Ÿ™Ÿ™×/Ñ/Ó1ˆŒÜ<¸TÀ5ÓIˆÔÜ�dœEŸH™H×0Ñ0Ô1Ø×Ñ×#Ñ#×*Ñ*¨4¯9©9Ô5ä(Ø×Ñ Ð1Bô	
ð 7FˆÔØ+5ˆÔØCTˆÔØ Ð,Ð,Ð,Ø9JˆÔØ-ˆÔà#š/ rˆŒàÒ+¤( ˆ	ÜÑ>°IÔ>Ô>Ð>Ð>Ø#ˆŒà�‰�rV   F)Úis_backward_compatiblec                 ó   — | j                   S rM   )r{  ©rO   s    rT   râ   zExportedProgram.graph_moduleÇ  s   € ð ×!Ñ!Ð!rV   c                 ó   — t        d«      ‚)Nz7Unable to set ExportedProgram's graph_module attribute.©rÊ   ©rO   Úvalues     rT   râ   zExportedProgram.graph_moduleÌ  s   € ô ÐTÓUÐUrV   c                 ó.   — | j                   j                  S rM   )râ   rä   rˆ  s    rT   rä   zExportedProgram.graphÑ  s   € ð × Ñ ×&Ñ&Ð&rV   c                 ó   — t        d«      ‚)Nz0Unable to set ExportedProgram's graph attribute.rŠ  r‹  s     rT   rä   zExportedProgram.graphÖ  s   € ô ÐMÓNÐNrV   c                 ó   — | j                   S rM   )r|  rˆ  s    rT   rµ   zExportedProgram.graph_signatureÛ  s   € ð ×$Ñ$Ð$rV   c                 ó   — t        d«      ‚)Nz:Unable to set ExportedProgram's graph_signature attribute.rŠ  r‹  s     rT   rµ   zExportedProgram.graph_signatureà  s   € ô ÐWÓXÐXrV   c                 ó   — | j                   S rM   )r}  rˆ  s    rT   rì   zExportedProgram.state_dictå  s   € ð ×ÑÐrV   c                 ó   — t        d«      ‚)Nz5Unable to set ExportedProgram's state_dict attribute.rŠ  r‹  s     rT   rì   zExportedProgram.state_dictê  s   € ô ÐRÓSÐSrV   rp   c              #   óD   K  — | j                  «       D ]	  \  }}|–— Œ y­w)zH
        Returns an iterator over original module's parameters.
        N)rß   )rO   r4  Úparams      rT   Ú
parameterszExportedProgram.parametersï  s)   è ø€ ð
 ×-Ñ-Ó/ò 	‰HˆAˆuØ‹Kñ	ùó   ‚ c              #   óh   K  — | j                   j                  D ]  }|| j                  |   f–— Œ y­w)z—
        Returns an iterator over original module parameters, yielding
        both the name of the parameter as well as the parameter itself.
        N)rµ   r•  rì   )rO   Ú
param_names     rT   rß   z ExportedProgram.named_parameters÷  s7   è ø€ ð ×.Ñ.×9Ñ9ò 	:ˆJØ˜dŸo™o¨jÑ9Ð9Ó9ñ	:ùs   ‚02c              #   óD   K  — | j                  «       D ]	  \  }}|–— Œ y­w)zC
        Returns an iterator over original module buffers.
        N)rà   )rO   r4  Úbufs      rT   ÚbufferszExportedProgram.buffers   s)   è ø€ ð
 ×(Ñ(Ó*ò 	‰FˆAˆsØ‹Iñ	ùr–  c              #   óÖ   K  — t        | j                  j                  «      }| j                  j                  D ]-  }||v r|| j                  |   f–— Œ|| j
                  |   f–— Œ/ y­w)zŽ
        Returns an iterator over original module buffers, yielding
        both the name of the buffer as well as the buffer itself.
        N)r}   rµ   rí   r›  rë   rì   )rO   rí   Úbuffer_names      rT   rà   zExportedProgram.named_buffers  sm   è ø€ ô "% T×%9Ñ%9×%PÑ%PÓ!QÐØ×/Ñ/×7Ñ7ò 	@ˆKØÐ4Ñ4Ø! 4§>¡>°+Ñ#>Ð>Ó>à! 4§?¡?°;Ñ#?Ð?Ó?ñ		@ùs   ‚A'A)c                 ó   — | j                   S rM   )r~  rˆ  s    rT   rm  z!ExportedProgram.range_constraints  ó   € ð ×&Ñ&Ð&rV   c                 ó   — t        d«      ‚)Nz<Unable to set ExportedProgram's range_constraints attribute.rŠ  r‹  s     rT   rm  z!ExportedProgram.range_constraints  ó   € ô ØJó
ð 	
rV   c                 ó   — | j                   S rM   )r  rˆ  s    rT   rZ  z!ExportedProgram.module_call_graph!  rŸ  rV   c                 ó   — t        d«      ‚)Nz<Unable to set ExportedProgram's module_call_graph attribute.rŠ  r‹  s     rT   rZ  z!ExportedProgram.module_call_graph&  r¡  rV   c                 ó   — | j                   S rM   )r€  rˆ  s    rT   rô   zExportedProgram.example_inputs-  s   € ð ×#Ñ#Ð#rV   c                 ó  — |€|| _         y t        |t        «      r4t        |«      dk(  r&t        |d   t        «      rt        |d   t        «      st        d«      ‚|\  }}ddlm}  |||| j                  j                  «       || _         y )Né   r   r4   zqExample inputs should be a tuple containing example arguments (as a tuple), and example kwargs (as a dictionary).)Ú_check_inputs_match)
r€  rÉ   rè   r  rs   Ú
ValueErrorÚ_unliftr§  Ú	call_specrI   )rO   rŒ  re   rf   r§  s        rT   rô   zExportedProgram.example_inputs2  s†   € ð
 ˆ=Ø#(ˆDÔ Øô �uœeÔ$Ü�E“
˜a’Ü˜5 ™8¤UÔ+Ü˜5 ™8¤TÔ*äðBóð ð
 ‰ˆˆfÝ0á˜D &¨$¯.©.×*@Ñ*@ÔAà$ˆÕrV   c                 ó6  — t        dddg«      }t        | j                  «      dk(  r
 |d d ¬«      S | j                  d   j                  dk(  sJ ‚ || j                  d   j                  j
                  | j                  d   j                  j                  ¬«      S )NÚCallSpecrI   rJ   r   )rI   rJ   Ú )r   r  rZ  ra   rb   rI   rJ   )rO   r¬  s     rT   rª  zExportedProgram.call_specM  s•   € ô ˜j¨9°jÐ*AÓBˆäˆt×%Ñ%Ó&¨!Ò+Ù D°4Ô8Ð8Ø×%Ñ% aÑ(×,Ñ,°Ò2Ð2Ð2ÙØ×*Ñ*¨1Ñ-×7Ñ7×?Ñ?Ø×+Ñ+¨AÑ.×8Ñ8×AÑAô
ð 	
rV   c                 ó   — t        d«      ‚)Nz4Unable to set ExportedProgram's call_spec attribute.rŠ  r‹  s     rT   rª  zExportedProgram.call_specZ  ó   € ô ÐQÓRÐRrV   c                 ó    — | j                   d   S ©Nr   ©rƒ  rˆ  s    rT   ÚverifierzExportedProgram.verifier_  s   € ð �‰˜qÑ!Ð!rV   c                 ó   — t        d«      ‚)Nz3Unable to set ExportedProgram's verifier attribute.rŠ  r‹  s     rT   r³  zExportedProgram.verifierd  s   € ô ÐPÓQÐQrV   c                 óP   — | j                   €J ‚| j                   d   j                  S r±  )rƒ  Údialectrˆ  s    rT   r¶  zExportedProgram.dialecti  s)   € ð �‰Ð*Ð*Ð*Ø�‰˜qÑ!×)Ñ)Ð)rV   c                 ó   — t        d«      ‚)Nz2Unable to set ExportedProgram's dialect attribute.rŠ  r‹  s     rT   r¶  zExportedProgram.dialecto  s   € ô ÐOÓPÐPrV   c                 ó   — | j                   S rM   r²  rˆ  s    rT   rs  zExportedProgram.verifierst  ó   € ð �‰ÐrV   c                 ó   — t        d«      ‚)Nz4Unable to set ExportedProgram's verifiers attribute.rŠ  r‹  s     rT   rs  zExportedProgram.verifiersy  r¯  rV   c                 ó   — | j                   S rM   ©r�  rˆ  s    rT   Útensor_constantsz ExportedProgram.tensor_constants~  r¹  rV   c                 ó   — t        d«      ‚)Nz;Unable to set ExportedProgram's tensor_constants attribute.rŠ  r‹  s     rT   r½  z ExportedProgram.tensor_constantsƒ  s   € ô ØIó
ð 	
rV   c                 ó   — | j                   S rM   r¼  rˆ  s    rT   rë   zExportedProgram.constantsŠ  r¹  rV   c                 ó   — t        d«      ‚)Nz4Unable to set ExportedProgram's constants attribute.rŠ  r‹  s     rT   rë   zExportedProgram.constants�  r¯  rV   c                 óÌ   — | j                   j                  }|�t        ||«      }t        j                  ||f«      \  }}| j                  |«       t        d„ |D «       «      }||fS )a®  Flatten args, kwargs using pytree, then, check specs.

        Args:
            args: List[Any] original args passed to __call__
            kwargs: Dict[str, Any] original kwargs passed to __call

        Returns:
            A tuple of (flat_args, received_spec)
            flat_args is flattend args / kwargs
            received_spec is the pytree spec produced while flattening the
            tuple (args, kwargs)
        c              3   ó&   K  — | ]	  }|d    –— Œ y­w)r4   Nr_   )rw  rh  s     rT   rx  z<ExportedProgram._get_flat_args_with_check.<locals>.<genexpr>¨  s   è ø€ Ò< 1˜!˜A�$Ñ<ùs   ‚)rª  rI   r.   r\   Útree_flatten_with_pathÚ_check_input_constraintsrè   )rO   re   rf   rI   Úflat_args_with_pathÚreceived_specÚ	flat_argss          rT   Ú_get_flat_args_with_checkz)ExportedProgram._get_flat_args_with_check”  so   € ð —.‘.×(Ñ(ˆØÐÜ# F¨GÓ4ˆFÜ-3×-JÑ-JØ�6ˆNó.
Ñ*Ð˜]ð 	×%Ñ%Ð&9Ô:ÜÑ<Ð(;Ô<Ó<ˆ	Ø˜-Ð'Ð'rV   re   rf   c                 óü  — | j                   j                  }| j                  ||«      \  }}|�"t        ||t        «      st        d|› d|› �«      ‚g }| j                  j                  D �]  }|j                  t        j                  k(  rŒ"|j                  t        j                  t        j                  fv r`|j                  du r)|j                  | j                  |j                      «       Œ…|j                  | j"                  |j                      «       Œ®|j                  t        j$                  t        j&                  fv sŒÛ|j                  | j                  |j                      «       �Œ t)        |«      }||z   S )a,  Transform args, kwargs of __call__ to args for graph_module.

        self.graph_module takes stuff from state dict as inputs.
        The invariant is for ep: ExportedProgram is
        ep(args, kwargs) ==
          ep.postprocess(ep.graph_module(ep.graph_module_flat_inputs(args, kwargs)))
        z>Trying to flatten user inputs with exported input tree spec: 
z-
but actually got inputs with tree spec of: 
F)rª  rI   rÈ  r-   rt   r¨  rµ   rØ   rÔ   r9   r  r  r  r  ró   rë   rÖ   rì   ÚCONSTANT_TENSORÚ
CUSTOM_OBJrè   )rO   re   rf   rI   rÇ  rÆ  Úadditional_inputsÚinput_s           rT   Ú_graph_module_flat_inputsz)ExportedProgram._graph_module_flat_inputs«  sf  € ð —.‘.×(Ñ(ˆØ#'×#AÑ#AÀ$ÈÓ#OÑ ˆ	�=ØÐ¤}Ø˜7Ô$Aô(
ô ØQØ�)ð @à �/ð#óð ð ÐØ×*Ñ*×6Ñ6ó 	HˆFØ�{‰{œi×2Ñ2Ò2ØØ—‘Ü×#Ñ#Ü× Ñ ð!ñ ð ×$Ñ$¨Ñ-ð &×,Ñ,¨T¯^©^¸F¿M¹MÑ-JÕKà%×,Ñ,¨T¯_©_¸V¿]¹]Ñ-KÕLØ—‘Ü×)Ñ)Ü×$Ñ$ð!ò ð "×(Ñ(¨¯©¸¿¹Ñ)FÖGð#	Hô$ "Ð"3Ó4Ðð ! 9Ñ,Ð,rV   c                 ó   — t        d«      ‚)Nz\Unable to call ExportedProgram directly. You should use `exported_program.module()` instead.rŠ  )rO   re   rf   s      rT   Ú__call__zExportedProgram.__call__Ù  s   € ÜðBó
ð 	
rV   c           	      ó:  ‡— ddl mc m} | j                  ||«      \  }}| j                  j
                  ��ß| j                  j                  }| j                  j                  }t        |«      t        |«      z   }	|d|	 }
| j                  j                  }|�'t        t        |j                  «       «      «      }|d| }||	d }	 t        j                  || j                  j
                  «      }	 | j                  j&                  D �cg c]!  }|j(                  t*        j,                  k(  r|‘Œ# }}t/        |
«      D ]×  \  }}| j                  j0                  |   Š‰j(                  t2        j4                  k(  r(‰j6                  €J ‚|| j8                  ‰j6                  <   Œd‰j(                  t2        j:                  k(  r@‰j6                  €J ‚t        ˆfd„t/        |«      D «       «      }||   j=                  |«       ŒÁt?        d‰j(                  › �«      ‚ |S |S # t         $ rD t        j"                  |«      \  }}|j%                  d| j                  j
                  › d|› �«      ‚w xY wc c}w # | j                  j&                  D �cg c]!  }|j(                  t*        j,                  k(  r|‘Œ# nc c}w }}t/        |
«      D ]×  \  }}| j                  j0                  |   Š‰j(                  t2        j4                  k(  r(‰j6                  €J ‚|| j8                  ‰j6                  <   Œd‰j(                  t2        j:                  k(  r@‰j6                  €J ‚t        ˆfd„t/        |«      D «       «      }||   j=                  |«       ŒÁt?        d‰j(                  › �«      ‚ w xY w)z±Process potential mutations to the input.

        Because self.graph_module is functional, so mutations has to be written
        back after execution of graph_module.
        r   Nz@Trying to flatten user outputs with exported output tree spec: 
z.
but actually got outputs with tree spec of: 
c              3   ón   •K  — | ],  \  }}|j                   j                  ‰j                  k(  r|–— Œ. y ­wrM   )rÕ   rN   rÖ   )rw  rR   r<  Úoutput_specs      €rT   rx  zDExportedProgram._postprocess_graph_module_outputs.<locals>.<genexpr>  s3   øè ø€ ò %á '  4Ø#Ÿx™xŸ}™}°×0BÑ0BÒBô ñ%ùs   ƒ25zUnexpected kind: ) Útorch._export.errorÚ_exportÚerrorrÈ  rª  rJ   rµ   rP  r  r  Úassertion_dep_tokenÚnextÚiterrŸ   r\   rõ   Ú	ExceptionrO  ÚInternalErrorrØ   rÔ   r9   r  r	  rÙ   r;   r  rÖ   rì   r  Úcopy_r  )rO   Úresrç   Úorig_kwargsrÖ  rÇ  r4  Úbuffer_mutationÚuser_input_mutationÚnum_mutatedÚmutated_valuesr×  Úassertion_dep_token_indexrÆ  r<  r  rR   rŒ  ÚindexrÓ  s                      @rT   Ú!_postprocess_graph_module_outputsz1ExportedProgram._postprocess_graph_module_outputsß  s‰  ø€ ÷ 	,Ð+à×5Ñ5°iÀÓM‰ˆ	�1Ø�>‰>×"Ñ"Ñ.Ø"×2Ñ2×DÑDˆOØ"&×"6Ñ"6×"LÑ"LÐÜ˜oÓ.´Ð5HÓ1IÑIˆKØ   +Ð.ˆNð #'×"6Ñ"6×"JÑ"JÐØ"Ð.Ü,0´Ð6I×6NÑ6NÓ6PÓ1QÓ,RÐ)ØÐ4Ð4Ð5�à�k�lÐ#ˆCðUÜ×+Ñ+¨C°·±×1HÑ1HÓI‘ð !%× 4Ñ 4× @Ñ @öàØ—y‘y¤I×$8Ñ$8Ò8ò ð�ð ô
 !*¨.Ó 9ò U‘H�A�uØ"&×"6Ñ"6×"CÑ"CÀAÑ"F�KØ"×'Ñ'¬:×+EÑ+EÒEØ*×1Ñ1Ð=Ð=Ð=Ø>C˜Ÿ™¨×(:Ñ(:Ò;Ø$×)Ñ)¬Z×-KÑ-KÒKØ*×1Ñ1Ð=Ð=Ð=Ü $ó %ä+4°[Ó+Aô%ó !˜ð
 " %Ñ(×.Ñ.¨uÕ5ä,Ð/@À×AQÑAQÐ@RÐ-SÓTÐTðUð ˆ
ˆsˆ
øô; ò Ü#)×#6Ñ#6°sÓ#;Ñ ��=Ø×)Ñ)ØWØ—~‘~×.Ñ.Ð/ð 0Eà$�oð'óð ðüòøà $× 4Ñ 4× @Ñ @öàØ—y‘y¤I×$8Ñ$8Ò8ò ñùò �ð ô
 !*¨.Ó 9ò U‘H�A�uØ"&×"6Ñ"6×"CÑ"CÀAÑ"F�KØ"×'Ñ'¬:×+EÑ+EÒEØ*×1Ñ1Ð=Ð=Ð=Ø>C˜Ÿ™¨×(:Ñ(:Ò;Ø$×)Ñ)¬Z×-KÑ-KÒKØ*×1Ñ1Ð=Ð=Ð=Ü $ó %ä+4°[Ó+Aô%ó !˜ð
 " %Ñ(×.Ñ.¨uÕ5ä,Ð/@À×AQÑAQÐ@RÐ-SÓTÐTñUús,   Ã*H Ä&I(ÈAI%É%I- É-NÊ&J-Ê,C.Nc                 ó    — | j                   j                  dd¬«      j                  dd«      }d|› d| j                  › d| j                  › d�}|S )NF)Úprint_outputÚcoloredú
z
    zExportedProgram:
    z
Graph signature: z
Range constraints: )râ   Úprint_readableÚreplacerµ   rm  )rO   râ   Ústrings      rT   Ú__str__zExportedProgram.__str__  sp   € Ø×(Ñ(×7Ñ7Ø¨ð 8ó 
ç
‰'�$˜Ó
!ð 	ðØ�.ð ! Ø $× 4Ñ 4Ð5ð 6"Ø"&×"8Ñ"8Ð!9¸ð=ð 	ð ˆrV   c                 óº   — ddl m}  || «      }ddt        fd„}ddt        fd„}t        j                  ||«      |_        t        j                  ||«      |_        |S )z_
        Returns a self contained GraphModule with all the parameters/buffers inlined.
        r4   )Ú&_unlift_exported_program_lifted_statesÚmodec                 ó   — t        d«      ‚)Nz%Calling train() is not supported yet.©ÚNotImplementedError©rO   rð  s     rT   Ú_trainz&ExportedProgram.module.<locals>._train*  s   € Ü%Ð&MÓNÐNrV   c                 ó   — t        d«      ‚)Nz$Calling eval() is not supported yet.rò  rô  s     rT   Ú_evalz%ExportedProgram.module.<locals>._eval-  s   € Ü%Ð&LÓMÐMrV   ©T)r©  rï  ÚboolÚtypesÚ
MethodTypeÚtrainÚeval)rO   rï  rÞ   rõ  r÷  s        rT   rÞ   zExportedProgram.module"  s]   € õ 	Dá7¸Ó=ˆñ	Oœtó 	Oñ	Nœdó 	Nô ×'Ñ'¨°Ó7ˆŒÜ×&Ñ& u¨fÓ5ˆŒØˆrV   c                 óœ   — t        d„ t        | j                  j                  «      D «       t	        | j                  j                  «      «      S )Nc              3   ó`   K  — | ]&  \  }}|j                   t        j                  k(  r|–— Œ( y ­wrM   )rÔ   r9   r  )rw  rR   Úss      rT   rx  z=ExportedProgram._num_lifted_params_buffers.<locals>.<genexpr>6  s.   è ø€ ò á�A�qØ—6‘6œY×1Ñ1Ò1ô ñùs   ‚,.)rØ  r	  r|  rØ   r  rˆ  s    rT   Ú_num_lifted_params_buffersz*ExportedProgram._num_lifted_params_buffers4  sC   € Üñä% d×&;Ñ&;×&GÑ&GÓHôô
 �×%Ñ%×1Ñ1Ó2ó
ð 	
rV   r�   rÃ   c                 ó¬   — |€
t        «       n
t        |«      }t        |t        «      r|j	                  «       }t        |«      \  }}t        | ||d|¬«      S )a“  
        Run a set of decompositions on the exported program and returns a new
        exported program. By default we will run the Core ATen decompositions to
        get operators in the
        `Core ATen Operator Set <https://pytorch.org/docs/stable/torch.compiler_ir.html>`_.

        For now, we do not decompose joint graphs.

        Args:
            decomp_table:
             An optional argument that specifies decomp behaviour for Aten ops
             (1) If None, we decompose to core aten decompositions
             (2) If empty, we don't decompose any operator


        Some examples:

        If you don't want to decompose anything

        .. code-block:: python

            ep = torch.export.export(model, ...)
            ep = ep.run_decompositions(decomp_table={})

        If you want to get a core aten operator set except for certain operator, you can do following:

        .. code-block:: python

            ep = torch.export.export(model, ...)
            decomp_table = torch.export.default_decompositions()
            decomp_table[your_op] = your_custom_decomp
            ep = ep.run_decompositions(decomp_table=decomp_table)
        Nrk  )rE   rs   rÉ   r0   Úmaterializer¥   rq  )rO   r�   rÃ   Ú_decomp_tabler§   r¨   s         rT   Úrun_decompositionsz"ExportedProgram.run_decompositions>  sk   € ðP )5Ð(<Ô"Ô$Ä$À|ÓBTð 	ô �mÔ%6Ô7Ø)×5Ñ5Ó7ˆMô" 9¸ÓGñ	
ØØô +ØØ'Ø 3Ø!Ø(Cô
ð 	
rV   Úpassesc                 óT  — t        t        |«      «      }ddlm}  |«       5   || j                  «      }d d d «       �|j                  n| j                  }|€J ‚|| j                  u r|j
                  s| S dt        dt        j                  j                  dt        fd„}t        ||j                   || j                  |«      | j                  t        || j                  «      t!        j"                  | j$                  «      | j&                  | j(                  | j*                  ¬«	      }|j                  j,                  j/                  | j                  j,                  «       |j                  j,                  j/                  |j                  j,                  «       |S # 1 sw Y   �ŒjxY w)Nr   )r¯   Úold_signatureÚnew_gmrp   c           	      ó  — g }t        |j                  j                  «      D ]Ð  \  }}|j                  dk7  r n¼|t	        | j
                  «      k  sJ d«       ‚| j
                  |   }t        |j                  t        t        f«      r|j                  n$ t        |j                  «      |j                  «      }|j                  t        |j                  ||j                  |j                   «      «       ŒÒ t#        |j                  j                  «      d   }|j                  dk(  sJ ‚g }t        |j$                  d   «      D ]´  \  }}|t	        | j&                  «      k  sJ d«       ‚| j&                  |   }	t        |	j                  t        t        f«      r|	j                  n$ t        |	j                  «      |j                  «      }|j                  t)        |	j                  ||	j                  «      «       Œ¶ t+        ||¬«      }
|
S )zO
            Update the graph signature's user_input/user_outputs.
            r¿   z-Number of inputs changed after transformationrÏ   rK  r   z.Number of outputs changed after transformationr×   )r	  rä   rï   rz   r  rØ   rÉ   rÕ   r6   r7   rË   rN   ró   r:   rÔ   rÖ   r  rZ   re   rÙ   r<   r8   )r  r	  Únew_input_specsrR   r&  Úold_input_specrÕ   Úoutput_nodeÚnew_output_specsÚold_output_specÚnew_signatures              rT   Ú_get_updated_graph_signaturezKExportedProgram._transform_do_not_use.<locals>._get_updated_graph_signature”  s  € ð !ˆOÜ$ V§\¡\×%7Ñ%7Ó8ò ‘��4Ø—7‘7˜mÒ+Ùàœ3Ø!×-Ñ-óò ð CàBóCð ð "/×!:Ñ!:¸1Ñ!=�ô "Ø&×*Ñ*Ô-=Ô?PÐ,Qôð #×&Ò&ð 2œ˜n×0Ñ0Ó1°$·)±)Ó<ð ð  ×&Ñ&ÜØ&×+Ñ+ØØ&×-Ñ-Ø&×1Ñ1ó	õðô0 ˜vŸ|™|×1Ñ1Ó2°2Ñ6ˆKØ—>‘> XÒ-Ð-Ð-à!ÐÜ$ [×%5Ñ%5°aÑ%8Ó9ò ‘��4Øœ3Ø!×.Ñ.óò ð DàCóDð ð #0×"<Ñ"<¸QÑ"?�ô "Ø'×+Ñ+Ô.>Ô@QÐ-Rôð $×'Ò'ð 3œ˜o×1Ñ1Ó2°4·9±9Ó=ð ð !×'Ñ'Ü˜×3Ñ3°S¸/×:PÑ:PÓQõðô  1Ø+Ð:JôˆMð !Ð rV   ©	rl  rä   rµ   rì   rm  rZ  rô   rë   rs  )r3   rZ   rÜ   r¯   râ   Úmodifiedr8   r„   r
  rW  rB   rä   rµ   rì   rn  rm  r€   rd  r  rô   rë   rs  rð   r‹   )rO   r  Úpmr¯   rÝ  Útransformed_gmr  Útransformed_eps           rT   Ú_transform_do_not_usez%ExportedProgram._transform_do_not_use…  so  € Üœ˜f›Ó&ˆõ 	@á$Ó&ñ 	(Ù�T×&Ñ&Ó'ˆC÷	(à-0¨_˜×)Ò)À$×BSÑBSˆØÐ)Ð)Ð)à˜T×.Ñ.Ñ.°s·|²|ØˆKð7	!Ü/ð7	!ä—H‘H×(Ñ(ð7	!ô "ó7	!ôr )ØØ ×&Ñ&Ù8Ø×$Ñ$ nóð —‘Ü<ØØ×&Ñ&óô #Ÿm™m¨D×,CÑ,CÓDØ×.Ñ.Ø—n‘nØ—n‘nô
ˆð  	×#Ñ#×(Ñ(×/Ñ/°×0AÑ0A×0FÑ0FÔGØ×#Ñ#×(Ñ(×/Ñ/°×0@Ñ0@×0EÑ0EÔFØÐ÷i	(ñ 	(ús   ¢FÆF'c                 óR  — ddl m} | j                  j                  D �cg c]  }|j                  dk(  sŒ|‘Œ }}t        || j                  j                  «      D ��cg c]$  \  }}|j                  t        j                  k(  r|‘Œ& }}} |||| j                  «       y c c}w c c}}w )Nr   )Ú"_check_input_constraints_for_graphr¿   )Útorch._export.utilsr  rä   rï   rz   r  rµ   rØ   rÔ   r9   r  rm  )rO   rÅ  r  r1  Úplaceholdersr   Úinput_placeholderss          rT   rÄ  z(ExportedProgram._check_input_constraintsá  s™   € ÝJà#'§:¡:×#3Ñ#3ÖM˜a°q·t±t¸}Ó7LšÐMˆÐMô ˜L¨$×*>Ñ*>×*JÑ*JÓK÷
á��1Ø�v‰vœ×-Ñ-Ò-ò ð
Ðñ 
ñ
 	+ØÐ 3°T×5KÑ5Kõ	
ùò Nùó
s   ŸB´BÁ)B#c                 ó$   — | j                  «        y rM   )Ú	_validaterˆ  s    rT   r„  zExportedProgram.validateî  s   € à�‰ÕrV   c                 ó�   — t        | j                  «      dkD  sJ d«       ‚| j                  D ]  } |«       j                  | «       Œ y )Nr   z0ExportedProgram must have at least one verifier.)r  rs  Úcheck)rO   rH  s     rT   r  zExportedProgram._validateó  sE   € ô �—‘Ó !Ò#ð	>à=ó	>Ø#à—‘ò 	ˆAÙ‹C�I‰I�d�Oñ	rV   )rì   rë   rs  c                ó$  — t        ||j                  ||�|n| j                  t        j                  | j
                  «      t        j                  | j                  «      | j                  |�|n| j                  |�|¬«	      S | j                  ¬«	      S )Nr  )
rB   rä   rì   r€   rd  rm  r  rô   rë   rs  )rO   râ   rµ   rì   rë   rs  s         rT   Ú_updatezExportedProgram._updateü  s…   € ô ØØ×$Ñ$Ø+Ø%/Ð%;‘zÀÇÁÜ"Ÿm™m¨D×,BÑ,BÓCÜ"Ÿm™m¨D×,CÑ,CÓDØ×.Ñ.Ø#,Ð#8‘i¸d¿n¹nØ#,Ð#8�iô

ð 
	
ð ?C¿n¹nô

ð 
	
rV   )NN)NF)rp   rB   )CrW   rX   rY   Ú__doc__r   r„   rú   ÚModulers   r^   r   r
  ÚGraphr8   r  rû   rZ   rC   r	   rè   r   r…   ÚScriptObjectrË   r(   r…  Úpropertyr1   râ   Úsetterrä   rµ   rì   r   r•  rß   r›  rà   rm  rZ  rô   rª  r³  r¶  rs  r½  rë   rÈ  rÎ  rÐ  rå  rí  rÞ   r  rk   Ú_opsÚOperatorBaser   rù  r  ÚPassTyper  rÄ  r„  r   r  r"  r_   rV   rT   rB   rB   �  sÉ  „ ñð. LPð ð%ð 59ò%à�E—H‘H—O‘O T¨#¨s¨(¡^Ð3Ñ4ð%ð �x‰x�~‰~ð%ð .ð	%ð
 ˜˜e E§L¡L°%·(±(×2DÑ2DÐ$DÑEÐEÑFð%ð 5ð%ð   Ñ0ð%ð !  u¨S°#¨X¡¸¸SÀ#¸X¹Ð'FÑ!GÑHð%ð Ø��e˜EŸL™LÐ*:¸E¿H¹H×<QÑ<QÐQÑRÐRÑSñ
ð%ð ˜D  h¡Ñ0Ñ1ó%ðN Ù¨%Ô0ñ"ó 1ó ð"ð ×ÑÙ¨%Ô0ñVó 1ó ðVð Ù¨%Ô0ñ'ó 1ó ð'ð ‡\�\Ù¨%Ô0ñOó 1ó ðOð Ù¨%Ô0ñ%ó 1ó ð%ð ×ÑÙ¨%Ô0ñYó 1ó ðYð Ù¨%Ô0ñ ó 1ó ð ð ×ÑÙ¨%Ô0ñTó 1ó ðTñ ¨%Ô0ð˜H U§X¡X×%7Ñ%7Ñ8ò ó 1ðñ ¨%Ô0ð: (¨5°°e·h±h×6HÑ6HÐ1HÑ+IÑ"Jò :ó 1ð:ñ ¨%Ô0ð˜ %§,¡,Ñ/ò ó 1ðñ ¨%Ô0ð
@˜x¨¨c°5·<±<Ð.?Ñ(@ÑAò 
@ó 1ð
@ð Ù¨%Ô0ñ'ó 1ó ð'ð ×ÑÙ¨%Ô0ñ
ó 1ó ð
ð
 Ù¨%Ô0ñ'ó 1ó ð'ð ×ÑÙ¨%Ô0ñ
ó 1ó ð
ð
 Ù¨%Ô0ñ$ó 1ó ð$ð ×ÑÙ¨%Ô0ñ%ó 1ó ð%ð2 Ù¨%Ô0ñ	
ó 1ó ð	
ð ×ÑÙ¨%Ô0ñSó 1ó ðSð Ù¨%Ô0ð"˜#ò "ó 1ó ð"ð ‡_�_Ù¨%Ô0ñRó 1ó ðRð Ù¨%Ô0ð*˜ò *ó 1ó ð*ð ‡^�^Ù¨%Ô0ñQó 1ó ðQð Ù¨%Ô0ñó 1ó ðð ×ÑÙ¨%Ô0ñSó 1ó ðSð Ù¨%Ô0ñó 1ó ðð ×ÑÙ¨%Ô0ñ
ó 1ó ð
ð
 Ù¨%Ô0ñó 1ó ðð ×ÑÙ¨%Ô0ñSó 1ó ðSò(ð.,-¨cð ,-¸3ð ,-À3ó ,-ð\
˜cð 
¨Sð 
°Só 
ò5ðn
˜ó 
ð˜Ÿ™Ÿ™ó ò$
ð $ð KOØ,1ñD
à˜t E§J¡J×$;Ñ$;¸XÐ$EÑFÑGðD
ð &*ðD
ð 
ò	D
ó $ðD
ðLZ¨Xð ZÐ:Kó Zòx
ñ ¨%Ô0ñó 1ðð ñó ðð ØØñ
ð 
ô
rV   rB   c                 óP  — | j                   j                  D �cg c]-  }|j                  j                  dd «      �|j                  d   ‘Œ/ }}ddlm}  ||«      }|�|j                  S |D ]4  }t        |t        j                  «      sŒ|j                  j                  c S  y c c}w )NrÀ   r   r)   )rä   rï   rð   r  Útorch._guardsr*   r»   rÉ   r„   ÚSymIntr&  )r÷   r&  Úvalsr*   r   rH  s         rT   r  r    sš   € ð —H‘H—N‘NöàØ�9‰9�=‰=˜ Ó%Ð1ð 	�	‰	�%Óð€Dð õ
 /á  Ó&€IØÐØ×"Ñ"Ð"Øò $ˆÜ�aœŸ™Õ&Ø—6‘6×#Ñ#Ò#ñ$ùòs   ™2B#Úold_range_constraintsz!Optional[dict[sympy.Symbol, Any]]rt  c                 ó<  — |€J ‚t        | «      }|€i S t        j                  |«      }|j                  «       D ��ci c]  \  }}||j                  vsŒ||“Œ }}}|j                  j                  «       D ]  \  }}||j                  vsŒ||vsŒ|||<   Œ  |S c c}}w rM   )r  r€   r~   ÚreplacementsÚvar_to_range)r÷   r0  r»   rm  r¤   rH  s         rT   rn  rn  "  sÀ   € ð !Ð,Ð,Ð,ä˜rÓ"€IØÐØˆ	äŸ	™	Ð"7Ó8Ðà*×0Ñ0Ó2÷Ù��A°a¸y×?UÑ?UÒ6Uˆˆ1‰ðÐñ ð ×&Ñ&×,Ñ,Ó.ò %‰ˆˆ1Ø�I×*Ñ*Ò*¨qÐ8IÒ/IØ#$Ð˜aÒ ð%ð Ðùós   ¼BÁBc                 ó  — 	 t         j                  j                  | |«      }|S # t        $ r\ t	        j
                  d«       t         j                  j                  | t         j                  j                  «       «      }||_        Y |S w xY w)NzóUnable to execute the generated python source code from the graph. The graph module will no longer be directly callable, but you can still run the ExportedProgram, and if needed, you can run the graph module eagerly using torch.fx.Interpreter.)r„   r
  rW  ÚSyntaxErrorÚwarningsÚwarnr%  Ú_graph)rl  rä   r÷   s      rT   rz  rz  9  sx   € ðÜ�X‰X×!Ñ! $¨Ó.ˆð  €Iøô ò ô 	�‰ðGô	
ô �X‰X×!Ñ! $¬¯©¯©Ó(8Ó9ˆØˆ�	à€Iðús   ‚ $ ¤A!B	ÂB	rø  )rp   r0   rM   )•rþ   r€   Údataclassesri   rX  rú  r6  Úcollectionsr   Úcollections.abcr   r   Útypingr   r   r   r	   r
   r   Útorch._higher_order_ops.utilsr   Ú"torch._library.fake_class_registryr   Útorch._subclasses.fake_implsr   r   r   Útorch._subclasses.fake_tensorr   Útorch.fx._utilsr   Útorch.fx.graphr   r   Útorch.fx.immutable_collectionsr   r   Útorch.fx.passes.runtime_assertr   ÚsympyÚtorch.utils._sympy.value_rangesr   r„   Útorch.utils._pytreeÚutilsÚ_pytreer\   r  r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   Útorch._export.verifierr(   r-  r*   r,   Útorch.export._tree_utilsr-   r.   Útorch.export.decomp_utilsr0   Útorch.fx._compatibilityr1   Útorch.fx.passes.infra.pass_baser2   Ú"torch.fx.passes.infra.pass_managerr3   rµ   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   Ú__all__r
  rW  r+  Ú	dataclassrD   rC   rk   rË   ÚContextrù  rt   r…   r†   ÚAutogradCPUÚAutogradCUDAÚAutogradMetaÚAutogradXLAÚAutogradLazyÚAutogradIPUÚAutogradXPUÚAutogradMPSÚAutogradHPUÚAutogradPrivateUse1ÚAutogradPrivateUse2ÚAutogradPrivateUse3r‚   ÚCPUÚCUDAÚMetaÚXLAÚLazyÚIPUÚXPUÚMPSÚHPUr‰   r•   rœ   rs   r)  r*  rè   r¥   rE   ÚintrI  rù   r`  rZ   ri  rq  rB   r  rn  rz  r_   rV   rT   ú<module>ri     sæ  ðó Û Û Û Û Û Û Ý "Ý $Ý %ß G× Gå BÝ ?÷ñ õ
 9Ý ?ß 6ß IÝ Jñ ó
 å;ã ß $Ð $÷÷ ÷ ÷ ñ õ" ,Ý *Ý @ß BÝ 7Ý 1Ý 6Ý :÷÷ ÷ õ ò"€ð �U—X‘X×)Ñ)Ð*¨H°ZÑ,@Ð@ÑA€ð ×Ñ÷'ð 'ó ð'ð  ×Ñ÷4ð 4ó ð4ò
ðGØ˜‘ðGà—>‘>ðGð ˜‘ðGð —>‘>ð	Gð
 
óGð: 
‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×%Ñ%Ø	‡H�H×Ñ×%Ñ%Ø	‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×%Ñ%Ø	‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×,Ñ,Ø	‡H�H×Ñ×,Ñ,Ø	‡H�H×Ñ×,Ñ,ð,Ð (ð, 
‡H�H×Ñ×ÑØ	‡H�H×Ñ×ÑØ	‡H�H×Ñ×ÑØ	‡H�H×Ñ×ÑØ	‡H�H×Ñ×ÑØ	‡H�H×Ñ×ÑØ	‡H�H×Ñ×ÑØ	‡H�H×Ñ×ÑØ	‡H�H×Ñ×Òð
Ð ð òX$ó ðX$ðv ñó ðð)-Ø�u—z’z×.Ò.°Ð8Ñ9ð)-à
ˆ4�—
’
×'Ò'¨Ð1Ñ2°CÐ7Ñ8ó)-óXðo2ð ˜Ÿ
š
×/Ò/°Ð9Ñ:ðo2ð ˜eŸjšj×5Ò5°xÐ?Ñ@ð	o2ð
 ˜s‘móo2ðd#Ø�‰×Ñð#Ø3Gð#à
ˆ5�8‰8×ÑÐ!5Ð5Ñ6ó#ð2.Ø�‰×Ñó.ð:!Ø�‰×Ñð!à Ñ0ó!ð01ð ˜Ÿ
š
×/Ò/°Ð9Ñ:ð1ð ˜eŸjšj×5Ò5°xÐ?Ñ@ð	1ð
 ˜s‘mð1ð "&ó1÷h	
ñ 	
òD$ð$ BFñØ�‰×Ñðà>ðð óó.rV   