§
    ŠŠtj[# ã                   ó’
  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlmZmZmZ ddlmZmZ ddlmZ ddlmZmZmZmZmZmZm Z m!Z! ddl"m#Z#m$Z$m%Z% ddl&Z&ddl'Z(ddl)Z(ddl*m+Z, ddl-Z(ddl.m/c m0Z1 ddl(m2Z2m3Z3 dd	l4m5Z5 dd
l6m7Z7m8Z8 ddl'm9Z9m:Z:m;Z;m<Z<m=Z=m>Z> ddl?m@Z@ ddlAmBZB ddlCmDZD ddlEmFZF ddlGmHZH ddlImJZJ ddlKmLZL ddlMmNZNmOZOmPZPmQZQmRZRmSZS ddlTmUZU ddlVmWZW ddlXmYZY ddlZm[Z[ ddl\m]Z]m^Z^mZ_m`Z` ddlambZbmcZc ddldmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZo ddlpmpZp ddlqmrZr ddlsmtZt ddlumvZv dd l^mwZwmxZxmyZymzZzm{Z{ dd!l|m}Z}m~Z~ dd"lm€Z€ dd#l�m‚Z‚mƒZƒ dd$l„m…Z… dd%l5m†Z†m‡Z‡ dd&lˆm‰Z‰ dd'lŠm‹Z‹mŒZŒm�Z� dd(lŽm�Z�m�Z�m‘Z‘m’Z’m“Z“m”Z”m•Z•m–Z–m—Z—m˜Z˜m™Z™mšZšm›Z›mœZœm�Z�mžZž dd)l/mŸZŸm Z m¡Z¡m¢Z¢m£Z£m¤Z¤m¥Z¥m¦Z¦m§Z§m¨Z¨m©Z©mªZªm«Z«m¬Z¬m­Z­m®Z®m¯Z¯m°Z°m±Z±m²Z²m³Z³ dd*l´mµZµm¶Z¶m·Z·m¸Z¸ dd+l¹mºZº dd,l»m¼Z¼m½Z½ dd-l¾m¿Z¿ dd.lÀmÁZÁ dd/lÂmÃZÃ dd0lÄmÅZÅmÆZÆmÇZÇ dd1lÈmÉZÉ dd2lÊmËZË erdd3lÌmÍZÍ dd4lÎmÏZÏ dd5lÐmÑZÑ dd6lÒmÓZÓ dd7lÔmÕZÕ  ejÖ        e×¦  «        ZØe(jÙ         Ú                    e×d8¦  «        ZÛe(jÙ         Ú                    e×d9¦  «        ZÜe(jÙ         Ú                    e×d:¦  «        ZÝe(jÙ         Ú                    e×d;¦  «        ZÞe5jß        Zßeàe(já        z  dz  Zâeeâ         Zãed<         Zä G d=„ d>e ¦  «        Zå G d?„ d@e ¦  «        Zæ G dA„ dBe¦  «        Zçe(jè        jé        jê        Zëe(jè        jé        jì        ZídCedDeîeïef         dEedFef         fdG„Zð edH¬I¦  «         G dJ„ dK¦  «        ¦   «         Zñ edH¬I¦  «         G dL„ dM¦  «        ¦   «         Zò	 dwdNeóeôe(j3        eïdz  f                  dOeõe(jö        j÷        jø                 dz  dEeõe(jö        j÷        jø                 fdP„Zùejú        dEefdQ„¦   «         Zûe G dR„ dS¦  «        ¦   «         ZüdTedEeg eóe         f         fdU„Zý G dV„ dWe(jè        jé        ¦  «        Zþ G dX„ dY¦  «        Zÿeîeï�e f         �Ze G dZ„ d[¦  «        ¦   «         �Ze G d\„ d]¦  «        ¦   «         �Ze G d^„ d_¦  «        ¦   «         �Ze G d`„ da¦  «        ¦   «         �Zdb�edEeîeïef         fdc„�Z G dd„ de�e¦  «        �Z G df„ dg�e¦  «        �Z G dh„ di¦  «        �Z	dj�Z
dk�edleïdmednedoedEdfdp„�Z e�j        ¦   «         �Z e$dq¦  «        �Z e%dr¦  «        �Z G ds„ dt¦  «        �Z G du„ dve2�j        ¦  «        �ZdS )xa¶  
Core graph building functionality for PyTorch's Dynamo system. This module contains
the essential components for constructing and managing FX graphs during compilation:

- OutputGraph: Manages the overall graph construction and compilation process. It owns
  a SubgraphTracer and handles graph compilation, execution, and state management.
  OutputGraph also manages features like graph deduplication, symbolic shape handling,
  and tracking of side effects.

- SubgraphTracer: Handles the actual FX graph construction by tracing Python code.
  It supports advanced features like higher-order operators through nested tracers,
  lifting of free variables, and handling of symbolic shapes.

The module supports key Dynamo features including:
- Higher-order operators through nested SubgraphTracers
- Graph deduplication for optimization
- Symbolic shape handling and propagation
- Side effect tracking and management
- Guard insertion and management
é    N)ÚCallableÚ	GeneratorÚSequence)Ú	dataclassÚfield)ÚCodeType)ÚAnyÚcastÚLiteralÚ
NamedTupleÚOptionalÚTYPE_CHECKINGÚ	TypedDictÚUnion)ÚNotRequiredÚ	ParamSpecÚTypeVar)ÚfxÚTensor)Úguards)ÚShortenTracebackÚTensorifyScalarRestartAnalysis)ÚCompileContextÚ	CompileIdÚGlobalContextCheckpointStateÚSourceÚtracingÚTracingContext)ÚFakeScriptObject)Úis_opaque_type)Ú
FakeTensor)Úsignpost_event)Ú_ConstraintTarget)Ú_make_graph_module)ÚBackwardState)Úfree_symbolsÚguard_scalarÚis_symbolicÚShapeEnvÚSpecializationÚuninteresting_files)ÚTarget)Úinsert_deferred_runtime_asserts)Ú
OrderedSet)Úis_traceable_wrapper_subclassé   )ÚconfigÚexcÚloggingÚ	variables)Ú
CompiledFnÚ
CompilerFn)Úcreate_binary_sliceÚcreate_binary_subscrÚcreate_build_tupleÚcreate_call_functionÚcreate_dup_topÚcreate_instructionÚcreate_load_constÚcreate_rot_nÚcreate_swapÚInstructionÚ	unique_id)Úcode_context)Ú	PyCodegen)Úenter_new_scope)Úget_interface_for_device)ÚBackendCompilerFailedÚ!exceptions_allowed_to_be_fallbackÚ	SkipFrameÚunimplementedÚunimplemented_with_warning)Úhas_user_objectsÚindex_to_bytecode_constructor)Úapply_graph_deduplication)Ú#get_backend_override_for_compile_idÚ+get_inductor_config_override_for_compile_id)ÚGraphRegionTracker)ÚGuardBuilderÚinstall_guard)Úis_dynamic_nn_module)ÚAttributeMutationExistingÚSideEffectsÚValueMutationExisting)Ú_get_source_debug_nameÚ
AttrSourceÚBackwardStateSourceÚConstantSourceÚDictGetItemSourceÚGetItemSourceÚGlobalStateSourceÚis_constant_sourceÚis_from_local_sourceÚLocalSourceÚNumpyTensorSourceÚParamBufferSourceÚShapeEnvSourceÚSyntheticLocalSourceÚTensorPropertyÚTensorPropertySource)Ú_extract_tensor_dictÚcheckpoint_paramsÚCleanupHookÚclone_inputsÚcompilation_time_metricsÚcount_callsÚcountersÚdynamo_timedÚget_chromium_event_loggerÚget_instruction_source_311Úget_locals_to_stealÚget_static_address_typeÚget_unique_name_wrtÚgraph_break_reasonsÚincrement_op_countÚistypeÚlazy_format_graph_codeÚ
LazyStringÚnn_module_proxyÚsameÚset_example_value)ÚBackwardStateGraphArgÚGraphArgÚTrackedFakeÚwrap_fx_proxy)ÚContextWrappingVariable)ÚClosureConversionErrorÚVariableTracker)ÚBaseListVariable)ÚNullVariable)ÚNNModuleVariable)ÚNumpyNdarrayVariableÚSymNodeVariableÚUnspecializedPythonVariable)ÚTensorWithTFOverrideVariable)ÚUserDefinedDictVariable©ÚDynamoProfilerState)ÚCompilePackage)ÚInstructionTranslatorBase)Ú_CudagraphAnnotation)ÚStorageWeakRefÚgraphÚ
graph_codeÚgraph_sizesÚ
trace_call)Ú	graph_outÚinputÚconstantc                   óP   — e Zd ZU eed<   eed<   ee         ed<   ee         ed<   dS )ÚSizesStridesInfoÚsizeÚstrideÚvalues_sizeÚvalues_strideN)Ú__name__Ú
__module__Ú__qualname__ÚTensorMetadataSequenceÚ__annotations__r   © ó    úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_dynamo/output_graph.pyr™   r™   Ð   sN   € € € € € € Ø
 Ð Ð Ñ Ø"Ð"Ð"Ñ"ØÐ3Ô4Ð4Ð4Ñ4ØÐ5Ô6Ð6Ð6Ñ6Ð6Ð6r¤   r™   c                   ó,  — e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   eedf         ed	<   eedf         ed
<   eedf         ed<   eed<   eed<   e	e         ed<   eed<   eed<   e	e         ed<   eedf         ed<   eedf         ed<   dS )ÚCodeOptionsÚco_argcountÚco_posonlyargcountÚco_kwonlyargcountÚ
co_nlocalsÚco_stacksizeÚco_flagsÚco_code.Ú	co_constsÚco_namesÚco_varnamesÚco_filenameÚco_nameÚco_qualnameÚco_firstlinenoÚco_linetableÚco_exceptiontableÚco_freevarsÚco_cellvarsN)
rž   rŸ   r    Úintr¢   ÚbytesÚtupleÚobjectÚstrr   r£   r¤   r¥   r§   r§   ×   s  € € € € € € ØÐÐÑØÐÐÑØÐÐÑØ€O€O�OØÐÐÑØ€M€M�MØ€N€N�NØ�V˜S�[Ô!Ð!Ð!Ñ!Ø�C˜�HŒoÐÐÑØ�s˜C�x”Ð Ð Ñ ØÐÐÑØ€L€L�LØ˜SÔ!Ð!Ð!Ñ!ØÐÐÑØÐÐÑØ" 5Ô)Ð)Ð)Ñ)Ø�s˜C�x”Ð Ð Ñ Ø�s˜C�x”Ð Ð Ñ Ð Ð r¤   r§   c                   ó$   — e Zd ZU eed<   eed<   dS )ÚOutputReturnInfoÚkindÚvalueN)rž   rŸ   r    ÚOutputReturnKindr¢   r½   r£   r¤   r¥   rÀ   rÀ   ì   s%   € € € € € € Ø
ÐÐÑØ€M€M�M€M€Mr¤   rÀ   Úcompiler_fnÚconfig_patchesÚreturn.c                 ó|   ‡ ‡— dt           dt           dt           fˆ ˆfd„}t          ‰ dd¦  «        |_        ‰ |_        |S )zê
    Wrap a compiler function to apply inductor config patches during compilation.

    Passes config_patches as a keyword argument so that compile_fx can
    propagate them to backward compilation via its inner_compile wrapping.
    ÚgmÚexample_inputsrÆ   c                 ó    •—  ‰| |‰¬¦  «        S )N)rÅ   r£   )rÈ   rÉ   rÄ   rÅ   s     €€r¥   Úwrappedz+_wrap_with_inductor_config.<locals>.wrapped  s   ø€ Øˆ{˜2˜~¸nÐMÑMÔMÐMr¤   rž   z	<wrapped>)r	   Úgetattrrž   Ú__wrapped__)rÄ   rÅ   rË   s   `` r¥   Ú_wrap_with_inductor_configrÎ   ø   si   øø€ ðN•Cð N­ð Nµð Nð Nð Nð Nð Nð Nð Nõ ˜{¨J¸ÑDÔD€GÔØ%€GÔØ€Nr¤   T)Úfrozenc                   ó$   — e Zd ZU eed<   eed<   dS )ÚAliasingInfoÚhas_aliasingÚmsgN)rž   rŸ   r    Úboolr¢   r¾   r£   r¤   r¥   rÑ   rÑ     s%   € € € € € € àÐÐÑØ	€H€H�H€H€Hr¤   rÑ   c                   óB   — e Zd ZU eed<   eed<   dZeedf         ed<   dS )ÚMutationInfoÚhas_mutationrÓ   r£   .Úmutated_input_indicesN)	rž   rŸ   r    rÔ   r¢   r¾   rØ   r¼   rº   r£   r¤   r¥   rÖ   rÖ     s@   € € € € € € àÐÐÑØ	€H€H�HØ-/Ð˜5  c œ?Ð/Ð/Ñ/Ð/Ð/r¤   rÖ   Útensors_with_sourcesÚstop_atc                 ó|  — |€t          ¦   «         }t          ¦   «         }g }| D ]=\  }}t          |t          j        ¦  «        r|j        }|�|                     |¦  «         Œ>|rY|                     ¦   «         }||v rŒ||v rŒ |                     |¦  «         |j        D ]\  }}|�|                     |¦  «         Œ|°Y|S )aÜ  Collect all grad_fns reachable from tensors' autograd graphs.

    Performs a DFS traversal and collects all visited grad_fns.
    Optionally stops traversal nodes in stop_at set. This signals the
    autograd.grad boundary.

    Args:
        tensors_with_sources: List of (tensor, source_name) tuples to start search from.
        stop_at: Optional set of grad_fns where traversal should stop (excluded from result).

    Returns:
        Set of all reachable grad_fns.
    )	ÚsetÚ
isinstanceÚtorchr   Úgrad_fnÚappendÚpopÚaddÚnext_functions)	rÙ   rÚ   ÚvisitedÚstackÚtensorÚ_rß   ÚnodeÚnext_fns	            r¥   Úcollect_reachable_grad_fnsrê     sè   € ð" €Ý‘%”%ˆå.1©e¬e€GØ-/€Eà)ð &ð &‰	ˆ�Ý�f�eœlÑ+Ô+ð 	&Ø”nˆGØÐ"Ø—’˜WÑ%Ô%Ð%øà
ð &Ø�yŠy‰{Œ{ˆØ�7ˆ?ˆ?Øð �7ˆ?ˆ?ØØ�Š�DÑÔÐØÔ-ð 	&ð 	&‰JˆG�QØÐ"Ø—’˜WÑ%Ô%Ð%øð ð &ð €Nr¤   c                  ó4   — t          j        t          ¦  «        S ©N)Útorchdynamo_loggingÚget_step_loggerÚlogr£   r¤   r¥   Ú_step_loggerrð   D  s   € åÔ.­sÑ3Ô3Ð3r¤   c                   óT   — e Zd ZU dZeed<   eej                 ed<   dZ	e
ed<   d	d„ZdS )
ÚGraphCompileReasonzOStores why a given output graph was compiled; i.e. what caused the graph break.ÚreasonÚ
user_stackTÚgraph_breakrÆ   Nc                 ó@   — | j         rt          j        | ¦  «         d S d S rì   )rõ   rt   rà   ©Úselfs    r¥   Ú__post_init__z GraphCompileReason.__post_init__S  s.   € ØÔð 	-ÝÔ& tÑ,Ô,Ð,Ð,Ð,ð	-ð 	-r¤   ©rÆ   N)rž   rŸ   r    Ú__doc__r¾   r¢   ÚlistÚ	tracebackÚFrameSummaryrõ   rÔ   rù   r£   r¤   r¥   rò   rò   I  s_   € € € € € € àYÐYà€K€K�KØ�YÔ+Ô,Ð,Ð,Ñ,ð €K�ÐÐÑð-ð -ð -ð -ð -ð -r¤   rò   Úrandom_callsc                 ó8   ‡ — dt           t                   fˆ fd„}|S )NrÆ   c                  ó   •— d„ ‰ D ¦   «         S )Nc                 ó&   — g | ]\  }}} ||i |¤Ž‘ŒS r£   r£   )Ú.0ÚfnÚargsÚkwargss       r¥   ú
<listcomp>zE_get_gen_rand_values_fn.<locals>._gen_rand_values.<locals>.<listcomp>Z  s.   € ÐIÐIÐIÑ(8¨¨D°&���DÐ#˜FÐ#Ð#ÐIÐIÐIr¤   r£   )rÿ   s   €r¥   Ú_gen_rand_valuesz1_get_gen_rand_values_fn.<locals>._gen_rand_valuesY  s   ø€ ØIÐI¸LÐIÑIÔIÐIr¤   )rü   r	   )rÿ   r  s   ` r¥   Ú_get_gen_rand_values_fnr	  X  s;   ø€ ðJ�d¥3œið Jð Jð Jð Jð Jð Jð Ðr¤   c                   ó�   ‡ — e Zd ZdZdeeej        j        f         ddfˆ fd„Z	defd„Z
deeej        j        f         ddfd„Zˆ xZS )ÚFakeRootModulez'Trick the constructor of fx.GraphModuleÚ
nn_modulesrÆ   Nc                 óž   •— t          ¦   «                              ¦   «          |                     ¦   «         D ]\  }}t          | ||¦  «         Œd S rì   )ÚsuperÚ__init__ÚitemsÚsetattr)rø   r  ÚkÚvÚ	__class__s       €r¥   r  zFakeRootModule.__init__b  sW   ø€ Ý‰Œ×ÒÑÔÐØ×$Ò$Ñ&Ô&ð 	 ð 	 ‰DˆAˆqÝ�D˜!˜QÑÔÐÐð	 ð 	 r¤   c                 ó   — dS )NzFakeRootModule(...)r£   r÷   s    r¥   Ú__repr__zFakeRootModule.__repr__g  s   € Ø$Ð$r¤   c                 ó\   — |                      ¦   «         D ]\  }}t          | ||¦  «         Œd S rì   )r  r  )rø   r  r  r  s       r¥   Úadd_nn_moduleszFakeRootModule.add_nn_modulesj  s@   € Ø×$Ò$Ñ&Ô&ð 	 ð 	 ‰DˆAˆqÝ�D˜!˜QÑÔÐÐð	 ð 	 r¤   )rž   rŸ   r    rû   Údictr¾   rÞ   ÚnnÚModuler  r  r  Ú__classcell__©r  s   @r¥   r  r  _  sª   ø€ € € € € Ø1Ð1ð  4¨¨U¬X¬_Ð(<Ô#=ð  À$ð  ð  ð  ð  ð  ð  ð
%˜#ð %ð %ð %ð %ð ¨¨c°5´8´?Ð.BÔ)Cð  Èð  ð  ð  ð  ð  ð  ð  ð  r¤   r  c                   ó\   — e Zd Zdeddfd„Zdej        j        deej	                 de
fd„ZdS )ÚWrapperBackendÚbackendrÆ   Nc                 ó   — || _         d S rì   )r   )rø   r   s     r¥   r  zWrapperBackend.__init__p  s   € Ø#*ˆŒˆˆr¤   rÈ   rÉ   c                 óx  — t          |¦  «        | _        || _        t          j        | j        ¦  «        }|                      ||¦  «        | _        | j        �| j        | j        j        u r| j        j        S t          j	        s| j        S 	  | j        j        t          |¦  «        Ž } | j        t          |¦  «        Ž }t          ||¦  «        r| j        |                      ¦   «          S t          d| › �¦  «        ‚# t          $ r t                               d¦  «         ‚ w xY w# |                      ¦   «          w xY w)Nzincorrect results of backend zerror in verify_correctness)rh   ÚrestorerÈ   ÚcopyÚdeepcopyr   Ú	candidateÚforwardr1   Úverify_correctnessrj   rz   ÚRuntimeErrorÚ	Exceptionrï   Ú	exception)rø   rÈ   rÉ   Úcopy_gmÚcorrectÚresults         r¥   Ú__call__zWrapperBackend.__call__s  s1  € õ )¨Ñ,Ô,ˆŒØˆŒÝ”- ¤Ñ(Ô(ˆØŸš g¨~Ñ>Ô>ˆŒàŒ>Ð! T¤^°t´w´Ð%FÐ%FØ”7”?Ð"åÔ(ð 	"Ø”>Ð!ð	Ø%�d”g”o¥|°NÑ'CÔ'CÐDˆGØ#�T”^¥\°.Ñ%AÔ%AÐBˆFõ �G˜VÑ$Ô$ð &Ø”~ð �LŠL‰NŒNˆNˆNõ ÐE¸tÐEÐEÑFÔFÐFøåð 	ð 	ð 	Ý�MŠMÐ7Ñ8Ô8Ð8Øð	øøøøð �LŠL‰NŒNˆNˆNøøøs   Â
A	C: Ã(C: Ã:&D Ä D# Ä#D9)rž   rŸ   r    r6   r  rÞ   r   ÚGraphModulerü   r   r5   r/  r£   r¤   r¥   r  r  o  sn   € € € € € ð+ 
ð +¨tð +ð +ð +ð +ðØ”(Ô&ðØ8<¸U¼\Ô8Jðà	ðð ð ð ð ð r¤   r  c                   óT   — e Zd ZU dZdZeed<   dZeed<   dZeed<   dZ	eed<   d
d	„Z
dS )ÚBytecodeTracingTimingsaX  Accumulated wall-clock time (ns) for major components during Dynamo
    bytecode tracing that are not related to variable trackers.  Each field
    is an int accumulator that gets bumped via ``time.time_ns()`` in the
    corresponding hot-path wrapper.  To add a new timer, add a field here
    and wire up the wrapper in the relevant function.r   Úget_fake_value_nsÚcreate_proxy_nsÚ!wrap_to_fake_tensor_and_record_nsÚvariable_builder_call_nsrÆ   Nc                 óx  — t          ¦   «         }i }t          j        | ¦  «        D ]ƒ}t          | |j        ¦  «        }|dk    rf|j                             d¦  «        }|dz  ||› d�<   t          j        |g ¦  «                             |dz  ¦  «         t          | |j        d¦  «         Œ„|r |j
        di |¤Ž dS dS )z‚Flush accumulated timings to the bytecode_tracing chromium event
        and to compilation_time_metrics, then reset all counters.r   Ú_nsg    eÍÍAÚ_time_sÚbytecode_tracingN)r:  )ro   ÚdataclassesÚfieldsrÌ   ÚnameÚremovesuffixrk   Ú
setdefaultrà   r  Útry_add_event_data)rø   Úchromium_logÚ
event_dataÚfÚns_valÚkeys         r¥   Úreport_and_resetz'BytecodeTracingTimings.report_and_reset£  sß   € õ 1Ñ2Ô2ˆàˆ
ÝÔ# DÑ)Ô)ð 	)ð 	)ˆAÝ˜T 1¤6Ñ*Ô*ˆFØ˜ŠzˆzØ”f×)Ò)¨%Ñ0Ô0�Ø.4°s©l�
˜c˜?˜?˜?Ñ+Ý(Ô3°C¸Ñ<Ô<×CÒCÀFÈSÁLÑQÔQÐQÝ˜˜aœf aÑ(Ô(Ð(øØð 	NØ+ˆLÔ+ÐMÐMÀ*ÐMÐMÐMÐMÐMð	Nð 	Nr¤   rú   )rž   rŸ   r    rû   r3  rº   r¢   r4  r5  r6  rF  r£   r¤   r¥   r2  r2  –  s   € € € € € € ð9ð 9ð Ð�sÐÐÑØ€O�SÐÐÑØ-.Ð% sÐ.Ð.Ñ.Ø$%Ð˜cÐ%Ð%Ñ%ðNð Nð Nð Nð Nð Nr¤   r2  c                   ó"  — e Zd ZU dZeed<   eed<   eej        j	                 ed<   e
e         ed<   eeef         ed<   eed<   eej        j        j                 ed<   ej        d	z  ed
<   ej        j        j        j        ed<   ej        j        ed<   eej        j                 ed<   dZeed<   dZeed<   dZeed<   d	Zed	z  ed<   e de!fd„¦   «         Z"e dej        j        fd„¦   «         Ze deej        j                 fd„¦   «         Z#dd„Z$d	S )ÚOutputGraphGuardsStatear  
    A base class containing fields that are considered "persistent" when we
    want to save all the important state for reconstrucing guards in a different
    process. Normally we don't need to add states here, but we may have to when
    the information is needed to serialize the guards, so the fields here are
    supposed to be serializable as a requirement.
    Úlocal_scopeÚglobal_scopeÚtorch_function_mode_stackÚguard_on_key_orderÚinput_source_to_sizes_stridesÚ
dual_levelÚfunctorch_layersNÚcurrent_deviceÚglobal_state_guardÚ_guardsÚ_aotautograd_guardsFÚexportÚskip_guards_checkÚexport_constraintsÚ%name_of_builtins_dict_key_in_fglobalsrÆ   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz%shape_env shouldn't be accessed from )ÚAssertionErrorÚtyper÷   s    r¥   Ú	shape_envz OutputGraphGuardsState.shape_envÓ  s   € åÐQÅTÈ$ÁZÄZÐQÐQÑRÔRÐRr¤   c                 ó   — | j         S rì   )rR  r÷   s    r¥   r   zOutputGraphGuardsState.guards×  s
   € àŒ|Ðr¤   c                 ó   — | j         S rì   )rS  r÷   s    r¥   Úaotautograd_guardsz)OutputGraphGuardsState.aotautograd_guardsÛ  s   € àÔ'Ð'r¤   c                 óÔ   — t          | j        | j        | j        | j        | j        | j        | j        | j        | j	        | j
        | j        | j        | j        | j        | j        ¬¦  «        S )N)rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rW  rT  rV  rR  rS  rU  )rH  rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rW  rT  rV  r   r^  rU  r÷   s    r¥   Údump_guards_statez(OutputGraphGuardsState.dump_guards_stateß  sp   € å%ØÔ(ØÔ*Ø&*Ô&DØ#Ô6Ø*.Ô*LØ”Ø!Ô2ØÔ.Ø#Ô6Ø26Ô2\Ø”;Ø#Ô6Ø”KØ $Ô 7Ø"Ô4ð
ñ 
ô 
ð 	
r¤   )rÆ   rH  )%rž   rŸ   r    rû   ÚScoper¢   rü   rÞ   Ú	overridesÚTorchFunctionModerÜ   r   r  r™   rº   Ú
_functorchÚpyfunctorchÚFuncTorchInterpreterÚdeviceÚ_CÚ_dynamor   ÚGlobalStateGuardrR  Ú	GuardsSetÚGuardEnvExprrT  rÔ   rU  rV  rW  r¾   Úpropertyr)   r[  r^  r`  r£   r¤   r¥   rH  rH  ´  sÏ  € € € € € € ðð ð ÐÐÑØÐÐÑà# E¤OÔ$EÔFÐFÐFÑFØ˜FœÐ#Ð#Ñ#à#'¨Ð0@Ð(@Ô#AÐAÐAÑAØ€O€O�OØ˜5Ô+Ô7ÔLÔMÐMÐMÑMØ”L 4Ñ'Ð'Ð'Ñ'ØœÔ(Ô/Ô@Ð@Ð@Ñ@ØŒ]Ô$Ð$Ð$Ñ$Ø˜eœmÔ8Ô9Ð9Ð9Ñ9ð €FˆDÐÐÑØ#Ð�tÐ#Ð#Ñ#Ø$Ð˜Ð$Ð$Ñ$Ø8<Ð)¨3°©:Ð<Ð<Ñ<àðS˜8ð Sð Sð Sñ „XðSð ð˜œÔ/ð ð ð ñ „Xðð ð( D¨¬Ô)CÔ$Dð (ð (ð (ñ „Xð(ð
ð 
ð 
ð 
ð 
ð 
r¤   rH  c                   óz  — e Zd ZU dZdZeed<    ee¬¦  «        Z	ee
ef         ed<    ee¬¦  «        Zee         ed<    ee¬¦  «        Zee
         ed<    ee¬¦  «        Zeeeeedf         f                  ed	<    ee¬¦  «        Zee         ed
<    ee¬¦  «        Zeee
eedf         f                  ed<   dS )ÚStackLocalsMetadatazf
    Stores metadata for a frame's stack and locals for the purposes of building resume functions
    r   Ú	num_stack©Údefault_factoryÚlocals_namesÚstack_null_idxesÚlocals_null_keys.Ústack_ctx_argsÚstack_ctx_idxes_origÚlocals_ctx_argsN)rž   rŸ   r    rû   rp  rº   r¢   Údc_fieldr  rs  r¾   rü   rt  ru  rv  r¼   r½   rw  rx  r£   r¤   r¥   ro  ro  ô  sR  € € € € € € ðð ð €IˆsÐÐÑØ#+ 8Øð$ñ $ô $€L�$�s˜C�x”.ð ð ñ ð #+ (¸4Ð"@Ñ"@Ô"@Ð�d˜3”iÐ@Ð@Ñ@Ø"* (¸4Ð"@Ñ"@Ô"@Ð�d˜3”iÐ@Ð@Ñ@Ø;C¸8Øð<ñ <ô <€N�D˜˜s E¨&°#¨+Ô$6Ð6Ô7Ô8ð ð ñ ð '/ h¸tÐ&DÑ&DÔ&DÐ˜$˜sœ)ÐDÐDÑDØ<D¸HØð=ñ =ô =€O�T˜%  U¨6°3¨;Ô%7Ð 7Ô8Ô9ð ð ñ ð ð r¤   ro  c                   ól  — e Zd ZU  ee¬¦  «        Zeeedz  f         ed<    ee¬¦  «        Z	eee
f         ed<   ej        j        j        Zej        j        j        ej        j        j        z  ed<    ee¬¦  «        Zeeeeej        j        j        ej        j        j        z  f         f         ed<   dS )ÚExportMetaDatarq  NÚgraph_input_idx_to_local_sourceÚoutput_return_typeÚout_specÚmodule_call_spec)rž   rŸ   r    ry  r  r|  rº   r   r¢   r}  rÀ   rÞ   ÚutilsÚ_pytreeÚ
_LEAF_SPECr~  ÚTreeSpecÚLeafSpecr  r¾   r£   r¤   r¥   r{  r{  
  s  € € € € € € ð
 AIÀØðAñ Aô AÐ# T¨#¨v¸©}Ð*<Ô%=ð ð ñ ð 7?°hÈtÐ6TÑ6TÔ6TÐ˜˜SÐ"2Ð2Ô3ÐTÐTÑTð 	ŒÔÔ&ð ˆeŒkÔ!Ô*¨U¬[Ô-@Ô-IÑIð ð ñ ð 	ˆ Ð&Ñ&Ô&ð �dØØˆS�%”+Ô%Ô.°´Ô1DÔ1MÑMÐMÔNð	Pôð 'ð 'ñ 'ð 'ð 'r¤   r{  rJ  c                 óN   — | d         }t          |t          ¦  «        s|j        }|S )NÚ__builtins__)rÝ   r  Ú__dict__)rJ  Ú
f_builtinss     r¥   Úget_builtins_dictr‰  !  s.   € ð ˜nÔ-€JÝ�j¥$Ñ'Ô'ð )ØÔ(ˆ
ØÐr¤   c                   óæ   ‡ — e Zd ZdZ	 	 	 	 	 ddedeeef         dz  dedz  dedz  dee	e
e         f         dz  de
e
e         dz           dz  d	dfˆ fd
„Zed	efd„¦   «         Zddeded	dfd„Zˆ xZS )ÚOutputGraphCommonaå  
    A minimal interface for full graph capture. It is intended to be
    the target of any tracer that feeds into backends.

    Currently dynamo's OutputGraph is the only known implementation
    of this interface, used by (aot) precompile and (strict) export.
    Importantly, that implementation also contains many other fields
    that are using during tracing but not included in this interface
    because they are not used once tracing is complete.

    It should be safe to assume that (caching) precompile also uses
    this interface.

    In the future, we want make_fx, used by (non-strict) export, to
    also implement this interface.

    The serializable part of this interface is OutputGraphGuardsState.
    We do not need to serialize other parts; however it will pay to
    be disciplined about what those other parts are, especially since
    we want other tracers to be able to meaningfully implement them,
    and we should generally try to cut them down when possible.
    NÚoutput_graph_guards_stateÚimport_sourcesr[  Úexport_metadataÚtracked_fakes_id_to_sourceÚoutput_pycoderÆ   c                 ó†  •— t          ¦   «                              |j        |j        |j        |j        |j        |j        |j        |j	        |j
        |j        |j        |j        |j        |j        |j        ¦  «         |pi | _        |pt%          ¦   «         | _        |pt)          ¦   «         | _        |pi | _        |pg | _        d S rì   )r  r  rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rW  r�  r)   Ú
_shape_envr{  rŽ  r�  r�  )rø   rŒ  r�  r[  rŽ  r�  r�  r  s          €r¥   r  zOutputGraphCommon.__init__M  sÔ   ø€ õ 	‰Œ×ÒØ%Ô1Ø%Ô2Ø%Ô?Ø%Ô8Ø%ÔCØ%Ô0Ø%Ô6Ø%Ô4Ø%Ô8Ø%Ô-Ø%Ô9Ø%Ô,Ø%Ô7Ø%Ô8Ø%ÔKñ	
ô 	
ð 	
ð$ -Ð2°ˆÔð $Ð1¥x¡z¤zˆŒØ.ÐBµ.Ñ2BÔ2BˆÔà&Ð,¨"ð 	Ô'ð +Ð0¨bˆÔÐÐr¤   c                 ó   — | j         S rì   )r’  r÷   s    r¥   r[  zOutputGraphCommon.shape_envu  s
   € àŒÐr¤   Ú ró   r  c                 ó   — t           ‚rì   )ÚNotImplementedError©rø   ró   r  s      r¥   Úbypass_packagez OutputGraphCommon.bypass_packagey  s
   € õ "Ð!r¤   )NNNNN©r”  )rž   rŸ   r    rû   rH  r  r¾   r)   r{  rº   rü   r   r  rm  r[  r	   r˜  r  r  s   @r¥   r‹  r‹  5  s3  ø€ € € € € ðð ð4 15Ø%)Ø15ØEIØ7;ð&1ð &1à#9ð&1ð ˜S #˜Xœ¨Ñ-ð&1ð ˜d‘?ð	&1ð
 (¨$Ñ.ð&1ð %)¨¨d°6¬lÐ):Ô$;¸dÑ$Bð&1ð ˜D œI¨Ñ,Ô-°Ñ4ð&1ð 
ð&1ð &1ð &1ð &1ð &1ð &1ðP ð˜8ð ð ð ñ „Xðð"ð " Sð "¸ð "Àð "ð "ð "ð "ð "ð "ð "ð "r¤   r‹  c                   ó  — e Zd ZU dZeed<   	 d˜dededz  ddd	ed
e	e
         dededededeej        j                 ded         deddfd„Zddœdedee         fd„Zdededefd„Zdededdfd„Zd™d„Zd™d„Zdefd„Z	 dšd ed!edeeej        j         f         fd"„Z!dej        j         fd#„Z"d™d$„Z#dee         dz  fd%„Z$	 d›d&e%d'ef         d(eed'f         d)eedz  d'f         dz  defd*„Z&d&e%g ef         ddfd+„Z'd™d,„Z(e)dœd.„¦   «         Z*e)dœd/„¦   «         Z+defd0„Z,	 	 	 	 d�d2„Z-d3Z.d4e/ddfd5„Z0e)dej        j1        fd6„¦   «         Z2e2j3        d7ej        j1        ddfd8„¦   «         Z2e)de4eej         f         fd9„¦   «         Z5e)de4ej6        ej7        f         fd:„¦   «         Z8e)de4e9j:        e;ej        j         d;f         f         fd<„¦   «         Z<d(ed=edej        j         fd>„Z=d(ed=edej        j6        fd?„Z>d(ed=eddfd@„Z?e@jA        	 d›dAeBdz  dBed-         dCedz  deCdD         fdE„¦   «         ZDe)dždF„¦   «         ZEe)dejF        jG        fdG„¦   «         ZHe)deIfdH„¦   «         ZJe)dejK        jL        fdI„¦   «         ZMe)de4eef         fdJ„¦   «         ZNe)deejK        jO                 fdK„¦   «         ZP	 d›dLe4eee%d'ef         ef         f         dz  ddfdM„ZQd�dN„ZRdŸdO„ZSe)dŸdP„¦   «         ZTdQedefdR„ZUde/fdS„ZVdefdT„ZWdefdU„ZXdVedejY        jZ        ez  fdW„Z[d dYedefdZ„Z\dYeddfd[„Z]e^d\edefd]„¦   «         Z_d^ed_edej         fd`„Z`daejY        jZ        ej7        z  ez  d\edbedefdc„Zad1ddeeeb         e4eef         f         fdd„Zcd1ddee/deee         edf         fdf„Ze	 d¡d1ddhefdee/deed         fdi„Zgd1ddjehddfdk„Zid1ddlee         djehdmeddf
dn„Zjd™do„Zkd¢dhed=eddfdq„Zlde4eee/ez           f         fdr„ZmdYedefds„Zne@jA        defdt„¦   «         Zod™du„Zpdvedw         d1dddfdx„Zqdvedw         d1dddfdy„Zrd1ddvee         dzesdeeeb         ee         dz  f         fd{„Zte)deej6                 fd|„¦   «         Zue)deev         fd}„¦   «         Zwd~ejx        dee7         deyfd€„Zzd~ejx        dee7         deyfd�„Z{de4eej        jx        f         fd‚„Z|dYedƒej        jx        defd„„Z}deej7                 fd…„Z~d™d†„Zd™d‡„Z€d™dˆ„Z�	 d›d!eeb         d‰ee         dz  ddfdŠ„Z‚dYed‹eƒj        dŒe4eef         ddfd�„Z„dYed7eddfdŽ„Z…d!ed7edefd�„Z†d!ed7edefd�„Z‡d™d‘„Zˆd’e%ejx        gdf         ddfd“„Z‰d”ej        j6        defd•„ZŠd–ejY        jZ        dQeddfd—„Z‹dS )£ÚOutputGrapha  
    Wrapper class to hold outputs of InstructionTranslator.  Mainly the
    generated fx.Graph.

    OutputGraph is 1:1 with a frame being processed. Each frame is associated
    with some root InstructionTranslator. When user code calls a function,
    we construct a InliningInstructionTranslator that continues to write into
    the root InstructionTranslator's OutputGraph.
    Úside_effectsFÚcode_optionsrÄ   NÚroot_txrŽ   rT  rV  Úframe_staterI  rJ  Úf_coderK  Úpackager�   Ú	one_graphrÆ   c                 óx
  — t                                | |||
t          ¦   «         i t          j        j        j        t          j        j         	                    ¦   «         t          j
        j        j        t          j        j        j        p't          j        j        j                             ¦   «         t          j                             ¦   «         g ¬¦  «         t+          | |¬¦  «        g| _        i | _        g | _        || _        || _        || _        g | _        t;          t<          ¦  «        | _        t          ¦   «         | _         |	j!        |	j"        |	j#        dœ| _$        d | _%        tM          ¦   «         | _'        d| _(        g | _)        tU          | j)        |ptV          j,        |ptV          j-        tV          j.        | j$        ¬¦  «        }dd l/mc m+} | 0                    d¬¦  «        5  t          j1         2                    |tg          | j        ¦  «        | j        ¬¦  «        }d d d ¦  «         n# 1 swxY w Y   ti          |¦  «        | _5        | j5        j6         7                    |	¦  «         | j%        | j5        _%        | j5        j6        | _6        tq          j9        ¦   «         | _:        |  ;                    ¦   «          tV          j<        �!dd	l=m>}  || j?        tV          j<        ¦  «         t�          jA        t„          ¦  «        | _C        i | _D        t‹          | ¦  «        | _F        i | _G        i | _H        t          ¦   «         | _I        i | _J        t—          jL        ¦   «         | _M        t�          tž          t¡          |¦  «        ¦  «        | _Q        g | _R        g | _S        d| _T        i | _U        d | _V        g | _W        || _X        || _Y        d | _Z        || _[        i | _\        g | _]        g | _^        d| __        i | _`        t          j         a                    ¦   «         | _b        d| _c        d| _d        t          ¦   «         | _e        t          i ¦  «        | _f        t          i ¦  «        | _g        |  h                    ¦   «          i | _i        g | _j        d | _k        g | _l        i | _m        i | _n        d | _o        d | _p        |  q                    ¦   «         | _r        tç          jt        ¦   «         | _u        tí          ¦   «         | _w        |  x                    ¦   «         | _y        i | _z        t÷          ¦   «         | _|        tû          ¦   «         | _~        i | _        d | _€        d S )
