ó
    EñiR“  ã                   óì  • S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJrJ	r	J
r
  S SKJrJrJrJrJr  S SKrS SKrS SKrS SKJs  Jr  S SKJrJrJr  S SKJr  S SKJ r J!r!  S SK"J#r#  S S	K$J%r%J&r&  S S
K'J(r(  S SK)J*r*  S SK+J,r,  S SK-J.r.J/r/  S SKJ0r0  S SK1J2r2J3r3J4r4  S SK5J6r6J7r7  S SK8J9r9J:r:  \(       a  S SK;J<r<  \" S5      r=\R|                  " \?5      r@S\2S\S\4   S\S\S\24
S jrA/ SQrBS\CS\C4S jrD SFS\RŠ                  RŒ                  S\GS\RŠ                  RŒ                  4S  jjrHS\RŠ                  RŒ                  SS4S! jrI " S" S#\R”                  R–                  5      rL\" S$S%S&/5      rM " S' S(\RŠ                  Rœ                  5      rOS)\R”                  R–                  S*\S\4   S+\S,   S-\S\S\S.\\\P\C\4   \Q\   \R\   4      SS4S/ jrSS0\RŠ                  RŒ                  SS4S1 jrTS2\RŠ                  RŒ                  SS4S3 jrU " S4 S55      rV " S6 S7\W5      rX " S8 S95      rY " S: S;5      rZS<\S=\S\Q\S4   S\P\C\4   S\RŠ                  RŒ                  4
S> jr[ " S? S@\RŠ                  R¸                  Rº                  5      r^  SGS=\S\4   SA\\R\/      SB\GS\S\4   4SC jjr_SSSD.S=\S\4   SA\\R\/      S.\\\P\C\4   \Q\   \R\   4      S\S\RŠ                  RŒ                  4   4SE jjr`g)Hé    N)Ú
namedtuple)ÚCallableÚIterableÚSequence)ÚAnyÚOptionalÚTYPE_CHECKINGÚTypeVarÚUnion)ÚCaptureOutputÚfullgraph_captureÚget_traced_fn)Údisable)Úargument_namesÚcheck_user_input_output)ÚUserErrorType)Údynamo_timedÚget_metrics_context)Ú_compiling_state_context)ÚTracingContext)Ú_restore_state_dict)Ú_RelaxedConstraintÚ
Constraint)ÚNode)ÚConstraintViolationErrorÚ
DimDynamicÚStatelessSymbolicContext)Ú_PyTreeCodeGenÚ_PyTreeInfo)ÚArgumentÚTarget)ÚFakeTensorModeÚTÚconstraint_violation_errorÚfunc.ÚargsÚkwargsÚreturnc                 ó°   • SSK JnJn  [        R                  " U5      nU" X#4U5      nU R
                  (       a  U" U R
                  S   U5      4U l        U $ )z
Because we trace a different callable, the sources are all messed up.
Manually patch them so the error message looks correct.
r   )Ú_get_input_pathsÚ_replace_sources)Útorch.export._unliftr*   r+   ÚinspectÚ	signaturer&   )r$   r%   r&   r'   r*   r+   Úorig_sigÚflat_input_pathss           Ú\/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_dynamo/functional_export.pyÚpost_process_error_msgr2   )   sZ   € ÷ Hä× Ò  Ó&€HÙ'¨¨¸ÓAÐØ!×&×&áÐ7×<Ñ<¸QÑ?ÐAQÓRð+
Ð"Ô'ð &Ð%ó    ))Ú__export_root_Ú_)z_export_root.Ú )z._export_rootr6   Útextc                 óJ   • U n[          H  u  p#UR                  X#5      nM     U$ )z;Generic utility to clean export_root patterns from strings.)ÚEXPORT_ROOT_REPLACEMENTSÚreplace)r7   ÚresultÚpatternÚreplacements       r1   Úclean_export_root_stringr>   E   s'   € à€Fß 8ÑˆØ—‘ Ó5Šñ !9à€Mr3   Úgraph_moduleÚis_inline_builtinc                 óÜ  ^• S[         [        [        [        [        4   4   S[         [        [        [        [        4   4   4U4S jjnS[        [           S[        [           4S jnU R
                  R                   H‹  nSUR                  ;   a0  U" UR                  S   R                  5       5      UR                  S'   UR                  R                  SS5      nU(       d  Mh  U" UR                  5       5      UR                  S'   M�     SU R                  ;   aN  0 nU R                  S   R                  5        H  u  px[        U5      U[        U5      '   M     UU R                  S'   U $ )aÑ  
Clean up nn_module_stack metadata by removing export_root references.

Removes the _export_root module references from nn_module_stack metadata
in graph nodes, which are artifacts from the export process. Fixes two patterns:

1. Keys: Removes "__export_root_" and "__modules['_export_root']_" prefixes
   - Normal case: "L__self____export_root_child" -> "L__self__child"
   - inline_builtin case: Uses numeric ID strings like "140468831433840"

2. Values: Removes "._export_root" and "._modules['_export_root']" from child names
   e.g., "L['self']._export_root.child" -> "L['self'].child"
   e.g., "L['self']._modules['_export_root'].child" -> "L['self'].child"

Also removes the root export entry "L__self____export_root" entirely.

Args:
    graph_module: The GraphModule to clean up
    is_inline_builtin: If True, keys are numeric ID strings and self references
                      (L['self']) are filtered out

Returns:
    The cleaned GraphModule (modified in-place)