N)rL  rM  rN  rO  rP  rQ  rR  rS  )Ú	is_export)r³   r²   rµ   F)Útracked_fakesÚallow_scalar_outputsÚallow_dynamic_output_shape_opsÚ+prefer_deferred_runtime_asserts_over_guardsÚ	co_fieldsr   ©Ú(fake_tensor_allow_unsafe_data_ptr_access)r[  Úallow_non_fake_inputsrT  )Ú_wire_spec_assumptions)�rH  r  rÜ   rÞ   ÚautogradÚ
forward_adÚ_current_levelrd  re  Ú#retrieve_all_functorch_interpretersr€  Ú_deviceÚCURRENT_DEVICEri  Úconvert_frameÚinitial_global_staterh  r   rj  rR  rk  ÚSubgraphTracerÚtracersÚinput_source_to_varÚleaf_var_creation_orderrT  rV  rŸ  Úcleanup_hooksÚnextÚ_compile_id_counterÚ
compile_idÚinstalled_globalsr³   r²   rµ   r©  Úcudagraph_annotationrP   Úregion_trackerÚ_emit_debugger_breakpointr¥  r)   r1   Úcapture_scalar_outputsÚ capture_dynamic_output_shape_opsr¨  Útorch._functorch.configÚpatchÚ_subclassesÚFakeTensorModerÔ   r   Útracing_contextÚtraced_coderà   r   Úcurrent_compile_idÚdynamo_compile_idÚinit_ambient_guardsÚ_shapes_specÚtorch._dynamo.variables.builderr­  r[  ÚcollectionsÚdefaultdictrü   r�  Úparam_name_to_sourcerU   rœ  Úvariable_tracker_cacheÚmro_source_cacheÚguarded_mro_absent_keysÚsignature_cacheÚ	itertoolsÚcountÚunique_var_idr
   r§   r  r�  Úoutput_instructionsr�  Ú	timestampÚ_input_mutation_streamsÚ_last_checked_input_versionsÚregister_finalizer_fnsrÄ   rž  Úprofiler_stater¡  Úsource_to_user_stacksÚ_current_txÚcleanupsÚshould_exitÚunspec_variable_mapÚ_is_torch_function_mode_enabledÚtorch_function_mode_enabledÚtorch_function_subclass_inlinedÚ!has_user_defined_allowed_in_graphÚautograd_grad_consumed_grad_fnsÚnon_compliant_opsÚcompliant_custom_opsÚsave_global_stateÚ dynamo_flat_name_to_original_fqnrÿ   Úrandom_values_varÚpregraph_bytecodeÚsynthetic_source_ctor_infoÚbackward_stateÚbackward_state_proxyÚbackward_state_varÚ!install_builtins_dict_in_fglobalsrW  Ú
contextlibÚ	ExitStackÚcompiler_trace_stackr2  Úbytecode_tracing_timingsÚ+maybe_install_saved_tensors_hooks_subgraphsÚ"saved_tensors_hooks_subgraph_namesr�  r{  rŽ  r.   Ú"used_inlined_inbuilt_modules_namesÚattr_source_cacheÚ(_cached_replayed_side_effect_source_refs)rø   r�  rÄ   rž  rT  rV  rŸ  rI  rJ  r   rK  r¡  r¢  r[  Ú_configÚ	fake_moder­  s                    r¥   r  zOutputGraph.__init__�  sW  € õ 	×'Ò'ØØØØ%Ý"™uœuØ*,Ý”~Ô0Ô?Ý"Ô-Ô9×]Ò]Ñ_Ô_Ý œ;Ô.Ô=å$œ}Ô:ÔOð  :ÝŒxÔÔ&×7Ò7Ñ9Ô9å”M×+Ò+Ñ-Ô-Ø "ð 	(ñ 	
ô 	
ð 	
õ" ' t°vÐ>Ñ>Ô>Ð?ˆŒð CEˆÔ ð ?AˆÔ$ØˆŒØ"4ˆÔØ&ˆÔØ68ˆÔå#Õ$7Ñ8Ô8ˆŒå+.©5¬5ˆÔð
 ”~Ø!Ô-Ø$Ô3ð
ð 
ˆŒð BFˆÔ!å0Ñ2Ô2ˆÔØ/4ˆÔ&ð 13ˆÔåð Ô,à!*Ð!K­fÔ.KØ+4ð ,7ÝÔ6Ý8>Ô8jØ”nð
ñ 
ô 
ˆ	ð& 	2Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1à�]Š]ÀEˆ]ÑJÔJð 	ð 	ÝÔ)×8Ò8Ø#å&*¨4¬;Ñ&7Ô&7Ø”{ð	 9ñ ô ˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ 0>¸iÑ/HÔ/HˆÔØÔÔ(×/Ò/°Ñ7Ô7Ð7Ø48Ô4MˆÔÔ1ØÔ/Ô;ˆÔÝ3AÔ3TÑ3VÔ3VˆÔØ× Ò Ñ"Ô"Ð"õ ÔÐ*ØNÐNÐNÐNÐNÐNà"Ð" 4¤>µ6Ô3FÑGÔGÐGõ Ô#¥DÑ)Ô)ð 	Ô'ð ?AˆÔ!Ý'¨Ñ-Ô-ˆÔð FHˆÔ#ð KMˆÔõ
 >A¹U¼UˆÔ$à;=ˆÔÝ&œ_Ñ.Ô.ˆÔÝ)-­k½4ÀÑ;MÔ;MÑ)NÔ)NˆÔØ68ˆÔ Ø57ˆÔð ˆŒð KMˆÔ$ØCGˆÔ)ð OQˆÔ#ð /:ˆÔØˆŒð ;?ˆÔàˆŒð RTˆÔ"à<>ˆÔØ+-ˆŒØ ˆÔØKMˆÔ õ ,1¬8×+SÒ+SÑ+UÔ+UˆÔ(ð 05ˆÔ,ð 27ˆÔ.õ PSÉuÌuˆÔ,õ >AÀ¹W¼WˆÔõ ADÀBÁÄˆÔ!ð 	×ÒÑ Ô Ð ð ACˆÔ-ð ð 	Ôð '+ˆÔð 57ˆÔð ð 	Ô'ð ;=ˆÔØ;?ˆÔ!Ø.2ˆÔð ×2Ò2Ñ4Ô4ð 	Ô2õ %/Ô$8Ñ$:Ô$:ˆÔ!å(>Ñ(@Ô(@ˆÔ%ð ×<Ò<Ñ>Ô>ð 	Ô/ð
 /1ˆÔå-Ñ/Ô/ˆÔõ DNÁ<Ä<ˆÔ/àGIˆÔØPTˆÔ5Ð5Ð5s   Ç":H(È(H,È/H,©Úpopulate_export_metadatar   c          	      ó  — |s'| j         j        s| j        �t          | j        ¦  «        S ddlm} g }| j                              ¦   «         D �]­}t          |d¦  «        �r™|j        }t          |t          t          f¦  «        �rut          |t          ¦  «        �r t          |j        |¦  «        �r
|�r|j        €t          d¦  «        ‚|j        j                             ¦   «         D ]Ò\  }}i }|j                             ¦   «         D ]3\  }	}
|
                     ¦   «         ||	j                             ¦   «         <   Œ4ddgt          |                     ¦   «         ¦  «        k    r1t          dt          |                     ¦   «         ¦  «        › �¦  «        ‚|| j        j        |j                             ¦   «         <   ŒÓt          |t          ¦  «        rt          |j        |¦  «        s|                     |¦  «         �Œ¯d	„ |D ¦   «         S )
zKReturn Python-side effect sources that Dynamo replays outside the FX graph.Nr   )Ú_ExportModuleSpecTrackerDictÚmutation_typezvar._base_vt must not be NoneÚin_specr~  z7Expected specs keys to be ['in_spec', 'out_spec'], got c                 ó6   — g | ]}t          |j        ¦  «        ‘ŒS r£   )rW   Úsource)r  Úvars     r¥   r  zDOutputGraph.get_replayed_side_effect_source_refs.<locals>.<listcomp>ä  s#   € ÐUÐUÐU°sÕ& s¤zÑ2Ô2ÐUÐUÐUr¤   )rœ  Úid_to_variablerü  rü   Útorch.export._tracer  Ú_get_modified_varsÚhasattrr  rÝ   rT   rV   rŠ   rÂ   Ú_base_vtrY  r  Úas_python_constantÚvtÚkeysrŽ  r  rà   )rø   r   r  Úpotential_side_effectsr  Úmut_typer  r  ÚspecsÚk_specÚvals              r¥   Ú$get_replayed_side_effect_source_refsz0OutputGraph.get_replayed_side_effect_source_refs«  sH  € ð
 )ð	GàÔ%Ô4ð	Gð Ô=ÐIå˜ÔEÑFÔFÐFàDÐDÐDÐDÐDÐDà!#ÐØÔ$×7Ò7Ñ9Ô9ð )	;ñ )	;ˆCÝ�s˜OÑ,Ô,ñ (;ØÔ,�õ ØÕ8Õ:OÐPñô ñ $;õ " #Õ'>Ñ?Ô?ñ *ÅJØœ	Ð#?ñEô Eñ *ð 4ñ *Ø"œ|Ð3Ý&4Ð5TÑ&UÔ&UÐ Uð
 !$¤Ô 2× 8Ò 8Ñ :Ô :ð	*ð *ñ !Ø !Ø !ð
 )+ à34´7·=²=±?´?ð !&ð !&¡K F¨Cà(+×(>Ò(>Ñ(@Ô(@ð %*¨&¬)×*FÒ*FÑ*HÔ*HÑ$IÐ$Ið %.¨zÐ#:½dÀ5Ç:Â:Á<Ä<Ñ>PÔ>PÒ#PÐ#PÝ*8Ø(vÕbfÐgl×gqÒgqÑgsÔgsÑbtÔbtÐ(vÐ(vñ+&ô +&ð %&ð %*ð !%Ô 4Ô Eà$%¤D×$;Ò$;Ñ$=Ô$=ñ!"ð !"õ # 3Õ(?Ñ@Ô@ð;å& s¤yÐ2NÑOÔOð;ð /×5Ò5°cÑ:Ô:Ð:ùàUÐUÐ>TÐUÑUÔUÐUr¤   ÚbaseÚpathc                 ó*  — |                      d¦  «        }||d         f}|| j        vrt          ||d         ¦  «        | j        |<   | j        |         }|dd …         D ]4}||f}|| j        vrt          ||¦  «        | j        |<   | j        |         }Œ5|S )Nú.r   r0   )Úsplitrû  rX   )rø   r  r  ÚpartsrE  r.  Úparts          r¥   Úget_chained_attr_sourcez#OutputGraph.get_chained_attr_sourceæ  s®   € Ø—
’
˜3‘”ˆØ�U˜1”XÐˆØ�dÔ,Ð,Ð,Ý*4°T¸5À¼8Ñ*DÔ*DˆDÔ" 3Ñ'ØÔ'¨Ô,ˆØ˜!˜"˜"”Ið 	1ð 	1ˆDØ˜4�.ˆCØ˜$Ô0Ð0Ð0Ý.8¸ÀÑ.FÔ.F�Ô& sÑ+ØÔ+¨CÔ0ˆFˆFØˆr¤   rb   c                 óØ   — |                      dd¦  «        }t          |¦  «        dk    rt          ||¦  «        S |                      ||d         ¦  «        }t          ||d         ¦  «        S )Nr  r0   r   )ÚrsplitÚlenrb   r  )rø   r  r  r  Úintermediate_bases        r¥   Úget_chained_param_buffer_sourcez+OutputGraph.get_chained_param_buffer_sourceó  se   € ð —’˜C Ñ#Ô#ˆÝˆu‰:Œ:˜Š?ˆ?Ý$ T¨4Ñ0Ô0Ð0Ø ×8Ò8¸¸uÀQ¼xÑHÔHÐÝ Ð!2°E¸!´HÑ=Ô=Ð=r¤   c                 ó>  — | j                              t          dd¬¦  «        ¦  «         t          j        rgddlm} | j        € |¦   «         | _        | j        j	        }| j         
                    |j        |j        |j        t          j        ¦   «         ¦  «         d S d S )Nr:  T©Úlog_pt2_compile_eventr   r‹   )rö  Úenter_contextrn   r1   Údynamo_profilerÚtorch._dynamo.dynamo_profilerrŒ   rÞ  rž  r   Úpushr³   r²   rµ   ÚtimeÚtime_ns)rø   rŒ   Úcodes      r¥   Úmark_bytecode_tracing_startz'OutputGraph.mark_bytecode_tracing_startü  sÁ   € ØÔ!×/Ò/ÝØ"Ø&*ðñ ô ñ	
ô 	
ð 	
õ Ô!ð 	ØIÐIÐIÐIÐIÐIàÔ"Ð*Ø&9Ð&9Ñ&;Ô&;�Ô#Ø”<Ô&ˆDØÔ×$Ò$Ø”ØÔ ØÔ#Ý”‘”ñ	ô ð ð ð ð	ð 	r¤   c                 óx  — | j                              ¦   «          | j                             ¦   «          t          j        rù| j        �ôddlm} | j         	                    ¦   «         }t          j        ¦   «         }|�u||j        z
  }||j        z
  } ||j        |j        |j        ||t#          | j        j        j        ¦  «        dd d d |j        d¬¦  «        }| j                             |¦  «         d }t/          t          j        t0          ¦  «        rt          j        }| j                             |¦  «         d S d S d S )Nr   )ÚFunctionTraceTimingr£   )Ú	func_nameÚfilenameÚfirstlinenoÚ
cumtime_nsÚ
tottime_nsÚbytecode_countÚinline_depthÚcaller_func_nameÚcaller_filenameÚcaller_firstlinenoÚis_primitive_callÚ
call_stack)r÷  rF  rö  Úcloser1   r'  rÞ  r(  r/  rá   r*  r+  Ústart_time_nsÚchild_time_nsr0  r1  r2  r   rž  r   r®   r:  Úrecord_timingrÝ   r¾   Ú
dump_stats)rø   r/  Ústack_entryÚtrace_end_nsr3  r4  ÚtimingÚoutput_files           r¥   Úmark_bytecode_tracing_stopz&OutputGraph.mark_bytecode_tracing_stop  sQ  € ØÔ%×6Ò6Ñ8Ô8Ð8ØÔ!×'Ò'Ñ)Ô)Ð)åÔ!ð 	8 dÔ&9Ð&EØIÐIÐIÐIÐIÐIàÔ-×1Ò1Ñ3Ô3ˆKÝœ<™>œ>ˆLØÐ&Ø)¨KÔ,EÑE�
Ø'¨+Ô*CÑC�
Ø,Ð,Ø)Ô3Ø(Ô1Ø +Ô 7Ø)Ø)Ý#& t¤|Ô':Ô'BÑ#CÔ#CØ!"Ø%)Ø$(Ø'+Ø&1Ô&CØ!ðñ ô �ð Ô#×1Ò1°&Ñ9Ô9Ð9ð ˆKÝ�&Ô0µ#Ñ6Ô6ð 5Ý$Ô4�ØÔ×*Ò*¨;Ñ7Ô7Ð7Ð7Ð7ð9	8ð 	8Ð&EÐ&Er¤   c                 óV   — t          | j        ¦  «        }|                      d|¦  «        S )NÚ__builtins_dict__)r‰  rJ  Úinstall_global)rø   rˆ  s     r¥   ró  z-OutputGraph.install_builtins_dict_in_fglobals3  s)   € Ý& tÔ'8Ñ9Ô9ˆ
Ø×"Ò"Ð#6¸
ÑCÔCÐCr¤   ÚhookÚprefixc                 óª   — |› t          | j        ¦  «        › �}|| j        v rt          d|› d�¦  «        ‚|| j        |<   ||                      ¦   «         fS )Nzbackward_state hook name 'z' already registered)r   rð  rY  Úget_backward_state_proxy)rø   rI  rJ  r=  s       r¥   Úadd_backward_state_hookz#OutputGraph.add_backward_state_hook7  ss   € ð Ð4�#˜dÔ1Ñ2Ô2Ð4Ð4ˆØ�4Ô&Ð&Ð&Ý ØG¨TÐGÐGÐGñô ð ð %)ˆÔ˜DÑ!Ø�T×2Ò2Ñ4Ô4Ð4Ð4r¤   c                 óX  — | j         €�| j        rt          dddg ¬¦  «         t          ¦   «         }| j                             dt          |¦  «        |t          ¦   «         ¬¦  «        | _         t          ¦   «         | j         j	        j
        d<   |                      ¦   «         | _        | j         S )Nz&backward_state does not support exportr”  z3Compiled autograd doesn't work with `torch.export`.©Úgb_typeÚcontextÚexplanationÚhintsÚdynamo_backward_state©r  Úgrapharg)rñ  rT  rI   r%   Úroot_tracerÚcreate_graph_inputrZ  rY   r|   rè   ÚmetaÚnew_varrò  )rø   Úexample_values     r¥   rL  z$OutputGraph.get_backward_state_proxyB  s³   € ØÔ$Ð,ØŒ{ð ÝØDØØ UØð	ñ ô ð õ *™OœOˆMØ(,Ô(8×(KÒ(KØ'Ý�]Ñ#Ô#ØÝ*Ñ,Ô,ð	 )Lñ )ô )ˆDÔ%õ ?TÑ>UÔ>UˆDÔ%Ô*Ô/°
Ñ;Ø&*§l¢l¡n¤nˆDÔ#ØÔ(Ð(r¤   c                 ó°  — | j                              t          ¦   «                              t          j        ¦  «        ¦  «         | j                              t          ¦   «                              t          j        ¦  «        ¦  «         | j                              t          ¦   «                              t          j        ¦  «        ¦  «         | j                              t          ¦   «                              t          j	        ¦  «        ¦  «         | j                              t          ¦   «                              t          j
        ¦  «        ¦  «         | j                              t          ¦   «                              t          j        ¦  «        ¦  «         t          j        j                             ¦   «         }|�C| j                              t          ¦   «                              t          j        ¦  «        ¦  «         t          j        j        j        sE| j                              t          ¦   «                              t          j        ¦  «        ¦  «         d S d S rì   )r   râ   rc   Ú
make_guardrQ   Ú	SHAPE_ENVr]   ÚDETERMINISTIC_ALGORITHMSÚ	GRAD_MODEÚDEFAULT_DEVICEÚGLOBAL_STATEÚTORCH_FUNCTION_STATErÞ   rh  rd  Úpeek_interpreter_stackÚFUNCTORCH_STACK_MATCHri  Úcompiled_autogradÚin_compiled_autograd_regionÚAUTOGRAD_SAVED_TENSORS_HOOKS)rø   Úcis     r¥   rÌ  zOutputGraph.init_ambient_guardsW  sÅ  € ð 	Œ�Š�Ñ(Ô(×3Ò3µLÔ4JÑKÔKÑLÔLÐLàŒ�ŠÝÑÔ×*Ò*­<Ô+PÑQÔQñ	
ô 	
ð 	
ð 	Œ�ŠÕ)Ñ+Ô+×6Ò6µ|Ô7MÑNÔNÑOÔOÐOàŒ�ŠÕ)Ñ+Ô+×6Ò6µ|Ô7RÑSÔSÑTÔTÐTàŒ�ŠÕ)Ñ+Ô+×6Ò6µ|Ô7PÑQÔQÑRÔRÐRØŒ�ŠÝÑÔ×*Ò*­<Ô+LÑMÔMñ	
ô 	
ð 	
õ ŒXÔ ×7Ò7Ñ9Ô9ˆØˆ>ØŒK�OŠOÝ!Ñ#Ô#×.Ò.­|Ô/QÑRÔRñô ð õ Œ}Ô.ÔJð 	ØŒK�OŠOÝ!Ñ#Ô#×.Ò.Ý Ô=ñô ñô ð ð ð ð	ð 	r¤   c                 ó:  — t           j        j        j        rd S t           j        j        j        j        }t           j        j        j        j        } |¦   «         } ||¦  «        sd S |\  }}|  	                    dt           j
                             | j        |j        ¦  «        ¦  «        }|  	                    dt           j
                             | j        |j        ¦  «        ¦  «        }|dk    rt          d|› d�¦  «        ‚|dk    rt          d|› d�¦  «        ‚||gS )NÚsaved_tensors_hooks_packÚsaved_tensors_hooks_unpackÚsaved_tensors_hooks_pack_0zEExpected pack_subgraph_name to be 'saved_tensors_hooks_pack_0', got 'ú'Úsaved_tensors_hooks_unpack_0zIExpected unpack_subgraph_name to be 'saved_tensors_hooks_unpack_0', got ')rÞ   ri  rf  rg  rd  Ú_aot_autogradr€  Útop_saved_tensors_hooksÚ"saved_tensors_hooks_are_inlineableÚinstall_subgraphr   r0  r  r‘   rY  )rø   Ú	get_hooksÚare_inline_hooksÚhooksÚpack_gmÚ	unpack_gmÚpack_subgraph_nameÚunpack_subgraph_names           r¥   rø  z7OutputGraph.maybe_install_saved_tensors_hooks_subgraphsu  s?  € ÝŒ=Ô*ÔFð 	Ø�4åÔ$Ô2Ô8ÔPˆ	åÔÔ*Ô0ÔSð 	ð �	‘”ˆØÐ Ñ&Ô&ð 	Ø�4ð #Ñˆ�Ø!×2Ò2Ø&ÝŒH× Ò  ¤°'´-Ñ@Ô@ñ
ô 
Ðð  $×4Ò4Ø(ÝŒH× Ò  ¤°)´/ÑBÔBñ 
ô  
Ðð Ð!=Ò=Ð=Ý ØmÐXjÐmÐmÐmñô ð ð  Ð#AÒAÐAÝ ØsÐ\pÐsÐsÐsñô ð ð #Ð$8Ð9Ð9r¤   r  .r  Úctor_arg_sourcesc                 ó  ‡‡—  ‰|Ž }|                       ¦   «         }t          | j        ¦  «        Š‰                     ˆˆfd„¦  «         |r.‰                     d„ t          ||¦  «        D ¦   «         ¦  «         n2‰                     t          t          j        j	        |¦  «        ¦  «         ‰ 
                    t          |¦  «        d¦  «         ‰                     |¦  «         | j                             ‰                     ¦   «         ¦  «         t!          |¦  «        }‰||f| j        |<   t%          j        | j        ||¦  «        }|                     ¦   «         }t+          j        ¦   «         j        j                             |¦  «         |S )z]
        call fn(*args) before the graph runs and turn the result into a fake input.
        c                  óD   •— ‰                       ‰j        ‰j        ¦  «        S rì   )Úload_import_fromrŸ   rž   )Úcgr  s   €€r¥   ú<lambda>z3OutputGraph.synthetic_graph_input.<locals>.<lambda>¥  s!   ø€ �B×'Ò'Ø”Ø”ñô € r¤   c              3   ób   K  — | ]*\  }}|�|nt           j                             |¦  «        V — Œ+d S rì   )r4   ÚConstantVariableÚcreate)r  r  Úsrcs      r¥   ú	<genexpr>z4OutputGraph.synthetic_graph_input.<locals>.<genexpr>«  sS   è è € ð ð á�C˜ð ���­IÔ,F×,MÒ,MÈcÑ,RÔ,Rðð ð ð ð ð r¤   F)rZ  rC   rž  Úadd_push_nullÚforeachÚzipÚmapr4   r‚  rƒ  Úcall_functionr   Ústorerî  ÚextendÚget_instructionsrd   rï  r‚   ÚbuildÚrealizer   ÚgetÚguards_contextÚdynamo_guardsÚremove_guards_with_source)	rø   r  r  r{  r[  Úvarnamer  r.  r  s	    `      @r¥   Úsynthetic_graph_inputz!OutputGraph.synthetic_graph_input˜  s˜  øø€ ð ˜˜D˜	ˆØ—,’,‘.”.ˆÝ�t”|Ñ$Ô$ˆØ
×Òðð ð ð ð ñ	
ô 	
ð 	
ð ð 	EØ�JŠJð ð å # DÐ*:Ñ ;Ô ;ðñ ô ñ ô ð ð ð
 �JŠJ•s�9Ô5Ô<¸dÑCÔCÑDÔDÐDØ
×Ò�˜T™œ EÑ*Ô*Ð*Ø
�Š�ÑÔÐØÔ×%Ò% b×&9Ò&9Ñ&;Ô&;Ñ<Ô<Ð<Ý% gÑ.Ô.ˆØ35°tÐ=MÐ2NˆÔ'¨Ñ/Ý Ô& t¤|°]ÀFÑKÔKˆà—’Ñ!Ô!ˆÝÔÑÔÔ+Ô9×SÒSØñ	
ô 	
ð 	
ð ˆr¤   c                 ó:   — | j                              |¦  «         d S rì   )rº  rà   )rø   r  s     r¥   Úadd_cleanup_hookzOutputGraph.add_cleanup_hook¾  s   € ØÔ×!Ò! "Ñ%Ô%Ð%Ð%Ð%r¤   c                 óz   — t          | j        ¦  «        D ]} |¦   «          Œ| j                             ¦   «          d S rì   )Úreversedrº  Úclear)rø   rI  s     r¥   Úcall_cleanup_hookszOutputGraph.call_cleanup_hooksÁ  sD   € Ý˜TÔ/Ñ0Ô0ð 	ð 	ˆDØˆD‰FŒFˆFˆFØÔ× Ò Ñ"Ô"Ð"Ð"Ð"r¤   r¶  c                 ó   — | j         d         S ©Nr   ©r·  r÷   s    r¥   rW  zOutputGraph.root_tracerÆ  s   € àŒ|˜AŒÐr¤   c                 ó   — | j         d         S ©Néÿÿÿÿrž  r÷   s    r¥   Úcurrent_tracerzOutputGraph.current_tracerÊ  s   € àŒ|˜BÔÐr¤   c                 ó2   — t          | j        ¦  «        dk    S )Nr0   )r   r·  r÷   s    r¥   Úis_root_tracerzOutputGraph.is_root_tracerÎ  s   € å�4”<Ñ Ô  AÒ%Ð%r¤   Útxc                 óZ  — t          |d¦  «        sdS |j                             ¦   «         sdS | j        }| j        €&t          t          |j        ¦  «        ¦  «        | _        |j                             ¦   «         }d}|j	        j
        D ]¡}|j        dk    r dS |j                             d¦  «        }t          |t          j        ¦  «        sŒE| j                             |¦  «        }|j        }|�4||k    r.|| j        vrt'          j        ¦   «         | j        |<   || j        |<   |dz  }Œ¢dS )z‘Record which stream index has input mutations by comparing current
        tensor versions against the versions captured at graph input creation.Úsymbolic_stream_stateNr   Úplaceholderr[  r0   )r  r§  Úin_stream_contextrW  rÜ  r  Ú	enumerateÚ_input_versions_at_beginningÚcur_stream_idr‘   ÚnodesÚoprY  r�  rÝ   rÞ   r   Ú_versionrÛ  r   Úextract_stack)	rø   r¥  ÚtracerÚcur_stream_indexÚ	input_idxrè   r[  Úprev_versionÚcur_versions	            r¥   Ú&check_input_mutation_on_current_streamz2OutputGraph.check_input_mutation_on_current_streamÒ  sS  € õ
 �rÐ2Ñ3Ô3ð 	ØˆFØÔ'×9Ò9Ñ;Ô;ð 	ØˆFàÔ!ˆØÔ,Ð4Ý04Ý˜&Ô=Ñ>Ô>ñ1ô 1ˆDÔ-ð Ô3×AÒAÑCÔCÐØˆ	Ø”LÔ&ð 	ð 	ˆDØŒw˜-Ò'Ð'Ø��Ø œIŸMšM¨/Ñ:Ô:ˆMÝ˜m­U¬\Ñ:Ô:ð ØØÔ<×@Ò@ÀÑKÔKˆLØ'Ô0ˆKØÐ'¨K¸,Ò,FÐ,FØ#¨4Ô+GÐGÐGå&Ô4Ñ6Ô6ð Ô0Ð1AÑBð @K�Ô1°)Ñ<Ø˜‰NˆIˆIð	ð 	r¤   a~  To fix this, either:
  1. Move the input mutation after the event.record() call.
  2. Record the event outside the compiled region:
       compiled_fn(x)
       event.record(stream)  # after torch.compile returns
  3. Insert a graph break before recording:
       torch._dynamo.graph_break()
       event.record(stream)
  4. Record the event on a stream that has no input mutations.Ústream_indexc                 ó,  — || j         vrdS | j         |         }t          j        ¦   «         }dd                     |                     ¦   «         ¦  «        › dd                     |                     ¦   «         ¦  «        › d�| j        z   }t          |¦  «        ‚)uÍ   Error if an event is being recorded on a stream that already has
        an input mutation. Called at record time so ordering is naturally
        respected â€” records before mutations won't trigger this.Na  An event was recorded on a stream where a graph input was previously mutated. The input mutation is applied via copy_() in the runtime epilogue after the graph executes, so the event would not capture the mutation, leading to incorrect synchronization.

Input mutation occurred here:
r”  z
Event record occurred here:
ú
)rÛ  r   r°  ÚjoinÚformatÚ_EVENT_INPUT_MUTATION_FIXr)  )rø   r·  Úmutation_stackÚrecord_stackrÓ   s        r¥   Ú'check_event_record_after_input_mutationz3OutputGraph.check_event_record_after_input_mutation   s­   € ð ˜tÔ;Ð;Ð;ØˆFàÔ5°lÔCˆÝ%Ô3Ñ5Ô5ˆð2ð �wŠw�~×,Ò,Ñ.Ô.Ñ/Ô/ð2ð 2ð �wŠw�|×*Ò*Ñ,Ô,Ñ-Ô-ð2ð 2ð 2ð 59Ô4RñSð 	õ ˜3ÑÔÐr¤   c                 ó   — | j         j        S rì   ©r¢  r‘   r÷   s    r¥   r‘   zOutputGraph.graph  s   € àÔ"Ô(Ð(r¤   rÂ   c                 ó   — || j         _        d S rì   rÁ  )rø   rÂ   s     r¥   r‘   zOutputGraph.graph  s   € à$)ˆÔÔ!Ð!Ð!r¤   c                 ó   — | j         j        S rì   )r¢  Úinput_name_to_proxyr÷   s    r¥   rÄ  zOutputGraph.input_name_to_proxy   s   € àÔ"Ô6Ð6r¤   c                 ó   — | j         j        S rì   )r¢  Úreal_value_cacher÷   s    r¥   rÆ  zOutputGraph.real_value_cache$  s   € àÔ"Ô3Ð3r¤   Ú	LazyProxyc                 ó   — | j         j        S rì   )r¢  Úbound_symbolsr÷   s    r¥   rÉ  zOutputGraph.bound_symbols(  s   € àÔ"Ô0Ð0r¤   r  c                 ó&   —  | j         j        |i |¤ŽS rì   )r¢  Úcreate_proxy©rø   r  r  s      r¥   rË  zOutputGraph.create_proxy2  s   € Ø/ˆtÔ"Ô/°Ð@¸Ð@Ð@Ð@r¤   c                 ó&   —  | j         j        |i |¤ŽS rì   )r¢  Úcreate_noderÌ  s      r¥   rÎ  zOutputGraph.create_node5  ó   € Ø.ˆtÔ"Ô.°Ð?¸Ð?Ð?Ð?r¤   c                 ó&   —  | j         j        |i |¤ŽS rì   )r¢  Úremove_noderÌ  s      r¥   rÑ  zOutputGraph.remove_node8  rÏ  r¤   Úsource_targetÚprior_tracerÚdescription)r¶  NNc              #   óâ  K  — t          ¦   «         }	 |r|j        | j        urt          d¦  «        ‚|                     ¦   «          |r|n"t          | | j        || j        j        |¬¦  «        }| j                             |¦  «         |V — | 	                    d d d ¦  «         | j         
                    ¦   «          d S # | 	                    d d d ¦  «         | j         
                    ¦   «          w xY w)NzBprior_tracer.parent must be the current tracer to preserve lineage)ÚparentrÒ  r¤  rÔ  )rD   rÖ  r¢  rY  Ú	__enter__r¶  r¤  r·  rà   Ú__exit__rá   )rø   rÒ  rÓ  rÔ  Únew_scope_ctxr±  s         r¥   Ú	subtracerzOutputGraph.subtracer;  s  è è € õ (Ñ)Ô)ˆð	Øð àÔ&¨dÔ.AÐAÐAÝ(Ø\ñô ð ð ×#Ò#Ñ%Ô%Ð%ð  ð��å#ØØÔ.Ø"/Ø"Ô1Ô;Ø +ðñ ô ð ð ŒL×Ò Ñ'Ô'Ð'ØˆLˆLˆLà×"Ò" 4¨¨tÑ4Ô4Ð4ØŒL×ÒÑÔÐÐÐøð ×"Ò" 4¨¨tÑ4Ô4Ð4ØŒL×ÒÑÔÐÐøøøs   ’A8B< Â<2C.c                 ó   — | S rì   r£   r÷   s    r¥   ÚoutputzOutputGraph.output\  s   € àˆr¤   c                 óP   — | j         j        €t          d¦  «        ‚| j         j        S )Nú*tracing_context.fake_mode must not be None)rÈ  rþ  rY  r÷   s    r¥   rþ  zOutputGraph.fake_mode`  s)   € àÔÔ)Ð1Ý Ð!MÑNÔNÐNØÔ#Ô-Ð-r¤   c                 óš   — | j         j        €t          d¦  «        ‚| j         j        j        €t          d¦  «        ‚| j         j        j        S )NrÞ  z4tracing_context.fake_mode.shape_env must not be None)rÈ  rþ  rY  r[  r÷   s    r¥   r[  zOutputGraph.shape_envf  sJ   € àÔÔ)Ð1Ý Ð!MÑNÔNÐNØÔÔ)Ô3Ð;Ý Ð!WÑXÔXÐXØÔ#Ô-Ô7Ð7r¤   c                 ó$   — | j         j        j        S rì   )rÈ  r‘  r’  r÷   s    r¥   r   zOutputGraph.guardsn  s   € àÔ#Ô2Ô@Ð@r¤   c                 ó$   — | j         j        j        S rì   )rÈ  Úmodule_contextr  r÷   s    r¥   r  zOutputGraph.nn_modulesr  s   € àÔ#Ô2Ô=Ð=r¤   c                 ó$   — | j         j        j        S rì   )rÈ  r‘  r^  r÷   s    r¥   r^  zOutputGraph.aotautograd_guardsv  s   € àÔ#Ô2ÔEÐEr¤   Úoutc                 óB  — t          t          t          t          t          dt
          f         t          f         f         |�|n| j        j        j	        ¦  «        }t          j        t          j        ¦   «         f|d<   t          j                             ¦   «         x}r|j        nd}t!          j        t          j        |¦  «        t          j        |¦  «        f|d<   t!          j        t          j        d¦  «        t          j        d¦  «        f|d<   t!          j        t          j        |¦  «        t          j        |¦  «        f|d<   t!          j        t          j        d¦  «        t          j        d¦  «        f|d	<   t          j        t          j        ¦   «         f|d
<   dS )zc
        Saves to out if it is provided. Else saves to the tracing context's global_state.
        .NÚgrad_enabledÚcudaÚautocast_enabledÚcpuÚautocast_cpu_enabledÚautocast_gpu_dtypeÚautocast_cpu_dtypeÚautocast_cache_enabled)r
   r  r¾   r¼   r   r	   rÔ   rÈ  Úglobal_contextÚglobal_staterÞ   Úset_grad_enabledÚis_grad_enabledÚacceleratorÚcurrent_acceleratorrZ  Ú	functoolsÚpartialÚset_autocast_enabledÚis_autocast_enabledÚset_autocast_dtypeÚget_autocast_dtypeÚset_autocast_cache_enabledÚis_autocast_cache_enabled)rø   rä  rï  ÚaccÚgpu_types        r¥   rë  zOutputGraph.save_global_statez  sz  € õ Ý••e�H S­# XÔ.µÐ4Ô5Ð5Ô6ð �?ð �àÔ)Ô8ÔEñ
ô 
ˆõ ).Ô(>ÅÔ@UÑ@WÔ@WÐ'Xˆ�^Ñ$õ !&Ô 1× EÒ EÑ GÔ GÐG˜ÐTˆCŒHˆHÈfð 	õ Ô�eÔ8¸(ÑCÔCÝÔ% hÑ/Ô/ð,
ˆÐ'Ñ(õ
 Ô�eÔ8¸%Ñ@Ô@ÝÔ% eÑ,Ô,ð0
ˆÐ+Ñ,õ
 Ô�eÔ6¸ÑAÔAÝÔ$ XÑ.Ô.ð.
ˆÐ)Ñ*õ
 Ô�eÔ6¸Ñ>Ô>ÝÔ$ UÑ+Ô+ð.
ˆÐ)Ñ*õ
 Ô,ÝÔ+Ñ-Ô-ð2
ˆÐ-Ñ.Ð.Ð.r¤   c                 ó:   — | j                              |¦  «         d S rì   )rà  rà   )rø   r¥  s     r¥   Úpush_txzOutputGraph.push_tx£  s   € ØÔ×Ò Ñ#Ô#Ð#Ð#Ð#r¤   c                 ó4   — | j                              ¦   «         S rì   )rà  rá   r÷   s    r¥   Úpop_txzOutputGraph.pop_tx¦  s   € ØÔ×#Ò#Ñ%Ô%Ð%r¤   c                 ó8   — | j         s| j        n| j         d         S r   )rà  rž  r÷   s    r¥   Ú
current_txzOutputGraph.current_tx©  s   € à#'Ô#3ÐMˆtŒ|ˆ|¸Ô9IÈ"Ô9MÐMr¤   r  c                 ó^   — |                      | j        j        | j        j        dœi i ¦  «        S )zî
        Resolve the runtime value a Source points to using root_tx's frame.

        Useful to inspect the python object associated with the source during
        debugging. Will also be used by invoke subgraph caching later on.
        )ÚGÚL)Ú	get_valuerž  Ú	f_globalsÚf_locals)rø   r  s     r¥   Úresolve_source_valuez OutputGraph.resolve_source_value­  s7   € ð ×ÒØ”,Ô(¨t¬|Ô/DÐEÐEØØñ
ô 
ð 	
r¤   c                 ó*   — t          | j        ¦  «        S rì   )rl   r‘   r÷   s    r¥   rl   zOutputGraph.count_callsº  s   € Ý˜4œ:Ñ&Ô&Ð&r¤   c                 óV   — t          t          | j        j        ¦  «        ¦  «        dk    S r�  )r   rü   r‘   r­  r÷   s    r¥   Úis_empty_graphzOutputGraph.is_empty_graph½  s"   € Ý•4˜œ
Ô(Ñ)Ô)Ñ*Ô*¨aÒ/Ð/r¤   c                 óP   — t          d„ | j        j        D ¦   «         ¦  «        dk    S )Nc                 ó(   — g | ]}|j         d k    ¯|‘ŒS )rÜ  ©r®  ©r  Úxs     r¥   r  z+OutputGraph.has_outputs.<locals>.<listcomp>Á  s$   € ÐDÐDÐD˜!°1´4¸8Ò3CÐ3C�AÐ3CÐ3CÐ3Cr¤   r   )r   r‘   r­  r÷   s    r¥   Úhas_outputszOutputGraph.has_outputsÀ  s)   € ÝÐDÐD˜tœzÔ/ÐDÑDÔDÑEÔEÈÒIÐIr¤   r  c                 óÂ   — |st          d¦  «        ‚| j        }|                     d¦  «        D ]0}t          |t          ¦  «        r	||         }Œ t          ||¦  «        }Œ1|S )Nzkeys must be a non-empty stringr  )rY  r  r  rÝ   r  rÌ   )rø   r  Úobjr  s       r¥   Úget_submodulezOutputGraph.get_submoduleÃ  sk   € Øð 	DÝ Ð!BÑCÔCÐCØ<@¼OˆØ—’˜C‘”ð 	&ð 	&ˆAÝ˜#�tÑ$Ô$ð &Ø˜!”f��å˜c 1‘o”o��Øˆ
r¤   Útmpr=  c                 ó¤   — t          | j        d         ¦  «        }	 |› dt          | j        ¦  «        › �}||vr| j        dxx         |fz  cc<   |S Œ6)Nr±   Trç   )rÜ   r�  r»  rØ  )rø   r=  Úexistingr  s       r¥   rZ  zOutputGraph.new_varÎ  sp   € Ý�tÔ(¨Ô7Ñ8Ô8ˆð	ØÐ6Ð6�D Ô!3Ñ4Ô4Ð6Ð6ˆCØ˜(Ð"Ð"ØÔ! -Ð0Ð0Ô0°S°FÑ:Ð0Ð0Ñ0Ø�
ð		r¤   c                 óT   — || j         d         vr| j         dxx         |fz  cc<   dS dS )z/Ensure self.code_options.co_names contains namer°   N)r�  )rø   r=  s     r¥   Úupdate_co_nameszOutputGraph.update_co_names×  sD   € à�tÔ(¨Ô4Ð4Ð4ØÔ˜jÐ)Ð)Ô)¨d¨WÑ4Ð)Ð)Ñ)Ð)Ð)ð 5Ð4r¤   Únamesc                  ót  — d                      t          t          | ¦  «        ¦  «        }t          j        dd|¦  «        }t          j        dd|¦  «        }t          j        dd|¦  «        }t          j        dd	|¦  «        }t          j        d
d|¦  «        }|r|d                              ¦   «         sd|z   }|S )Nrç   z9\._(?:modules|parameters|buffers)\[(['\"])([^'\"\]]+)\1\]z.\2z2getattr\(\s*([^,]+?)\s*,\s*(['\"])([^'\"]+)\2\s*\)z\1.\3z^[GL]\['?(.*?)'?\]$z\1z	\[(\d+)\]z_\g<1>z[^a-zA-Z0-9]r   Úsub)rº  r‰  r¾   Úrer  Úisalpha)r  r=  s     r¥   Úmodule_key_namezOutputGraph.module_key_nameÜ  s·   € ð �xŠx��C ™œÑ(Ô(ˆåŒvØHÈ&ÐRVñ
ô 
ˆõ ŒvØAÀ8ÈTñ
ô 
ˆõ ŒvÐ,¨e°TÑ:Ô:ˆåŒv�l I¨tÑ4Ô4ˆåŒv�o s¨DÑ1Ô1ˆàð 	 ˜4 œ7Ÿ?š?Ñ,Ô,ð 	 Ø˜4‘<ˆDàˆr¤   Úattr_prefixÚ
attr_valuec                 óZ  — t          |t          j        j        ¦  «        r?| j                             ¦   «         D ]%\  }}||u r|                      d|di ¦  «        }|c S Œ&t          || j        ¦  «        }|| j        |<   |                      d|di ¦  «        }t          |j	        |¦  «         |S )NÚget_attrr£   )
rÝ   rÞ   r  r  r  r  rË  rs   r{   rè   )rø   r"  r#  r=  ÚmodÚproxyÚ	attr_names          r¥   Ú%register_static_attr_and_return_proxyz1OutputGraph.register_static_attr_and_return_proxyô  s¾   € õ
 �j¥%¤(¤/Ñ2Ô2ð 	!Ø!œ_×2Ò2Ñ4Ô4ð !ð !‘	��cØ˜*Ð$Ð$Ø ×-Ò-¨j¸$ÀÀBÑGÔG�EØ �L�L�Lð %õ (¨°T´_ÑEÔEˆ	ð &0ˆŒ˜	Ñ"Ø×!Ò! *¨i¸¸RÑ@Ô@ˆÝ˜%œ* jÑ1Ô1Ð1Øˆr¤   ÚtargetÚoptionsc                 ó„  ‡ ‡‡‡
‡‡— t          ‰‰ j        ¦  «        rt          j        ‰ j        ‰fi ‰¤ŽS t          ‰¦  «        Šd‰vrt          d¦  «        ‚‰d         Št          ‰t          ¦  «        rt          d‰› �¦  «        ‚t          ‰t          j
        ¦  «        r<‰ j        Š‰                      ¦   «         s‰ j        Šdt          dt          fˆˆ ˆˆˆfd„}�n_t          ‰t          j        j        ¦  «        r˜t          ‰t          j        j        ¦  «        st          dt#          ‰¦  «        › �¦  «        ‚‰rBt%          ‰                     t(          j        ¦  «        ¦  «         dt          dt          fˆˆfd„}n¾dt          dt          fˆˆfd	„}n¨t          ‰t          j        t          j        f¦  «        rdt          dt          fˆˆ ˆfd
„}nkt1          t#          ‰¦  «        ¦  «        r:‰ j        Š‰                      ¦   «         s‰ j        Šdt          dt          fˆˆ ˆˆfd„}ndt          dt          fˆ ˆfd„}‰ j                             ¦   «         D ]\  }}|‰u r ||¦  «        c S Œt7          j        |Ž Š
t;          ‰
‰ j        ‰ j        ¦  «        Š
‰‰ j        ‰
<   t          ‰t          j        j        ¦  «        r{dt          dd fˆ
ˆ ˆfd„}t?          ‰d¦  «        r%‰                      ¦   «         D ]\  }}	 ||¦  «         Œt?          ‰d¦  «        r%‰ !                    ¦   «         D ]\  }}	 ||¦  «         Œ |‰
¦  «        S )Nr  z$'source' must be provided in optionsz,source must not be a ParamBufferSource, got Ú
module_keyrÆ   c           	      óB  •— ‰j         €t          d¦  «        ‚‰‰j         | <   ‰j        €t          d¦  «        ‚‰‰j        j        j        v r‰j        j        j        ‰         S t          ‰¦  «        dk    rBt          ‰t          ¦  «        s-t          ‰ 	                    t          j        ¦  «        ¦  «         n;t          ‰¦  «        s,t          ‰ 	                    t          j        ¦  «        ¦  «         t          ‰j        ‰                     d| di ¦  «        fd‰i‰¤Ž}‰j        j        j                             ‰|¦  «        }d|                     ¦   «         j        j        v rt          d¦  «        ‚t)          ‰¦  «        |                     ¦   «         j        j        d<   |S )	Nú%param_name_to_source must not be Noneúroot_tx must not be NoneÚguardedr%  r£   r[  Útensor_dictz/'tensor_dict' already exists in proxy node meta)rÑ  rY  rž  rÜ  rœ  rr   rÝ   ra   rR   r]  rQ   ÚID_MATCHr^   ÚTENSOR_MATCHr   rË  Útrack_object_existingÚas_proxyrè   rY  rg   )r-  r  r+  rø   r  r*  r±  s     €€€€€r¥   Ú	wrap_namez6OutputGraph.register_attr_or_module.<locals>.wrap_name+  sŸ  ø€ ØÔ,Ð4Ý(Ð)PÑQÔQÐQØ8>�Ô)¨*Ñ5ð ”<Ð'Ý(Ð)CÑDÔDÐDØ˜Tœ\Ô0Ô=Ð=Ð=Øœ<Ô.Ô;¸FÔCÐCå*¨6Ñ2Ô2°iÒ?Ð?Í
ØÕ-ñIô IÐ?õ " &×"3Ò"3µLÔ4IÑ"JÔ"JÑKÔKÐKÐKÝ+¨FÑ3Ô3ð PÝ! &×"3Ò"3µLÔ4MÑ"NÔ"NÑOÔOÐOå"Ø”LØ×'Ò'¨
°JÀÀBÑGÔGðð ð #)ðð ð	ð �ð ”\Ô(Ô5×KÒKÈFÐTVÑWÔW�à  B§K¢K¡M¤MÔ$6Ô$;Ð;Ð;Ý(ØIñô ð õ :NÈfÑ9UÔ9U�—’‘”Ô"Ô'¨Ñ6à�	r¤   z&target must be a torch.nn.Module, got c                 ó<   •— t          t          ‰¦  «        | ‰fi ‰¤ŽS rì   )r…   rZ  ©r-  r+  r*  s    €€r¥   r7  z6OutputGraph.register_attr_or_module.<locals>.wrap_name[  s$   ø€ å+­D°©L¬L¸*ÀfÐXÐXÐPWÐXÐXÐXr¤   c                 ó(   •— t          j        ‰fi ‰¤ŽS rì   )r4   ÚUnspecializedNNModuleVariabler9  s    €€r¥   r7  z6OutputGraph.register_attr_or_module.<locals>.wrap_named  s   ø€ å$ÔBÀ6ÐUÐUÈWÐUÐUÐUr¤   c           	      ód   •— t          j        ‰j        ‰                     d| di ¦  «        fd‰i‰¤ŽS )Nr%  r£   Úsym_num)r‡   rƒ  rž  rË  )r-  r+  rø   r*  s    €€€r¥   r7  z6OutputGraph.register_attr_or_module.<locals>.wrap_namep  sM   ø€ Ý&Ô-Ø”LØ×%Ò% j°*¸bÀ"ÑEÔEðð ð #ðð ð	ð ð r¤   c                 ó  •— t           j        j                             ‰j        ‰¦  «        }‰                     d| di ¦  «        }t          |j        |¦  «         t          j        j	        j
        j        j        ||fd‰j        i‰¤ŽS )Nr%  r£   r¥  )rÞ   Ú_libraryÚfake_class_registryÚmaybe_to_fake_objrþ  rË  r{   rè   ri  r4   Úscript_objectÚTorchScriptObjectVariablerƒ  rž  )r-  Úfake_script_objr'  r+  rø   r*  r±  s      €€€€r¥   r7  z6OutputGraph.register_attr_or_module.<locals>.wrap_name‚  s�   ø€ Ý"'¤.Ô"D×"VÒ"VØ”N Fñ#ô #�ð ×+Ò+¨J¸