Únn_module_stackr(   c                 óª   >• SU ;   a  U S	 0 nU R                  5        H2  u  nu  p4[        U5      n[        U5      nT(       a  US:X  a  M-  Xd4X'   M4     U$ )NÚL__self____export_rootz	L['self'])Úitemsr>   )rB   Úcleaned_stackÚkeyÚ
child_nameÚchild_classÚ	clean_keyÚ
clean_namer@   s          €r1   Ú_process_nn_module_stackÚEclean_nn_module_stack_and_source_fn.<locals>._process_nn_module_stacki   sq   ø€ ð $ Ó6ØÐ 8Ð9ð ˆØ.=×.CÑ.CÖ.EÑ*ˆCÑ*�*ä0°Ó5ˆIô 2°*Ó=ˆJö ! Z°;Ó%>Ùà(2Ð'@ˆMÓ$ñ /Fð Ðr3   Úsource_fn_stackc                 ó  • / nU  Hƒ  n[        U[        5      (       aZ  [        U5      S:X  aK  Uu  p4[        U[        5      (       a  [	        U5      nUR                  XT45        M_  UR                  U5        Mr  UR                  U5        M…     U$ )Né   )Ú
isinstanceÚtupleÚlenÚstrr>   Úappend)rN   rF   ÚitemÚnameÚclsrK   s         r1   Ú_process_source_fnÚ?clean_nn_module_stack_and_source_fn.<locals>._process_source_fn   s   € ØˆÛ#ˆDÜ˜$¤×&Ñ&¬3¨t«9¸«>Ø ‘	�Ü˜d¤C×(Ñ(Ü!9¸$Ó!?�Jà!×(Ñ(¨*Ð):Ö;ð "×(Ñ(¨Ö.ð ×$Ñ$ TÖ*ñ $ð Ðr3   NÚ dynamo_flat_name_to_original_fqn)ÚdictrT   rR   r#   r   ÚgraphÚnodesÚmetaÚcopyÚgetrE   r>   )	r?   r@   rL   rY   ÚnoderN   Úclean_name_to_original_fqnÚ	flat_nameÚoriginal_fqns	    `       r1   Ú#clean_nn_module_stack_and_source_fnrf   M   sS  ø€ ð8Üœc¤5¬¬a¨¡=Ð0Ñ1ðä	Œc”5œœa˜‘=Ð Ñ	!÷ð,¬H´Q©Kð ¼HÄQ¹Kô ð$ ×"Ñ"×(Ô(ˆØ §	¡	Ó)Ù+CØ—	‘	Ð+Ñ,×1Ñ1Ó3ó,ˆD�I‰IÐ'Ñ(ð Ÿ)™)Ÿ-™-Ð(9¸4Ó@ˆßˆ?Ù+=¸o×>RÑ>RÓ>TÓ+UˆD�I‰IÐ'Ó(ñ )ð *¨\×->Ñ->Ó>à%'Ð"Ø'3×'8Ñ'8Ø.ñ(
ç
‰%‹'ò(Ñ#ˆIô )¨Ó6ð 'Ô'?À	Ó'JÓKñ(ð 'ð 	×ÑÐ<Ñ=ð Ðr3   c                 ób  • 0 nU R                   R                   GH’  nUR                  S:X  a°  UR                  n[	        U5      nXC:w  a”  XBl        [        X5      (       d   e[        R                  R                  R                  X5      n[        R                  R                  R                  XPU5        [        R                  R                  R                  X5        UR                  S:X  d  MÖ  UR                  n[        U[        5      (       d   e[	        U5      n[        U[        5      (       d   e[	        UR                  5      nXC:X  a  GM8  X1;   a  X   Ul        Xbl        GMO  U R                  U5      nU R!                  U5        U R#                  XG5        XBl        Xbl        XAU'   GM•     g)z3Remove export_root artifacts from FX graph in-placeÚget_attrÚcall_moduleN)r]   r^   ÚopÚtargetr>   ÚhasattrÚtorchÚfxr?   Ú	_get_attrÚ_assign_attrÚ	_del_attrrQ   rT   rW   Úget_submoduleÚdelete_submoduleÚadd_submodule)r?   Úclean_named_module_maprb   Ú
old_targetÚ
new_targetÚparamÚnew_namerk   s           r1   Úclean_export_rootrz   «   s]  € ð
 .0Ðð ×"Ñ"×(Õ(ˆØ�7‰7�jÓ ØŸ™ˆJÜ1°*Ó=ˆJØÓ'Ø(”Ü˜|×8Ñ8Ð8Ð8äŸ™×-Ñ-×7Ñ7¸ÓQ�Ü—‘×%Ñ%×2Ñ2°5È
ÔSÜ—‘×%Ñ%×/Ñ/°ÔIà�7‰7�mÕ#ØŸ™ˆJÜ˜j¬#×.Ñ.Ð.Ð.Ü1°*Ó=ˆJÜ˜j¬#×.Ñ.Ð.Ð.Ü/°·	±	Ó:ˆHØÓ'Úð Ó3Ø4Ñ@�”Ø$”	ÚØ!×/Ñ/°
Ó;ˆFØ×)Ñ)¨*Ô5Ø×&Ñ& zÔ:Ø$ŒKØ ŒIØ1; :Ô.ò? )r3   c                   óJ   ^ • \ rS rSrS\S\SS4U 4S jjrS\SS4S	 jrS
rU =r$ )ÚModuleToTraceéÕ   ÚfooÚin_specr(   Nc                 ó:   >• [         TU ]  5         Xl        X l        g ©N)ÚsuperÚ__init__Ú_export_rootr   )Úselfr~   r   Ú	__class__s      €r1   rƒ   ÚModuleToTrace.__init__Ö   s   ø€ Ü‰ÑÔØÔØ�r3   Ú	flat_argsÚExportTracerOutputc                 ó°   • [         R                  " XR                  5      u  p#U R                  " U0 UD6n[         R                  " U5      u  pV[        XV5      $ r�   )ÚpytreeÚtree_unflattenr   r„   Útree_flattenr‰   )r…   rˆ   r&   r'   ÚresÚout_flatÚout_specs          r1   ÚforwardÚModuleToTrace.forwardÛ   sK   € Ü×,Ò,¨Y¿¹ÓE‰ˆØ×Ò Ð0¨Ñ0ˆÜ#×0Ò0°Ó5ÑˆÜ! (Ó5Ð5r3   )r„   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   rƒ   r‘   Ú__static_attributes__Ú__classcell__©r†   s   @r1   r|   r|   Õ   s6   ø† ð˜Cð ¨#ð °$÷ ð
6 #ð 6Ð*>÷ 6ò 6r3   r|   r‰   rˆ   r�   c                   ó‚  ^ • \ rS rSrSr SS\R                  R                  S\\	   S\\
\      S\\\4   S\\\\\	4   4   S	\\	   S
S4U 4S jjjrSU 4S jjrSS jrS\S\\S4   S\\\	4   S
\	4U 4S jjrS\S\\	   S\\\	4   S
\	4U 4S jjrS\S
\	4U 4S jjrS
\R                  R                  4U 4S jjrSrU =r$ )ÚDynamoGraphTransformeréæ   zZGraph transformer for dynamo export that flattens inputs/outputs without complex matching.NÚmoduleÚflat_inputsÚflat_args_dynamic_dimsÚgraph_input_orderÚgraph_output_mapÚ	fake_moder(   c                 óÊ  >• [         TU ]  U5        [        U5      [        U5      :X  d   eX l        X0l        X@l        XPl        X`l        UR                  R                   Vs/ s H  owR                  S:X  d  M  UPM     snU l        [        S UR                  R                   5       5      U l        0 U l        U R                  5         0 U l        U R#                  5         g s  snf )NÚplaceholderc              3   óH   #   • U  H  oR                   S :X  d  M  Uv •  M     g7f)ÚoutputN)rj   )Ú.0Úns     r1   Ú	<genexpr>Ú2DynamoGraphTransformer.__init__.<locals>.<genexpr>þ   s   é € ÐRÒ+= aÇÁÈÑAQ§¡Ò+=ùs   ‚"™	")r‚   rƒ   rS   rž   rŸ   r    r¡   r¢   r]   r^   rj   ÚplaceholdersÚnextÚoutput_nodeÚnew_input_nodesÚ_create_flattened_inputsÚold_to_new_mappingÚ_create_placeholder_mapping)	r…   r�   rž   rŸ   r    r¡   r¢   r¨   r†   s	           €r1   rƒ   ÚDynamoGraphTransformer.__init__é   sÅ   ø€ ô 	‰Ñ˜Ô äÐ)Ó*¬c°+Ó.>Ó>Ð>Ð>à&ÔØ&<Ô#Ø!2ÔØ 0ÔØ"Œð )/¯©×(:Ò(:ÓTÒ(: 1¿d¹dÀmÑ>SŸQÑ(:ÑTˆÔÜÑR¨6¯<©<×+=Ò+=ÓRÓRˆÔð :<ˆÔØ×%Ñ%Ô'ð #%ˆÔØ×(Ñ(Õ*ùò Us   Á!C Á8C c                 ó¼  >• [        [        U R                  5      5       GH3  n[        TU ]  SU 3S0 5      nXR
                  ;   az  U R
                  U   nU[        U R                  5      :  aR  U R                  U   nUR                  R                  5        H%  u  pVUS:w  d  M  XbR                  R                  U'   M'     U R                  Gb  [        U R                  U   [        R                  5      (       aÕ  U R                  R                  U R                  U   [        [        [        U R                  U   R                   5      5       Vs/ s H5  nXpR"                  U   ;   a  [$        R&                  O[$        R(                  PM7     snS/[        U R                  U   R                   5      -  S9S9UR                  R                  S'   Ou[+        U R                  U   S5      (       a1  U R                  U   R,                  UR                  R                  S'   O&U R                  U   UR                  R                  S'   X R.                  U'   GM6     gs  snf )zKCreate new placeholder nodes for flattened inputs with proper fake tensors.Úarg_© ÚvalN)Údynamic_sizesÚconstraint_sizes)Úsymbolic_context)ÚrangerS   rž   r‚   r¤   r    r«   r_   rE   rb   r¢   rQ   rm   ÚTensorÚfrom_tensorr   ÚshaperŸ   r   ÚDYNAMICÚSTATICrl   r¶   r®   )	r…   Úir¤   Úgraph_placeholder_idxÚorig_placeholderrG   ÚvalueÚdr†   s	           €r1   r¯   Ú/DynamoGraphTransformer._create_flattened_inputs  s  ø€ ä”s˜4×+Ñ+Ó,×-ˆAÜ™'Ñ-°°Q°C¨j¸"¸bÓAˆKð ×*Ñ*Ó*à(,×(>Ñ(>¸qÑ(AÐ%Ø(¬3¨t×/@Ñ/@Ó+AÓAØ'+×'8Ñ'8Ð9NÑ'OÐ$à&6×&;Ñ&;×&AÑ&AÖ&C™
˜Ø %�<Ø9>×,Ñ,×1Ñ1°#Ó6ñ 'Dð
 �~‰~Ò)¬jØ× Ñ  Ñ#¤U§\¡\÷/ñ /ð 04¯~©~×/IÑ/IØ×$Ñ$ QÑ'Ü%=ô &+¬3¨t×/?Ñ/?ÀÑ/B×/HÑ/HÓ+IÔ%Jó'ò &K ð $%×(CÑ(CÀAÑ(FÓ#Fô !+× 2Ò 2ä%/×%6Ñ%6ò!7ñ &Kñ'ð +/¨´#°d×6FÑ6FÀqÑ6I×6OÑ6OÓ2PÑ)Pñ
&ð 0Jð 0�× Ñ ×%Ñ% eÒ,ô ˜×)Ñ)¨!Ñ,¨e×4Ñ4Ø/3×/?Ñ/?ÀÑ/B×/FÑ/F�× Ñ ×%Ñ% eÒ,à/3×/?Ñ/?ÀÑ/B�× Ñ ×%Ñ% eÑ,ð '2× Ñ  Ô#òM .ùò*'s   Å<Ic                 óØ   • U R                   R                  5        HL  u  pU[        U R                  5      :  d  M   U R                  U   nU R                  U   nX@R
                  U'   MN     g)z1Create mapping from old placeholders to new ones.N)r    rE   rS   r«   r®   r°   )r…   Úuser_input_idxrÁ   Úold_placeholderÚnew_placeholders        r1   r±   Ú2DynamoGraphTransformer._create_placeholder_mapping2  sc   € ð 6:×5KÑ5K×5QÑ5QÖ5SÑ1ˆNØ$¤s¨4×+<Ñ+<Ó'=Õ=Ø"&×"3Ñ"3Ð4IÑ"J�Ø"&×"6Ñ"6°~Ñ"F�Ø;J×'Ñ'¨Ó8ò	 6Tr3   rk   r&   .r'   c                 óþ  >• U R                   U R                  ;   aÓ  U R                  U R                      nS HN  nXPR                   R                  ;   d  M  U R                   R                  U   UR                  R                  U'   MP     SU R                   R                  ;   aJ  SUR                  R                  ;  a0  U R                   R                  S   UR                  R                  S'   U$ [        TU ]  XU5      $ )z1Replace old placeholders with new flattened ones.)Útensor_dictÚexample_valueÚunbacked_bindingsr¶   )Úcurrent_noder°   r_   rb   r‚   r¤   )r…   rk   r&   r'   Únew_argrG   r†   s         €r1   r¤   Ú"DynamoGraphTransformer.placeholder<  sÙ   ø€ ð
 ×Ñ × 7Ñ 7Ó7Ø×-Ñ-¨d×.?Ñ.?Ñ@ˆGó M�Ø×+Ñ+×0Ñ0Õ0Ø-1×->Ñ->×-CÑ-CÀCÑ-H�G—L‘L×%Ñ% cÓ*ñ Mð
 ˜×)Ñ)×.Ñ.Ó.°5ÀÇÁ×@QÑ@QÓ3QØ+/×+<Ñ+<×+AÑ+AÀ%Ñ+H�—‘×!Ñ! %Ñ(àˆNô ‘7Ñ& v°VÓ<Ð<r3   c                 óŠ  >• US   n/ n[        U R                  R                  5       5       Hz  nU R                  U   u  pxUS:X  a  UR                  XH   5        M/  US:X  a,  UR                  n	UR                  U R
                  U	   5        Ma  US:X  d  Mi  UR                  U5        M|     [        T
U ]  U[        U5      40 5      $ )z/Transform output according to graph_output_map.r   Ú	graph_outÚinputÚconstant)	Úsortedr¡   ÚkeysrU   Úindexr®   r‚   r¦   rR   )r…   rk   r&   r'   Úoriginal_outputsÚnew_outputsrÀ   Úoutput_typer¶   Ú	input_idxr†   s             €r1   r¦   ÚDynamoGraphTransformer.outputR  s¾   ø€ ð   ™7Ðð ˆÜ˜×-Ñ-×2Ñ2Ó4Ö5ˆAØ#×4Ñ4°QÑ7ÑˆKà˜kÓ)Ø×"Ñ"Ð#3Ñ#8Ö9Ø Ó'ØŸI™I�	Ø×"Ñ" 4×#7Ñ#7¸	Ñ#BÖCØ 
Õ*Ø×"Ñ" 3Ö'ñ 6ô ‰w‰~˜f¤u¨[Ó'9Ð&;¸RÓ@Ð@r3   r¨   c                 ó~  >• Xl         [        TU ]	  U5      n[        US5      (       a•  UR                  ULa†  S H:  nX1R
                  ;   d  M  UR
                  U   UR                  R
                  U'   M<     UR                  S:w  a6  [        US5      (       a%  UR                  R                  UR                  5        U$ )z.Run node transformation and preserve metadata.rb   )r¶   rÍ   rÎ   r¦   rW   )	rÏ   r‚   Úrun_noderl   rb   r_   rj   Ú_renamerW   )r…   r¨   r;   rG   r†   s       €r1   rß   ÚDynamoGraphTransformer.run_nodeg  s—   ø€ àÔÜ‘Ñ! !Ó$ˆô �6˜6×"Ñ" v§{¡{¸!Ò';ÛD�ØŸ&™&•=Ø,-¯F©F°3©K�F—K‘K×$Ñ$ SÓ)ñ Eð
 �t‰t�xÓ¤G¨A¨v×$6Ñ$6Ø—‘×#Ñ# A§F¡FÔ+àˆr3   c                 óZ  >• [         TU ]  5       n[        U R                  S5      (       a€  SU R                  R                  ;   a&  U R                  R                  S   UR                  S'   SU R                  R                  ;   a&  U R                  R                  S   UR                  S'   U$ )z:Perform the graph transformation and copy module metadata.r_   r[   Údynamo_compile_id)r‚   Ú	transformrl   r�   r_   )r…   Ú	result_gmr†   s     €r1   rä   Ú DynamoGraphTransformer.transformx  s˜   ø€ ä‘GÑ%Ó'ˆ	ô �4—;‘; ×'Ñ'à1°T·[±[×5EÑ5EÓEàEIÇ[Á[×EUÑEUð 7ñF�	—‘ÐAÑBð # d§k¡k×&6Ñ&6Ó6à6:·k±k×6FÑ6Fð (ñ7�	—‘Ð2Ñ3ð Ðr3   )
rÏ   r¢   rŸ   rž   r    r¡   r®   r°   r­   r«   r�   )r(   N)r“   r”   r•   r–   Ú__doc__rm   rn   ÚGraphModuleÚlistr   ÚsetÚintr\   rR   rT   r   rƒ   r¯   r±   r!   r    r¤   r   r¦   r   rß   rä   r—   r˜   r™   s   @r1   r›   r›   æ   s3  ø† Ùdð $(ñ+à—‘×$Ñ$ð+ð ˜#‘Yð+ð !% S¨¡X¡ð	+ð
    S ™>ð+ð ˜s E¨#¨s¨(¡OÐ3Ñ4ð+ð ˜C‘=ð+ð 
÷+ð +÷>(2ôTKð=Øð=Ø$)¨(°C¨-Ñ$8ð=ØBFÀsÈCÀxÁ.ð=à	÷=ð,AØðAØ$,¨S¡MðAØ;?ÀÀSÀ¹>ðAà	÷Að*˜$ð  3÷ ð"˜5Ÿ8™8×/Ñ/÷ õ r3   r›   Úmodule_to_traceÚorig_callabler¢   r"   Úgraph_capture_outputÚdynamic_shapesc           	      óì  • S n [        U 5      u  p‰UR                  R                  UR                  5        [        USS 5      =nGb  UR                  =nGbo  [        U R                  [        R                  R                  [        R                  R                  -  5      (       Gd   UR                  5         UR                  5       nUR                  [         R"                  " U5      UUU5      nU(       a3  UR$                  (       a  UR$                  S   U-   4Ul        O2U4Ul        O)U(       a  [	        U5      nO[&        R)                  SU5        UR*                   He  n[        U[,        R.                  5      (       d  M$  [	        SR1                  [2        R4                  " UR6                  U   5      5       SU S35      nMg     U(       a  [9        XqXE5      nUeg ! [         a  n
U
n S n
A
GN¸S n
A
ff = f)NÚ	shape_envr   z#Summary of dimension constraints:%sr6   zk
It appears that you're trying to set a constraint on a value which we evaluated to have a static value of z0. Set TORCH_LOGS="+export" for more information.)r   rî   Úbuild_guardsÚ__code__r   ÚgetattrÚdim_constraintsrQ   r‘   rm   Ú_opsÚOpOverloadPacketÚ
OpOverloadÚsolveÚforced_specializationsÚprettify_resultsr-   r.   r&   ÚlogÚinfoÚvar_to_rangeÚsympyÚIntegerÚjoinÚ	tracebackÚformat_listÚvar_to_stackr2   )rì   rí   r¢   rî   r&   r'   rï   r$   Úfnr5   Úerñ   rõ   rú   ÚmsgÚks                   r1   Ú&_suggest_or_raise_constraint_violationr	  ’  sÐ  € ð "&Ðð'ä˜oÓ.‰ˆØ×1Ñ1×>Ñ>¸r¿{¹{ÔKô
 ˜i¨°dÓ;Ð	;ˆÒHØ )× 9Ñ 9Ð9ˆ_ÒFÜØ×#Ñ#Ü�J‰J×'Ñ'¬%¯*©*×*?Ñ*?Ñ?÷
ò 
ð
 	×ÑÔà!0×!GÑ!GÓ!IÐà×.Ñ.Ü×Ò˜mÓ,ØØ&Ø"ó	
ˆö &Ø)×.×.à.×3Ñ3°AÑ6¸Ñ<ð3Ð*Õ/ð 47°&Ð*Õ/æ%Ü-EÀcÓ-JÑ*ä—‘Ø9Øôð ×'Ô'ˆAÜ˜!œUŸ]™]×+Ó+Ü-EØ—w‘wœy×4Ò4°Y×5KÑ5KÈAÑ5NÓOÓPÐQð RJàJKÈð MEðEó.Ò*ñ (ö "Ü%;Ø&°tó&
Ð"ð )Ð(ð	 "øô_ $ó 'Ø%&Ö"ûð'ús   „2G Ç
G3Ç&G.Ç.G3Ú
shuffle_gmc                 óÊ   • U R                   R                  5         U R                  5         [        U R	                  5       5       H  u  p[        X5        [        XU5        M     g r�   )r]   Úeliminate_dead_codeÚ	recompileré   Únamed_buffersÚdelattrÚsetattr)r
  rW   Úbuffers      r1   Ú_normalize_shuffle_graphr  Ö  sL   € Ø×Ñ×(Ñ(Ô*Ø×ÑÔÜ˜Z×5Ñ5Ó7Ö8‰ˆÜ�
Ô!Ü�
 &Ö)ò 9r3   Úgmc                 óš   • U R                   R                   H1  nUR                  S:X  d  M  UR                  S   UR                  S'   M3     g )Nr¤   rÍ   r¶   )r]   r^   rj   r_   )r  rb   s     r1   Únormalize_graph_moduler  Þ  s7   € Ø—‘—”ˆØ�7‰7�mÕ#Ø#Ÿy™y¨Ñ9ˆD�I‰I�eÓò r3   c                   ón   • \ rS rSrS\S\S\\   SS4S jrS\	\S	4   S\	\	\S	4   \
\\4   4   4S
 jrSrg)ÚInputProcessoriä  ÚrootÚnum_argsÚkwarg_namesr(   Nc                 ó(   • Xl         X l        X0l        g r�   )r  r  r  )r…   r  r  r  s       r1   rƒ   ÚInputProcessor.__init__å  s   € ð Œ	Ø ŒØ&Õr3   Úinputs.c                 ó¨  • Un0 n[        U5      U R                  :”  a:  [        [        U R                  X R                  S  5      5      nUS U R                   nU R
                  bì  [        U R
                  [        R                  R                  5      (       a©  [        U R
                  R                  R                  [        5      (       d   e[        U R
                  R                  R                  R                  S5      (       d   eU R
                  R                  R                  R                  R                  U L d   eU R
                  /UQ7nX#4$ )NÚinput_processor)rS   r  r\   Úzipr  r  rQ   rm   rn   rè   r]   Ú_codegenÚ_DynamoBytecodeCodeGenrl   Údynamo_bytecode_flattenr  )r…   r  r&   r'   s       r1   Ú__call__ÚInputProcessor.__call__ï  s  € ð ˆàˆÜˆt‹9�t—}‘}Ó$Üœ#˜d×.Ñ.°·]±]°_Ð0EÓFÓGˆFØ˜˜$Ÿ-™-Ð(ˆDØ�9‰9Ñ Ü˜$Ÿ)™)¤U§X¡X×%9Ñ%9×:Ñ:Ü! $§)¡)§/¡/×":Ñ":Ô<R×SÑSÐSÐSÜØ—I‘I—O‘O×,Ñ,×DÑDÐFW÷ñ ð ð ð —I‘I—O‘O×,Ñ,×DÑD×TÑTØòððð —I‘IÐ% Ñ%ˆDØˆ|Ðr3   )r  r  r  )r“   r”   r•   r–   Úobjectrë   ré   rT   rƒ   rR   r\   r$  r—   rµ   r3   r1   r  r  ä  sk   † ð'àð'ð ð'ð ˜#‘Yð	'ð
 
ô'ðØ˜F C˜KÑ(ðà	ˆu�V˜S�[Ñ! 4¨¨V¨Ñ#4Ð4Ñ	5÷r3   r  c                   ó   • \ rS rSrSrg)ÚYieldi  rµ   N)r“   r”   r•   r–   r—   rµ   r3   r1   r(  r(    s   † Úr3   r(  c                   ó\   • \ rS rSrS\S\S\\\4   SS4S jr	\
" SS	9S
\S\4S j5       rSrg)ÚDynamoBytecodeFlatteni
  r  ÚoutÚ	f_globalsr(   Nc                 ó6   • Xl         X l        X0l        S U l        g r�   )r  r+  r,  Ú	gm_inputs©r…   r  r+  r,  s       r1   rƒ   ÚDynamoBytecodeFlatten.__init__  s   € ð  /ÔØŒØ"ŒØ15ˆ�r3   ú*do not trace internal dynamo graph capture©Úreasonr  c                 ó  ^ • S[         SS 4U 4S jjnT R                  U5      u  p4 T R                  R                  UT R                  S9" U0 UD6  [        e! [
         a    T R                  c   eT R                  s $ f = f)NÚexample_inputsr(   c                  ó   >• U Tl         [        er�   )r.  r(  )r5  r…   s    €r1   Úbackend_dummyÚ5DynamoBytecodeFlatten.__call__.<locals>.backend_dummy  s   ø€ Ø+ˆDŒNÜˆKr3   ©Úcompiled_fnÚextra_globals)r&  r  r+  Úforward_callabler,  r(  r.  ÚRuntimeError)r…   r  r7  r&   r'   s   `    r1   r$  ÚDynamoBytecodeFlatten.__call__  s’   ø€ ð	¬6ð 	°d÷ 	ð ×+Ñ+¨FÓ3‰ˆð	"Ø�H‰H×%Ñ%Ø)¸¿¹ð &ñ àðàòô Ðøô ó 	"Ø—>‘>Ñ-Ð-Ð-Ø—>‘>Ò!ð	"ús   ¦*A Á%A>Á=A>)r,  r.  r  r+  )r“   r”   r•   r–   r  r   r\   rT   r&  rƒ   Údynamo_disabler$  r—   rµ   r3   r1   r*  r*  
  s_   † ð	6à'ð	6ð ð	6ð ˜˜V˜Ñ$ð		6ð
 
ô	6ñ ÐGÑHð ð ¨6ó ó Iór3   r*  c                   óp   • \ rS rSrS\S\S\\\4   SS4S jr	\
" SS	9S
\\   S\\S4   S\4S j5       rSrg)ÚDynamoBytecodeUnflatteni'  r  r+  r,  r(   Nc                 ó(   • Xl         X l        X0l        g r�   )r  r+  r,  r/  s       r1   rƒ   Ú DynamoBytecodeUnflatten.__init__(  s   € ð  /ÔØŒØ"�r3   r1  r2  Ú	flat_outsr  .c                 ó(  ^• S[         S[        [            4U4S jjnU R                  U5      u  pE[        R                  R                  5          U R                  R                  X0R                  S9" U0 UD6nS S S 5        U$ ! , (       d  f       W$ = f)Nr5  r(   c                  ó   >• T$ r�   rµ   )r5  rD  s    €r1   r7  Ú7DynamoBytecodeUnflatten.__call__.<locals>.backend_dummy6  s	   ø€ ØÐr3   r9  )	r&  r   r  rm   Ú_CÚ_DisableTorchDispatchr+  r<  r,  )r…   rD  r  r7  r&   r'   Úresultss    `     r1   r$  Ú DynamoBytecodeUnflatten.__call__2  s‹   ø€ ð	¬6ð 	´h¼vÑ6F÷ 	ð ×+Ñ+¨FÓ3‰ˆÜ�X‰X×+Ñ+Õ-Ø—h‘h×/Ñ/Ø)¿¹ð 0ñ àðàñˆG÷ .ð ˆ÷	 .Ô-ð ˆús   Á*BÂ
B)r,  r  r+  )r“   r”   r•   r–   r  r   r\   rT   r&  rƒ   r?  r   rR   r$  r—   rµ   r3   r1   rA  rA  '  sw   † ð#à'ð#ð ð#ð ˜˜V˜Ñ$ð	#ð
 
ô#ñ ÐGÑHðØ! &Ñ)ðØ38¸À¸Ñ3Eðà	óó Iór3   rA  r+  Úmodc                 óT
  ^• U R                   c   eU R                   n[        R                  R                  R	                  U5      u  pV[
        R                  " X#45      n[        R                  R                  R                  U[        R                  5        U R                  R                  nUR                  m[        U[        R                  R                   5      (       Ga  UR"                  R%                  5       Tl        UR&                  R%                  5       Tl        [)        U4S jUR*                   5       5      (       d   eTR*                  R-                  UR*                  5        UR.                  R%                  5       Tl        [0        R2                  S:¼  a.  SS Kn	U	R7                  [        R                  R                   5      n
O%[9        [        R                  R                   SS 5      n
UR:                  R=                  5        H$  u  p¼U
(       d  M  Xº;  d  M  UTR:                  U'   M&     UR>                  R%                  5       Tl        UR@                  R%                  5       Tl         URB                  R%                  5       Tl!        URD                  R%                  5       Tl"        TR>                  (       d  TR@                  (       a�  [9        TSS 5      c   e[        TRF                  [        RH                  R                  RJ                  5      (       d   eTRF                  RL                  b   eS[N        S[N        S[N        4S	 jnUTRF                  l&        [        U[        R                  R                   5      (       a  TOUn[Q        U[S        U5      [U        URW                  5       5      5      n[Y        XàU5      n[[        XàU5      n[]        [_        [`        Rb                  " U5      X#5      UU5      TRd                  l3        [i        T5        [k        TS
5      (       a   e[k        TS5      (       a   eUTl6        UTl7        [q        TS5        TRs                  5         U R                  Rt                  Rv                  Rx                  TRz                  S'   U R                   c   eU R                   R|                  TRz                  S'   STRz                  S   l?        [�        TRz                  S   5      nU R                   R‚                  UlA        UTRz                  S'   T$ )Nc              3   óF   >#   • U  H  n[        TU5      (       + v •  M     g 7fr�   )rl   )r§   Úmr?   s     €r1   r©   Ú7create_fx_graph_from_captured_output.<locals>.<genexpr>S  s   øé € ÐGº°A”w˜|¨QÓ/×/Ñ/ºùs   ƒ!)é   é   r   Ú__annotations__Ú_wrapped_callr&   r'   r(   c                 óò  ^^^• SU R                   ;  d   eU R                  mU R                  m[        U 5      R                  mS[
        S[
        S[
        4UUU4S jjn [        R                  " X05      U l        0 U l        0 U l        [        [        U 5      U ]&  " U0 UD6U R                   R                  S5        TU l        TU l        $ ! U R                   R                  S5        TU l        TU l        f = f)Nr‘   r&   r'   r(   c                 ó8   >• TU l         TU l        T" U /UQ70 UD6$ r�   )Ú_forward_hooksÚ_forward_pre_hooks)r…   r&   r'   Ú	fwd_hooksÚfwd_pre_hooksÚoriginal_forwards      €€€r1   Úpatched_forwardÚZcreate_fx_graph_from_captured_output.<locals>.dynamo_wrapped_call.<locals>.patched_forwardw  s(   ø€ Ø*3�DÔ'Ø.;�DÔ+Ù+¨DÐB°4ÒB¸6ÑBÐBr3   )Ú__dict__rW  rX  Útyper‘   r&  ÚtypesÚ
MethodTyper‚   r$  Úpop)r…   r&   r'   r\  rY  rZ  r[  s       @@@r1   Údynamo_wrapped_callÚAcreate_fx_graph_from_captured_output.<locals>.dynamo_wrapped_callp  sæ   ú€ Ø ¨¯©Ó5Ð5Ð5à ×/Ñ/�	Ø $× 7Ñ 7�Ü#'¨£:×#5Ñ#5Ð ðC´ð CÄ6ð CÌf÷ Cñ Cð
<Ü#(×#3Ò#3°OÓ#J�D”Là*,�DÔ'à.0�DÔ+ä ¤ d£¨TÒ;¸TÐLÀVÑLà—M‘M×%Ñ% iÔ0Ø*3�DÔ'Ø.;�DÕ+øð —M‘M×%Ñ% iÔ0Ø*3�DÔ'Ø.;�DÕ+ús   Á AC Ã+C6Ú_dynamo_bytecode_flattenÚ_dynamo_bytecode_unflattenÚ_param_name_to_sourceÚmodule_call_specsr¢   TÚtracing_context)BÚbackend_inputrm   Ú_dynamoÚconvert_framer   r‹   Útree_leavesÚ
eval_framer   r   ÚINVALID_INPUTrî   r,  r?   rQ   ÚnnÚModuleÚ_parametersr`   Ú_buffersÚallÚ_modulesÚupdateÚ_non_persistent_buffers_setÚsysÚversion_infoÚannotationlibÚget_annotationsrô   r^  rE   rW  rX  Ú_backward_hooksÚ_backward_pre_hooksrT  rn   Ú_WrappedCallÚcls_callr&  r  rS   ré   r×   r*  rA  r"  r   r-   r.   r]   r!  r  rl   re  rf  r  r  Úoutput_graphÚexport_metadataÚmodule_call_specr_   r¢   Úallow_non_fake_inputsr   Útensor_to_context)r+  rL  r&   r'   rj  r5   r  Úflat_real_argsr,  rz  ÚannotationsrW   rÃ   rc  r  r#  Údynamo_bytecode_unflattenri  r?   s                     @r1   Ú$create_fx_graph_from_captured_outputrˆ  A  s  ø€ ð ×ÑÑ(Ð(Ð(Ø×%Ñ%€Mä�m‰m×)Ñ)×7Ñ7¸Ó<�G€Aä×'Ò'¨¨Ó7€NÜ	‡M�M×Ñ×4Ñ4Øœ×3Ñ3ôð ×(Ñ(×2Ñ2€Ià ×-Ñ-€LÜ�$œŸ™Ÿ™×(Ò(Ø#'×#3Ñ#3×#8Ñ#8Ó#:ˆÔ Ø $§¡× 2Ñ 2Ó 4ˆÔÜÔG¸¿ºÓG×GÑGÐGÐGØ×Ñ×$Ñ$ T§]¡]Ô3à×,Ñ,×1Ñ1Ó3ð 	Ô0ô ×Ñ˜wÓ&Û à'×7Ñ7¼¿¹¿¹ÓH‰Kä!¤%§(¡(§/¡/Ð3DÀdÓKˆKØŸ=™=×.Ñ.Ö0‰KˆDßˆ{˜tÕ6Ø.3�×%Ñ% dÓ+ñ 1ð '+×&9Ñ&9×&>Ñ&>Ó&@ˆÔ#Ø*.×*AÑ*A×*FÑ*FÓ*HˆÔ'Ø'+×';Ñ';×'@Ñ'@Ó'BˆÔ$Ø+/×+CÑ+C×+HÑ+HÓ+JˆÔ(Ø×&×&¨,×*I×*Iô
 ˜<¨¸$Ó?ÑKÐKÐKÜØ×*Ñ*¬E¯H©H×,AÑ,A×,NÑ,N÷ñ ð ð ð  ×-Ñ-×6Ñ6Ñ>Ð>Ð>ð<´ð <Ä6ð <Ìfô <ð4 3FˆL×&Ñ&Ô/ä% d¬E¯H©H¯O©O×<Ñ<‰<À$€DÜ$ T¬3¨t«9´d¸6¿;¹;»=Ó6IÓJ€OÜ3°OÈ)ÓTÐÜ 7¸ÈiÓ XÐä"8Ü”w×(Ò(¨Ó-¨tÓ<ØØ!ó#€L×ÑÔô
 ˜<Ô(Ü�|Ð%?×@Ñ@Ð@Ð@Ü�|Ð%A×BÑBÐBÐBà,C€LÔ)à.G€LÔ+ÜˆLÐ1Ô2Ø×ÑÔà× Ñ ×-Ñ-×=Ñ=×NÑNð ×ÑÐ)Ñ*ð ×ÑÑ(Ð(Ð(Ø%(×%6Ñ%6×%@Ñ%@€L×Ñ�kÑ"Ø;?€L×Ñ�kÑ"Ô8Ü$ \×%6Ñ%6°{Ñ%CÓD€OØ(+×(9Ñ(9×(KÑ(K€OÔ%Ø+:€L×ÑÐ'Ñ(ØÐr3   c            	       ó  ^ • \ rS rSrS\\   S\S\SS4U 4S jjrS\S\4S	 jr	S
\S\4S jr
SS.S\\   S\S\S\4U 4S jjjrS\\   S\\   S\S\4S jrSS.S\R                  R                   R"                  S\S-  S\4S jjrSrU =r$ )r"  i«  Úorig_arg_namesr#  r‡  r(   Nc                 ób   >• [         TU ]  5         Xl        X l        X0l        SU l        S U l        g ©NF)r‚   rƒ   rŠ  r#  r‡  Ú
wrap_tupleÚ_inputs)r…   rŠ  r#  r‡  r†   s       €r1   rƒ   Ú_DynamoBytecodeCodeGen.__init__¬  s0   ø€ ô 	‰ÑÔØ,ÔØ'>Ô$Ø)BÔ&ØˆŒØ/3ˆ�r3   r  c                 ó0   • Xl         U R                  " U6 nU$ r�   )rŽ  r#  )r…   r  rJ  s      r1   Úprocess_inputsÚ%_DynamoBytecodeCodeGen.process_inputs»  s   € ØŒØ×.Ò.°Ð7ˆØˆr3   Úoutputsc                 ór   • U R                  XR                  5      nU R                  (       a  U4nS U l        U$ r�   )r‡  rŽ  r�  )r…   r“  rJ  s      r1   Úprocess_outputsÚ&_DynamoBytecodeCodeGen.process_outputsÀ  s0   € Ø×0Ñ0°¿,¹,ÓGˆØ�?�?Ø�jˆGØˆŒØˆr3   F©Úexpanded_defÚ	free_varsÚmaybe_return_annotationr˜  c                óì   >• U R                   n[        U5      S:”  a  US   S:H  OSnU(       a  UR                  SS5        [        TU ]  US S  X#S9n[        U5      S:”  a  X`R                  XAU5      -  nU$ )Nr   r…   Fr—  )rŠ  rS   Úinsertr‚   Ú
gen_fn_defÚgen_var_bindings)r…   r™  rš  r˜  Úfn_argsÚhas_orig_selfÚfn_definitionr†   s          €r1   r�  Ú!_DynamoBytecodeCodeGen.gen_fn_defÇ  s…   ø€ ð ×%Ñ%ˆÜ25°g³,ÀÓ2B˜ ™ vÒ-ÈˆÞØ×Ñ˜Q Ô'Ü™Ñ*Ø‘AˆJÐ/ð +ð 
ˆô ˆy‹>˜AÓØ×2Ñ2°7À|ÓTÑTˆMØÐr3   rŸ  c                 ó  • U Vs/ s H(  oDR                  S5      S   R                  S5      S   PM*     nn[        U5      S:X  a  SnO*[        U5      S:X  a	  US    S3nOSR                  U5       nSU SSR                  U5       S	3$ s  snf )
NÚ:r   Ú#r6   é   ú, z
    _fn_args = (z)
    z,, = self._dynamo_bytecode_flatten(*_fn_args))ÚsplitrS   r  )r…   rŸ  r™  r˜  ÚxÚwithout_annotationÚfn_signatures          r1   rž  Ú'_DynamoBytecodeCodeGen.gen_var_bindingsÚ  s§   € ñ FOÓOÂYÀŸg™g c›l¨1™o×3Ñ3°CÓ8¸Ô;ÁYÐÐOÜˆw‹<˜1ÓØ‰LÜ�‹\˜QÓØ% a™j˜\¨Ð,‰Là"Ÿi™i¨Ó0Ð1ˆLðØ�ð Ø	‡Y�YÐ!Ó"Ð#Ð#OðSð 	Sùò Ps   …/B
)ÚdescsÚoutput_argsr­  c          	      ó¢   • SSR                  U Vs/ s H  n[        U5      PM     sn5       S3nU R                  (       a  SU S3nSU 3$ s  snf )Nz!self._dynamo_bytecode_unflatten((r§  z,), _fn_args)Ú(z,)zreturn )r  rT   r�  )r…   r®  r­  ÚaÚreturneds        r1   Úgenerate_outputÚ&_DynamoBytecodeCodeGen.generate_outputè  s\   € ð 7°t·y±yÑR]ÓA^ÒR]ÈQÄ#ÀaÆ&ÑR]ÑA^Ó7_Ð6`Ð`mÐnˆØ�?�?Ø˜8˜* BÐ'ˆHØ˜˜
Ð#Ð#ùò B_s   ‘A
)rŽ  r#  r‡  rŠ  r�  )r“   r”   r•   r–   ré   rT   r   rƒ   r   r‘  r•  Úboolr�  rž  rm   rn   rb   r    r&  r³  r—   r˜   r™   s   @r1   r"  r"  «  sþ   ø† ð4à˜S™	ð4ð "*ð	4ð $,ð4ð 
÷4ð cð ¨cô ð
 sð ¨sô ð #òà˜‘9ðð "%ðð
 ðð 
÷ð ð&SØ˜C‘yðSØ-1°#©YðSØFJðSà	ôSð NRò$Ø Ÿ8™8Ÿ=™=×1Ñ1ð$Ø=CÀd¹]ð$à	÷$ó $r3   r"  ÚconstraintsÚrestore_state_dictc                 óD   ^ ^^• S[         S[         S[         4UU U4S jjnU$ )Nr&   r'   r(   c            
      óÌ  >• [         R                  R                  R                  (       a   e[         R                  R                  R	                  SSS9   [        5          [        S5         [        TU UTS9nS S S 5        S S S 5        S S S 5        [        WTX5      nT(       a  [        TU5        U$ ! , (       d  f       N@= f! , (       d  f       NI= f! , (       d  f       NR= f)NFÚwarn)Úreplay_side_effectsÚside_effect_replay_policyr   )r¶  )
rm   rk  ÚconfigÚinstall_free_tensorsÚpatchr   r   r   rˆ  r   )r&   r'   r+  r?   r¶  rL  r·  s       €€€r1   ÚinnerÚ.dynamo_graph_capture_for_export.<locals>.inner÷  s´   ø€ Ü—=‘=×'Ñ'×<×<Ð<Ð<ä�M‰M× Ñ ×&Ñ&Ø$)ÀVð 'ò ô  Õ!ÜÐ,Õ-ä#ØØØØ'ñ	ˆC÷ .÷ "÷ô <¸CÀÀdÓSˆÞÜ  \Ô2ØÐ÷ .Õ-ú÷ "Õ!ú÷õ ús<   ÁCÁ CÁ,B3Á9CÂCÂ3
CÂ=CÃ
C	ÃCÃ
C#)r   )rL  r¶  r·  rÀ  s   ``` r1   Údynamo_graph_capture_for_exportrÂ  ò  s)   ú€ ð
”Sð ¤Cð ¬C÷ ñ ð( €Lr3   )r¶  rï   c                ót   ^ ^^• UmUmS[         S[         S[        R                  R                  4UUU 4S jjnU$ )aÞ  
Improved dynamo graph capture using transformer approach with proper fake tensor handling.

This function creates a capture instance that handles:
1. PyTree flattening/unflattening with proper input ordering
2. Dynamo graph capture with export-specific context
3. FX graph transformation for export compatibility
4. Proper fake tensor metadata preservation
5. Dynamic dimension constraint handling

Notable improvements over manual approach:
- Uses FX Transformer for cleaner graph manipulation
- Properly handles fake tensor metadata and dynamic dimensions
- Preserves all necessary metadata for export
- More robust error handling and edge case management

TODO:
1. Are we actually gonna run the bytecode?
2. Need to attach guards
r&   r'   r(   c                  ó¨	  >• [        5          [        R                  " X45      u  p#[        U[        R
                  5        [        TU5      n[        T[        R                  R                  5      (       a  TR                  OTnTnTnSSKJn  U" 5         [        R                  R                  R!                  SSSSSSSS[        R                  R                  R"                  S9	n	[%        5          ['        S5         U	   [)        U[+        U5      TSS9n
U
R,                  R.                  c   e/ nU
R0                  bC  U
R0                  R2                  nU
R0                  R4                  nU
R0                  R6                  nO…[        R8                  R;                  [        R                  R                  5       [        R8                  R=                  5       5      nUR>                  RA                  S 5        URC                  5         S n[E        UUUU
U UU5        U
R,                  R.                  RF                  nURH                  nURJ                  nURL                  nURN                  nS S S 5        S S S 5        S S S 5        U VVs/ s HŸ  nU=(       d    S Vs1 s H…  nURP                  [S        U5      :X  d  M  [        U[T        5      (       a  M5  URV                  RX                  RZ                  URV                  RX                  R\                  :w  d  My  UR^                  iM‡     snPM¡     nnn0 nW HZ  nUU   n[        U[        R                  R`                  Rb                  5      (       d   U5       e[e        U5      UURf                  '   M\     URi                  5        H  u  nnWU   UU'   M     [k        WUUUWW5      Rm                  5       n[o        [q        [s        [t        Rv                  " U5      X5      UW5      5      UR>                  l<        URC                  5         [{        U[        R                  R                  R|                  5        [        U5        WUR€                  S	'   UUR€                  S
'   UsS S S 5        $ ! , (       d  f       GN$= f! , (       d  f       GN.= f! , (       d  f       GN8= fs  snf s  snnf ! , (       d  f       g = f)Nr¦  )ÚresetTF)	Úspecialize_intÚspecialize_floatÚassume_static_by_defaultÚautomatic_dynamic_shapesÚ capture_dynamic_output_shape_opsÚcapture_scalar_outputsÚ'constant_fold_autograd_profiler_enabledÚlog_graph_in_out_metadatar¾  r   )r¶  Ú _is_export_deprecated_do_not_userµ   rh  r¢   )Ar   r‹   r�   r   r   ro  r|   rQ   rm   rp  rq  r‘   r6   rÅ  rk  r½  r¿  Úinstall_free_tensors_for_exportr   r   r   rR   rî   r€  rj  r?   r¢   r5  rn   rè   ÚGraphr]   r¦   r  r	  r�  Úgraph_input_idx_to_local_sourceÚoutput_return_typer�   r‚  Út_idÚidr   Úconstraint_rangeÚvrÚlowerÚupperÚdimÚsourceÚGetItemSourcerS   rØ   rE   r›   rä   r   r   r   r-   r.   r!  rf   Úinline_inbuilt_nn_modulesrz   r_   )r&   r'   rž   r   rì   rí   r¶  rï   rÅ  Údynamo_config_ctxr+  r5  r]   r¢   r�  Úgraph_inputsr¡   r�   r‚  r©  ÚcrŸ   r    ÚinprÚ  Úreal_idxÚ	graph_idxÚtransformed_graphÚ_constraintsÚ_dynamic_shapesrL  s                               €€€r1   rÀ  Ú/_dynamo_graph_capture_for_export.<locals>.inner,  s(  ø€ ä%Õ'Ü#)×#6Ò#6¸°~Ó#FÑ ˆKÜ# K´×1LÑ1LÔMÜ+¨C°Ó9ˆOÜ+5°c¼5¿8¹8¿?¹?×+KÑ+K˜CŸKšKÐQTˆMà6BˆKàð õ  áŒGä %§¡× 4Ñ 4× :Ñ :Ø#Ø!%Ø)-Ø).Ø15Ø'+Ø8<Ø*.ô &+§]¡]×%9Ñ%9×%YÑ%Yð !;ð !Ðô$ $Õ%ÜÐ0Õ1Ú!ä'Ø#Ü˜+Ó&Ø ,Ø59ñ	�ð ×/Ñ/×<Ñ<ÑHÐHÐHà,.�Ø×$Ñ$Ñ0Ø×-Ñ-×:Ñ:�EØ #× 1Ñ 1× ;Ñ ;�IØ%(×%6Ñ%6×%EÑ%E‘Nä!ŸH™H×0Ñ0´·±·±Ó1BÄEÇHÁHÇNÁNÓDTÓU�EØ—K‘K×&Ñ& tÔ,Ø—O‘OÔ%Ø $�Iä6Ø#Ø!ØØØØØ"ôð #&×":Ñ":×"GÑ"G×"WÑ"W�Ø.×NÑN�Ø#2×#EÑ#EÐ Ø*×3Ñ3�Ø#2×#CÑ#CÐ ÷K "÷ 2÷ &ñh %ô&ò %�Að *×/¨RÐ/óâ/˜àŸ™¤" Q£%™ó ô !+¨1Ô.@× Aó	 ð
 ×.Ñ.×1Ñ1×7Ñ7¸1×;MÑ;M×;PÑ;P×;VÑ;VÑVó �A—E”EÙ/ôñ %ð #ñ &ð 13ÐÛ#�Ø% cÑ*�Ü! &¬%¯-©-×*>Ñ*>×*LÑ*L×MÑMÐUÈvÓUÐMÜ25Ð6GÓ2HÐ! &§,¡,Ó/ñ $ð
 (9×'>Ñ'>Ö'@Ñ#�˜)Ø(6°yÑ(A�˜HÓ%ñ (Aô !7ØØØ&Ø!Ø Øó!÷ ‰i‹kð ô 0>ÜÜ"¤7×#4Ò#4°]Ó#CÀTÓRØØóó0Ð×#Ñ#Ô,ð ×'Ñ'Ô)ä/Ø!¤5§=¡=×#7Ñ#7×#QÑ#Qôô Ð/Ô0à:JÐ×"Ñ"Ð#6Ñ7Ø2;Ð×"Ñ" ;Ñ/à$÷} (Ñ'÷F "Ö!ú÷ 2Ö1ú÷ &Ö%üòVùó&÷W (Õ'ús�   ŒC#SÃ/R&Ã;RÃ>E'R	É%RÉ-R&É5SÊR=ÊR8Ê6R8ËA R8ÌR8Ì!R=Ì(ESÒ
RÒRÒ
R#ÒR&Ò&
R5	Ò0SÒ8R=Ò=SÓ
S)r   rm   rn   rè   )rL  r¶  rï   rÀ  rä  rå  s   `   @@r1   Ú _dynamo_graph_capture_for_exportrç    sE   ú€ ð6 %€OØ€Lð@%”Sð @%¤Cð @%¬E¯H©H×,@Ñ,@÷ @%ñ @%ðD €Lr3   )FrŒ  )ar-   Úloggingrx  r  r`  Úcollectionsr   Úcollections.abcr   r   r   Útypingr   r   r	   r
   r   rÿ   rm   Útorch.fxÚtorch.utils._pytreeÚutilsÚ_pytreer‹   Útorch._dynamo.convert_framer   r   r   Útorch._dynamo.decoratorsr   r?  Útorch._dynamo.eval_framer   r   Útorch._dynamo.excr   Útorch._dynamo.utilsr   r   Útorch._export.utilsr   Útorch._guardsr   Útorch.exportr   Útorch.export.dynamic_shapesr   r   r   Ú%torch.fx.experimental.symbolic_shapesr   r   r   Útorch.fx.graphr   r   Útorch.fx.noder    r!   Útorch._subclasses.fake_tensorr"   r#   Ú	getLoggerr“   rü   r2   r9   rT   r>   rn   rè   rµ  rf   rz   rp  rq  r|   r‰   ÚTransformerr›   r\   rR   ré   r	  r  r  r  Ú	Exceptionr(  r*  rA  rˆ  r]   ÚCodeGenr"  rÂ  rç  rµ   r3   r1   Ú<module>r     sª  ðÛ Û Û 
Û Û Ý "ß 8Ñ 8ß ?Õ ?ã ã Û ß $Ð $ß WÑ WÝ >ß LÝ +ß AÝ 8Ý (Ý ,ß FÝ ÷ñ ÷
 7ß *ö Ý<áˆCƒL€Ø×Ò˜Ó!€ð&Ø 8ð&à
�3˜�8Ñ
ð&ð ð&ð ð	&ð
 ô&ò*Ð ð 3ð ¨3ô ð CHñ[Ø—(‘(×&Ñ&ð[Ø;?ð[à
‡X�X×Ñõ[ð|'< E§H¡H×$8Ñ$8ð '<¸Tô '<ôT
6�E—H‘H—O‘Oô 
6ñ  Ð 4°{ÀJÐ6OÓPÐ ôi˜UŸX™X×1Ñ1ô iðXA)Ø—X‘X—_‘_ðA)à˜C ˜HÑ%ðA)ð Ð(Ñ)ðA)ð (ð	A)ð
 ðA)ð ðA)ð ˜U 4¨¨S¨¡>°5¸±:¸tÀC¹yÐ#HÑIÑJðA)ð 
ôA)ðH*¨¯©×)=Ñ)=ð *À$ô *ð:˜uŸx™x×3Ñ3ð :¸ô :÷ñ ôD	ˆIô 	÷ñ ÷:ñ ð4gØ	ðgØ ðgØ(-¨c°3¨h©ðgØAEÀcÈ3ÀhÁðgà
‡X�X×ÑôgôTD$˜UŸX™XŸ^™^×3Ñ3ô D$ðR /3Ø$ñØ	�#�s�(Ñ	ðà˜$˜zÑ*Ñ+ðð ðð ˆc�3ˆhÑõ	ð> /3ØMQò	`Ø	�#�s�(Ñ	ð`ð ˜$˜zÑ*Ñ+ð`ð ˜U 4¨¨S¨¡>°5¸±:¸tÀC¹yÐ#HÑIÑJð	`ð
 ˆc�5—8‘8×'Ñ'Ð'Ñ(ö`r3   