ÀBÈÑKÔK�Ý! %¤*¨oÑ>Ô>Ð>Ý”}Ô.Ô<ÔVÔ]Ø˜?ðð Ø/3¬|ðØ?Fðð ð r¤   c                 ó”   •— ‰j                              | ¦  «         ‰‰j        | <   t          j        ‰‰t          | ¬¦  «        ¦  «        S )N)Úsource_name)rÜ  r  rJ  r‚   rŽ  rZ   )r-  rø   r*  s    €€r¥   r7  z6OutputGraph.register_attr_or_module.<locals>.wrap_name�  sO   ø€ Ø”×+Ò+¨JÑ7Ô7Ð7Ø06�Ô! *Ñ-Ý&Ô,ØØÝ"¨zÐ:Ñ:Ô:ñô ð r¤   Ú	leaf_namec                 óþ   •— ‰j         €t          d¦  «        ‚‰                     ‰| ¦  «        }‰› d| › �}|‰j         |<   t          ‰t          ¦  «        r)| ‰j        t                               |j        ¦  «        <   d S d S ©Nr/  r  ©	rÑ  rY  r"  rÝ   r`   rì  r›  r!  r=  ©rG  Ú
new_sourceÚnew_namer=  rø   r  s      €€€r¥   Úregister_leaf_namez?OutputGraph.register_attr_or_module.<locals>.register_leaf_name£  s›   ø€ ØÔ,Ð4Ý(Ð)PÑQÔQÐQØ!×AÒAÀ&È)ÑTÔT�
Ø"Ð0Ð0 YÐ0Ð0�Ø6@�Ô)¨(Ñ3Ý˜f¥kÑ2Ô2ð "ð "ð Ô9Ý#×3Ò3°J´OÑDÔDñð ð ð"ð "r¤   Ú_parametersÚ_buffers)"rS   rT  r‚   rŽ  r  r  rY  rÝ   rb   rÞ   r   r¢  r¤  rW  r¾   r  r  rZ  rR   r]  rQ   Ú	NN_MODULEÚSymIntÚSymFloatr    r  r  r›  r!  rs   rJ  r  Únamed_parametersÚnamed_buffers)rø   r*  r  r+  r7  r  r  rN  rG  rç   r=  r  r±  s   `` `      @@@r¥   Úregister_attr_or_modulez#OutputGraph.register_attr_or_module  s  øøøøøø€ õ   ¨¬Ñ4Ô4ð 	Mõ #Ô(¨¬¸&ÐLÐLÀGÐLÐLÐLå�w‘-”-ˆØ˜7Ð"Ð"Ý Ð!GÑHÔHÐHØ˜Ô"ˆÝ�fÕ/Ñ0Ô0ð 	Ý ØG¸vÐGÐGñô ð õ �f�eœlÑ+Ô+ð |	ØÔ(ˆFØ×&Ò&Ñ(Ô(ð *ð Ô)�ð%¥cð %­oð %ð %ð %ð %ð %ð %ð %ð %ð %ð %ñ %õN ˜¥¤¤Ñ0Ô0ð E	Ý˜f¥e¤h¤oÑ6Ô6ð Ý$ØK½TÀ&¹\¼\ÐKÐKñô ð ð ð VÝ˜f×/Ò/µÔ0FÑGÔGÑHÔHÐHðY­#ð Yµ/ð Yð Yð Yð Yð Yð Yð Yð YðV­#ð Vµ/ð Vð Vð Vð Vð Vð Vð Vð Võ ˜¥¤­u¬~Ð >Ñ?Ô?ð /	ð¥cð ­oð ð ð ð ð ð ð ð ð õ �D ™LœLÑ)Ô)ð 	ð
 Ô(ˆFØ×&Ò&Ñ(Ô(ð *ØÔ)�ð¥cð ­oð ð ð ð ð ð ð ð ð ð ð¥cð ­oð ð ð ð ð ð ð ð ”O×)Ò)Ñ+Ô+ð 	$ð 	$‰DˆAˆqØ�Fˆ{ˆ{à �y ‘|”|Ð#Ð#Ð#ð õ Ô*¨EÐ2ˆÝ" 4¨¬¸$Ô:KÑLÔLˆØ &ˆŒ˜ÑÝ�f�eœhœoÑ.Ô.ð 	2ð	"­cð 	"°dð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"õ �v˜}Ñ-Ô-ð 2Ø$*×$;Ò$;Ñ$=Ô$=ð 2ð 2‘L�I˜qØ&Ð& yÑ1Ô1Ð1Ð1Ý�v˜zÑ*Ô*ð 2Ø$*×$8Ò$8Ñ$:Ô$:ð 2ð 2‘L�I˜qØ&Ð& yÑ1Ô1Ð1Ð1àˆy˜‰ŒÐr¤   c                 óð  — | j                              d¦  «        }t          |¦  «        }|sg i fS g }i }g |j        ¢|j                             ¦   «         ¢| j        j                             ¦   «         ¢}|�r| 	                    ¦   «         }t          |t          ¦  «        rIt          |j        t          ¦  «        s$t          dt          |j        ¦  «        › �¦  «        ‚||j        z  }Œu|| j        j        vst          |j        t"          ¦  «        rLt          |j        t&          ¦  «        r2t          |j        j        t*          ¦  «        r|j        j        j        |v sŒê|j        j        j        }||vrg ||<   ||                              |¦  «         |�°i }	i }
| j        D �]Q}t          |j        t          ¦  «        r(t          |j        t*          ¦  «        r|j        j        |v sŒF|j        j        }|| j        d         vrt          d|› d�¦  «        ‚||         D ]Ô}|j        |
v rŒ|j        €t          d¦  «        ‚|j        j        }||	vrm|                      |› d�¦  «        }||	|<   |                     t=          d|¬	¦  «        t?          |¦  «        tA          ¦   «         t=          d
|¬	¦  «        g¦  «         |j        €t          d¦  «        ‚|j        }t+          |	|         ¦  «        |
|<   ŒÕ�ŒS||
fS )Nrø   zx.items must be a list, got r±   rn  z' not found in co_varnameszx.source must not be NoneÚ_refÚ	LOAD_FAST©ÚargvalÚ
STORE_FAST)!rI  r�  rq   rå   Úsymbolic_localsÚvaluesrœ  Ústore_attr_mutationsr  rá   rÝ   rƒ   r  rü   rY  rZ  r  rT   r  r\   r  r`   Ú
local_namerà   Ú	graphargsÚ_exampler�  ÚindexrZ  rŒ  r<   r=   r8   )rø   r¥  Úmaybe_gmÚstolen_list_namesÚalias_instsÚneeds_aliasÚqueuer  Ústolen_namerä   Úoverridden_sourcesÚargÚ	list_nameÚlist_idxÚ
alias_nameÚ
old_sources                   r¥   Úhandle_aliases_for_stolen_listsz+OutputGraph.handle_aliases_for_stolen_lists¹  s_  € ð Ô#×'Ò'¨Ñ/Ô/ˆÝ/°Ñ9Ô9ÐØ ð 	Ø�r�6ˆMàˆØ8:ˆð
ØŒXð
àÔ×&Ò&Ñ(Ô(ð
ð ÔÔ3×8Ò8Ñ:Ô:ð
ˆð ñ 	/Ø—	’	‘”ˆAÝ˜!Õ-Ñ.Ô.ð Ý! !¤'­4Ñ0Ô0ð YÝ(Ð)WÍÈQÌWÉÌÐ)WÐ)WÑXÔXÐXØ˜œÑ �Øð ˜TÔ.ÔCÐCÐCÝ! !¤/Õ3LÑMÔMð Dõ ˜qœx­Ñ7Ô7ð Dõ ˜qœxœ}­kÑ:Ô:ð	 Dð
 ”H”MÔ,Ð0AÐAÐAààœ(œ-Ô2ˆKØ +Ð-Ð-Ø+-�˜KÑ(Ø˜Ô$×+Ò+¨AÑ.Ô.Ð.ð- ñ 	/ð2 ˆØ35ÐØ”>ð *	Pñ *	PˆCå˜3œ<­Ñ.Ô.ðå˜sœz­;Ñ7Ô7ðð ”JÔ)¨[Ð8Ð8àð œ
Ô-ˆIØ Ô 1°-Ô @Ð@Ð@Ý$Ð%N¨Ð%NÐ%NÐ%NÑOÔOÐOØ  Ô+ð Pð P�à”8Ð1Ð1Ð1Øð ”8Ð#Ý(Ð)DÑEÔEÐEØœ8œ>�Ø 7Ð*Ð*Ø!%§¢Ø$Ð*Ð*Ð*ñ"ô "�Jð )3�G˜HÑ%à×&Ò&å.¨{À9ÐMÑMÔMÝ-¨hÑ7Ô7Ý0Ñ2Ô2Ý.¨|ÀJÐOÑOÔOð	ñô ð ð ”8Ð#Ý(Ð)DÑEÔEÐEØœX�
Ý1<¸WÀXÔ=NÑ1OÔ1OÐ" :Ñ.Ð.ñ=PðH Ð.Ð.Ð.r¤   Ú
stack_popsc                 óŠ  — |                      ¦   «          g }t          ¦   «         }dt          ddfd„}t          |j        ¦  «        D �]F\  }}t          |j        ¦  «        |z
  |k    }t          j                             ||¬¦  «         t          |t          j
        ¦  «        st          j        ||¦  «         |r|                     |¦  «         Œ‰t          |t          ¦  «        r|j                             |¦  «         n|                     |¦  «         t          |t          ¦  «        rc|j        €dnt#          |j        ¦  «        }	|j                             t          |¦  «        dz
  |	f¦  «         |j                             |¦  «         �ŒHt          |¦  «        |_        t+          |                     ¦   «         |                     ¦   «         z   ¦  «        }
|j                             ¦   «         D �]N\  }}t          j        ||¦  «         t          |j        t6          ¦  «        r|j        j        |k    r
|| j        u rŒO||
v rŒTt<          j        dk    r<t@           !                    t          |¦  «        r|j"                             |¦  «         ŒŸn/t@           !                    t          |¦  «        rtG          d	¦  «        ‚t          |j$        ¦  «        |j$        |<   t          |t          ¦  «        r9|j        €dnt#          |j        ¦  «        }	|j%                             ||	f¦  «         |                     |¦  «         �ŒP||fS )
a«  
        Gets the stack + locals values belonging to tx that need to be restored.

        Also prunes dead tx locals and realizes all VTs in the tx's stack.

        NullVariables in stack/locals will NOT be restored, unless they are the top `stack_pops`
        elements of the stack - it is expected that the next instruction to run will pop the top
        `stack_pops` elements of the stack, so we should codegen NULLs.

        Returns:
            - stack_values: stack and locals values that need to be restored
            - meta: locations of NULLs and ContextWrappingVariables in the stack/locals
                (ignores the top `stack_pops` values on the stack)
        r  rÆ   Nc                 ón   — t                                t          j        | ¦  «        rt	          d¦  «        ‚d S )NzCAttempted to reconstruct WithExitFunctionVariable outside the stack)rZ  Ú__instancecheck__r4   ÚWithExitFunctionVariablerY  )r  s    r¥   Úctx_exit_checkz@OutputGraph._get_stack_values_to_restore.<locals>.ctx_exit_check.  s<   € Ý×%Ò%¥iÔ&HÈ#ÑNÔNð Ý$ØYñô ð ðð r¤   )Úallow_lazy_constantr£   r0   )é   é   z.variable should never be NULL in Python < 3.12)&Úprune_dead_localsro  r‚   rª  rå   r   r4   ÚLazyVariableTrackerÚrealize_allrÝ   ru  Úvisitrà   r„   rt  r€   Útarget_valuesr¼   rv  rw  rp  rÜ   ÚcellvarsÚfreevarsr]  r  r  r`   r`  rž  ÚsysÚversion_inforZ  rt  ru  rY  rs  rx  )rø   r¥  rq  Ústack_valuesrY  rv  ÚirÂ   rw  r~  Úcell_and_freevarsr  r  s                r¥   Ú_get_stack_values_to_restorez(OutputGraph._get_stack_values_to_restore  sR  € ð" 	×ÒÑÔÐàˆÝ"Ñ$Ô$ˆð	¥ð 	°Dð 	ð 	ð 	ð 	õ " "¤(Ñ+Ô+ð 	4ñ 	4‰HˆAˆuå"% b¤h¡-¤-°!Ñ"3°zÒ"AÐÝÔ)×5Ò5ØÐ+>ð 6ñ ô ð õ ˜e¥YÔ%GÑHÔHð =ÝÔ% n°eÑ<Ô<Ð<à"ð Ø×#Ò# EÑ*Ô*Ð*ØÝ˜%¥Ñ.Ô.ð +ØÔ%×,Ò,¨QÑ/Ô/Ð/Ð/à×#Ò# EÑ*Ô*Ð*Ý˜%Õ!8Ñ9Ô9ð 4àÔ-Ð5�B�B½5ÀÔATÑ;UÔ;Uð ð Ô#×*Ò*­C°Ñ,=Ô,=ÀÑ,AÀ=Ð+QÑRÔRÐRØÔ)×0Ò0°Ñ3Ô3Ð3ùå˜\Ñ*Ô*ˆŒå §¢¡¤°·²±´Ñ =Ñ>Ô>Ðð Ô&×,Ò,Ñ.Ô.ð &	#ñ &	#‰DˆAˆqåÔ! .°!Ñ4Ô4Ð4õ ˜1œ8¥[Ñ1Ô1ðà”HÔ'¨1Ò,Ð,Ø˜$œ,Ð&Ð&ààÐ%Ð%Ð%ØåÔ 7Ò*Ð*õ ×)Ò)­,¸Ñ:Ô:ð ØÔ)×0Ò0°Ñ3Ô3Ð3Øðõ
 ×)Ò)­,¸Ñ:Ô:ð Ý(ØHñô ð õ $' tÔ'8Ñ#9Ô#9ˆDÔ˜aÑ Ý˜!Õ4Ñ5Ô5ð @àœ/Ð1�B�Bµu¸Q¼_Ñ7MÔ7Mð ð Ô$×+Ò+¨Q°Ð,>Ñ?Ô?Ð?Ø×Ò Ñ"Ô"Ð"Ñ"à˜TÐ!Ð!r¤   r   ró   c           
      óF  — | j         €t          d¦  «        ‚t          j        �ddlm}  || j        ¦  «         t          j        s| j         |urt          d¦  «        ‚|                      ¦   «          || _	        d| _
        t                               d|¦  «         g }t          j        dk    rƒ| j         j        D ]v}|j        d	k    rB|                     t%          d	t'          | j         j        d
         ¦  «        ¬¦  «        ¦  «         ŒO|                     t+          j        |¦  «        ¦  «         Œwg }g }|}	|	�²t-          d„ |	j        D ¦   «         ¦  «        st          d¦  «        ‚|                      |	|	|u r|nd¦  «        \  }
}|                     |
¦  «         |                     |¦  «         t3          |	j        ¦  «        D ]}|                     |	|j        ¬¦  «         Œ|	j        }	|	­²| j                             |¦  «         |                      |¦  «         | j         r*ddl!m"} |                       |¦   «         ¦  «         d| _         | j#        r| j$        rt          d¦  «        ‚|                      | j#        ¦  «         |  %                    | j         ¦  «        \  }}|                      |¦  «         |  &                    ¦   «          d„ | j'         (                    ¦   «         D ¦   «         }tS          |¦  «        }ddl*m+} t'          | j,        ¦  «        dk    rög }|  -                    d¦  «        | _.         |t_          | j,        ¦  «        d¬¦  «        }|  0                    d|¦  «        }tc          | j         ||¬¦  «        }| 2                    | 3                    |d¦  «        ¦  «         | 2                    ti          dd¦  «        ¦  «         |                     | 5                    | j.        ¦  «        ¦  «         |                      |¦  «         d„ |D ¦   «         }d}d}| j         |u �r_|�r\t-          d„ |D ¦   «         ¦  «        �rBt-          d„ |D ¦   «         ¦  «        �r(t'          tm          |¦  «        ¦  «        t'          |¦  «        k    rû| j         7                    ¦   «         râ|j8        sÛ| j9        sÔ|d         j:        sÇ|d         j;        sºtc          | j         ¦  «        }|  <                    ||¦  «         |  =                    |t}          t3          |¦  «        ¦  «        |¦  «        \  }}|                      g |¢| ?                    ¦   «         ¢t�          d¦  «        ¢t%          dt'          |¦  «        ¬¦  «        ‘|¬ ¦  «         �nb|  -                    d!¦  «        }tc          | j         |||¬¦  «        }|  A                    |||d¦  «         i }|jB         (                    ¦   «         D ],\  }} | dk    r!t‡          |tˆ          tŠ          f¦  «        sd||<   Œ-tc          | j         ||||¬"¦  «        }!|  A                    |||!d¦  «         tŒ          jG        j        jH        �rL|�rIt'          |¦  «        dk    �r5|d         }"t“          |"tŒ          jG        jJ        jK        ¦  «        �r|"jL        tŒ          jG        jM        jN        u �rê|"j(        d         }#|"j(        d         }$t“          |#tŒ          jG        jJ        jO        ¦  «        st          d#¦  «        ‚i }%|!jP         Q                    ¦   «         D ]V}&t“          |&tŒ          jG        jR        jS        ¦  «        st          d$t©          |&¦  «        › �¦  «        ‚|&jU        }'|&jV        |%|'<   ŒW| jW        jX        }(t³          |#j(        ¦  «        D ]º\  })}"|"|%v rtµ          d!|%|"         ¦  «        |(|)<   Œ#|"j[        �Bt¹          |"j[        d%d¦  «        x}*r*t¹          |*d&d¦  «        rtµ          d'|"j[        ¦  «        |(|)<   Œl|" ]                    ¦   «         r&tµ          d(|" ^                    ¦   «         ¦  «        |(|)<   Œ¦t          d)|"› d*|)› �¦  «        ‚	 |$ ^                    ¦   «         | jW        __        n0# tÀ          $ r#}+tÃ          d+d,|$› �d-d.d/g|+¬0¦  «         Y d}+~+nd}+~+ww xY wg },d}-tÅ          | jc        ¦  «        dk    st'          |!jP        ¦  «        dk    r§|  =                    ||! d                    ¦   «         |¦  «        \  }}-|, 2                    |¦  «         t'          |!jP        ¦  «        dk    r+|,                     |! 5                    |¦  «        ¦  «         d}n7|,                     t%          d1¦  «        ¦  «         n|  e                    ¦   «          |                      |,|-¬ ¦  «         |                      |! ?                    ¦   «         |! f                    ¦   «         ¬ ¦  «         |                      t%          d2t'          |¦  «        |d         jg        z
  ¬¦  «        g¦  «         d}.d}/t³          |¦  «        D �]ë\  }0}t'          |jh        ¦  «        }1|0dk    r
|1|jg        z  }1|1dk    r5|                      t%          d2d¬¦  «        gt�          d¦  «        ¢¦  «         nK|/|1z  }/|                      tÓ          ¦   «         gtÕ          |.|/¦  «        ¢t�          d¦  «        ¢¦  «         |.|1z  }.|0t'          |¦  «        dz
  k    �r$tc          | j         ¦  «        }2i }3| j         jk         (                    ¦   «         D ]~\  }4}5t“          |5j[        tŠ          ¦  «        r_|5j[        jl        |4k    rO|2 m                    |2 n                    |4¦  «        ¦  «         t'          |jh        ¦  «        t'          |3¦  «        z   |3|4<   Œ|                      |2 ?                    ¦   «         t%          d2t'          |3¦  «        ¬¦  «        t%          d3d¬¦  «        gz   ¦  «         |jh         o                    |3¦  «         �Œí|                      t%          d1¦  «        t%          d2t'          |¦  «        ¬¦  «        gtá          |d         jg        dz   ¦  «        ¢¦  «         |r'|r%|                      t%          d4|¬5¦  «        g¦  «         tŒ          jG        j        jq        d6v r\|  r                    d¬7¦  «        }6|6rDtŒ          jG        j        jq        d8k    rtç          jt        d9|6› �¦  «         ntë          d9|6› �¦  «        ‚|S ):aÍ  
        Compiles the current subgraph, with inputs w.r.t. self.root_tx, and codegens:
            - Call the compiled subgraph
            - Apply side effects
            - Codegen stack and locals
            - Store the locals

        Python does not allow NULL to be an arg to a function, so we do not codegen NULLs on the stack,
        unless the value is one of the top `stack_pops` values on the stack (these values are expected to be
        popped immediately after this generated code. The prologue of the resume function is expected to restore
        any dropped NULLs.

        Returns stack indices and locals keys where we dropped NULLs, and where we found inactive context manager objects.
        Nr0  r   )Ú_finalize_spec_wiringz7root_tx must be tx when nested_graph_breaks is disabledTzCOMPILING GRAPH due to %s©rx  é   ÚCOPY_FREE_VARSr¸   ©rk  c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S rì   )Úcan_restore)r  Úblocks     r¥   r…  z/OutputGraph.compile_subgraph.<locals>.<genexpr>Ë  s.   è è € ÐKÐK¨u�u×(Ò(Ñ*Ô*ÐKÐKÐKÐKÐKÐKr¤   z3all blocks in cur_tx.block_stack must be restorable)Úis_graph_breakr0   )Úcreate_breakpointFz)export does not support pregraph_bytecodec                 ó4   — i | ]\  }}|t          |¦  «        “ŒS r£   )ry   )r  r=  r&  s      r¥   ú
<dictcomp>z0OutputGraph.compile_subgraph.<locals>.<dictcomp>ø  s3   € ð 
ð 
ð 
Ù+4¨4°ˆD•/ #Ñ&Ô&ð
ð 
ð 
r¤   ©ÚdisableÚrandom_valuesz.do not trace into Dynamo rng recovery function©ró   Ú__gen_rand_values)rj  c                 ó   — g | ]	}|D ]}|‘ŒŒ
S r£   r£   )r  Úvalsr  s      r¥   r  z0OutputGraph.compile_subgraph.<locals>.<listcomp>%  s%   € ÐNÐNÐN TÈÐNÐNÀ#˜SÐNÐNÐNÐNr¤   c              3   ó¾   K  — | ]X}t          |t          t          t          f¦  «         o0t          |t          ¦  «        o|                     ¦   «         t          u  V — ŒYd S rì   )rÝ   rˆ   r†   r‰   r‡   Úpython_typeÚfloat)r  r  s     r¥   r…  z/OutputGraph.compile_subgraph.<locals>.<genexpr>-  s‚   è è € ð ð ð õ Øå3Ý,Ý4ðñô ð ð Võ $ A¥Ñ7Ô7ÐT¸A¿MºM¹O¼OÍuÐ<TÐUðð ð ð ð ð r¤   c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S rì   )Ú	is_tensorr  s     r¥   r…  z/OutputGraph.compile_subgraph.<locals>.<genexpr>9  s*   è è € Ð=Ð= a�A—K’K‘M”MÐ=Ð=Ð=Ð=Ð=Ð=r¤   r¡  é   ÚUNPACK_SEQUENCE)Úpycoder•   )Útempvarsrj  z#flat_returns must be a ListVariablez3graph output value must be a GraphOutputEntry, got r  Úis_inputr–   r—   zEncountered unrecognized type z at output z8nested function with non-constructible closure in outputz as_python_constant for out_spec z£Cannot return a nested function with closure from a compiled function. Dynamo failed to construct the function defined in the compiled region with closure objects.zGDefine the function at module scope instead of inside another function z0Ensure that all closure variables are constants.)rP  rQ  rR  rS  Úfrom_excÚPOP_TOPÚ
BUILD_LISTÚLIST_EXTENDÚDELETE_FASTrZ  )ÚwarnÚerrorrÿ  rª  z‹While compiling, we found certain side effects happened in the model.forward. Here are the list of potential sources you can double check: )vrž  rY  r1   rÍ  rÎ  rˆ  r[  Únested_graph_breaksrE  Úcompile_subgraph_reasonrâ  rï   Údebugr�  r‚  Úprefix_instsÚopnamerà   r<   r   r�  r$  ÚallÚblock_stackr†  r™  Úexitrõ   rÖ  rœ  Úprune_dead_object_newÚadd_output_instructionsrÁ  Úbytecode_transformationr‘  rî  rT  rp  Úcleanup_graphr  r  r  Ú
decoratorsr•  rÿ   rZ  rí  r	  rH  rC   rŒ  Úload_function_namer:   Úcreate_storerÜ   Úis_emptyÚdebug_localsrð  rt  ru  Úcodegen_cellsÚcompile_and_call_fx_graphrü   r�  r?   Úcodegen_suffixÚusesrv   rd   r`   rÞ   ri  Úlog_graph_in_out_metadatarÝ   r4   ÚNamedTupleVariableÚ	tuple_clsÚfunctional_exportÚExportTracerOutputÚListVariableÚgraph_outputsr^  ÚcodegenÚGraphOutputEntryrZ  Úvariablerc  rŽ  r}  rª  rÀ   r  rÌ   Úis_python_constantr  r~  r�   rI   rl   r‘   Úgraph_output_varsÚrun_compiler_collectiveÚ
get_pycoderp  rs  r;   r7   r]  r`  Úappend_outputÚcreate_loadÚupdater>   Úside_effect_replay_policyr  Úwarningsrª  r)  )7rø   r¥  ró   rq  rˆ  r¯  ÚinstÚall_stack_valuesÚall_stack_locals_metasÚcur_txrƒ  rY  r�  r‘  rf  rj  Únn_modules_proxiesÚrootr•  Úrandom_calls_instructionsÚrand_fnÚrand_fn_namerÈ  Ústack_values_flatÚstored_graph_output_varÚgraph_output_varÚcell_cgÚinstructionsr¢  Úpass1r£  r  r×  Úpass2r  Úflat_returnsr~  Úvt_to_graph_out_idxrÂ   rÊ  r}  Úidxr  ÚerÜ  Úsubgraph_pycodeÚ	start_idxÚend_idxr„  Ún_valsÚroot_cgÚunmodified_locals_namesr  r  Úside_effect_refss7                                                          r¥   Úcompile_subgraphzOutputGraph.compile_subgraph…  sw  € ð* Œ<ÐÝ Ð!;Ñ<Ô<Ð<õ
 ÔÐ*ØMÐMÐMÐMÐMÐMà!Ð! $¤.Ñ1Ô1Ð1åÔ)ð 	àŒ| 2Ð%Ð%Ý$ØMñô ð ð
 	×'Ò'Ñ)Ô)Ð)à'-ˆÔ$ØˆÔå�	Š	Ð-¨vÑ6Ô6Ð6ð +-ˆÝÔ˜wÒ&Ð&ØœÔ1ð 	9ð 	9�Ø”;Ð"2Ò2Ð2Ø ×'Ò'Ý*Ø,Ý # D¤LÔ$=¸mÔ$LÑ MÔ Mðñ ô ñô ð ð ð !×'Ò'­¬	°$©¬Ñ8Ô8Ð8Ð8ð
 Ðà!#ÐØ35ˆØÐ åÐKÐK¸Ô8JÐKÑKÔKÑKÔKð Ý$ØIñô ð ð "&×!BÒ!BØ f° l l˜
˜
¸ñ"ô "ÑˆL˜$ð ×#Ò# LÑ1Ô1Ð1Ø"×)Ò)¨$Ñ/Ô/Ð/õ " &Ô"4Ñ5Ô5ð Fð F�Ø—
’
˜6°&Ô2D�
ÑEÔEÐEÐEà”]ˆFð# Ð ð( 	Ô×/Ò/°Ñ3Ô3Ð3à×$Ò$ \Ñ2Ô2Ð2àÔ)ð 	3ØBÐBÐBÐBÐBÐBà×(Ò(Ð):Ð):Ñ)<Ô)<Ñ=Ô=Ð=Ø-2ˆDÔ*àÔ!ð 	N d¤kð 	NÝ Ð!LÑMÔMÐMØ×$Ò$ TÔ%;Ñ<Ô<Ð<à*.×*NÒ*NØŒLñ+
ô +
Ñ'ˆÐ'ð 	×$Ò$ [Ñ1Ô1Ð1à×ÒÑÔÐð
ð 
Ø8<¼×8MÒ8MÑ8OÔ8Oð
ñ 
ô 
Ðõ Ð0Ñ1Ô1ˆà'Ð'Ð'Ð'Ð'Ð'õ ˆtÔ Ñ!Ô! AÒ%Ð%Ø(*Ð%Ø%)§\¢\°/Ñ%BÔ%BˆDÔ"Ø�gÝ'¨Ô(9Ñ:Ô:ØGðñ ô ˆGð  ×.Ò.Ð/BÀGÑLÔLˆLÝØ”˜dÐ7Iðñ ô ˆGð &×,Ò,Ø×*Ò*¨<¸Ñ>Ô>ñô ð ð &×,Ò,Õ-AÀ!ÀUÑ-KÔ-KÑLÔLÐLØ%×,Ò,Ø×$Ò$ TÔ%;Ñ<Ô<ñô ð ð ×(Ò(Ð)BÑCÔCÐCð& OÐNÐ-=ÐNÑNÔNÐØ"'ÐØÐð ŒL˜BÐÑØ!ñ åð ð ð +ðñ ô ñ ô ñ õ Ð=Ð=Ð+<Ð=Ñ=Ô=Ñ=Ô=ñ õ •CÐ)Ñ*Ô*Ñ+Ô+­sÐ3DÑ/EÔ/EÒEÐEØÔ!×*Ò*Ñ,Ô,ð Fà”Oð Fð Ô'ð Fð +¨2Ô.Ô?ð	 Fð
 +¨2Ô.Ô?ð Fõ   ¤Ñ-Ô-ˆGØ×Ò˜r 7Ñ+Ô+Ð+Ø#'×#AÒ#AØ•D�Ð"3Ñ4Ô4Ñ5Ô5°tñ$ô $Ñ ˆL˜&ð ×(Ò(ðà!ðð ×-Ò-Ñ/Ô/ðõ ! ‘^”^ð	õ
 'Ð'8½cÐBSÑ>TÔ>TÐUÑUÔUðð ð )ñ 	ô 	ð 	ñ 	ð  $Ÿ|š|¨KÑ8Ô8Ðõ Ø”ØØ Ø#5ð	ñ ô ˆEð ×Ò Ð$5°u¸eÑDÔDÐDð ˆHØ#œj×.Ò.Ñ0Ô0ð )ð )‘
��Uà˜1’9�9¥V¨CÕ2FÍÐ1TÑ%UÔ%U�9Ø$(�H˜S‘MøÝØ”ØØ Ø!Ø#5ðñ ô ˆEð ×Ò Ð$5°u¸dÑCÔCÐCõ ”Ô$Ô>ñBà%ñBõ Ð)Ñ*Ô*¨aÒ/Ñ/à& qÔ)�å˜r¥5¤=Ô#:Ô#MÑNÔNñ<àœÝ”}Ô6ÔIðJñ Jð $&¤8¨A¤;�LØ!œx¨œ{�HÝ%Ø$¥e¤mÔ&=Ô&Jñô ð Tõ -Ð-RÑSÔSÐSàFHÐ'Ø!&Ô!4×!;Ò!;Ñ!=Ô!=ð Dð D˜Ý)Ø!¥5¤=Ô#8Ô#Iñ ô  ð õ #1Ø cÕVZÐ[`ÑVaÔVaÐ cÐ cñ#ô #ð ð 5:´N˜Ø8=¼Ð+¨HÑ5Ð5à)-Ô)=Ô)PÐ&Ý#,¨\Ô-?Ñ#@Ô#@ð ð ™˜˜RØÐ!4Ð4Ð4Ý6FØ +Ð-@ÀÔ-Dñ7ô 7Ð.¨sÑ3Ð3ð œIÐ1Ý+2°2´9¸fÀdÑ+KÔ+KÐ!K ð 2å '¨°
¸EÑ BÔ Bð 2õ 7GØ '¨¬ñ7ô 7Ð.¨sÑ3Ð3ð  ×2Ò2Ñ4Ô4ð Ý6FØ *¨B×,AÒ,AÑ,CÔ,Cñ7ô 7Ð.¨sÑ3Ð3õ #1Ø UÀÐ UÐ UÐPSÐ UÐ Uñ#ô #ð ðØ8@×8SÒ8SÑ8UÔ8U˜Ô,Ô5Ð5øÝ1ð ð ð Ý%Ø$^Ø$QÀxÐ$QÐ$Qð!ð !jØ Rð#ð &'ðñ ô ð ð ð ð ð ð øøøøðøøøð ˆFØ"ˆOÝ˜4œ:Ñ&Ô&¨!Ò+Ð+­s°5Ô3FÑ/GÔ/GÈ1Ò/LÐ/LØ04×0NÒ0NØ˜×/Ò/Ñ1Ô1°4ñ1ô 1Ñ-�˜oð —’˜lÑ+Ô+Ð+å�uÔ*Ñ+Ô+¨qÒ0Ð0Ø—M’M %×"4Ò"4Ð5EÑ"FÔ"FÑGÔGÐGØ.2Ð+Ð+à—M’MÕ"4°YÑ"?Ô"?Ñ@Ô@Ð@Ð@ð ×,Ò,Ñ.Ô.Ð.Ø×(Ò(¨¸Ð(ÑHÔHÐHØ×(Ò(Ø×&Ò&Ñ(Ô(°×1AÒ1AÑ1CÔ1Cð )ñ ô ð ð 	×$Ò$å"Ø ÝÐ-Ñ.Ô.Ð1GÈÔ1JÔ1TÑTðñ ô ðñ	
ô 	
ð 	
ð& ˆ	ØˆÝ Ð!7Ñ8Ô8ð -	Bñ -	B‰GˆAˆtå˜Ô*Ñ+Ô+ˆFØ�AŠvˆvØ˜$œ.Ñ(�Ø˜Š{ˆ{Ø×,Ò,å*¨<¸QÐ?Ñ?Ô?ðå$ Q™œðñô ð ð ð ˜6Ñ!�Ø×,Ò,å&Ñ(Ô(ðå,¨Y¸Ñ@Ô@ðõ % Q™œðñô ð ð ˜VÑ#�	ð •CÐ.Ñ/Ô/°!Ñ3Ò3Ñ3Ý# D¤LÑ1Ô1�Ø:<Ð'Ø œLÔ8×>Ò>Ñ@Ô@ð ð ‘D�A�qÝ! !¤(­KÑ8Ô8ð ¸Q¼XÔ=PÐTUÒ=UÐ=UØ×-Ò-¨g×.AÒ.AÀ!Ñ.DÔ.DÑEÔEÐEÝ58¸Ô9JÑ5KÔ5KÍcØ3ñOô Oñ 6Ð/°Ñ2øð ×,Ò,Ø×,Ò,Ñ.Ô.å*Ø(­cÐ2IÑ.JÔ.Jðñ ô õ +¨=¸aÐ@Ñ@Ô@ðññ	ô 	ð 	ð Ô!×(Ò(Ð)@ÑAÔAÐAùð 	×$Ò$å" 9Ñ-Ô-Ý" <µSÐ9OÑ5PÔ5PÐQÑQÔQðõ Ð4°QÔ7ÔAÀAÑEÑFÔFðñ	
ô 	
ð 	
ð" ð 	Ð 7ð 	Ø×(Ò(Ý# MÐ:JÐKÑKÔKÐLñô ð õ Œ=ÔÔ9Ð=NÐNÐNØ#×HÒHØ)-ð  Iñ  ô  Ðð  ð 
Ý”=Ô'ÔAÀVÒKÐKÝ”MðkØXhðkð kñô ð ð õ
 'ðkØXhðkð kñô ð ð
 &Ð%s   áa6 á6
b#â bâb#r  c                 óZ  — | j         j        rúd}|}|�Ît          t          |                     ¦   «         ¦  «        ¦  «        }|D ]`}|| j        u r)|                     |                     |¦  «        ¦  «         Œ4|j        st          d¦  «        ‚ ||j        |         ¦  «         Œa|                     t          t          |¦  «        ¦  «        ¦  «         |j        }|dz  }|­Î|                     t          d|¬¦  «        ¦  «         d S |                     t          dd¬¦  «        ¦  «         d S )Nr   zAcur_tx.post_prune_cell_and_freevars must be set for nested framesr0   r§  rŒ  )r­  rõ   r¼   Úsortedr…  rž  rÏ  Úcreate_load_closureÚpost_prune_cell_and_freevarsrY  r9   r   rÖ  r<   )rø   r¥  r  Útx_cntr×  r€  Úcells          r¥   r½  zOutputGraph.codegen_cellsL	  sQ  € àÔ'Ô3ð 	FØˆFØ79ˆFØÐ$õ !¥¨×(@Ò(@Ñ(BÔ(BÑ!CÔ!CÑDÔD�Ø$ð Fð F�DØ ¤Ð-Ð-Ø×(Ò(¨×)?Ò)?ÀÑ)EÔ)EÑFÔFÐFÐFà%ÔBð Ý"0Ø cñ#ô #ð ð ˜˜6Ô>¸tÔDÑEÔEÐEÐEØ× Ò Õ!3µC¸±M´MÑ!BÔ!BÑCÔCÐCØœ�Ø˜!‘�ð% Ð$ð& ×ÒÕ/°À&ÐIÑIÔIÑJÔJÐJÐJÐJà×ÒÕ/°À!ÐDÑDÔDÑEÔEÐEÐEÐEr¤   rƒ  Úlog_side_effectsc                 óv  ‡‡	— | j                              ‰¦  «         | j        r˜| j        rt	          d¦  «        ‚| j                             ¦   «         D ]h\  }} ‰|¦  «         | j        €t	          d¦  «        ‚‰                     ‰                     | j        ¦  «        ¦  «         ‰ 	                    |¦  «         Œit          j        r| j                              ‰¦  «         |j        D ]�\  Š	}‰                     ˆˆ	fd„¦  «         |D ]} ‰|¦  «         Œ‰                     t!          t#          |¦  «        d¦  «        ¦  «         ‰                     t%          d¦  «        g¦  «         Œ‚|                      |‰¦  «         ‰                     ||j         ¬¦  «         | j                              ‰|¦  «         d S )Nz.backward_state is not supported in export modez>backward_state_var must not be None when backward_state is setc                  ó   •—  ‰ ‰¦  «        S rì   r£   )r  Ú	debug_vars   €€r¥   r€  z,OutputGraph.codegen_suffix.<locals>.<lambda>„	  s   ø€  R R¨	¡]¤]€ r¤   Fr¦  )Úvalue_from_source)rœ  Úcodegen_save_tempvarsrð  rT  rY  r  rò  rÏ  rÐ  Ú
store_attrr1   Úreplay_side_effectsÚcodegen_hooksr¼  r†  Úextend_outputr:   r   r<   r½  Úrestore_stackÚcodegen_update_mutated)
rø   r¥  rƒ  r  rö  r=  r  r  rk  rù  s
      `     @r¥   r¿  zOutputGraph.codegen_suffixh	  sÞ  øø€ ð 	Ô×/Ò/°Ñ3Ô3Ð3ØÔð 
	$ØŒ{ð WÝ$Ð%UÑVÔVÐVØ!Ô0×6Ò6Ñ8Ô8ð $ð $‘	��cØ��3‘”�ØÔ*Ð2Ý(ØXñô ð ð × Ò  §¢°Ô0GÑ!HÔ!HÑIÔIÐIØ—’˜dÑ#Ô#Ð#Ð#ÝÔ%ð 	0ØÔ×+Ò+¨BÑ/Ô/Ð/ð  "œð 	>ð 	>‰OˆI�tØ×ÒÐ2Ð2Ð2Ð2Ð2Ñ3Ô3Ð3Øð ð �Ø��3‘”��Ø×ÒÕ1µ#°d±)´)¸UÑCÔCÑDÔDÐDØ×ÒÕ0°Ñ;Ô;Ð<Ñ=Ô=Ð=Ð=ð 	×Ò˜2˜rÑ"Ô"Ð"à
×Ò˜¸R¼Y¸ÐÑGÔGÐGØÔ×0Ò0°Ð5EÑFÔFÐFÐFÐFr¤   c                 ó~  — | j         st          d¦  «        ‚t          | j        j        ¦  «        }|D ]}|j                             dd¦  «         Œt          j        ¦   «         }t          j
        |¦  «        D ]Å\  }}|j        t          j        j        u r¨t          |j        ¦  «        | fk    rŽ|j        s‡|j        d         }|j        t          j        j        u rbt          |j        ¦  «        | fk    rH|j        sA|j        d         }| j                             |¦  «         | j                             |¦  «         ŒÆdS )zÄ
        Remove "creation_timestamp" from node meta

        Remove this pattern from the graph:
            torch._C._set_grad_enabled(False)
            torch._C._set_grad_enabled(True)
        z-should_exit must be True before cleanup_graphÚcreation_timestampNr   )râ  rY  rü   r‘   r­  rY  rá   rÞ   rñ  rÖ  Úpairwiser*  rh  Ú_set_grad_enabledr¼   r  Ú_erasedÚ
erase_node)rø   r­  rè   ræ  Únode1Únode2s         r¥   r·  zOutputGraph.cleanup_graph�	  sF  € ð Ôð 	RÝ Ð!PÑQÔQÐQÝ�T”ZÔ%Ñ&Ô&ˆØð 	6ð 	6ˆDØŒI�MŠMÐ.°Ñ5Ô5Ð5Ð5åÔ,Ñ.Ô.ˆÝ%Ô.¨uÑ5Ô5ð 	1ð 	1‰LˆE�5à”¥¤Ô :Ð:Ð:Ý˜%œ*Ñ%Ô%¨lÐ*:Ð)<Ò<Ð<Øœð =ð  %œz¨!œ}�à”L¥E¤HÔ$>Ð>Ð>Ý˜eœjÑ)Ô)°,Ð.>Ð-@Ò@Ð@Ø!œMð Að $)¤:¨a¤=�LØ”J×)Ò)¨%Ñ0Ô0Ð0Ø”J×)Ò)¨%Ñ0Ô0Ð0øð	1ð 	1r¤   r”  c                 óV  ‡‡— | j         sdS t          j        j        j        r%t          j        j                             d‰¦  «        ‚t                               d‰¦  «         t          j	         
                    dd„ ˆˆfd„¬¦  «         | j                              ¦   «          d| _         dS )zE
        Do not save this output graph to the CompilePackage
        NzDetected a package bypass: %sÚartifactc                  ó   — dddœS )NÚprecompile_cache_bypassÚjson©r=  Úencodingr£   r£   r¤   r¥   r€  z,OutputGraph.bypass_package.<locals>.<lambda>¼	  s   € Ø1Ø"ð!ð !€ r¤   c                  ó   •— d‰i‰ ¥S )NÚ_reasonr£   )r  ró   s   €€r¥   r€  z,OutputGraph.bypass_package.<locals>.<lambda>À	  s   ø€ à˜6ð ð ð € r¤   ©Úmetadata_fnÚ
payload_fn)r¡  rÞ   ri  r1   Ústrict_precompiler2   ÚPackageErrorrï   ÚwarningÚ_loggingÚtrace_structuredÚbypass_current_entryr—  s    ``r¥   r˜  zOutputGraph.bypass_package¯	  sÄ   øø€ ð Œ|ð 	ØˆFÝŒ=ÔÔ1ð 	Ý”-Ô#×0Ò0Ø/°ñô ð õ 	�ŠÐ3°VÑ<Ô<Ð<ÝŒ×'Ò'Øðð ðð ð ð ð ð 	(ñ 	
ô 	
ð 	
ð 	Œ×)Ò)Ñ+Ô+Ð+ØˆŒˆˆr¤   c                 óÒ   — i }| j         j        D ]W}|j                             dd ¦  «        }t	          |t
          j        j        ¦  «        r|j        }d„ |D ¦   «         ||j	        <   ŒX|S )Nr[  c                 óZ   — g | ](}t          |t          ¦  «        r|nt          |¦  «        ‘Œ)S r£   )rÝ   rº   Úrepr)r  Úss     r¥   r  z:OutputGraph.get_graph_sizes_structured.<locals>.<listcomp>Ï	  s1   € Ð!UÐ!UÐ!UÈ1¥z°!µSÑ'9Ô'9Ð"F ! !½tÀA¹w¼wÐ!UÐ!UÐ!Ur¤   )
r‘   r­  rY  r�  rÝ   rÞ   rÆ  r!   Úshaper=  )rø   Úretrè   r[  rš   s        r¥   Úget_graph_sizes_structuredz&OutputGraph.get_graph_sizes_structuredÉ	  ss   € Ø*,ˆØ”JÔ$ð 	Vð 	VˆDØ œIŸMšM¨/¸4Ñ@Ô@ˆMÝ˜-­Ô):Ô)EÑFÔFð VØ$Ô*�Ø!UÐ!UÐPTÐ!UÑ!UÔ!U��D”I‘øØˆ
r¤   c                 ó  — d}|d|› d�z  }| j         j        D ]ð}|j                             dd ¦  «        }t	          |t
          j        j        ¦  «        r´|j        }||j	        › dt          |¦  «        › d�z  }g }d}|D ]j}t	          |t          ¦  «        r|                     |¦  «         Œ-t	          |t
          j        ¦  «        r"d}|                     |j        j        ¦  «         Œi n|r||j	        › d	t          |¦  «        › d�z  }Œñ|S )
NzTRACED GRAPH TENSOR SIZES
z===== z =====
r[  z: r¹  FTz (concrete): )r‘   r­  rY  r�  rÝ   rÞ   rÆ  r!   r   r=  r¼   rº   rà   rR  rè   Úhint)	rø   r=  Úgraph_sizes_strrè   r[  rš   Úconcrete_sizeÚ
has_symintÚszs	            r¥   Úget_graph_sizeszOutputGraph.get_graph_sizesÒ	  s=  € Ø7ˆØÐ2 DÐ2Ð2Ð2Ñ2ˆØ”JÔ$ð 	ð 	ˆDØ œIŸMšM¨/¸4Ñ@Ô@ˆMÝ˜-­Ô):Ô)EÑFÔFð Ø$Ô*�Ø d¤iÐ#BÐ#Bµ5¸±;´;Ð#BÐ#BÐ#BÑB�Ø "�Ø"�
Øð ð �BÝ! "¥cÑ*Ô*ð Ø%×,Ò,¨RÑ0Ô0Ð0Ð0Ý# B­¬Ñ5Ô5ð Ø%)˜
Ø%×,Ò,¨R¬W¬\Ñ:Ô:Ð:Ð:à˜à!ð Ø'Ø#œyÐOÐOµu¸]Ñ7KÔ7KÐOÐOÐOñ˜øð Ðr¤   c              #   óx  K  — | j         j                             ¦   «         }i }|                      |¬¦  «         	 | j         j                             |¦  «         dV — | j         j                             t          |¦  «        ¦  «         dS # | j         j                             t          |¦  «        ¦  «         w xY w)zj
        Momentarily restores the global state to what it was prior to tracing the current output
        )rä  N)rÈ  rî  Úcopy_graphstaterë  Úrestore_graphstater   )rø   Úprior_global_stateÚcurrent_global_states      r¥   Úrestore_global_statez OutputGraph.restore_global_stateë	  sÏ   è è € ð
 "Ô1Ô@×PÒPÑRÔRÐØ<>ÐØ×ÒÐ#7ÐÑ8Ô8Ð8ð	àÔ Ô/×BÒBÐCUÑVÔVÐVØˆEˆEˆEð Ô Ô/×BÒBÝ,Ð-AÑBÔBñô ð ð ð øˆDÔ Ô/×BÒBÝ,Ð-AÑBÔBñô ð ð øøøs   º#B Â.B9c                 ó¤  ‡— | j         }|€t          d¦  «        ‚|j        xŠ��ª‰j        �€¤‰j        }t
                               d‰j        ¦  «         t          j	         
                    dd„ ˆfd„¬¦  «         |j        }t          |¦  «        dk    r5t          d                     d	                     |¦  «        ¦  «        ¦  «        ‚t          |                     ¦   «         ¦  «                             |                     ¦   «         t          j                             ¦   «         z  ¦  «        5  t+          d
d¬¦  «        5  d g|                     ¦   «         z  }t/          j        |‰j        |¬¦  «         |‰_        d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |j                             ¦   «          t6          j        ‚d S d S )Nr0  zcompiler_collective %sr  c                  ó   — dddœS )NÚcompiler_collectiveÚstringr  r£   r£   r¤   r¥   r€  z5OutputGraph.run_compiler_collective.<locals>.<lambda>
  s   € Ø1Ø (ð%ð %€ r¤   c                  ó6   •— ‰ j                              ¦   «         S rì   )Úlocal_stateÚrender)Údss   €r¥   r€  z5OutputGraph.run_compiler_collective.<locals>.<lambda>
  s   ø€  2¤>×#8Ò#8Ñ#:Ô#:€ r¤   r  r0   z&Expect only one device type but got {}ú+r2  Tr$  )Úgroup)rž  rY  Údistributed_stateÚ
all_statesÚ
compile_pgrï   Úinfor5  rÞ   r  r  Ú_device_typesr   r»  rº  rE   rá   rg  Úrankrò  Údevice_countrn   rš   ÚdistÚall_gather_objectÚspeculation_logrš  r2   Ú CompileCollectiveRestartAnalysis)rø   r¥  r<  Údevice_typesr;  r7  s        @r¥   rÍ  z#OutputGraph.run_compiler_collectiveý	  sQ  ø€ ØŒ\ˆØˆ:Ý Ð!;Ñ<Ô<Ð<ØÔ&Ð&ˆBÑ3¸¼Ñ8MØœˆJå�HŠHÐ-¨r¬~Ñ>Ô>Ð>ÝŒN×+Ò+Øðð ð ;Ð:Ð:Ð:ð ,ñ ô ð ð &Ô3ˆLÝ�<Ñ Ô  AÒ%Ð%Ý$Ø<×CÒCØŸš Ñ.Ô.ñô ñô ð õ )¨×)9Ò)9Ñ);Ô);Ñ<Ô<×CÒCØ—O’OÑ%Ô%­Ô(9×(FÒ(FÑ(HÔ(HÑHñô ð
+ð 
+õ Ð2È$ÐOÑOÔOð	
+ð 
+ð *.¨°·²Ñ1BÔ1BÑ(B�
åÔ& z°2´>ÈÐTÑTÔTÐTà *�”ð
+ð 
+ð 
+ñ 
+ô 
+ð 
+ð 
+ð 
+ð 
+ð 
+ð 
+øøøð 
+ð 
+ð 
+ð 
+ð 
+ð 
+ð 
+ñ 
+ô 
+ð 
+ð 
+ð 
+ð 
+ð 
+ð 
+øøøð 
+ð 
+ð 
+ð 
+ð Ô×$Ò$Ñ&Ô&Ð&ÝÔ6Ð6ðC 4Ð3Ð8MÐ8Ms6   Ä-FÄ?<FÅ;FÆF	ÆFÆF	ÆFÆF"Æ%F"Úrvr‚   c                 ó~  — | j         sdS ddlm} |D ]ý}t          ||¦  «        r|j        sŒ|                     ¦   «         j        j                             d¦  «        }t          |t          j
        j        j        ¦  «        st          dt          |¦  «        › �¦  «        ‚|j        €Œ–t!          |dfg¦  «        }|| j         z  rK|j        rt%          |j        ¦  «        n|j        j        j        }|j        j                             |¦  «         Œþ|j        j        r!d|j        _        t3          j        d¬¦  «        ‚dS )	aj  
        Validate that if torch.autograd.grad is used in the graph and outputs
        require grad, we trigger AutogradGradRestartAnalysis only if the output is connected
        to the autograd.grad computation.

        rv here refers to list of variables that are being returned from dynamo graph.

        See Note [Tracing autograd.grad in dynamo]
        Nr0   ©ÚTensorVariabler[  z/expected example_value to be a FakeTensor, got Tz3autograd.grad consumed grad_fns of returned tensors©Úrestart_reason)rè  Úvariables.tensorrI  rÝ   Úrequires_gradr6  rè   rY  r�  rÞ   rÆ  Úfake_tensorr!   rY  rZ  rß   rê   r  r¾   r'  r=  rC  Úautograd_grad_leaked_tensorsrà   Úgraph_break_on_autograd_gradr2   ÚAutogradGradRestartAnalysis)rø   rF  r¥  rI  r  rN  Úreachable_grad_fnsÚtensor_names           r¥   Ú)_validate_outputs_safe_for_autograd_nodesz5OutputGraph._validate_outputs_safe_for_autograd_nodes$
  sh  € ð Ô3ð 	ØˆFà4Ð4Ð4Ð4Ð4Ð4àð 	Tð 	TˆCÝ˜c >Ñ2Ô2ð ¸#Ô:Kð ØàŸ,š,™.œ.Ô-Ô2×6Ò6°ÑGÔGˆKÝ˜k­5Ô+<Ô+HÔ+SÑTÔTð Ý$ØYÅdÈ;ÑFWÔFWÐYÐYñô ð ð Ô"Ð*Øõ "<¸kÈ4Ð=PÐ<QÑ!RÔ!RÐØ! DÔ$HÑHð Tà14´ÐT�c #¤*™oœo˜oÀÄÄÔAT�ØÔ"Ô?×FÒFÀ{ÑSÔSÐSøàÔÔ:ð 	à>BˆBÔÔ;ÝÔ1ØTðñ ô ð ð	ð 	r¤   c                 óR  ‡— ddl m} t          ¦   «         Š| j        D ]E}t	          ||¦  «        r3|j        s,‰                     |                     ¦   «         j        ¦  «         ŒF‰sdS | j	        j
        D ]<}|‰v rŒt          ˆfd„|j        D ¦   «         ¦  «        r‰                     |¦  «         Œ=|D ]t}t	          ||¦  «        rb|j        r[|                     ¦   «         j        ‰v r@d}|j        rt          dd|dd	g¬
¦  «         ŒSd|j        _        t%          j        d¬¦  «        ‚ŒudS )a—  Skip frame if a source-less requires_grad_() intermediate leaks as output.

        AOTAutograd's functionalization drops requires_grad_() on intermediates,
        so returning them (or tensors derived from them) produces wrong results.
        We detect this via FX graph reachability: find the requires_grad_() nodes
        for source-less intermediates, then check if any output is downstream.
        r0   rH  Nc              3   ó    •K  — | ]}|‰v V — Œ	d S rì   r£   )r  ÚinpÚtainted_nodess     €r¥   r…  zHOutputGraph._check_requires_grad_intermediate_outputs.<locals>.<genexpr>i
  s(   øè è € ÐHÐH¨C�3˜-Ð'ÐHÐHÐHÐHÐHÐHr¤   aK  An intermediate tensor that had requires_grad_() called on it (or a tensor derived from it) is being returned from the compiled region. AOTAutograd's functionalization drops the requires_grad_() effect on graph outputs, producing wrong results. If you only need the tensor values without gradients, call .detach() before returning.z,returning intermediate with requires_grad_()z4graph output depends on source-less requires_grad_()zVIf you only need the tensor values without gradients, call .detach() before returning.z‚Consume the gradient inside the compiled function (call backward() and use .grad), or move requires_grad_() outside torch.compile.rO  Tz:source-less requires_grad_() intermediate leaked as outputrJ  )rL  rI  rÜ   r¹  rÝ   r  râ   r6  rè   r‘   r­  ÚanyÚall_input_nodesrM  r¢  rI   rC  Úgraph_break_on_requires_grad_r2   ÚRequiresGradRestartAnalysis)	rø   rF  r¥  rI  r  rè   r  rÓ   rX  s	           @r¥   Ú)_check_requires_grad_intermediate_outputsz5OutputGraph._check_requires_grad_intermediate_outputsP
  s¦  ø€ ð 	5Ð4Ð4Ð4Ð4Ð4õ -0©E¬EˆØÔ-ð 	5ð 	5ˆAÝ˜!˜^Ñ,Ô,ð 5°Q´Xð 5Ø×!Ò! !§*¢*¡,¤,Ô"3Ñ4Ô4Ð4øàð 	ØˆFð ”JÔ$ð 	(ð 	(ˆDØ�}Ð$Ð$ØÝÐHÐHÐHÐH°4Ô3GÐHÑHÔHÑHÔHð (Ø×!Ò! $Ñ'Ô'Ð'øð
 ð 	ð 	ˆCå˜3 Ñ/Ô/ðàÔ%ðð —L’L‘N”NÔ'¨=Ð8Ð8ðQð ð ”<ð Ý!Ø NØ VØ$'ð?ðNðð	ñ ô ð ð ð HL�BÔ&ÔDÝÔ9Ø'cðñ ô ð øð;	ð 	r¤   rÙ  c                 ó@  ‡ ‡!‡"‡#‡$‡%‡&— t           j        j                             ¦   «         5  ddlm} ‰ j        st          d¦  «        ‚‰                      ¦   «          t          ‰ j
        ¦  «        dk    r#t          |¦  «        dk    rg dfcddd¦  «         S t          dd¬¦  «        }t          |t          ¦  «        st          d	t          |¦  «        › �¦  «        ‚t          |t           ¦  «        st          d
t          |¦  «        › �¦  «        ‚‰                      ||¦  «         ‰                      ||¦  «         ‰                      dd‰ j                             t-          d„ |D ¦   «         ¦  «        ¦  «        fi ¦  «        }‰                      ¦   «         }|                     |¦  «         ‰ j                             ||¦  «         t4          j        sÉt9          d¦  «        5  t;          |¦  «        D ]I}t=          ||¦  «        }	t          |	t>          j         ¦  «        rtC          |	‰ j"        |‰ j#        ¬¦  «         ŒJ‰  $                    ¦   «          tC          t?          j         |‰ j
        ¦  «        ‰ j"        |‰ j#        ¬¦  «         ddd¦  «         n# 1 swxY w Y   ‰  %                    ¦   «          t          ‰ j
        ¦  «        }
tL          d         dxx         |
z  cc<   ‰  '                    ¦   «          ‰ j(         )                    ¦   «          tU          |‰ j
        ¦  «        Š#ddl+m,}  |‰#¦  «         ‰ j-        r)‰ j-        D ]!}t]          ‰#|t=          ||¦  «        ¦  «         Œ"‰ j/        D ]} |‰#¦  «         Œta          ‰# 1                    ¦   «         d¦  «        �-‰  2                    d‰# 3                    ddd¬¦  «        ¬¦  «         ‰ j4        �|‰#_5        ‰ j6        ‰#_6        ‰ j7         8                    ¦   «         ‰#j9        d<   ‰ j:        ‰#j9        d<   |‰#j9        d<   ‰ j;        �‰ j;        ‰#j9        d<   tx           =                    dt}          |‰#ddd¬¦  «        ¦  «         t           j?         @                    dˆ fd„ˆ#fd„¬¦  «         ‰  A                    ¦   «          ‰ jB        jC        }|€t          d ¦  «        ‚|‰ _D        ‰ j#        shddlEmFc m} | G                    d¬!¦  «        5  t           jH         I                    |j"        ¬"¦  «        }ddd¦  «         n# 1 swxY w Y   |‰ jB        _C        ‰#j
         J                    ¦   «          ‰  K                    ¦   «         5  ‰  L                    ‰#‰  M                    ¦   «         ¦  «        Š"ddd¦  «         n# 1 swxY w Y   dd#lNmO} t          ‰"|¦  «        s*t          t=          ‰"d$d¦  «        |¦  «        rP‰"jP        d%k    rEt          ‰"|¦  «        r‰"n‰"jQ        }| R                    |¦  «         t          ‰"|¦  «        s|jS        Š"‰ j#        s|jT         U                    ¦   «          ‰ j4        �‰ j4         V                    |‰"¦  «         ‰ jW        r	‰"Š$ˆ$fd&„}|Š" |‰"d'¬(¦  «        Š"tL          d         d)xx         dz  cc<   |j"        €t          d*¦  «        ‚|j"        jX        x}�r.g Š&i Š%d+„ ‰ jY        D ¦   «         }|D ]º}| Z                    |j[        ¦  «        }t¹          j]        |j^        ¦  «         _                    ¦   «         }tÁ          ¦   «         }tÃ          jb        ||j^        |gd¦  «        }tÆ           =                    d,|¦  «         ‰& d                    tË          jf        |fd-„|¦  «        |f¦  «         Œ»t           jg                             d'¬(¦  «        d.tÐ          d/tÐ          d0tÐ          fˆ"ˆ#ˆ ˆ%ˆ&fd1„¦   «         }‰  i                    ||¦  «         n‰  i                    |‰"¦  «         ‰ jj        €t          d2¦  «        ‚t×          ‰ jj        ¦  «        Š!tÙ          ¦   «         râ‰! m                    ˆ!fd3„¦  «         g }tÝ          jo        ¦   «         D ]K} |‰!¦  «         ‰  p                    ¦   «         }‰! q                    |¦  «         | d                    |¦  «         ŒL|D ]*}‰! r                    ‰! s                    |¦  «        ¦  «         Œ+‰! t                    t          tÜ          ¦  «        d¦  «         ‰! u                    ¦   «          tí          ‰ jY        ¦  «        D ]\  }} | j[        ‰ jw        jx        |<   Œ‰! y                    |¦  «         ‰! z                    ¦   «         ‰! {                    ¦   «         fcddd¦  «         S # 1 swxY w Y   dS )4až  
        Generate code from self.graph and return the Instruction()s to
        call that generated code.

        Code is generated w.r.t. self.root_tx.
        tx is only used for preserving GraphModule metadata

        Returns a tuple of (instructions, pycode) where pycode is a string
        representation of the generated Python code if generate_pycode_prologue
        is enabled, otherwise None.
        r0   r”  z2should_exit must be True before call_user_compilerr   NÚ__compiled_fnT)Ú	with_uuidzrv must be a list, got z#root must be a FakeRootModule, got rÜ  c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S rì   )r6  r  s     r¥   r…  z8OutputGraph.compile_and_call_fx_graph.<locals>.<genexpr>À
  s*   è è € Ð5OÐ5OÀq°a·j²j±l´lÐ5OÐ5OÐ5OÐ5OÐ5OÐ5Or¤   r-   )rT  ÚstatsÚcalls_captured)Údce_hop_extra_outputsz8Graph contains named parameters due to static addresses.F©Úprint_outputÚinclude_strideÚinclude_device©rÈ   rì  rË  Ú
backend_idr¿  ú%s)rg  rh  ÚcoloredÚdynamo_output_graphc                  ó0   •— d‰                       ¦   «         iS )NÚsizes)r"  r÷   s   €r¥   r€  z7OutputGraph.compile_and_call_fx_graph.<locals>.<lambda>  s   ø€ ˜ $×"AÒ"AÑ"CÔ"CÐD€ r¤   c                  ó4   •— ‰                       ddd¬¦  «        S )NFTre  )Úprint_readableri  s   €r¥   r€  z7OutputGraph.compile_and_call_fx_graph.<locals>.<lambda>  s#   ø€  2×#4Ò#4Ø!&°tÈDð $5ñ $ô $€ r¤   )r  zold_fake_mode must not be Nonerª  )r[  )Ú_LazyGraphModuleÚ__self__Ú_lazy_forwardc                  ó„   •— t           j                             ¦   «         5   ‰| i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S rì   )rÞ   rh  ÚDisableTorchFunctionSubclass)r  r  Úreal_compiled_fns     €r¥   Ú_tf_disabled_wrapperzCOutputGraph.compile_and_call_fx_graph.<locals>._tf_disabled_wrapperk  s¢   ø€ Ýœ×>Ò>Ñ@Ô@ð Að AØ/Ð/°Ð@¸Ð@Ð@ðAð Að Að Añ Aô Að Að Að Að Að Að Aøøøð Að Að Að Að Að As    5µ9¼9z"do not trace Dynamo-compiled graphr—  Úunique_graphsz(old_fake_mode.shape_env must not be Nonec                 ó   — g | ]	}|j         ‘Œ
S r£   rU  )r  Úas     r¥   r  z9OutputGraph.compile_and_call_fx_graph.<locals>.<listcomp>{  s   € Ð<Ð<Ð<¨˜1œ8Ð<Ð<Ð<r¤   z:Compiling backend specialized graph with specialization=%sc                 ó$   —  |||          ¦  «        S rì   r£   )ræ  r  Úcheck_fns      r¥   r€  z7OutputGraph.compile_and_call_fx_graph.<locals>.<lambda>�  s   € ÀXÀXØ$(¨¤IñF"ô F"€ r¤   r  r  rÆ   c                  ó¸  •— ‰	D ]Ï\  }} || ¦  «        r¿|‰v r ‰|         | i |¤Žc S ‰j                              |j        |j        ¦  «        5  |‰j        d<   t          | ¦  «        }t          ‰j        ¦  «        5  ‰                     ‰|¦  «        ‰|<   d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y    ‰|         | i |¤Žc S ŒÐ ‰| i |¤ŽS )NÚspecialization)	r[  Úpatch_source_specializationr  r}  rY  rü   r   rÈ  Úcall_user_compiler)
r  r  r}  r  rÉ   Úcompiled_fnrÈ   rø   Úspecialization_cacheÚspecialization_guardss
        €€€€€r¥   Úspecialized_dispatchzCOutputGraph.compile_and_call_fx_graph.<locals>.specialized_dispatch™  s¿  ø€ à4Ið Yð YÑ0˜ .Ø#˜8 D™>œ>ð YØ-Ð1EÐEÐEØ'KÐ';¸NÔ'KØ%)ð("Ø-3ð("ð ("ð !"ð !"ð !"ð "&¤×!KÒ!KØ .Ô 5°~Ô7Nñ"ô "ð 	&ð 	&ð =K ¤Ð(8Ñ 9Ý?CÀD¹z¼z Ý%,¨TÔ-AÑ%BÔ%Bð !&ð !&à(,×(?Ò(?ÀÀNÑ(SÔ(Sð %9¸Ñ$Hð!&ð !&ð !&ñ !&ô !&ð !&ð !&ð !&ð !&ð !&ð !&øøøð !&ð !&ð !&ð !&ð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð $HÐ#7¸Ô#GÈÐ#XÐQWÐ#XÐ#XÐXÐXÐXð#Yð$ '˜;¨Ð7°Ð7Ð7Ð7s6   Á.B8Á;B!ÂB8Â!B%Â%B8Â(B%Â)B8Â8B<	Â?B<	r0  c                  óX   •— ‰                       t          j        j        j        d¦  «        S )NÚstore_user_object_weakrefs)r~  rÞ   ri  Úgraph_bytecode_inputsrž   )r  s   €r¥   r€  z7OutputGraph.compile_and_call_fx_graph.<locals>.<lambda>Á  s%   ø€ ˜B×/Ò/ÝœÔ;ÔDØ4ñô € r¤   )|rÞ   rR  r   Úclear_framer¸  r•  râ  rY  rÍ  rl   r‘   r   rA   rÝ   rü   rZ  r  r]  rT  rÎ  r¢  Ú
create_argr¼   Ú
dedup_passr  Ú_maybe_preserve_original_metar1   Údo_not_emit_runtime_assertsrn   ÚdirrÌ   r   r0  r-   r[  rT  Úremove_unused_get_attr_nodesÚremove_unused_graphargsrm   Ú&remove_tensorify_specialized_graphargsrÆ  rš  r$   Údce_extra_outputsrd  rù  r  rÝ  r»  Ú
parametersr˜  rq  r¡  Ú_backend_idr­  rì  r$  rY  rË  r¿  Úgraph_code_logr®  rw   r  r  r›  rÈ  rþ  Ú_old_fake_moderÄ  rd  rÅ  rÆ  rÇ  Úlintr/  r�  rÉ   Útorch.fx._lazy_graph_modulerr  rž   rs  Úforce_recompiler'  Úfake_tensor_converterÚclear_non_cpu_constantsÚadd_backend_idræ  Úspecializationsra  rc  r  ÚinspectÚ	getsourcer}  ÚstripÚRootGuardManagerr   ÚLAMBDA_GUARDrï   rà   rô  rõ  ri  r	   Úinstall_global_unsaferž  rC   rK   r†  rL   r^  rZ  r‹  rÏ  rÐ  rŠ  Úpop_toprª  rŽ  r|  Úmake_call_generated_coder�  rÎ  )'rø   r¥  rF  rÙ  r•  r=  Úoutput_nodeÚsub_gmsÚattrÚsubgraphÚncallsrd  Úsubgraph_nameÚregister_finalizerÚold_fake_moderý  Úbackend_fake_moderr  Úlazy_gmrx  r�  Úsourcesr  Úsource_indexÚcheck_fn_sourceÚunused_root_guard_managerr}  r…  Útmp_varsÚconstructorÚvar_nameræ  rk  r  r‚  rÈ   rw  rƒ  r„  s'   `                                @@@@@@r¥   r¾  z%OutputGraph.compile_and_call_fx_graph�
  s7  øøøøøøø€ õ" Œ]Ô)×5Ò5Ñ7Ô7ð {	:ð {	:Ø+Ð+Ð+Ð+Ð+Ð+àÔ#ð Ý$ØHñô ð ð ×(Ò(Ñ*Ô*Ð*Ý˜4œ:Ñ&Ô&¨!Ò+Ð+µ°B±´¸1²°Ø˜4�xð{	:ð {	:ð {	:ð {	:ñ {	:ô {	:ð {	:ð {	:õ ˜_¸Ð=Ñ=Ô=ˆDå˜b¥$Ñ'Ô'ð KÝ$Ð%I½tÀB¹x¼xÐ%IÐ%IÑJÔJÐJÝ˜d¥NÑ3Ô3ð YÝ$Ð%WÍ4ÐPTÉ:Ì:Ð%WÐ%WÑXÔXÐXð
 ×:Ò:¸2¸rÑBÔBÐBð ×:Ò:¸2¸rÑBÔBÐBà×*Ò*ØØØÔ$×/Ò/µÐ5OÐ5OÈBÐ5OÑ5OÔ5OÑ0OÔ0OÑPÔPÐRØñ	ô ˆKð —o’oÑ'Ô'ˆGØ×Ò Ñ(Ô(Ð(àÔ×=Ò=¸bÀ+ÑNÔNÐNÝÔ5ð õ "Ð"CÑDÔDð ð Ý # D¡	¤	ð ð ˜Ý#*¨4°Ñ#6Ô#6˜Ý% hµ´Ñ?Ô?ð Ý;Ø (Ø $¤Ø $Ø'+¤{ð	ñ ô ð øð ×5Ò5Ñ7Ô7Ð7Ý3Ýœ t¨T¬ZÑ8Ô8ØœØØ#œ{ð	ñ ô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð& ×(Ò(Ñ*Ô*Ð*Ý  ¤Ñ,Ô,ˆFÝ�WÔÐ.Ð/Ð/Ô/°6Ñ9Ð/Ð/Ñ/à×7Ò7Ñ9Ô9Ð9ð Ô!×'Ò'Ñ)Ô)Ð)å# D¨$¬*Ñ5Ô5ˆBà@Ð@Ð@Ð@Ð@Ð@à!Ð! "Ñ%Ô%Ð%ð
 Ô6ð MØ%)Ô%Lð Mð M�MÝ˜B ­w°t¸]Ñ/KÔ/KÑLÔLÐLÐLà&*Ô&Að 'ð 'Ð"Ø"Ð" 2Ñ&Ô&Ð&Ð&å�B—M’M‘O”O TÑ*Ô*Ð6ð ×#Ò#ØNØ×(Ò(Ø%*¸4ÐPTð )ñ ô ð $ñ ô ð ð Œ|Ð'Ø!%�”ð *.Ô)EˆBÔ&ð Ô5×:Ò:Ñ<Ô<ð ŒGÐ6Ñ7ð ,0Ô+AˆBŒGÐ'Ñ(Ø$(ˆBŒG�LÑ!àÔ(Ð4Ø26Ô2K�”Ð.Ñ/å× Ò ØÝ&Ø˜"¨TÀ$ÐPTðñ ô ñô ð õ ŒN×+Ò+Ø%ØDÐDÐDÐDðð ð ð ð ,ñ ô ð ð ×#Ò#Ñ%Ô%Ð%Ø Ô0Ô:ˆMØÐ$Ý$Ð%EÑFÔFÐFà"/ˆDÔØ”;ð CØ9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9à—]’]ÈE�]ÑRÔRð ð õ ).Ô(9×(HÒ(HØ"/Ô"9ð )Iñ )ô )Ð%ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð& 2C�Ô$Ô.àŒH�MŠM‰OŒOˆOØ×*Ò*Ñ,Ô,ð Qð QØ"×5Ò5°b¸$×:MÒ:MÑ:OÔ:OÑPÔP�ðQð Qð Qñ Qô Qð Qð Qð Qð Qð Qð Qøøøð Qð Qð Qð Qð EÐDÐDÐDÐDÐDå˜+Ð'7Ñ8Ô8ð 2Ý�7 ;°
¸DÑAÔAÐCSÑTÔTð2àÔ(¨OÒ;Ð;õ " +Ð/?Ñ@Ô@ð.�K�Kà$Ô-ð ð !×0Ò0°Ñ9Ô9Ð9å! +Ð/?Ñ@Ô@ð 2à")¤/�Kà”;ð Nð
 Ô3×KÒKÑMÔMÐMàŒ|Ð'Ø”×+Ò+¨D°+Ñ>Ô>Ð>ð Ô3ð 3Ø#.Ð ðAð Að Að Að Að 3�à!˜'ØÐ$Hðñ ô ˆKõ �WÔ˜oÐ.Ð.Ô.°!Ñ3Ð.Ð.Ñ.ØÔ&Ð.Ý$Ð%OÑPÔPÐPØ"/Ô"9Ô"IÐIˆñ <>Ø(*Ð%ØSUÐ$Ø<Ð<¨T¬^Ð<Ñ<Ô<�Ø&5ð ð �NØ#*§=¢=°Ô1FÑ#GÔ#G�LÝ&-Ô&7¸Ô8OÑ&PÔ&P×&VÒ&VÑ&XÔ&X�Oå0@Ñ0BÔ0BÐ-Ý%Ô2Ø1Ø&Ô/Ø(Ð)Øñ	 ô  �Hõ —I’IØTØ'ñô ð ð
 *×0Ò0å%Ô-Ø;Cð !"ð !"ð !"ð !-ñ	ô ð +ðñ
ô 
ð 
ð 
õ ”×&Ò&Ð.RÐ&ÑSÔSð8µð 8½sð 8Åsð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ñ TÔSð8ð. ×*Ò*¨4Ð1EÑFÔFÐFÐFð ×*Ò*¨4°Ñ=Ô=Ð=àŒ|Ð#Ý$Ð%?Ñ@Ô@Ð@Ý˜4œ<Ñ(Ô(ˆBåÑ!Ô!ð ð × Ò ðð ð ð ñô ð ð �Ý#@Ô#GÑ#IÔ#Ið .ð .�KØ�K ‘O”O�OàŸš™œð ð —H’H˜XÑ&Ô&Ð&Ø—O’O HÑ-Ô-Ð-Ð-à (ð ?ð ?�HØ×$Ò$ R§^¢^°HÑ%=Ô%=Ñ>Ô>Ð>Ð>à× Ò ¥Õ%BÑ!CÔ!CÀUÑKÔKÐKØ—
’
‘”�å% d¤nÑ5Ô5ð Wð W‘��SØLOÌJ�Ô$ÔDÀSÑIÐIà×'Ò'¨Ñ-Ô-Ð-à×&Ò&Ñ(Ô(¨"¯-ª-©/¬/Ð9ðw	{	:ð {	:ð {	:ð {	:ñ {	:ô {	:ð {	:ð {	:ð {	:ð {	:ð {	:ð {	:øøøð {	:ð {	:ð {	:ð {	:ð {	:ð {	:sˆ   «AfÂEfÇ#B#JÊfÊJ	ÊfÊJ	ÊI
fÓ$&TÔ
fÔT	ÔfÔT	Ô<fÕ)VÖfÖV	ÖfÖV	ÖO/fæfæfc                 ó8   — | j                              d¬¦  «        S )Nr¨  r  )r‘   Ú
find_nodesr÷   s    r¥   ÚplaceholderszOutputGraph.placeholdersÞ  s   € àŒz×$Ò$¨Ð$Ñ6Ô6Ð6r¤   c                 ó$   — d„ | j         D ¦   «         S )Nc                 ó(   — g | ]}|j         d          ‘ŒS )rV  ©rY  )r  rè   s     r¥   r  z)OutputGraph.graphargs.<locals>.<listcomp>ä  s   € ÐDÐDÐD¨$�”	˜*Ô%ÐDÐDÐDr¤   )r¹  r÷   s    r¥   ra  zOutputGraph.graphargsâ  s   € àDÐD°$Ô2CÐDÑDÔDÐDr¤   rÈ   rÉ   c                 óŒ   — t          dddddd¬¦  «        5  |                      ||¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )NúOutputGraph.call_user_compilerÚbackend_compileTÚcompile_aot_autogradÚ'aot_autograd_cumulative_compile_time_us)Ú
phase_namer%  Úlog_waitcounterÚwaitcounter_name_overrideÚdynamo_compile_column_us)rn   Ú_call_user_compiler)rø   rÈ   rÉ   s      r¥   r�  zOutputGraph.call_user_compileræ  s¸   € õ Ø,Ø(Ø"&Ø Ø&<Ø%Nð
ñ 
ô 
ð 	@ð 	@ð ×+Ò+¨B°Ñ?Ô?ð	@ð 	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@s   –9¹=Á =c                 ó®  — | j         €t          d¦  «        ‚d}g }|j        j        D ]0}|j        dv r|dz  }|j        dk    r|                     |¦  «         Œ1t          |¦  «         |D ]+}t          |d¦  «        s|j        d         }|j	        |_
        Œ,| j        |_        | j        |_        t          | j        t"          j        ¦  «        p| j         }t'          | j        t"          j        ¦  «        }	|	rt+          ||	¦  «        }t          |d¦  «        r|j        nd	}
dd
lm}m} t"          j        r ||¦  «        }nt"          j        r ||¦  «        }	  t5          ¦   «         t6          j        d|
› �¦  «         t"          j        rt=          |¦  «        } |||¦  «        } t5          ¦   «         t6          j        d|
› �¦  «         t?          |¦  «        st          d¦  «        ‚�n-# t@          tB          tD          f$ r ‚ tF          $ r²}| j$        r@tK          | j         |tM          j'        ¦   «         ¦  «         (                    |j)        ¦  «        d ‚tU          || j+        j,        dd|
› dt[          |¦  «        › d| j+         .                    ¦   «         › �d|
› dt[          |¦  «        › d�dg¬¦  «         Y d }~n_d }~wt^          $ r ‚ t`          $ rE}tK          | j         |tM          j'        ¦   «         ¦  «         (                    |j)        ¦  «        d ‚d }~ww xY wtc          ddi | j2        ¥|tg          |j        j        ¦  «        tg          |¦  «        dœ¥¦  «         |S )Nzcompiler_fn must not be Noner   ©rŠ  Úcall_methodÚcall_moduler0   r¨  Ú_dynamo_sourcerV  rž   z<unknown compiler_fn>)Úinline_invoke_subgraphÚ!inline_single_use_invoke_subgraphzcalling compiler function zdone compiler function z#compiler_fn did not return callablezBackend compiler exceptionz	Backend: z
Exception:z
Traceback:
zBackend compiler `z` failed with z. Adding a graph break.z-Report an issue to the backend compiler repo.rO  Údynamor¾  )Úop_countÚ
node_countÚinput_count)4rÄ   rY  r‘   r­  r®  rà   ru   r  rY  r  rË  rÑ  Ú_param_name_to_sourcerß  Ú_source_to_user_stacksrN   rË  r1   Údebug_backend_overriderO   Údebug_inductor_config_overriderÎ   rž   Ú5torch._higher_order_ops.passes.inline_invoke_subgraphrÌ  rÍ  rð   r3   ÚINFOr(  r  Úcallabler   r   Ú
IndexErrorrG   rç  rF   rž  ÚcurrentframeÚwith_tracebackÚ__traceback__rJ   rž  r   r¾   Úformat_frame_summaryrH   r*  r"   r©  r   )rø   rÈ   rÉ   Útotr¹  rè   Úplrk  rÄ   Úinductor_config_overrider=  rÌ  rÍ  r‚  rç  s                  r¥   rÆ  zOutputGraph._call_user_compileró  s,  € ð ÔÐ#Ý Ð!?Ñ@Ô@Ð@ØˆØˆØ”H”Nð 	*ð 	*ˆDØŒwÐIÐIÐIØ�q‘�ØŒw˜-Ò'Ð'Ø×#Ò# DÑ)Ô)Ð)øÝ˜3ÑÔÐØð 	/ð 	/ˆBÝ˜2Ð/Ñ0Ô0ð /Ø”g˜jÔ)�ð %(¤J�Ô!øð $(Ô#<ˆÔ Ø$(Ô$>ˆÔ!õ 0ØÔ&­Ô(Eñô ð  ð Ôð	 	õ $OØÔ"¥FÔ$Iñ$
ô $
Ð ð $ð 	Ý4ØÐ5ñô ˆKõ �{ JÑ/Ô/ð)ˆKÔ Ð à(ð 	ð
	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
õ
 Ô(ð 	7Ø'Ð'¨Ñ+Ô+ˆBˆBÝÔ5ð 	7Ø2Ð2°2Ñ6Ô6ˆBð"	8Ø�L‰NŒN�7œ<Ð)LÀdÐ)LÐ)LÑMÔMÐMÝÔ(ð :Ý,¨[Ñ9Ô9�Ø%˜+ b¨.Ñ9Ô9ˆKØ�L‰NŒN�7œ<Ð)IÀ4Ð)IÐ)IÑJÔJÐJÝ˜KÑ(Ô(ð LÝ$Ð%JÑKÔKÐKñLøå.Õ0@Å*ÐMð 	ð 	ð 	ð Ý0ð 	ð 	ð 	ØÔ5ð <Ý+ØÔ$ a­Ô)=Ñ)?Ô)?ñô ç ’. ¤Ñ1Ô1°tð<õ 'ØØ”Ô#Ø4Øq DÐqÐqµc¸!±f´fÐqÐqÈDÌL×LmÒLmÑLoÔLoÐqÐqØd°ÐdÐdÅSÈÁVÄVÐdÐdÐdàCðð	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøøõ ð 	ð 	ð 	ð Ýð 	8ð 	8ð 	8Ý'ØÔ  !¥WÔ%9Ñ%;Ô%;ñô çŠn˜Qœ_Ñ-Ô-°4ð8øøøøð	8øøøõ
 	ØØ,ðØ”.ðàÝ! "¤(¤.Ñ1Ô1Ý" <Ñ0Ô0ð	ð ð ñ		
ô 		
ð 		
ð Ðs'   ÅBG& Ç&!LÈB(J4Ê4LËA LÌLc                 óP   — t           j        j        j        rt	          | ¦  «        S i S rì   )rÞ   ri  r1   Úuse_graph_deduplicationrM   r÷   s    r¥   r‹  zOutputGraph.dedup_pass]  s%   € ÝŒ=ÔÔ7ð 	Ý,¨TÑ2Ô2Ð2àˆIr¤   Úsub_gmc                 ó€   — t          || j        d¬¦  «        }||_        d|_        |                      ||d ¬¦  «         |S )NT)Úrequires_suffixFrU  )rs   r  rž   Útorchdynamo_force_dynamicrV  )rø   r=  rã  Ú	next_names       r¥   rs  zOutputGraph.install_subgraphc  sJ   € Ý'¨¨d¬oÈtÐTÑTÔTˆ	Ø#ˆŒØ+0ˆÔ(ð 	×$Ò$ V¨Y¸tÐ$ÑDÔDÐDØÐr¤   c                 ó(   — d„ | j         D ¦   «         }|S )Nc                 ó   — g | ]	}|j         ‘Œ
S r£   )Úexample)r  rk  s     r¥   r  z.OutputGraph.example_inputs.<locals>.<listcomp>m  s   € Ð8Ð8Ð8 #�#”+Ð8Ð8Ð8r¤   )ra  )rø   r.  s     r¥   rÉ   zOutputGraph.example_inputsl  s   € Ø8Ð8¨¬Ð8Ñ8Ô8ˆàˆr¤   c                 óÔ   — t          | j                             d¬¦  «        d¬¦  «        D ]<}t          t	          |j        ¦  «        ¦  «        dk    r|                      |¦  «         Œ=d S )Nr%  r  T)Úreverser   )rñ  r‘   r¸  r   rü   ÚusersrÑ  ©rø   rè   s     r¥   r�  z(OutputGraph.remove_unused_get_attr_nodesq  sm   € Ý˜4œ:×0Ò0°JÐ0Ñ?Ô?ÈÐNÑNÔNð 	'ð 	'ˆDÝ•4˜œ
Ñ#Ô#Ñ$Ô$¨Ò)Ð)Ø× Ò  Ñ&Ô&Ð&øð	'ð 	'r¤   c                 ól  ‡ ‡‡‡— ‰ j         st          d¦  «        ‚dt          j        j        dt
          fd„}dt          j        j        dt
          fd„Šdt          j        dt
          fˆfd„}d	d
lm} t          t          ‰ j        j        ¦  «        ¦  «        D ]¯}t          t          |j        ¦  «        ¦  «        d	k    rˆ|j        dk    sh|j        dk    r|j        t"          j        u sJ|j        dk    r)|j        t&          j        u r ||j        d	         ¦  «        s ||¦  «        s ||¦  «        r‰                      |¦  «         Œ°dt          j        dt.          j        d z  fd„}dt          j        dd fˆ fd„}t3          ¦   «         Šdt2          t.          j                 dt&          j        t&          j        z  dd fd„Šg }‰ j        D �]³} ||¦  «        d u}|r|j        s|                     |¦  «         Œ/|j        s,t=          |j        d         t@          ¦  «        s ||¦  «         Œb|j        d         }	t=          |	t@          ¦  «        rŒ…t=          |j        d         j!        t&          j"        ¦  «        rµ|j        d         j!        }
|j        d         j#        }t&          j$        j%         &                    |
¦  «        sktO          |
 (                    ¦   «         ¦  «        }|D ]G}tS          |j*        |¦  «        }tW          j,        t&          j        t&          j        fˆˆfd„|¦  «         ŒH�Œdt[          t]          |j        d         j!        ¦  «        ¦  «        r�Œ’|	j/        �|	j/        n|	j!        } ‰‰|¦  «         �Œµ|D ]4} ||¦  «        }|�%|‰vr ||¦  «         Œ‰ 0                    |¦  «         Œ5d S )Nz(should_exit must be True before finalizeÚb_noderÆ   c                 ó   — | du rdS t          | t          j        ¦  «        sdS | j                             d¦  «        }|€dS |du rdS t          |t
          j        ¦  «        r|j                             ¦   «         x}�|S dS )NTFr[  )	rÝ   r   ÚNoderY  r�  rÞ   ÚSymBoolrè   Úmaybe_as_bool)rð  ÚbÚrs      r¥   Úis_static_truez;OutputGraph.remove_unused_graphargs.<locals>.is_static_true…  s�   € Ø˜ˆ~ˆ~Ø�tÝ˜f¥b¤gÑ.Ô.ð Ø�uØ”—’ Ñ0Ô0ˆAØˆyØ�uØ�DˆyˆyØ�tå˜1�eœmÑ,Ô,ðàœ&×.Ò.Ñ0Ô0Ð0�QÐ=à�ð �5r¤   r{  c                 óÞ   — ddl m} t          | t          t          t
          f¦  «        rdS t          | t          j        ¦  «        r(t          | j         	                    d¦  «        |¦  «        S dS )Nr   ©ÚSymTypesTr[  F)
Útorch.fx.experimental.sym_noderú  rÝ   rº   r�  rÔ   r   rò  rY  r�  )r{  rú  s     r¥   Úis_symnode_argz;OutputGraph.remove_unused_graphargs.<locals>.is_symnode_arg˜  sj   € Ø?Ð?Ð?Ð?Ð?Ð?å˜!�c¥5­$Ð/Ñ0Ô0ð Ø�tÝ˜!�RœWÑ%Ô%ð IÝ! !¤&§*¢*¨_Ñ"=Ô"=¸xÑHÔHÐHØ�5r¤   rè   c                 ó.  •— ddl m} | j        dk    rdS t          | j                             d¦  «        |¦  «        sdS t          ˆfd„| j        D ¦   «         ¦  «        sdS t          ˆfd„| j         	                    ¦   «         D ¦   «         ¦  «        sdS dS )	Nr   rù  rŠ  Fr[  c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S rì   r£   ©r  r{  rü  s     €r¥   r…  zWOutputGraph.remove_unused_graphargs.<locals>.is_symnode_compute_node.<locals>.<genexpr>¯  s-   øè è € Ð<Ð<¨Q�~�~ aÑ(Ô(Ð<Ð<Ð<Ð<Ð<Ð<r¤   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S rì   r£   rÿ  s     €r¥   r…  zWOutputGraph.remove_unused_graphargs.<locals>.is_symnode_compute_node.<locals>.<genexpr>±  s-   øè è € ÐGÐG¨Q�~�~ aÑ(Ô(ÐGÐGÐGÐGÐGÐGr¤   T)
rû  rú  r®  rÝ   rY  r�  r±  r  r  r^  )rè   rú  rü  s     €r¥   Úis_symnode_compute_nodezDOutputGraph.remove_unused_graphargs.<locals>.is_symnode_compute_node¤  s·   ø€ Ø?Ð?Ð?Ð?Ð?Ð?àŒw˜/Ò)Ð)Ø�uå˜dœiŸmšm¨OÑ<Ô<¸hÑGÔGð Ø�uõ Ð<Ð<Ð<Ð<°$´)Ð<Ñ<Ô<Ñ<Ô<ð Ø�uÝÐGÐGÐGÐG°$´+×2DÒ2DÑ2FÔ2FÐGÑGÔGÑGÔGð Ø�uØ�4r¤   r   )Úis_accessor_noder%  rŠ  c                 óÂ   — | j         d         }|j        }t          |t          j        ¦  «        r0t          |j        j        t          j        ¦  «        r|j        j        S d S ©NrV  )	rY  rê  rÝ   rÞ   rR  rè   ÚexprÚsympyÚSymbol)rè   rk  rê  s      r¥   Úplaceholder_binds_symbolzEOutputGraph.remove_unused_graphargs.<locals>.placeholder_binds_symbolÆ  sX   € Ø”)˜JÔ'ˆCØ”kˆGÝ˜'¥5¤<Ñ0Ô0ð )µZØ”Ô!¥5¤<ñ6ô 6ð )ð ”|Ô(Ð(Ø�4r¤   c                 óØ   •— t                                d| j        d         j        j        ¦  «         | j        d= ‰                     | ¦  «         ‰j                             | d ¦  «         d S )NzREMOVE UNUSED GRAPHARG %srV  )rï   r®  rY  r  r=  rÑ  rÆ  rá   )rè   rø   s    €r¥   Úremove_unusedz:OutputGraph.remove_unused_graphargs.<locals>.remove_unusedÏ  sd   ø€ Ý�IŠIÐ1°4´9¸ZÔ3HÔ3OÔ3TÑUÔUÐUð ”	˜*Ð%Ø×Ò˜TÑ"Ô"Ð"ØÔ!×%Ò% d¨DÑ1Ô1Ð1Ð1Ð1r¤   Úused_symbolsÚfakec                 ó*   — | t          |¦  «        z  } d S rì   )r&   )r  r  s     r¥   Úupdate_used_symbolsz@OutputGraph.remove_unused_graphargs.<locals>.update_used_symbolsÙ  s   € ð �L¨Ñ.Ô.Ñ.ˆLˆLˆLr¤   rV  c                 ó   •—  ‰‰| ¦  «        S rì   r£   )Útr  r  s    €€r¥   r€  z5OutputGraph.remove_unused_graphargs.<locals>.<lambda>ü  s   ø€ Ð.AÐ.AÀ,ÐPQÑ.RÔ.R€ r¤   )1râ  rY  r   rè   ÚArgumentrÔ   rò  Ú%torch.fx.experimental.symbolic_shapesr  r™  rü   r‘   r­  r   rí  r®  r*  ÚoperatorÚgetitemrÞ   Ú_checkr  rÑ  r  r  rÜ   rR  r   r¹  rà   rÝ   rY  r|   rê  ÚScriptObjectÚexample_strong_refr?  r@  Útracing_with_realr  Ú__obj_flatten__rÌ   Úwrapped_objÚpytreeÚtree_map_onlyr    rZ  rN  Úremove)rø   r÷  r  r  rè   r  r
  Úrecheck_placeholdersÚbinds_symbolrk  Úreal_script_objrD  Ú	flat_dictr¨  Úfake_attr_valr  Úsymbolrü  r  r  s   `                @@@r¥   r�  z#OutputGraph.remove_unused_graphargsv  s�  øøøø€ ð Ôð 	MÝ Ð!KÑLÔLÐLð	¥2¤7Ô#3ð 	½ð 	ð 	ð 	ð 	ð&	�bœgÔ.ð 	µ4ð 	ð 	ð 	ð 	ð	­"¬'ð 	µdð 	ð 	ð 	ð 	ð 	ð 	ð" 	KÐJÐJÐJÐJÐJå�T $¤*Ô"2Ñ3Ô3Ñ4Ô4ð 	+ð 	+ˆDÝ•4˜œ
Ñ#Ô#Ñ$Ô$¨Ò)Ð)à”G˜zÒ)Ð)Øœ ?Ò2Ð2°t´{ÅhÔFVÐ7VÐ7Vàœ ?Ò2Ð2Ø œK­5¬<Ð7Ð7Ø*˜N¨4¬9°Q¬<Ñ8Ô8ð 8ð /Ð.¨tÑ4Ô4ð 8ð (Ð'¨Ñ-Ô-ð	 8ð ×$Ò$ TÑ*Ô*Ð*øð	­2¬7ð 	µu´|ÀdÑ7Jð 	ð 	ð 	ð 	ð	2¥¤ð 	2¨Dð 	2ð 	2ð 	2ð 	2ð 	2ð 	2õ +.©%¬%ˆð	/Ý�eœlÔ+ð	/Ý38´<Å%Ä,Ñ3Nð	/àð	/ð 	/ð 	/ð 	/ð
  "ÐØÔ%ð &	<ñ &	<ˆDØ3Ð3°DÑ9Ô9ÀÐEˆLàð #<Ø”zð 6Ø(×/Ò/°Ñ5Ô5Ð5øà”zð <­*Ø”I˜jÔ)Õ+@ñ+ô +ð <ð "�M $Ñ'Ô'Ð'Ð'ð œ) JÔ/�CÝ! #Õ'<Ñ=Ô=ð !Ø Ý! $¤)¨JÔ"7Ô"?ÅÔASÑTÔTð !Ø*.¬)°JÔ*?Ô*G˜Ø*.¬)°JÔ*?Ô*R˜Ý$œ~ÔA×SÒSØ+ñ ô  ð "õ )-¨_×-LÒ-LÑ-NÔ-NÑ(OÔ(O˜IØ(1ð "ð " Ý07Ø$3Ô$?Àñ1"ô 1" õ !'Ô 4Ý%*¤\µ5´<Ð$@Ø$RÐ$RÐ$RÐ$RÐ$RØ$1ñ!"ô !"ð !"ð !"ñ
 !Ý%¥d¨4¬9°ZÔ+@Ô+HÑ&IÔ&IÑJÔJð !Ù à+.¬?Ð+F˜œ˜ÈCÌKð ð (Ð'¨°dÑ;Ô;Ð;Ñ;ð )ð 	0ð 	0ˆDØ-Ð-¨dÑ3Ô3ˆFØÐ!Ø Ð-Ð-Ø!�M $Ñ'Ô'Ð'Ð'ð !×'Ò'¨Ñ/Ô/Ð/øð	0ð 	0r¤   c                 ó<  — ddl m} | j        j        D �]}|j                             d¦  «        }t          |t          ¦  «        rÕ|j        �Ît          |j        j
        j        d¦  «        r¯t          d„ |j        D ¦   «         ¦  «        r‘|                     |j        j
        j        j        ¦  «        rht!          |j        ¦  «        D ]>}|                     t%          |j        ¦  «        ¦  «         |                      |¦  «         Œ?|                      |¦  «         �Œ	d S )Nr   )ÚTensorifyStater[  r=  c              3   ó,   K  — | ]}|j         d k    V — ŒdS )ÚitemN)r*  )r  Úus     r¥   r…  zEOutputGraph.remove_tensorify_specialized_graphargs.<locals>.<genexpr>(  s)   è è € Ð?Ð?¨q˜œ FÒ*Ð?Ð?Ð?Ð?Ð?Ð?r¤   )Útorch._dynamo.symbolic_convertr%  r‘   r­  rY  r�  rÝ   r!   Ú	item_memor  rè   Ú_exprr±  rí  Úshould_specializer=  rü   Úreplace_all_uses_withr'   rÑ  )rø   r%  rè   r[  r(  s        r¥   r‘  z2OutputGraph.remove_tensorify_specialized_graphargs  s.  € ð 	BÐAÐAÐAÐAÐAà”JÔ$ð 	'ñ 	'ˆDØ œIŸMšM¨/Ñ:Ô:ˆMå˜=­*Ñ5Ô5ð'à!Ô+Ð7Ý˜MÔ3Ô8Ô>ÀÑGÔGð 8åÐ?Ð?°D´JÐ?Ñ?Ô?Ñ?Ô?ð 8ð #×4Ò4à!Ô+Ô0Ô6Ô;ñô ð 8õ ˜dœjÑ)Ô)ð (ð (�AØ×+Ò+­L¸Ô9PÑ,QÔ,QÑRÔRÐRØ×$Ò$ QÑ'Ô'Ð'Ð'Ø× Ò  Ñ&Ô&Ð&ùð	'ð 	'r¤   r¢  c                 óâ   — | j                              |¦  «         t          |t          t	          d¦  «        f¦  «        st          d¦  «        ‚| j                             |¦  «         d| _        dS )a>  
        We call this on the creation of a new compiled subgraph that is inserted
        before user code.
        An optional pycode argument can be passed to add python codegen along with
        the bytecode. The generated python code should match the bytecode behavior
        from the `prefix` argument.
        Nz,pycode must be a list of python code or NoneT)	rÙ  rŒ  rÝ   rü   rZ  rY  r�  rà   râ  )rø   rJ  r¢  s      r¥   rµ  z#OutputGraph.add_output_instructions3  sm   € ð 	Ô ×'Ò'¨Ñ/Ô/Ð/Ý˜&¥4­¨d©¬Ð"4Ñ5Ô5ð 	QÝ Ð!OÑPÔPÐPØÔ×!Ò! &Ñ)Ô)Ð)ØˆÔÐÐr¤   r,  r  c                 óø   ‡‡‡— ‰j         rEdt          t          j        df         dt          j        fˆˆˆfd„}|                      ‰|¦  «         dS |                      ‰t          j        ‰‰‰¦  «        ¦  «         dS )aa  Install a resume function as a global.

        When the code has freevars, installs a factory that creates the
        function with correct globals and closure (since MAKE_FUNCTION
        inherits the current frame's globals, which is wrong for resume
        functions from inlined frames). Otherwise installs the function
        directly.
        Úclosure.rÆ   c                 ó4   •— t          j        ‰‰‰d | ¦  «        S rì   )ÚtypesÚFunctionType)r0  r,  r  r=  s    €€€r¥   Ú_make_fnz<OutputGraph.install_resume_function_global.<locals>._make_fnS  s   ø€ õ Ô)¨$°	¸4ÀÀwÑOÔOÐOr¤   N)r¸   r¼   r2  ÚCellTyper3  r£  )rø   r=  r,  r  r4  s    ``` r¥   Úinstall_resume_function_globalz*OutputGraph.install_resume_function_globalC  s¸   øøø€ ð Ôð 	ðPÝ�uœ~¨sÐ2Ô3ðPåÔ#ðPð Pð Pð Pð Pð Pð Pð Pð
 ×&Ò& t¨XÑ6Ô6Ð6Ð6Ð6à×&Ò&ØÝÔ" 4¨°DÑ9Ô9ñô ð ð ð r¤   c                 óØ   — || j         v rt          d|› d�¦  «        ‚| j                              |¦  «         | j                             t          j        | j        ||¦  «        ¦  «         dS )a`  
        WARNING: prefer the safer `install_global_by_id/install_global`.
        torch.compile instances should be independent of each other;
        one footgun is to have one instance depend on the existence of
        a global installed by another instance. This can happen if we mangle
        a global the same way across both instances.
        zglobal 'z' is already installedN)r¾  rY  râ   rá  rà   ri   rƒ  rJ  )rø   r=  rÂ   s      r¥   r£  z!OutputGraph.install_global_unsafe_  sq   € ð �4Ô)Ð)Ð)Ý Ð!H¨DÐ!HÐ!HÐ!HÑIÔIÐIØÔ×"Ò" 4Ñ(Ô(Ð(ØŒ×Ò�[Ô/°Ô0AÀ4ÈÑOÔOÑPÔPÐPÐPÐPr¤   c                 ó€   — |› dt          |¦  «        › d| j        › �}|| j        v r|S |                      ||¦  «         |S )z¹
        Installs a global if it hasn't been installed already.
        This is determined by (prefix, id(value)) pair.

        Returns the name of the newly installed global.
        rç   Ú_c)Úidr½  r¾  r£  ©rø   rJ  rÂ   r=  s       r¥   Úinstall_global_by_idz OutputGraph.install_global_by_idl  sU   € ð Ð9Ð9�2˜e™9œ9Ð9Ð9¨¬Ð9Ð9ˆØ�4Ô)Ð)Ð)ØˆKØ×"Ò" 4¨Ñ/Ô/Ð/Øˆr¤   c                 óP   — t          |¦  «        }|                      ||¦  «         |S )z~
        Installs a global, generating a unique name for it.

        Returns the name of the newly installed global.
        )rA   r£  r;  s       r¥   rH  zOutputGraph.install_global{  s,   € õ ˜Ñ Ô ˆØ×"Ò" 4¨Ñ/Ô/Ð/Øˆr¤   c                 óÎ  — d | _         | j                             ¦   «          | j                             ¦   «          d | _        | j        j        D ]}d|j        v r|j        d= Œ| j                             ¦   «          | j	                             ¦   «          t          |                      ¦   «         ¦  «        | _        | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          d S r  )rž  r  rš  rú  rÑ  r‘   r­  rY  rÆ  rÄ  r¼   r  rü  rœ  rÒ  rÓ  rÔ  rÕ  rÝ  rì  rÈ  r¸  r¹  rã  rð  rî  s     r¥   ÚcleanupzOutputGraph.cleanup†  s·  € ð ˆŒØŒ×ÒÑÔÐØÔ/×5Ò5Ñ7Ô7Ð7Ø$(ˆÔ!à”JÔ$ð 	*ð 	*ˆDØ˜TœYÐ&Ð&Ø”I˜jÐ)øØÔ×#Ò#Ñ%Ô%Ð%ØÔ ×&Ò&Ñ(Ô(Ð(Ý8=Ø×5Ò5Ñ7Ô7ñ9
ô 9
ˆÔ5ð 	Ô×ÒÑ!Ô!Ð!ØÔ#×)Ò)Ñ+Ô+Ð+ØÔ×#Ò#Ñ%Ô%Ð%ØÔ$×*Ò*Ñ,Ô,Ð,ØÔ×"Ò"Ñ$Ô$Ð$ØÔ#×)Ò)Ñ+Ô+Ð+ØÔ-×3Ò3Ñ5Ô5Ð5ØÔ×"Ò"Ñ$Ô$Ð$ØÔ ×&Ò&Ñ(Ô(Ð(ØÔ$×*Ò*Ñ,Ô,Ð,ØÔ ×&Ò&Ñ(Ô(Ð(ØÔ×!Ò!Ñ#Ô#Ð#Ð#Ð#r¤   r¬  c                 ó:   — | j                              |¦  «         d S rì   )rÝ  rà   )rø   r¬  s     r¥   Úadd_graph_finalizerzOutputGraph.add_graph_finalizer£  s"   € ð 	Ô#×*Ò*Ð+=Ñ>Ô>Ð>Ð>Ð>r¤   rè   c                 ó¦   — |j         dk    r|j        d         j        S |j         dk    rt          d|j         › d�¦  «        ‚| j        |j                 S )z#Extract the non-fake example tensorr¨  rV  r%  z(expected node.op to be 'get_attr', got 'rn  )r®  rY  rê  rY  r  r*  rî  s     r¥   Úexample_value_from_input_nodez)OutputGraph.example_value_from_input_node¨  sW   € àŒ7�mÒ#Ð#Ø”9˜ZÔ(Ô0Ð0ØŒ7�jÒ Ð Ý Ð!VÈDÌGÐ!VÐ!VÐ!VÑWÔWÐWØŒ˜tœ{Ô+Ð+r¤   Úinlined_modulec                 óR  ‡ ‡‡— t                                ‰j        ¦  «        Št          ‰‰ j        ‰ j        ¦  «        Š‰ j                             ‰¦  «         dt          dd fˆˆ ˆfd„}t          |d¦  «        rLt          |j
        ¦  «        r8|j
        j        t          u r%| 
                    ¦   «         D ]\  }} ||¦  «         Œt          |d¦  «        rLt          |j        ¦  «        r:|j        j        t          u r)|                     ¦   «         D ]\  }} ||¦  «         Œd S d S d S d S )NrG  rÆ   c                 óþ   •— ‰j         €t          d¦  «        ‚‰                     ‰| ¦  «        }‰› d| › �}|‰j         |<   t          ‰t          ¦  «        r)| ‰j        t                               |j        ¦  «        <   d S d S rI  rJ  rK  s      €€€r¥   rN  zHOutputGraph.add_fqn_info_for_inlined_modules.<locals>.register_leaf_name¹  s›   ø€ ØÔ(Ð0Ý$Ð%LÑMÔMÐMØ×=Ò=¸fÀiÑPÔPˆJØÐ,Ð, Ð,Ð,ˆHØ2<ˆDÔ% hÑ/Ý˜&¥+Ñ.Ô.ð ð ð Ô5Ý×/Ò/°
´Ñ@Ô@ñð ð ðð r¤   rO  rP  )r›  r!  r=  rs   rú  rJ  râ   r¾   r  rØ  rT  Ú__func__Ú!og_module_named_parameters_fn_ptrrU  Úog_module_named_buffers_fn_ptr)rø   rD  r  rN  rG  rç   r=  s   ` `   @r¥   Ú add_fqn_info_for_inlined_modulesz,OutputGraph.add_fqn_info_for_inlined_modules°  s‘  øøø€ õ ×*Ò*¨6¬;Ñ7Ô7ˆÝ"Ø�$Ô9¸4Ô;Lñ
ô 
ˆð 	Ô/×3Ò3°DÑ9Ô9Ð9ð		­#ð 		°$ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		õ �> =Ñ1Ô1ð 	2å˜Ô8Ñ9Ô9ð2à"Ô3Ô<Ý4ð5ð 5ð %3×$CÒ$CÑ$EÔ$Eð 2ð 2‘L�I˜qØ&Ð& yÑ1Ô1Ð1Ð1Ý�> :Ñ.Ô.ð 	2å˜Ô5Ñ6Ô6ð2à"Ô0Ô9Ý1ð2ð 2ð %3×$@Ò$@Ñ$BÔ$Bð 2ð 2‘L�I˜qØ&Ð& yÑ1Ô1Ð1Ð1ð	2ð 	2ð2ð 2ð2ð 2ð2ð 2r¤   ©Frú   )rI  rì   )rÆ   r¶  )r¥  rŽ   rÆ   N)rÆ   r›  )rÆ   rŽ   )r  )r   r™  )Œrž   rŸ   r    rû   rU   r¢   r§   r6   rÔ   r   r#   r	   ra  r   rü   rÞ   rb  rc  r   r  r¾   r  r   rX   r  r"  r-  rE  ró  r‚   r¼   r   ÚProxyrM  rL  rÌ  rø  r   r•  r—  r›  rm  rW  r¢  r¤  r¶  r¼  rº   r¿  ÚGraphr‘   Úsetterr  rÄ  rò  r   rÆ  r  r  r   rÉ  rË  rÎ  rÑ  rô  Úcontextmanagerr,   r   rÚ  rÜ  rÆ  rÇ  rþ  r)   r[  rR  rk  r   r  rl  r^  rë  rÿ  r  r  r
  rl   r  r  r  r  r  rZ  r  Ústaticmethodr!  r)  rV  r@   rp  ro  r†  rò   rï  rC   r½  r¿  r·  r˜  r"  r)  r/  rÍ  rT  r]  r  r¾  r¹  r}   ra  r0  r5   r�  rÆ  r‹  rs  rÉ   r�  r�  r‘  rµ  r2  r6  r£  r<  rH  r?  rA  rC  rJ  r£   r¤   r¥   r›  r›  €  sS  € € € € € € ðð ð ÐÐÑð  ð\Uð \Uà!ð\Uð   $Ñ&ð\Uð -ð	\Uð
 ð\Uð %Ð%6Ô7ð\Uð ð\Uð ð\Uð ð\Uð ð\Uð $(¨¬Ô(IÔ#Jð\Uð Ð*Ô+ð\Uð ð\Uð 
ð\Uð \Uð \Uð \Uð~ 38ð9Vð 9Vð 9VØ+/ð9Và	ˆcŒð9Vð 9Vð 9Vð 9Vðv¨Fð ¸#ð À*ð ð ð ð ð>Øð>Ø"%ð>à	ð>ð >ð >ð >ðð ð ð ð* 8ð  8ð  8ð  8ðDD°3ð Dð Dð Dð Dð
 4:ð	5ð 	5Ø#ð	5Ø-0ð	5à	ˆs�E”H”NÐ"Ô	#ð	5ð 	5ð 	5ð 	5ð)¨%¬(¬.ð )ð )ð )ð )ð*ð ð ð ð<!:¸TÀ#¼YÈÑ=Mð !:ð !:ð !:ð !:ðN >Bð	$ð $à�S˜#�XÔð$ð �C˜�HŒoð$ð   ¨¡¨sÐ 2Ô3°dÑ:ð	$ð
 
ð$ð $ð $ð $ðL& 8¨B°¨GÔ#4ð &¸ð &ð &ð &ð &ð#ð #ð #ð #ð
 ðð ð ñ „Xðð ð ð  ð  ñ „Xð ð& ð &ð &ð &ð &ð Ø-ð à	ð ð  ð  ð  ðF	Ið ð ÀCð  ÈDð  ð  ð  ð  ð. ð)�u”x”~ð )ð )ð )ñ „Xð)ð „\ð*˜5œ8œ>ð *¨dð *ð *ð *ñ „\ð*ð ð7 T¨#¨r¬x¨-Ô%8ð 7ð 7ð 7ñ „Xð7ð ð4 $ r¤w°´Ð'<Ô"=ð 4ð 4ð 4ñ „Xð4ð ð1˜t E¤L°%¸¼¼ÈÐ8SÔ2TÐ$TÔUð 1ð 1ð 1ñ „Xð1ðA #ð A°ð A¸¼¼ð Að Að Að Að@ ð @°ð @¸¼¼ð @ð @ð @ð @ð@ ð @°ð @¸ð @ð @ð @ð @ð Ôð
 #'ð	ð à ‘}ðð Ð/Ô0ðð ˜4‘Zð	ð
 
Ð/Ô	0ðð ð ñ Ôðð@ ðð ð ñ „Xðð ð.˜5Ô,Ô;ð .ð .ð .ñ „Xð.ð
 ð8˜8ð 8ð 8ð 8ñ „Xð8ð ðA˜œÔ/ð Að Að Añ „XðAð ð>˜D  c œNð >ð >ð >ñ „Xð>ð ðF D¨¬Ô)CÔ$Dð Fð Fð Fñ „XðFð HLð'
ð '
Ø˜˜U 8¨C°¨HÔ#5°tÐ#;Ô<Ð<Ô=ÀÑDð'
à	ð'
ð '
ð '
ð '
ðR$ð $ð $ð $ð&ð &ð &ð &ð ðNð Nð Nñ „XðNð
¨6ð 
°cð 
ð 
ð 
ð 
ð'˜Sð 'ð 'ð 'ð 'ð0 ð 0ð 0ð 0ð 0ðJ˜Tð Jð Jð Jð Jð	 #ð 	¨%¬(¬/¸CÑ*?ð 	ð 	ð 	ð 	ðð ˜Cð ¨Cð ð ð ð ð5 Cð 5¨Dð 5ð 5ð 5ð 5ð
 ð ð ¨ð ð ð ñ „\ðð.ØðØ,/ðà	Œðð ð ð ð&pà”” %¤,Ñ.°Ñ4ðpð ðpð ð	pð
 
ðpð pð pð pðd]/Ø-ð]/à	ˆt�KÔ  $ v¨v ~Ô"6Ð6Ô	7ð]/ð ]/ð ]/ð ]/ð~k"Ø-ðk"Ø;>ðk"à	ˆt�OÔ$Ð&9Ð9Ô	:ðk"ð k"ð k"ð k"ðb ð	E&ð E&à'ðE&ð #ðE&ð ð	E&ð
 
Ð!Ô	"ðE&ð E&ð E&ð E&ðNFÐ ;ð FÀð FÈtð Fð Fð Fð Fð8&Gà'ð&Gð ˜?Ô+ð&Gð ð	&Gð
 ð&Gð 
ð&Gð &Gð &Gð &GðP1ð 1ð 1ð 1ð>ð  Sð ¸ð Àð ð ð ð ð4¨D°°d¸3À¹9´oÐ1EÔ,Fð ð ð ð ð Cð ¨Cð ð ð ð ð2 Ôð cð ð ð ñ Ôðð"%7ð %7ð %7ð %7ðN*ØÐ(Ô)ð*Ø/Jð*à	ð*ð *ð *ð *ðX>ØÐ(Ô)ð>Ø/Jð>à	ð>ð >ð >ð >ð@L:à'ðL:ð �Ô!ðL:ð ð	L:ð
 
ˆt�KÔ  $ s¤)¨dÑ"2Ð2Ô	3ðL:ð L:ð L:ð L:ð\
 ð7˜d 2¤7œmð 7ð 7ð 7ñ „Xð7ð ðE˜4 œ>ð Eð Eð Eñ „XðEð@Ø”.ð@Ø26°v´,ð@à	ð@ð @ð @ð @ðhØ”.ðhØ26°v´,ðhà	ðhð hð hð hðT˜D  e¤hÔ&:Ð!:Ô;ð ð ð ð ð Sð °%´(Ô2Fð È3ð ð ð ð ð  U¤\Ô 2ð ð ð ð ð
'ð 'ð 'ð 'ð
Y0ð Y0ð Y0ð Y0ðv 'ð  'ð  'ð  'ðF EIð ð  Ø˜;Ô'ð Ø15°c´¸TÑ1Að à	ð ð  ð  ð  ð àðð Œnðð ˜˜S˜”>ð	ð
 
ðð ð ð ð8Q¨#ð Q°cð Q¸dð Qð Qð Qð Qð¨3ð °sð ¸sð ð ð ð ð	 Sð 	°ð 	¸ð 	ð 	ð 	ð 	ð$ð $ð $ð $ð:?Ø"*¨B¬NÐ+;¸TÐ+AÔ"Bð?à	ð?ð ?ð ?ð ?ð
,°%´(´-ð ,ÀCð ,ð ,ð ,ð ,ð%2Ø#œhœoð%2Ø7=ð%2à	ð%2ð %2ð %2ð %2ð %2ð %2r¤   r›  c                   ó¤   — e Zd ZU eed<   eed<   edz  ed<   edz  ed<   eedf         dz  ed<   ee	ef         ed<   	 dd	d
dedz  ddfd„Z
dd„ZdS )ÚDynamoTracerOutputÚerror_on_graph_breakÚis_tracing_resume_prologueNÚoutput_graphÚoutput_graph_for_cleanup.r0  r  r±  rŽ   r«  rÆ   c                 ó¬   — |j         | _         |j        | _        |j        | _        |j        | _        |j        | _        |r	d | _        d S |j        | _        d S rì   )rS  rT  r0  r  rÜ  rV  rU  )rø   r±  r«  s      r¥   r  zDynamoTracerOutput.__init__â  s]   € ð %+Ô$?ˆÔ!Ø*0Ô*KˆÔ'Ø”~ˆŒØÔ)ˆŒØ(.¬ˆÔ%Øð 	.Ø $ˆDÔÐÐà &¤ˆDÔÐÐr¤   c                 óÐ   — | j         }|rX|j        D ]}|j                             ¦   «          Œ|j        j        r+|j        j        j        rd |j        j        j        _        d S d S d S d S rì   )rV  r·  r‘   Ú_clear_nodesrÈ  rþ  r[  r¥  )rø   rU  r±  s      r¥   Ú_cleanup_output_graphz(DynamoTracerOutput._cleanup_output_graphï  sž   € ØÔ4ˆØð 	VØ&Ô.ð ,ð ,�Ø”×)Ò)Ñ+Ô+Ð+Ð+ð Ô,Ô6ðVà Ô0Ô:ÔDðVð RV�Ô,Ô6Ô@ÔNÐNÐNð	Vð 	VðVð Vð Vð Vr¤   rì   rú   )rž   rŸ   r    rÔ   r¢   r›  r¼   r	   r  r¾   r  rZ  r£   r¤   r¥   rR  rR  Ø  sÕ   € € € € € € ØÐÐÑØ $Ð$Ð$Ñ$Ø Ñ$Ð$Ð$Ñ$ð *¨DÑ0Ð0Ð0Ñ0Ø�3˜�8Œ_˜tÑ#Ð#Ð#Ñ#Ø�C˜�HŒ~ÐÐÑð HLð.ð .Ø1ð.Ø:=À¹*ð.à	ð.ð .ð .ð .ð
Vð 
Vð 
Vð 
Vð 
Vð 
Vr¤   rR  a  With the current config, we will graph break (and fall back to eager-mode PyTorch) on all ops that have do not have the 'pt2_compliant_tag'. Please see the following doc for how to mark this op as PT2 compliant https://pytorch.org/tutorials/advanced/custom_ops_landing_page.htmlrU  rÁ   r*  r  r  c                 ó  ‡ — |dk    rd S dt           j        j        dd fˆ fd„}dt           j        j        dt          dd fˆ fd„}t	          |t           j        j        ¦  «        r7t           j        j        |j        v r ||¦  «         d S  ||d|› d�¦  «         d S t	          |t           j        j        ¦  «        �rSt          | 
                    ¦   «         ¦  «        }t          |¦  «        d	k    rMt          ||d
         ¦  «        }t           j        j        |j        v r ||¦  «         d S  ||d|› d�¦  «         d S t           j        j                             ‰ j        ||fd¦  «        \  }}	 t          j        j        |j        g|¢R i |¤Ž}	n7# t(          $ r*}
t+          ddt          |
¦  «        g ¬¦  «         Y d }
~
nd }
~
ww xY wt          ||	¦  «        }t           j        j        |j        v r ||¦  «         d S  ||d|› d|	› d�¦  «         d S d S )NrŠ  r*  rÆ   c                 óR   •— | j         dv rd S ‰j                             | ¦  «         d S )N>   ÚatenÚprimÚprims)Ú	namespacerê  râ   )r*  rU  s    €r¥   Úencountered_compliant_opz8check_pt2_compliant_op.<locals>.encountered_compliant_op  s4   ø€ ØÔÐ8Ð8Ð8ØˆFØÔ)×-Ò-¨fÑ5Ô5Ð5Ð5Ð5r¤   rÓ   c                 ó”   •— ‰j                              | ¦  «         t          j        r t	          dd|dz   t
          z   g ¬¦  «         d S d S )Nz Encountered non-PT2-compliant opr”  ú rO  )ré  râ   r1   Úonly_allow_pt2_compliant_opsrI   Úerr_epilogue)r*  rÓ   rU  s     €r¥   Úencountered_non_compliant_opz<check_pt2_compliant_op.<locals>.encountered_non_compliant_op  se   ø€ ØÔ&×*Ò*¨6Ñ2Ô2Ð2ÝÔ.ð 	ÝØ:ØØ #™I­Ñ4Øð	ñ ô ð ð ð ð	ð 	r¤   z%Encountered the torch.ops.OpOverload z that is not PT2 compliant.r0   r   z:Encountered the non-overloaded torch.ops.OpOverloadPacket z that is not PT2 compliant. Fz*Error when attempting to resolve op packetr”  rO  z+Encountered the torch.ops.OpOverloadPacket z! which resolves to the overload (z) that is not PT2 compliant.)rÞ   Ú_opsÚ
OpOverloadr¾   rÝ   ÚTagÚpt2_compliant_tagÚtagsÚOpOverloadPacketr¼   Ú	overloadsr   rÌ   ri  r€  Úget_fake_values_from_nodesr  rh  Ú_jit_resolve_packetÚ_qualified_op_namer)  rI   )rU  rÁ   r*  r  r  ra  rf  rm  r®  Úoverloadrç  s   `          r¥   Úcheck_pt2_compliant_oprr    sõ  ø€ ð ˆÒÐØˆð6­¬Ô)>ð 6À4ð 6ð 6ð 6ð 6ð 6ð 6ð
­U¬ZÔ-Bð Íð ÐQUð ð ð ð ð ð õ �&�%œ*Ô/Ñ0Ô0ð ÝŒ9Ô&¨&¬+Ð5Ð5Ø$Ð$ VÑ,Ô,Ð,ØˆFØ$Ð$ØØW°FÐWÐWÐWñ	
ô 	
ð 	
ð 	ˆå�&�%œ*Ô5Ñ6Ô6ñ )Ý˜&×*Ò*Ñ,Ô,Ñ-Ô-ˆ	õ ˆy‰>Œ>˜QÒÐÝ˜ ¨1¤Ñ.Ô.ˆBÝŒyÔ*¨b¬gÐ5Ð5Ø(Ð(¨Ñ,Ô,Ð,Ø�Ø(Ð(Øð/Ø.4ð/ð /ð /ñô ð ð ˆFå”}Ô*×EÒEØÔ# d¨F ^°Uñ
ô 
‰ˆˆfð
	Ý”xÔ3ØÔ)ðØ,0ðð ð Ø4:ðð ˆHˆHøõ ð 	ð 	ð 	ÝØDØÝ ™FœFØð	ñ ô ð ð ð ð ð ð øøøøð	øøøõ �V˜XÑ&Ô&ˆÝŒ9Ô&¨"¬'Ð1Ð1Ø$Ð$ RÑ(Ô(Ð(Ð(Ð(à(Ð(Øð&¸fð &ð &Ø3;ð&ð &ð &ñô ð ð ð ðI)ð )s   Å+F Æ
F?Æ F:Æ:F?ÚPÚRc            
       óZ   — e Zd Zdddeeef         dej        dej        ddf
d„Zde	fd	„Z
dS )
rÇ  r±  r¶  r  r  r  rÆ   Nc                 ó>   — || _         || _        || _        || _        d S rì   )r±  r  r  r  )rø   r±  r  r  r  s        r¥   r  zLazyProxy.__init__W  s$   € ð ˆŒàˆŒØˆŒ	ØˆŒˆˆr¤   c                 ó0   —  | j         | j        i | j        ¤ŽS rì   )r  r  r  r÷   s    r¥   r/  zLazyProxy.__call__d  s   € ØˆtŒw˜œ	Ð1 T¤[Ð1Ð1Ð1r¤   )rž   rŸ   r    r   rs  rt  r  r  r  r	   r/  r£   r¤   r¥   rÇ  rÇ  V  s   € € € € € ðà ðð �Q˜�TŒNðð Œvð	ð
 ”(ðð 
ðð ð ð ð2˜#ð 2ð 2ð 2ð 2ð 2ð 2r¤   rÇ  c                   óð  ‡ — e Zd ZdZ	 	 	 	 d-ddded          dededz  d	edz  d
dfˆ fd„Zde	d
dfd„Z
dddej        d
dfd„Z	 	 	 d.dedededededz  dedz  deej        gej        f         dz  d
ej        fd„Z	 	 	 d.dedededededz  dedz  deej        gej        f         dz  d
ej        fˆ fd„Z	 	 	 	 d/dedededededz  dedz  d
ej        fˆ fd„Zdej        d
dfd„Z	 	 d0dedededededz  d
ej        fd „Zd!ej        d
eej        z  fd"„Zd#ed
efd$„Zded%eej        j        z  d
dfd&„Zdej        ej        z  d'edz  d
dfd(„Zd)ej        d
ee j!                 fd*„Z"d
e#fd+„Z$d
e%fd,„Z&ˆ xZ'S )1r¶  a  
    Holds an FX graph that is being traced. OutputGraph owns a SubgraphTracer
    and the separation of responsibilities is that SubgraphTracer is
    responsible for building the graph while OutputGraph is responsible for
    compiling and executing the graph.
    NFrU  r›  rÖ  r¤  rÒ  rÔ  rÆ   c                 óh  •— t          ¦   «                              ¦   «          t          j        |¦  «        | _        t
          j                             ¦   «         | _        || _	        i | _
        i | _        || _        || _        || _        i | _        i | _        i | _        d | _        d| _        d| _        d| _        d | _        t/          ¦   «         | _        d| _        |�
|j        dz   nd| _        d | _        d | _        d | _        d | _        | j        €g | _        nK|€| j        j        d d …         | _        n/| j        j        | j                              |¦  «        |fgz   | _        t/          ¦   «         | _!        g | _"        t          j#        ¦   «         rtI          d¦  «        ‚t/          ¦   «         | _%        d S )NFr0   r   zSInference mode is supposed to be disabled during compilation. Please open an issue.)&r  r  Úweakrefr'  rU  rÞ   r   rM  r‘   r¤  rÄ  rÆ  rÖ  rÒ  rÔ  Úlifted_freevarsrÉ  Údynamic_scalar_nodesÚ	prev_instÚ,unsafe_allow_externally_visible_side_effectsÚ+traced_with_externally_visible_side_effectsÚallow_side_effects_in_hopÚside_effect_stackr.   Útraced_sourcesÚis_reconstructing_generatorÚdebug_levelÚ	_cur_codeÚ_orig_gm_metaÚ_orig_gm_lineno_mapÚ_orig_gm_firstlinenoÚsource_fn_stackÚ_target_to_strÚ_used_namesr«  Úis_inference_mode_enabledr)  Útracked_proxyable_vt)rø   rU  rÖ  r¤  rÒ  rÔ  r  s         €r¥   r  zSubgraphTracer.__init__p  sÏ  ø€ õ 	‰Œ×ÒÑÔÐÝ#œM¨,Ñ7Ô7ˆÔÝ”X—^’^Ñ%Ô%ˆŒ
ð #ˆŒð 9;ˆÔ à=?ˆÔð ˆŒØ*ˆÔØ&ˆÔð :<ˆÔð NPˆÔð >@ˆÔ!àˆŒð
 =BˆÔ9Ø;@ˆÔ8ð */ˆÔ&ð AEˆÔõ 3=±,´,ˆÔð ,1ˆÔ(à:@Ð:L Ô 2°QÑ 6Ð 6ÐRSˆÔàˆŒØ/3ˆÔØAEˆÔ Ø04ˆÔ!ð
 Œ;ÐØ.0ˆDÔ Ð ØÐ"Ø#'¤;Ô#>¸q¸q¸qÔ#AˆDÔ Ð à#'¤;Ô#>Ø”×*Ò*¨=Ñ9Ô9¸=ÐIðBñ $ˆDÔ õ
 -7©L¬LˆÔð 8:ˆÔ)ÝÔ*Ñ,Ô,ð 	ÝØeñô ð õ BLÁÄˆÔ!Ð!Ð!r¤   r  c                 ó:   — | j                              |¦  «         d S rì   )r�  râ   )rø   r  s     r¥   Úrecord_proxyable_vtz"SubgraphTracer.record_proxyable_vtÙ  s   € ØÔ!×%Ò% bÑ)Ô)Ð)Ð)Ð)r¤   r¥  rŽ   rè   c                 ó@  — | j         rŽ| j        r‰| j        r„|j        j        }d }|�#| j                             || j        z
  d ¦  «        }|�Q| j         |         }t          j        j        D ]}||v r||         |j	        |<   Œd|v r|d         |j	        d<   d S d S d S d S d S d S )NÚstack_trace)
r†  r‡  rˆ  Úcurrent_instructionÚstarts_liner�  r   r'  Ú_COPY_META_FIELDSrY  )rø   r¥  rè   ÚlinenoÚnode_idxrY  r   s          r¥   rŒ  z,SubgraphTracer._maybe_preserve_original_metaÝ  s   € ð Ôð	CàÔ(ð	Cð Ô)ð	Cð
 Ô+Ô7ˆFØˆHØÐ!ØÔ3×7Ò7Ø˜TÔ6Ñ6¸ñô �ð Ð#ØÔ)¨(Ô3�ÝœXÔ7ð 7ð 7�EØ �}�}Ø+/°¬;˜œ	 %Ñ(øØ  DÐ(Ð(Ø/3°MÔ/B�D”I˜mÑ,Ð,Ð,ð#	Cð 	Cð 	Cð 	Cð 	Cð 	Cð $Ð#ð
 )Ð(r¤   rÁ   r*  r  r  r=  Ú	type_exprÚproxy_factory_fnc           	      ó"  — t          j        ¦   «         }	 |                      |||||||¦  «        | j        j        xj        t          j        ¦   «         |z
  z  c_        S # | j        j        xj        t          j        ¦   «         |z
  z  c_        w xY wrì   )r*  r+  Ú_create_proxyrU  r÷  r4  )	rø   rÁ   r*  r  r  r=  r—  r˜  Ú_t0s	            r¥   rË  zSubgraphTracer.create_proxyó  s˜   € õ Œl‰nŒnˆð	Ø×%Ò%Ø�f˜d F¨D°)Ð=Mñô ð ÔÔ6ÐFÔFÝ”‘” Ñ$ñÐFÔFÐFøˆDÔÔ6ÐFÔFÝ”‘” Ñ$ñÐFÔFÐFÐFÐFÐFs   •A Á0Bc           	      óà
  •‡‡‡‡‡— | j         �bt          j        ||f¦  «        \  }}	g }
|D ],}|                      |¦  «        }|
                     |¦  «         Œ-t          j        |
|	¦  «        \  }}t          ¦   «                              |‰|||||¦  «        Š| j        j	        }t          j        dk    r�|dv r‰|j        Š‰| j        ury‰j        �r‰j        j        �f|j        Š|                     ‰j        j        ¬¦  «        Šdt$          fˆˆˆˆfd„}t&                               dt+          |¦  «        ¦  «         ‰| _        d}|j        | j        urª t/          j        |j        ¦  «                             dd	„ ¦  «        ¦   «         }t5          |t6          j        j        ¦  «        r@d
}d„ |j        j        D ¦   «         | _         |j!        | _"        |j#        j$        j%        | _&        nd | _         d | _"        d | _&        |j'        }|r!| (                    ¦   «         ‰j)        j*        d<   |dv r¨‰j)        j+        ‰f}|rtY          ‰j)        j*        d          -                    ¦   «         ¦  «        d         d         }|j.         /                    d¦  «        r(|j.         /                    d¦  «        s‰j)        j+        |f}| j0        |gz   ‰j)        j*        d<   n‡|dk    r�| j         �tc          dd| j2        › �dg ¬¦  «         | j0        ‰j)        j+        tg          ˆfd„‰j)        j*        d          4                    ¦   «         D ¦   «         ¦  «        fgz   ‰j)        j*        d<   |  5                    |‰j)        ¦  «         |sÏd‰j)        j*        vr*|j'        }|r!| (                    ¦   «         ‰j)        j*        d<   d‰j)        j*        vr‰|dv r%| j0        ‰j)        j+        ‰fgz   ‰j)        j*        d<   n`|dk    rZ| j         �tc          dddg ¬¦  «         | j0        ‰j)        j+        ‰j)        j*        d         ‰         d         fgz   ‰j)        j*        d<   d‰j)        j*        vrÂg }|rN| 6                    ¦   «         s'|                     | 7                    ¦   «         ¦  «         tq          |dd ¦  «        }|°Nd„ |D ¦   «         }| 9                    ¦   «          tt          j;         <                    |¦  «         =                    ¦   «         }d >                    |¦  «        ‰j)        _?        t6          j@        jA        jB        st6          j@        jA        jC        r/| j        jD         E                    | j        j	        ‰j)        ¦  «         ‰S )Nr‰  rÈ  )r•  rÆ   c                  ór   •— t          ‰‰¦  «                             ¦   «         } d‰j        j        › d‰› d| › �S )NzTRACE FX call z from r¹  )rp   Úrstriprè   r=  )ÚlineÚcur_instÚheaderrF  Útx_codes    €€€€r¥   Úget_trace_call_log_strz<SubgraphTracer._create_proxy.<locals>.get_trace_call_log_strW  s@   ø€ Ý5°g¸xÑHÔH×OÒOÑQÔQ�DØP¨B¬G¬LÐPÐPÀÐPÐPÈ$ÐPÐPÐPr¤   rk  FÚorig_graphmodulec                  ó   — d S rì   r£   r£   r¤   r¥   r€  z.SubgraphTracer._create_proxy.<locals>.<lambda>b  s   € ¨D€ r¤   Tc                 ó   — g | ]	}|j         ‘Œ
S r£   r¼  )r  Únds     r¥   r  z0SubgraphTracer._create_proxy.<locals>.<listcomp>f  s'   € ð &ð &ð &Ø "�B”Gð&ð &ð &r¤   Únn_module_stack>   rÉ  rŠ  r¡  r0   )ztorch.nn.modulesz	torch.ao.ztorch.nn.modules.containerr‰  rÊ  z4Invoking an nn.Module inside a higher order operatorzHigher order op name: zThis is not supported.rO  c              3   óf   •K  — | ]+\  }\  }}|                      d ¦  «        d         ‰k    ¯'|V — Œ,dS )ú@r   N)r  )r  r  rç   Útyr*  s       €r¥   r…  z/SubgraphTracer._create_proxy.<locals>.<genexpr>‘  sP   øè è € ð ð á&˜A™w  2ØŸ7š7 3™<œ<¨œ?¨fÒ4Ð4ð à4Ð4Ð4Ð4ðð r¤   z2Invoking an nn.Module inside a HigherOrderOperatorr”  r‘  rÖ  c                 ó<   — g | ]}|j         t          ¦   «         v¯|‘ŒS r£   )r1  r+   )r  Úframes     r¥   r  z0SubgraphTracer._create_proxy.<locals>.<listcomp>¿  s6   € ð (ð (ð (àØ”>Õ)<Ñ)>Ô)>Ð>Ð>ð à>Ð>Ð>r¤   )FrÖ  r  Útree_flattenÚ#maybe_lift_tracked_freevar_to_inputrà   Útree_unflattenr  rË  rU  r  r�  r‚  r’  r}  Ú	positionsr•  r   Úget_line_of_code_headerr¾   Útrace_call_logr®  rx   r…  rB   Úget_contextr�  rÝ   rÞ   r   r0  r‘   r­  r†  Ú_lineno_mapr‡  r'  Ú__code__rµ   rˆ  r¨  r$  rè   rY  r=  rü   r^  rŸ   Ú
startswithr‰  rI   rÒ  r»  r  rŒ  Úis_co_filename_from_nn_modulesÚframe_summaryrÌ   rì  rý   ÚStackSummaryÚ	from_listr»  rº  r‘  ri  r1   râ  Útrack_nodes_for_deduplicationrÀ  Ú
track_node)rø   rÁ   r*  r  r  r=  r—  r˜  Ú	flat_argsÚ	tree_specÚnew_flat_argsrk  Úmaybe_new_argr¥  r£  Úis_retracingÚorig_graphmodule_mayber¨  rå   Úcurrent_nn_moduleÚframe_summariesÚfiltered_frame_summariesÚmsgsr   r¡  rF  r¢  r  s     `                    @@@@€r¥   rš  zSubgraphTracer._create_proxy  sU  øøøøøø€ ðV Œ;Ð"Ý#)Ô#6¸¸f°~Ñ#FÔ#FÑ ˆI�yØˆMØ ð 4ð 4�Ø $× HÒ HÈÑ MÔ M�Ø×$Ò$ ]Ñ3Ô3Ð3Ð3å!Ô0°À	ÑJÔJ‰LˆD�&å‰WŒW×!Ò!ØØØØØØØñ
ô 
ˆð ÔÔ)ˆõ Ô˜wÒ&Ð&¨4ð 4
ð ,
ð ,
ð
 Ô-ˆHà ¤Ð.Ð.ØÔ&Ð2ØÔ&Ô-Ð9àœ)�Ø×3Ò3¸8Ô;MÔ;TÐ3ÑUÔU�ðQµð Qð Qð Qð Qð Qð Qð Qð Qð Qõ ×$Ò$ T­:Ð6LÑ+MÔ+MÑNÔNÐNØ!)�”ð ˆØŒ9˜DœNÐ*Ð*ð&¥\Ô%=¸b¼iÑ%HÔ%H×%LÒ%LØ" L Lñ&ô &ñ &ô &Ð"õ Ð0µ%´(Ô2FÑGÔGð 1Ø#�ð&ð &Ø&<Ô&BÔ&Hð&ñ &ô &�Ô"ð ,BÔ+M�Ô(à*Ô2Ô;ÔJð Ô)Ð)ð &*�Ô"Ø+/�Ô(Ø,0�Ô)ØÔ,ˆØð 	EØ.=×.BÒ.BÑ.DÔ.DˆBŒGŒLÐ*Ñ+àÐ3Ð3Ð3Ø”W”\ 6Ð*ˆEØð >õ %)¨¬¬Ð6GÔ)H×)OÒ)OÑ)QÔ)QÑ$RÔ$RÐSUÔ$VØô%Ð!ð %Ô/×:Ò:Ø5ñô ð >à+Ô6×AÒAØ0ñô ð>ð
  œWœ\Ð+<Ð=�Eà.2Ô.BÀeÀWÑ.LˆBŒGŒLÐ*Ñ+Ð+Ø�]Ò"Ð"ØŒ{Ð&ÝØRØI°TÔ5GÐIÐIØ 8Øð	ñ ô ð ð /3Ô.Bà”G”LÝð ð ð ð à*,¬'¬,Ð7HÔ*I×*OÒ*OÑ*QÔ*Qðñ ô ñ ô ðð	Fñ 	/ˆBŒGŒLÐ*Ñ+ð 	×*Ò*¨2¨r¬wÑ7Ô7Ð7àð 	Ø ¨¬¬Ð4Ð4Ø"$Ô"4�Ø"ð MØ6E×6JÒ6JÑ6LÔ6L�B”G”LÐ!2Ñ3à ¨¬¬Ð4Ð4ØÐ;Ð;Ð;Ø6:Ô6JØœœ vÐ.ðNñ 7�B”G”LÐ!2Ñ3Ð3ð ˜]Ò*Ð*Ø”{Ð.Ý%Ø$XØ$&Ø(@Ø"$ð	ñ ô ð ð 7;Ô6JàœGœLØœGœLÐ):Ô;¸FÔCÀAÔFððNñ 7�B”G”LÐ!2Ñ3ð  ¤¤Ð,Ð,Ø<>ˆOØð 1ð ×8Ò8Ñ:Ô:ð ?Ø#×*Ò*¨2×+;Ò+;Ñ+=Ô+=Ñ>Ô>Ð>Ý˜R ¨4Ñ0Ô0�ð ð 1ð(ð (à,ð(ñ (ô (Ð$ð %×,Ò,Ñ.Ô.Ð.õ Ô)×3Ò3Ð4LÑMÔM×TÒTÑVÔVˆDØ"$§'¢'¨$¡-¤-ˆBŒGÔõ ŒMÔ Ô8ð	åŒ}Ô#ÔAð	ð ÔÔ,×7Ò7ØÔ!Ô,¨b¬gñô ð ð ˆ	r¤   c                 ó¢  •— t          | j        ||||¦  «         | j        �Ut          j        |i |¤Ž}|D ]A}t          |t          j        j        ¦  «        sŒ"|j	        | j	        k    rt          d¦  «        ‚ŒBt          ¦   «                              ||||||¦  «        }	| j        j        |	j        d<   | j                             |	j        ¦  «         |	S )Nz2create_node using arg not from this SubgraphTracerr  )rr  rU  rÖ  r  Úarg_tree_leavesrÝ   rÞ   r   rò  r‘   rY  r  rÎ  rÚ  rY  r‹  râ   r=  )rø   rÁ   r*  r  r  r=  r—  r¾  rk  rè   r  s             €r¥   rÎ  zSubgraphTracer.create_nodeÕ  sà   ø€ õ 	˜tÔ0°$¸ÀÀfÑMÔMÐMØŒ;Ð"ÝÔ.°Ð?¸Ð?Ð?ˆIØ ð ð �Ý! #¥u¤x¤}Ñ5Ô5ð ØØ”9 ¤
Ò*Ð*Ý(ØLñô ð ð +õ
 ‰wŒw×"Ò" 4¨°°v¸tÀYÑOÔOˆØ*.Ô*;Ô*EˆŒ	Ð&Ñ'ØÔ×Ò˜TœYÑ'Ô'Ð'Øˆr¤   c                 ó’  — t          |j        ¦  «        dk    rtg }|j        D ]K}|j        | j        k    r9|                     t	          t          |j        j        ¦  «        ¦  «        ¦  «         ŒL|D ]}|j                             |¦  «         Œ| j                             |¦  «         | j         	                    |j
        d ¦  «         d S r�  )r   rí  r‘   rŒ  r™  rü   r­  r  rÄ  rá   r=  )rø   rè   Úuser_graph_nodesÚuserÚother_graph_nodes        r¥   rÑ  zSubgraphTracer.remove_nodeð  sÏ   € ÝˆtŒz‰?Œ?˜QÒÐØ46ÐØœ
ð Nð N�ð ”: ¤Ò+Ð+ð %×+Ò+­HµT¸$¼*Ô:JÑ5KÔ5KÑ,LÔ,LÑMÔMÐMøØ$4ð Dð DÐ Ø Ô&×1Ò1Ð2BÑCÔCÐCÐCØŒ
×Ò˜dÑ#Ô#Ð#ØÔ ×$Ò$ T¤Y°Ñ5Ô5Ð5Ð5Ð5r¤   r[  Úbeforer  c                 óÔ  — t          |t          j        ¦  «        r| j                             |j        ¦  «         t                               d||�|j        nd|| j	        |¦  «         |€| j
        €t          d|› d|› d�¦  «        ‚| j        rm| j
        €f|€t          d¦  «        ‚t          |d¬¦  «        sD| j        j                             |g ¦  «                             t#          j        ¦   «         ¦  «         t'          || j        ¦  «        }| j        rkt-          t/          | j        ¦  «        ¦  «        }| j        |         j        }|r| j                             |¦  «        }n5| j                             |¦  «        }n| j                             d ¦  «        }|5  |                      d	|d
i |¬¦  «        }	t;          |	j        |¦  «         | j        r3|r1| j                             ¦   «         \  }
}|	| j        |<   || j        |
<   n
|	| j        |<   | j                             |¦  «         | j        }t          j          !                    ¦   «         }|s«|s©t          |t          j        ¦  «        r|  "                    ||¦  «         nxt          |tF          tH          f¦  «        r\tK          |¦  «        D ]L\  }}t          |t          j        ¦  «        sŒ d }|rtM          ||d¬¦  «        }|  "                    ||¦  «         ŒMt          |t          j'        ¦  «        r8t          |j        j(        tR          j*        ¦  «        r|	| j+        |j        j(        <   |	cd d d ¦  «         S # 1 swxY w Y   d S )Nz7create_graph_input %s %s %s at debug_level %s before=%sz(none)z0you are required to provide a source for inputs z example_val z on the root tracerz5source must not be None for export root tracer inputsT)Úonly_allow_inputr¨  r£   ©r—  F)r  rc  Úindex_is_slice),rÝ   rÞ   r   r«  rà   r¯  rï   r®  r=  r„  rÖ  rY  r¤  r_   rU  rß  r?  r   r°  rs   r‹  rÄ  r»  r™  rè   r‘   Úinserting_beforeÚinserting_afterrË  r{   Úpopitemrâ   ÚcompilerÚis_exportingÚ_lift_basic_symbolsrü   r¼   rª  r\   rR  r  r  r  rÉ  )rø   r=  r—  r[  rÎ  r  Ú	prev_namerè   Úctxr'  r  r  Úis_strict_exportÚis_non_strict_exportr„  rç  Úe_sources                    r¥   rX  z!SubgraphTracer.create_graph_input  s  € õ �m¥U¤\Ñ2Ô2ð 	MØÔ-×4Ò4°]Ô5KÑLÔLÐLÝ�	Š	ØEØØ!Ð-ˆFŒKˆK°8ØØÔØñ	
ô 	
ð 	
ð ˆ>ØŒ{Ð"Ý$Ø|ÀtÐ|Ð|ÐZgÐ|Ð|Ð|ñô ð ð Œ>ð 	˜dœkÐ1Øˆ~Ý$ØKñô ð õ (¨ÀÐFÑFÔFð ØÔ!Ô7×BÒBÀ6È2ÑNÔN×UÒUÝ"Ô0Ñ2Ô2ñô ð õ # 4¨Ô)9Ñ:Ô:ˆØÔ#ð 	4Ý�X dÔ&>Ñ?Ô?Ñ@Ô@ˆIØÔ+¨IÔ6Ô;ˆDØð 7Ø”j×1Ò1°$Ñ7Ô7��à”j×0Ò0°Ñ6Ô6��à”*×-Ò-¨dÑ3Ô3ˆCØð I	ð I	Ø×%Ò% m°T¸2¸rÈYÐ%ÑWÔWˆEÝ˜eœj¨-Ñ8Ô8Ð8ØÔ'ð 7¨Fð 7ØÔ/×7Ò7Ñ9Ô9‘��1Ø16�Ô(¨Ñ.Ø./�Ô(¨Ñ+Ð+à16�Ô(¨Ñ.ð
 Ô× Ò  Ñ&Ô&Ð&ð@  $œ~Ðõ $)¤>×#>Ò#>Ñ#@Ô#@Ð Ø#ð >Ð,@ð >Ý˜m­U¬\Ñ:Ô:ð >Ø×,Ò,¨]¸FÑCÔCÐCÐCÝ µµe¨}Ñ=Ô=ð >Ý )¨-Ñ 8Ô 8ð >ð >™˜˜1Ý)¨!­U¬\Ñ:Ô:ð %Ø$à#'˜Ø!ð Ý'4Ø%+Ø&'Ø/4ð(ñ (ô (˜Hð ×0Ò0°°HÑ=Ô=Ð=Ð=õ ˜-­¬Ñ6Ô6ð D½:ØÔ"Ô'­¬ñ<ô <ð Dð ?D�Ô" =Ô#5Ô#:Ñ;ØðSI	ð I	ð I	ð I	ñ I	ô I	ð I	ð I	ð I	ð I	ð I	ð I	øøøð I	ð I	ð I	ð I	ð I	ð I	s   ÆF3MÍM!Í$M!r'  c                 óì  — | j         €t          d¦  «        ‚|j        j        d         }t	          |t
          j        ¦  «        r*|j        j        | j        v r| j        |j        j                 S || j	        v r| j	        |         S |j
        | j         k    r| j                              |¦  «         t	          |t
          j        ¦  «        r8t          |¦  «        r)|j
        | j         u r| j                              ||¦  «         |j        j        d         }t	          |t          ¦  «        rt!          |j        ¦  «        nt!          |¦  «        }|                      |j        j        ||¦  «        }|| j	        |<   |S )NzIlift_tracked_freevar_to_input should not be called on root SubgraphTracerr[  )rÖ  rY  rè   rY  rÝ   rÞ   rR  r  rÉ  r{  r±  Úlift_tracked_freevar_to_inputr   r/   Útrack_produced_symintsr   rZ  Úreal_objrX  r=  )rø   r'  r[  r—  Ú	new_proxys        r¥   rß  z,SubgraphTracer.lift_tracked_freevar_to_inputŠ  sx  € ð Œ;ÐÝ Ø[ñô ð ð œ
œ¨Ô8ˆõ �}¥e¤lÑ3Ô3ð	?àÔ"Ô'¨4Ô+=Ð=Ð=àÔ% mÔ&8Ô&=Ô>Ð>ð
 �DÔ(Ð(Ð(ØÔ'¨Ô.Ð.ð
 Œ<˜4œ;Ò&Ð&ØŒK×5Ò5°eÑ<Ô<Ð<õ �}¥e¤lÑ3Ô3ð	Eå-¨mÑ<Ô<ð	Eð ” ¤Ð+Ð+àŒK×.Ò.¨}¸eÑDÔDÐDàœ
œ¨Ô8ˆõ ˜-Õ)9Ñ:Ô:ð%�D�Ô'Ñ(Ô(Ð(å�mÑ$Ô$ð 	ð
 ×+Ò+¨E¬J¬O¸YÈÑVÔVˆ	Ø&/ˆÔ˜UÑ#ØÐr¤   rk  c                 ó  ‡ — t          |t          j        j        ¦  «        s>t          |t          ¦  «        r't	          ˆ fd„|j        |j        |j        fD ¦   «         Ž S |S |j        ‰ k    r|S ‰  	                    |¦  «        S )z£
        If arg is a free variable, then lift it to be an input.
        Returns the new lifted arg (if arg was a freevar), else the
        original arg.
        c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rì   )r¯  )r  Úsub_argrø   s     €r¥   r…  zESubgraphTracer.maybe_lift_tracked_freevar_to_input.<locals>.<genexpr>Í  sE   øè è € ð ð à#ð ×@Ò@ÀÑIÔIðð ð ð ð ð r¤   )
rÝ   rÞ   r   rL  ÚsliceÚstartÚstopÚstepr±  rß  )rø   rk  s   ` r¥   r¯  z2SubgraphTracer.maybe_lift_tracked_freevar_to_inputÀ  sœ   ø€ õ ˜#�uœxœ~Ñ.Ô.ð 	õ
 ˜#�uÑ%Ô%ð Ýðð ð ð à(+¬	°3´8¸S¼XÐ'Fðñ ô ðð ð �
ØŒZ˜4ÒÐØˆJØ×1Ò1°#Ñ6Ô6Ð6r¤   Úe_proxyc                 óì  ‡ ‡‡— ‰j         Št          ‰t          ¦  «        st          dt	          ‰¦  «        › �¦  «        ‚dt
          dt          fˆ fd„}dt
          dt
          dt
          dt          j        fˆˆfd„}t          |t          j
        ¦  «        �rŸt          |                     ¦   «         ¦  «        D ]ˆ\  }} ||¦  «        rxt                               d	|‰|‰j        ¦  «         t!          ‰||d
t          j        j        j        j        ‰|fi t	          |¦  «        ¬¦  «        }‰                      ||¦  «         Œ‰|                     ¦   «         } ||¦  «        rqt                               d|‰‰j        ¦  «         t!          ‰||d
t          j        j        j        ‰fi t	          |¦  «        ¬¦  «        }‰                      ||¦  «         |j        t          j        u r¬t          |                     ¦   «         ¦  «        D ]ˆ\  }} ||¦  «        rxt                               d|‰|‰j        ¦  «         t!          ‰||d
t          j        j        j        j        ‰|fi t	          |¦  «        ¬¦  «        }‰                      ||¦  «         Œ‰�nC|j        t          j        u rQ‰                      |                     ¦   «         ‰¦  «         ‰                      |                     ¦   «         ‰¦  «         nß|j        t          j        t          j         hv rQ‰                      | !                    ¦   «         ‰¦  «         ‰                      | "                    ¦   «         ‰¦  «         no|j        t          j#        t          j$        hv rP‰                      | %                    ¦   «         ‰¦  «         ‰                      | &                    ¦   «         ‰¦  «         tO          |¦  «        rP| (                    ¦   «         \  }	}
|	D ]8}tS          ||¦  «        }‰                      |tS          ‰|¦  «        ¦  «         Œ7d S d S t          |t          j*        ¦  «        r# ||¦  «        r|j+        j,        }‰‰j-        |<   d S d S d S )Nz%tracer must be a SubgraphTracer, got r  rÆ   c                 ó”   •— ddl m}  || ¦  «        o6t          | j        j        t
          j        ¦  «        o| j        j        ‰j        vS )Nr   )r(   )r  r(   rÝ   rè   r  r  r  rÉ  )r  r(   rø   s     €r¥   Ú	need_bindz8SubgraphTracer.track_produced_symints.<locals>.need_bindô  sS   ø€ ØIÐIÐIÐIÐIÐIð �˜A‘”ð :Ý˜qœvœ{­E¬LÑ9Ô9ð:à”F”K tÔ'9Ð9ðr¤   r[  r  r  c                 ó|  •— t          ‰t          ¦  «        r
 ‰¦   «         n‰Št          ‰t          j        j        ¦  «        st          dt          ‰¦  «        › �¦  «        ‚‰j                             ‰j	        ¦  «        5   ‰j
        |i |¤Ž}t          |j	        | ¦  «         |cd d d ¦  «         S # 1 swxY w Y   d S )Nz!e_proxy must be an fx.Proxy, got )rÝ   rÇ  rÞ   r   rL  rY  rZ  r‘   rÔ  rè   rË  r{   )r[  r  r  r'  rê  r±  s       €€r¥   Ú_proxy_with_example_valuezHSubgraphTracer.track_produced_symints.<locals>._proxy_with_example_valueý  s  ø€ õ
 $.¨gµyÑ#AÔ#AÐN�g�g‘i”i�iÀwˆGÝ˜g¥u¤x¤~Ñ6Ô6ð Ý$ØG½¸W¹¼ÐGÐGñô ð ð ”×-Ò-¨g¬lÑ;Ô;ð ð Ø+˜Ô+¨TÐ<°VÐ<Ð<�Ý! %¤*¨mÑ<Ô<Ð<Øðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s   Â $B1Â1B5Â8B5z=track_produced_symints %s for %s.size()[%s] at debug_level %srŠ  rÑ  zCtrack_produced_symints %s for %s.storage_offset() at debug_level %sz?track_produced_symints %s for %s.stride()[%s] at debug_level %s).r±  rÝ   r¶  rY  rZ  r	   rÔ   r   rL  rÞ   r   rª  rš   rï   r®  r„  rÇ  Úopsr]  Úsym_sizerº   rà  Ústorage_offsetÚsym_storage_offsetÚlayoutÚstridedr›   Ú
sym_strideÚ
sparse_cooÚ_indicesÚ_valuesÚ
sparse_csrÚ
sparse_bsrÚcrow_indicesÚcol_indicesÚ
sparse_cscÚ
sparse_bscÚccol_indicesÚrow_indicesr/   Ú__tensor_flatten__rÌ   rR  rè   r  rÉ  )rø   r[  rê  rí  rï  r„  r  Ú
lazy_proxyrò  ÚattrsrÚ  r¨  Úinner_tr  r±  s   ` `           @r¥   rà  z%SubgraphTracer.track_produced_symintsà  så  øøø€ ð  ”ˆÝ˜&¥.Ñ1Ô1ð 	YÝ Ð!WÍÈfÉÌÐ!WÐ!WÑXÔXÐXð	�ð 	¥ð 	ð 	ð 	ð 	ð 	ð 	ð	Ýð	Ý'*ð	Ý69ð	åŒXð	ð 	ð 	ð 	ð 	ð 	ð 	õ �m¥U¤\Ñ2Ô2ñ Q	5Ý! -×"4Ò"4Ñ"6Ô"6Ñ7Ô7ð ?ð ?‘��1Ø�9˜Q‘<”<ð ?Ý—I’IØWØØØØÔ*ñô ð õ "+ØØ1ØØ'Ýœ	œÔ/Ô3Ø  !˜ØÝ"& q¡'¤'ð	"ñ 	"ô 	"�Jð ×/Ò/°°:Ñ>Ô>Ð>øà*×9Ò9Ñ;Ô;ˆNØˆy˜Ñ(Ô(ð HÝ—	’	ØYØ"ØØÔ&ñ	ô ð õ 'ØØ-Ø"Ø#Ý”I”NÔ5Ø�JØÝ" >Ñ2Ô2ð	ñ 	ô 	�
ð ×+Ò+¨N¸JÑGÔGÐGàÔ#¥u¤}Ð4Ð4Ý% m×&:Ò&:Ñ&<Ô&<Ñ=Ô=ð Cð C‘D�A�qØ �y ‘|”|ð CÝŸ	š	Ø]ØØ#ØØ"Ô.ñô ð õ &/Ø"Ø5ØØ+Ý!œIœNÔ5Ô9Ø$ a˜LØÝ&*¨1¡g¤gð	&ñ 	&ô 	&˜
ð ×3Ò3°A°zÑBÔBÐBøñ'Cð* Ô%­Ô)9Ð9Ð9Ø×+Ò+¨M×,BÒ,BÑ,DÔ,DÀgÑNÔNÐNØ×+Ò+¨M×,AÒ,AÑ,CÔ,CÀWÑMÔMÐMÐMØÔ%­%Ô*:½EÔ<LÐ)MÐMÐMØ×+Ò+¨M×,FÒ,FÑ,HÔ,HÈ'ÑRÔRÐRØ×+Ò+¨M×,EÒ,EÑ,GÔ,GÈÑQÔQÐQÐQØÔ%­%Ô*:½EÔ<LÐ)MÐMÐMØ×+Ò+¨M×,FÒ,FÑ,HÔ,HÈ'ÑRÔRÐRØ×+Ò+¨M×,EÒ,EÑ,GÔ,GÈÑQÔQÐQÝ,¨]Ñ;Ô;ð QØ*×=Ò=Ñ?Ô?‘
��sØ!ð Qð Q�DÝ% m°TÑ:Ô:�GØ×/Ò/°½ÀÈ$Ñ9OÔ9OÑPÔPÐPÐPð	Qð QðQð Qõ ˜¥u¤|Ñ4Ô4ð 	5Øˆy˜Ñ'Ô'ð 5Ø$Ô)Ô.�Ø-4�Ô$ TÑ*Ð*Ð*ð	5ð 	5ð5ð 5r¤   r„  c           	      ó*  ‡ — 	 d	dt           t          j        z  dt          d z  dt          dd fˆ fd„}t          |t          j        ¦  «        �rŸt          |                     ¦   «         ¦  «        D ]0\  }} |||�t          |t          j        |¦  «        nd d¬¦  «         Œ1|j        t          j        u r�t          |                     ¦   «         ¦  «        D ]0\  }} |||�t          |t          j        |¦  «        nd d¬¦  «         Œ1 ||                     ¦   «         |�t          |t          j        ¦  «        nd d¬¦  «         �nC|j        t          j        u rQ‰                      |                     ¦   «         |¦  «         ‰                      |                     ¦   «         |¦  «         nß|j        t          j        t          j        hv rQ‰                      |                     ¦   «         |¦  «         ‰                      |                     ¦   «         |¦  «         no|j        t          j        t          j        hv rP‰                      |                     ¦   «         |¦  «         ‰                      |                     ¦   «         |¦  «         t=          |¦  «        rT|                     ¦   «         \  }}|D ]<}tA          ||¦  «        }	‰                      |	|�tC          ||¦  «        nd ¦  «         Œ;d S d S t          |t          j        ¦  «        r |||¦  «         d S d S )
NFr  r  rÎ  rÆ   c                 ó†  •— t          | ¦  «        sd S t          | t          j        ¦  «        st	          dt          | ¦  «        › �¦  «        ‚‰                     | ¦  «        }t          |¦  «        dk    rd S ‰j        �è‰j         	                    | |¦  «         |D ]È}‰j        j
        |         }|j        j        d         }t          |t          j        ¦  «        st	          dt          |¦  «        › �¦  «        ‚‰                     t          |¦  «        t          |¦  «        |||¬¦  «        }t                               d||�|j        nd‰j        ¦  «         |‰j        |<   ŒÉd S t          |¦  «        dk    rt	          d	|› d
| › �¦  «        ‚|€t	          d| › d| › d�¦  «        ‚t)          t+          |¦  «        ¦  «        }‰                     t          |¦  «        t          | ¦  «        | ||¬¦  «        }t                               d| |�|j        nd‰j        ¦  «         t-          || dd d¬¦  «        |j        j        d<   d S )Nzs must be a SymInt, got r   r[  z"example_val must be a SymInt, got )rÎ  r  z4_lift_symbols_in_symint %s from %s at debug_level %szsubgraph inputsr0   zyFor root tracer, we only expect to bind basic symbols (compound symbols should be cached before) but got unbound symbols z in zSource of 'zÕ' is None when lifting it to input of top-level. If it's an unbacked symbol, this could be because it's not tracked with lazy_bind_unbacked_symbols. Otherwise, should provide a source when create_graph_input for `z` at root tracer.F)Úpass_arg_as_tensorrN  rŸ  rV  )r(   rÝ   rÞ   rR  rY  rZ  Úlookup_unbound_symbolsr   rÖ  rØ  rÉ  rè   rY  rX  r¾   rï   r®  r=  r„  r{  r»  Úiterr}   )	r  r  rÎ  Úself_to_be_boundÚs0Úparent_proxyÚexample_valÚphrø   s	           €r¥   Ú_lift_symbols_in_symintzCSubgraphTracer._lift_basic_symbols.<locals>._lift_symbols_in_symintg  sÊ  ø€ õ
 ˜q‘>”>ð Ø�å˜a¥¤Ñ.Ô.ð KÝ$Ð%IÅÀQÁÄÐ%IÐ%IÑJÔJÐJØ#×:Ò:¸1Ñ=Ô=ÐÝÐ#Ñ$Ô$¨Ò)Ð)Ø�ð Œ{Ð&à”×/Ò/°°6Ñ:Ô:Ð:Ø*ð <ð <�BØ#'¤;Ô#<¸RÔ#@�LØ".Ô"3Ô"8¸Ô"I�KÝ% kµ5´<Ñ@Ô@ð Ý,ØTÅÀkÑARÔARÐTÐTñô ð ð ×0Ò0Ý˜B™œÝ˜[Ñ)Ô)Ø#Ø%Ø%ð 1ñ ô �Bõ —I’IØNØØ'-Ð'9˜œ˜Ð?PØÔ(ñ	ô ð ð :<�DÔ(¨Ñ6Ð6ð)<ð <õ. Ð'Ñ(Ô(¨AÒ-Ð-Ý(ðfØL\ðfð fØbcðfð fñô ð ð �>Ý(ðp að pð pà[\ðpð pð pñô ð õ
 �$Ð/Ñ0Ô0Ñ1Ô1�Ø×,Ò,Ý˜‘G”GÝ˜‘G”GØØ!Ø!ð -ñ ô �õ —	’	ØJØØ#)Ð#5�F”K�KÐ;LØÔ$ñ	ô ð õ ,4ØØØ',Ø $Ø#ð,ñ ,ô ,�””˜ZÑ(Ð(Ð(r¤   T)rÎ  rK  )"rº   rÞ   rR  r   rÔ   rÝ   r   rª  rš   rf   re   ÚSIZErô  rõ  r›   ÚSTRIDErò  ÚSTORAGE_OFFSETr÷  rØ  rø  rù  rú  rû  rü  rý  rþ  rÿ  r   r  r/   r  rÌ   rX   )
rø   r[  r„  r  r„  r  r  rÚ  r¨  r  s
   `         r¥   rØ  z"SubgraphTracer._lift_basic_symbols`  s¢  ø€ ð !ðH	ð H	Ý•U”\Ñ!ðH	å˜T‘MðH	õ ðH	ð ð	H	ð H	ð H	ð H	ð H	ð H	õT �m¥U¤\Ñ2Ô2ñ 3	Ý! -×"4Ò"4Ñ"6Ô"6Ñ7Ô7ð 	ð 	‘��1Ø'Ð'Øð ˜?õ -¨Sµ.Ô2EÀqÑIÔIÐIà!àðñ ô ð ð ð Ô#¥u¤}Ð4Ð4Ý% m×&:Ò&:Ñ&<Ô&<Ñ=Ô=ð 	ð 	‘D�A�qØ+Ð+Øð  #˜õ 1°µnÔ6KÈQÑOÔOÐOà!%à#ðñ ô ð ð ð (Ð'Ø!×0Ò0Ñ2Ô2ð ˜?õ -¨Sµ.Ô2OÑPÔPÐPà!àðñ ô ð ñ ð Ô%­Ô)9Ð9Ð9Ø×(Ò(¨×)?Ò)?Ñ)AÔ)AÀ3ÑGÔGÐGØ×(Ò(¨×)>Ò)>Ñ)@Ô)@À#ÑFÔFÐFÐFØÔ%­%Ô*:½EÔ<LÐ)MÐMÐMØ×(Ò(¨×)CÒ)CÑ)EÔ)EÀsÑKÔKÐKØ×(Ò(¨×)BÒ)BÑ)DÔ)DÀcÑJÔJÐJÐJØÔ%­%Ô*:½EÔ<LÐ)MÐMÐMØ×(Ò(¨×)CÒ)CÑ)EÔ)EÀsÑKÔKÐKØ×(Ò(¨×)BÒ)BÑ)DÔ)DÀcÑJÔJÐJÝ,¨]Ñ;Ô;ð Ø*×=Ò=Ñ?Ô?‘
��sØ!ð ð �DÝ% m°TÑ:Ô:�GØ×,Ò,Ø¸#¸/¥¨C°Ñ!6Ô!6Ð!6Ètñô ð ð ð	ð ðð õ
 ˜¥u¤|Ñ4Ô4ð 	Ø#Ð#ØØñô ð ð ð ð	ð 	r¤   r  c                 ó   — |j         j        j        }t          |¦  «        dk    rg S g }|D ]’}|| j        vr|                     |¦  «         Œ!| j        |         }t          |t          ¦  «        r |¦   «         }|| j        |<   t          |t          j	        j
        ¦  «        r	|j        | urt          d|› d�¦  «        ‚Œ“t          |d„ ¬¦  «        S )Nr   zThe proxy of symbol z" doesn't belong to current tracer.c                 ó   — | j         S rì   )r=  )r  s    r¥   r€  z7SubgraphTracer.lookup_unbound_symbols.<locals>.<lambda>ü  s   € °´€ r¤   )rE  )rè   r  r&   r   rÉ  rà   rÝ   rÇ  rÞ   r   rL  r±  rY  rñ  )rø   r  r&   Úto_be_boundr  r'  s         r¥   r	  z%SubgraphTracer.lookup_unbound_symbolsè  s÷   € Ø”v”{Ô/ˆÝˆ|ÑÔ Ò!Ð!ØˆIàˆØð 	ð 	ˆBØ˜Ô+Ð+Ð+Ø×"Ò" 2Ñ&Ô&Ð&ØàÔ& rÔ*ˆEÝ˜%¥Ñ+Ô+ð /Ø˜™œ�Ø).�Ô" 2Ñ&Ý˜e¥U¤X¤^Ñ4Ô4ð ¸¼ÈDÐ8PÐ8PÝ$ØQ¨2ÐQÐQÐQñô ð ð 9Qõ
 �kÐ'7Ð'7Ð8Ñ8Ô8Ð8r¤   c                 ó>  ‡
‡— | j         }g Š
g Šg }t          | j        j        ¦  «        D ]|\  }}|j        dk    rl|j        d         }t          |t          j        ¦  «        rD| 	                    |j
        ¦  «         ‰
 	                    |¦  «         ‰ 	                    |¦  «         Œ| d„ t          t          ||¦  «        ¦  «        D ¦   «         }|r?ˆ
fd„|D ¦   «         }t          ˆfd„|D ¦   «         ¦  «        }d|› �}	t          d|	|¦  «        S t          dd	d
¦  «        S )Nr¨  r[  c                 ó*   — g | ]\  }\  }}||k    ¯|‘ŒS r£   r£   )r  r„  Úv1Úv2s       r¥   r  z5SubgraphTracer.has_input_mutation.<locals>.<listcomp>  s5   € ð 
ð 
ð 
á�‘8�B˜ð �RŠxˆxð	 ð ˆxˆxr¤   c                 ó    •— g | ]
}‰|         ‘ŒS r£   r£   )r  r„  Úinput_nodess     €r¥   r  z5SubgraphTracer.has_input_mutation.<locals>.<listcomp>  s   ø€ ÐDÐDÐD°˜[¨œ^ÐDÐDÐDr¤   c              3   ó(   •K  — | ]}‰|         V — Œd S rì   r£   )r  r„  Útensor_placeholder_indicess     €r¥   r…  z4SubgraphTracer.has_input_mutation.<locals>.<genexpr>  s:   øè è € ð *ð *Ø23Ð*¨1Ô-ð*ð *ð *ð *ð *ð *r¤   zInput mutation detected at TFr”  r£   )r«  rª  r‘   r­  r®  rY  rÝ   rÞ   r   rà   r¯  rˆ  r¼   rÖ   )rø   Úinput_versions_at_beginningÚinput_versions_at_endÚplaceholder_idxrè   r[  Úmutated_inputsÚmutated_nodesrØ   rÓ   r  r  s             @@r¥   Úhas_input_mutationz!SubgraphTracer.has_input_mutationþ  sv  øø€ Ø&*Ô&GÐ#ØˆØ%'Ð"à "ÐÝ%.¨t¬zÔ/?Ñ%@Ô%@ð 	ð 	Ñ!ˆO˜TØŒw˜-Ò'Ð'Ø $¤	¨/Ô :�Ý˜m­U¬\Ñ:Ô:ð GØ)×0Ò0°Ô1GÑHÔHÐHØ×&Ò& tÑ,Ô,Ð,Ø.×5Ò5°oÑFÔFÐFøàð
ð 
å(ÝÐ/Ð1FÑGÔGñ ô  ð
ñ 
ô 
ˆð ð 	BØDÐDÐDÐD°^ÐDÑDÔDˆMÝ$)ð *ð *ð *ð *Ø7Eð*ñ *ô *ñ %ô %Ð!ð @°Ð?Ð?ˆCÝ  cÐ+@ÑAÔAÐAå˜E 2 rÑ*Ô*Ð*r¤   c                 ó  ‡‡— ddl m} ddlm} t	          ¦   «         Š| j        j        D ]s}|j        dk    rf ||g¦  «        d         }t          |t          j
        ¦  «        r9 ||¦  «        D ]-}|‰v r"d‰|         › d|› �}t          d|¦  «        c c S |‰|<   Œ.Œs t	          ¦   «         Š| j                             d¬	¦  «        d         }t          j        |j        d         ¦  «        D ]�}|r‰ ||g¦  «        d         }t          |t           ¦  «        rt#          d
¦  «        ‚t          |t          j
        ¦  «        r9 ||¦  «        D ]-}|‰v r"d‰|         › d|› �}t          d|¦  «        c c S |‰|<   Œ.ŒŽ‰                     ¦   «         ‰                     ¦   «         z  }	t'          |	¦  «        dk    rCˆˆfd„|	D ¦   «         }
d                     d„ |
D ¦   «         ¦  «        }
d|
› �}t          d|¦  «        S t          dd¦  «        S )Nr   )Úget_tensor_storages)Ú_collect_fake_inputsr¨  z*Input-to-input aliasing detected at nodes ú and TrÜ  r  z example_value must not be a listz,Output-to-output aliasing detected at nodes c                 ó0   •— g | ]}‰|         ‰|         f‘ŒS r£   r£   )r  r  Úinput_storagesÚoutput_storagess     €€r¥   r  z/SubgraphTracer.has_aliasing.<locals>.<listcomp>E  s5   ø€ ð ð ð Ø<=� Ô" O°AÔ$6Ð7ðð ð r¤   z, c                 ó"   — g | ]\  }}|› d |› �‘ŒS )r(  r£   )r  r„  Úos      r¥   r  z/SubgraphTracer.has_aliasing.<locals>.<listcomp>H  s&   € Ð DÐ DÐ D±D°A°q A  ¨A  Ð DÐ DÐ Dr¤   z+Input-to-output aliasing detected at nodes Fr”  )Ú(torch._dynamo.variables.higher_order_opsr&  Útorch._higher_order_ops.utilsr'  r  r‘   r­  r®  rÝ   rÞ   r   rÑ   r¸  r  Útree_leavesr  rü   rY  r  r   rº  )rø   r&  r'  rè   r[  ÚstoragerÓ   Ú	out_nodesÚout_nodeÚintersected_storagesÚaliasedr*  r+  s              @@r¥   rÒ   zSubgraphTracer.has_aliasing   s¦  øø€ ØPÐPÐPÐPÐPÐPØFÐFÐFÐFÐFÐFå>B¹f¼fˆà”JÔ$ð 	ð 	ˆDØŒw˜-Ò'Ð'Ø 4Ð 4°d°VÑ <Ô <¸QÔ ?�Ý˜m­U¬\Ñ:Ô:ð 7Ø#6Ð#6°}Ñ#EÔ#Eð 7ð 7˜Ø" nÐ4Ð4à"sÈ~Ð^eÔOfÐ"sÐ"sÐmqÐ"sÐ"s˜CÝ#/°°cÑ#:Ô#:Ð:Ð:Ð:Ð:Ð:Ø26˜ wÑ/Ð/øàå?C¹v¼vˆØ”J×)Ò)¨XÐ)Ñ6Ô6°qÔ9ˆ	ÝÔ*¨9¬>¸!Ô+<Ñ=Ô=ð 	<ð 	<ˆHØð 
<Ø 4Ð 4°h°ZÑ @Ô @ÀÔ C�Ý˜m­TÑ2Ô2ð MÝ(Ð)KÑLÔLÐLÝ˜m­U¬\Ñ:Ô:ð <Ø#6Ð#6°}Ñ#EÔ#Eð <ð <˜Ø" oÐ5Ð5à"zÐQ`ÐahÔQiÐ"zÐ"zÐpxÐ"zÐ"z˜CÝ#/°°cÑ#:Ô#:Ð:Ð:Ð:Ð:Ð:Ø3;˜¨Ñ0Ð0øà-×2Ò2Ñ4Ô4°×7KÒ7KÑ7MÔ7MÑMÐÝÐ#Ñ$Ô$ qÒ(Ð(ðð ð ð ð ØAUðñ ô ˆGð —i’iÐ DÐ D¸GÐ DÑ DÔ DÑEÔEˆGØIÀÐIÐIˆCÝ  cÑ*Ô*Ð*å˜E 2Ñ&Ô&Ð&r¤   )NFNN)NNN)NNNN)FN)(rž   rŸ   r    rû   r   rÔ   r,   r¾   r  r‚   r�  r   rò  rŒ  r	   r   rL  rË  rš  rÎ  rÑ  r   rX  rÇ  rß  r¯  rÞ   rà  rR  r   rØ  rü   r  r  r	  rÖ   r$  rÑ   rÒ   r  r  s   @r¥   r¶  r¶  h  s�  ø€ € € € € ðð ð .2ØØ'+Ø"&ðgNð gNà#ðgNð Ð)Ô*ðgNð ð	gNð
  ‘}ðgNð ˜4‘ZðgNð 
ðgNð gNð gNð gNð gNð gNðR* oð *¸$ð *ð *ð *ð *ðCØ-ðCØ57´WðCà	ðCð Cð Cð Cð8  Ø $ØAEðð àðð ðð ð	ð
 ðð �D‰jðð ˜‘:ðð # B¤G 9¨b¬hÐ#6Ô7¸$Ñ>ðð 
Œðð ð ð ð4  Ø $ØAEðLð LàðLð ðLð ð	Lð
 ðLð �D‰jðLð ˜‘:ðLð # B¤G 9¨b¬hÐ#6Ô7¸$Ñ>ðLð 
ŒðLð Lð Lð Lð Lð Lðd ØØØ $ðð àðð ðð ð	ð
 ðð �D‰jðð ˜‘:ðð 
Œðð ð ð ð ð ð66 ¤ð 6¨Dð 6ð 6ð 6ð 6ð6 Ø $ðAð AàðAð ðAð ð	Að
 ðAð ˜‘ðAð 
ŒðAð Að Að AðH4°2´8ð 4À	ÈBÌHÑ@Tð 4ð 4ð 4ð 4ðl7°sð 7¸sð 7ð 7ð 7ð 7ð@}5Ø ð}5Ø+4°u´x´~Ñ+Eð}5à	ð}5ð }5ð }5ð }5ð@DØ"œ\¨E¬LÑ8ðDØ?EÈ¹}ðDà	ðDð Dð Dð DðP9¨¬ð 9¸¸e¼lÔ9Kð 9ð 9ð 9ð 9ð, + Lð  +ð  +ð  +ð  +ðD,'˜lð ,'ð ,'ð ,'ð ,'ð ,'ð ,'ð ,'ð ,'r¤   r¶  rì   (  rû   rÏ  rô  r$  r;  rô  rž  rÖ  r3   r  r  r�  r*  rý   r2  rÓ  rz  Úcollections.abcr   r   r   r   r   ry  r   Útypingr	   r
   r   r   r   r   r   r   Útyping_extensionsr   r   r   r  Útorch._guardsrÞ   Útorch._loggingÚtorch.distributedÚdistributedrA  Útorch.nnÚtorch.utils._pytreer€  r�  r  r   r   Útorch._C._dynamor   Útorch._dynamo.excr   r   r   r   r   r   r   r   Ú"torch._library.fake_class_registryr   Útorch._library.opaque_objectr    Útorch._subclasses.fake_tensorr!   Útorch._utils_internalr"   Útorch.export.dynamic_shapesr#   r˜  r$   Ú%torch.fx.experimental._backward_stater%   r  r&   r'   r(   r)   r*   r+   Útorch.fx.noder,   Útorch.fx.passes.runtime_assertr-   Útorch.utils._ordered_setr.   Útorch.utils._python_dispatchr/   r”  r1   r2   rí   r4   Úbackends.registryr5   r6   r¶  r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rÈ  rC   Úcurrent_scope_idrD   Údevice_interfacerE   rF   rG   rH   rI   rJ   rˆ  rK   rL   Úgraph_deduplicationrM   Úgraph_id_filterrN   rO   Úgraph_region_trackerrP   rQ   rR   Úmutation_guardrS   rœ  rT   rU   rV   r  rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   Úvariables.builderr|   r}   r~   r   Úvariables.ctx_managerr€   Úvariables.functionsr�   r‚   Úvariables.listsrƒ   Úvariables.miscr„   Úvariables.nn_moduler…   rL  r†   r‡   rˆ   Úvariables.torch_functionr‰   Úvariables.user_definedrŠ   r(  rŒ   Útorch._dynamo.packager�   r)  rŽ   Útorch._inductorr�   Ú torch.multiprocessing.reductionsr�   Ú	getLoggerrž   rï   r  ÚgetArtifactLoggerÚgraph_tabular_logr•  Úgraph_sizes_logr³  r¡  rº   rR  ÚTensorMetadataDimr¡   rÃ   r™   r§   rÀ   r  r  rU  rI  rT  rH  r  r¾   rÎ   rÑ   rÖ   rü   r¼   rÜ   r®  r‘   rò  rê   Úcacherð   rò   r	  r  r  r½   ra  r2  rH  ro  r{  r‰  r‹  r›  rR  re  rr  r×  r¼  rs  rt  rÇ  ÚTracerr¶  r£   r¤   r¥   ú<module>rd     s`  ððð ð* Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø Ð Ð Ð Ð Ð ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð >Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =à €€€à Ð Ð Ð Ø Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ Nðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð @Ð ?Ð ?Ð ?Ð ?Ð ?Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø :Ð :Ð :Ð :Ð :Ð :Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð !Ð  Ð  Ð  Ð  Ð  Ø JÐ JÐ JÐ JÐ JÐ JØ /Ð /Ð /Ð /Ð /Ð /Ø FÐ FÐ FÐ FÐ FÐ Fà DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 'Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð ð ð ð ð ð ð SÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ :Ð :Ð :Ð :Ð :Ð :ðð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ Wðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð$ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð.ð ð ð ð ð ð ð ð ð ð ð ð ;Ð :Ð :Ð :Ð :Ð :Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ -Ð -Ð -Ð -Ð -Ð -Ø (Ð (Ð (Ð (Ð (Ð (Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð
 CÐ BÐ BÐ BÐ BÐ BØ ;Ð ;Ð ;Ð ;Ð ;Ð ;ð ð @ØAÐAÐAÐAÐAÐAØ4Ð4Ð4Ð4Ð4Ð4ØHÐHÐHÐHÐHÐHØ4Ð4Ð4Ð4Ð4Ð4Ø?Ð?Ð?Ð?Ð?Ð?à€gÔ˜Ñ!Ô!€Ø”N×4Ò4°X¸wÑGÔGÐ Ø”×1Ò1°(¸LÑIÔI€Ø”.×2Ò2°8¸]ÑKÔK€Ø”×1Ò1°(¸LÑIÔI€àÔ*Ð à˜%œ,Ñ&¨Ñ-Ð Ø!Ð"3Ô4Ð ØÐ;Ô<Ð ð7ð 7ð 7ð 7ð 7�yñ 7ô 7ð 7ð!ð !ð !ð !ð !�)ñ !ô !ð !ð*ð ð ð ð �zñ ô ð ð "'¤¤Ô!>Ð Ø$)¤H¤OÔ$DÐ !ðØðØ&*¨3°¨8¤nðàˆc�3ˆhÔðð ð ð ð& €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð
 €�$ÐÑÔð0ð 0ð 0ð 0ð 0ñ 0ô 0ñ Ôð0ð 6:ð)ð )Ø˜u U¤\°3¸±:Ð%=Ô>Ô?ð)à�”Ô%Ô*Ô+¨dÑ2ð)ð 	ˆŒÔ	Ô	"Ô#ð)ð )ð )ð )ðX „ð4�cð 4ð 4ð 4ñ „ð4ð ð-ð -ð -ð -ð -ñ -ô -ñ „ð-ð¨#ð °(¸2¸tÀC¼y¸=Ô2Ið ð ð ð ð ð  ð  ð  ð  �U”X”_ñ  ô  ð  ð !ð !ð !ð !ð !ñ !ô !ð !ðH 	ˆS‘&ˆ[Ô�ð ðNð Nð Nð Nð Nñ Nô Nñ „ñNð: ð<
ð <
ð <
ð <
ð <
ñ <
ô <
ñ „ñ<
ð~ ðð ð ð ð ñ ô ñ „ñð* ð'ð 'ð 'ð 'ð 'ñ 'ô 'ñ „ñ'ð,¡Eð ¨d°3¸°8¬nð ð ð ñ ð(H"ð H"ð H"ð H"ð H"Ñ.ñ H"ô H"ñ H"ðVU-2ð U-2ð U-2ð U-2ð U-2Ñ#ñ U-2ô U-2ñ U-2ðpZ!Vð !Vð !Vð !Vð !Vñ !Vô !Vñ !VðJJñ ðHÙðHØ%(ðHØ25ðHØ=@ðHØJMðHà	ðHð Hð Hñ HðV &�i•oÑ'Ô'Ñ à€Iˆc�N„N�Ø€GˆC�L„L�ð2ð 2ð 2ð 2ð 2ñ 2ô 2ñ 2ð$d'ð d'ð d'ð d'ð d'�R•Yñ d'ô d'ñ d'ð d'ð d'r¤   