ó
    Eñi'ë  ã                   óÐ  • S r SSKrSSKrSSKrSSKrSSKrSSKJrJr  SSK	J
r
Jr  SSKJrJrJr  SSKrSSKJr  SSKJrJrJr  SS	KJrJrJr  SS
KJrJr  SSKJ r   SSK!J"r"J#r#J$r$J%r%J&r&J'r'J(r(  SSK)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7  SSK8J9r9J:r:J;r;J<r<  SSK=J>r>  SSK?J@r@  SSKAJBrB  SSKCJDrD  \(       a  SSKEJFrF  SSKGJHrH  SSS\R’                  R”                  S\\<   S\K\L\<4   SS4
S jrM\
S\LS\SSS\R’                  R”                  S\4
S j5       rNS\\   S\R’                  R”                  SS4S  jrO " S! S"\<5      rP " S# S$\D5      rQ " S% S&\Q5      rR " S' S(\Q5      rSg))aQ  
This module implements variable tracking for PyTorch nn.Module instances during Dynamo tracing.

It provides specialized handling for different types of nn.Module instances through several key classes:

- NNModuleVariable: Handles instance-specific module tracing, specializing on module id() and placing
  parameters directly on the torch.fx.GraphModule. This creates one graph per module instance.

- UnspecializedNNModuleVariable: Provides class-level module tracing, treating nn.Modules like other
  user-defined objects and passing parameters as inputs to the FX graph. This creates one graph per
  module class.

- UnspecializedBuiltinNNModuleVariable: Specifically handles built-in PyTorch modules (e.g. nn.Linear)
  with appropriate optimizations.

- FSDPManagedNNModuleVariable: Special handling for FSDP-wrapped modules with modified guarding behavior
  and parameter handling.

The module integrates with Dynamo's broader tracing functionality to handle module method calls,
parameter access, hooks, and other nn.Module behaviors while maintaining proper scoping and guarding
of module state.
é    N)ÚIterableÚSequence)ÚcontextmanagerÚnullcontext)ÚAnyÚOptionalÚTYPE_CHECKING)ÚSourceé   )Úgraph_break_hintsÚtrace_rulesÚ	variables)Úraise_observed_exceptionÚunimplementedÚUnspecializeRestartAnalysis)ÚGuardBuilderÚinstall_guard)ÚGenerationTracker)Ú
AttrSourceÚConstDictKeySourceÚDictGetItemSourceÚFSDPNNModuleSourceÚGetItemSourceÚNNModuleSourceÚUnspecializedNNModuleSource)Úget_custom_getattrÚget_fake_valueÚis_lazy_moduleÚis_namedtupleÚis_safe_constantÚistensorÚistypeÚnnmodule_has_hooksÚobject_has_getattributeÚproxy_args_kwargsÚraise_args_mismatchÚset_example_valueÚunpatched_nn_module_callÚunpatched_nn_module_call_implé   )Úraise_type_error_excÚtypestrÚValueMutationNewÚVariableTracker)Úinvoke_and_store_as_constant)ÚLazyVariableTracker)ÚSliceVariable)ÚUserDefinedObjectVariable)ÚInstructionTranslator)ÚConstantVariableÚtxr3   ÚmodÚargsÚkwargsÚreturnc                 ó¶  ^ ^• [        US5      (       ay  S[        S[        4UU 4S jjm[        X#5      u  pEU Vs/ s H  nT" U5      PM     nnUR                  5        VV	s0 s H  u  p‰UT" U	5      _M     n
nn	 UR	                  XU
5        ggs  snf s  sn	nf ! [
         a5  n[        [
        T [        U5      (       a  [        U5      OS/S9   SnAgSnAff = f)aj  
Fairly coupled helper used by NNModuleVariable and UnspecializedNNModuleVariable.

Used to cause lazy module to be initialized (and delete its init hook) before tracing. Especially
useful now that 'allowed' modules graph-break on hooks, calling this first ensures there is no hook
by the time we trace __call__ and thus no graph-break for lazy allowed modules.
Ú_initialize_hookÚxr9   c                 óÚ  >• [        U 5      (       a  [        U 5      " U4S jU  5       6 $ [        U [        5      (       a,  U R	                  5        VVs0 s H  u  pUT" U5      _M     snn$ [        U [
        [        [        45      (       a  [        U 5      " U4S jU  5       5      $ [        U [        R                  R                  5      (       a  [        U R                  T5      $ U $ s  snnf )Nc              3   ó4   >#   • U  H  nT" U5      v •  M     g 7f©N© ©Ú.0ÚelemÚconvert_to_fakes     €Ú^/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_dynamo/variables/nn_module.pyÚ	<genexpr>ÚBinitialize_lazy_module.<locals>.convert_to_fake.<locals>.<genexpr>_   s   øé € Ð EÂ1¸4¡°×!6Ð!6Â1ùó   ƒc              3   ó4   >#   • U  H  nT" U5      v •  M     g 7fr?   r@   rA   s     €rE   rF   rG   c   s   øé € ÐCÂ¸™¨t×4Ð4ÂùrH   )r   ÚtypeÚ
isinstanceÚdictÚitemsÚlistÚtupleÚsetÚtorchÚfxÚProxyr   Únode)r<   ÚkÚvrD   r5   s      €€rE   rD   Ú/initialize_lazy_module.<locals>.convert_to_fake]   s±   ø€ Ü˜Q×ÑÜ˜A”wÔ EÁ1Ó EÐFÐFÜ˜Aœt×$Ñ$Ø:;¿'¹'¼)ÔDº)±$°!˜™?¨1Ó-Ò-¹)ÒDÐDÜ˜A¤¤e¬SÐ1×2Ñ2Ü˜A”wÔCÁÓCÓCÐCÜ˜AœuŸx™xŸ~™~×.Ñ.Ü% a§f¡f¨bÓ1Ð1à�ùó Es   ÁC'z0AttributeError during lazy module initialization©r7   N)Úhasattrr   r%   rM   Ú_infer_parametersÚAttributeErrorr   Ústr)r5   r6   r7   r8   Ú
proxy_argsÚproxy_kwargsÚargÚ	fake_argsrU   rV   Úfake_kwargsÚerD   s   `           @rE   Úinitialize_lazy_modulerc   N   sÝ   ù€ ô ˆsÐ&×'Ñ'ð
	œsð 
	¤s÷ 
	ð 
	ô $5°TÓ#BÑ ˆ
Ù5?Ó@²Z¨c‘_ SÖ)±Zˆ	Ð@Ø9E×9KÑ9KÔ9MÔNÒ9M±°�q™/¨!Ó,Ò,Ñ9MˆÑNð	Ø×!Ñ! #°+Õ>ð% (ùò AùÛNøô ó 
	ä$ÜØô ˜1—v‘vô ˜”FàKð÷ûð
	ús#   ºBÁ!BÁ:B Â
CÂ#+CÃCÚ
module_keyÚsourcec              #   óJ  #   • UR                   n[        R                  " SSU5      nUR                  R	                  US5      nUS:”  a  U  SU 3OU n  XCR
                  4UR                  U '   US-   UR                  U'   S v •  UR                  U 	 g ! UR                  U 	 f = f7f)Nz9\._(?:modules|parameters|buffers)\[(['\"])([^'\"\]]+)\1\]z.\2r   Ú@r*   )ÚnameÚreÚsubÚ	num_callsÚgetÚ	__class__Únn_module_stack)rd   re   r5   r6   Úfully_qualified_namerk   s         rE   Úrecord_nn_module_stackrp   {   s¨   é € ð "Ÿ;™;ÐäŸ6š6ØDØØóÐð
 —‘× Ñ Ð!5°qÓ9€IØ09¸A³�J�<˜q  Ñ,À:€Jð+Ø*>ÇÁÐ)Nˆ×Ñ˜:Ñ&Ø-6¸©]ˆ�‰Ð)Ñ*Ûà×Ñ˜zÑ*øˆB×Ñ˜zÑ*üs   ‚AB#Á0B ÂB#ÂB Â B#c           	      ó¼  • U (       aÕ  SUR                   ;   a‰  [        UR                   S   5      (       al  UR                   S   n[        U S5      n[        U5      [        R
                  L a  [        US5      n[        UR                  [        R                  5      5        g [        U R                  [        R                  " [        R                  SS95      5        g g )NÚforwardÚ__func__)Úattr)Ú__dict__Úcallabler   rJ   ÚtypesÚ
MethodTyper   Ú
make_guardr   ÚCLOSURE_MATCHÚ	functoolsÚpartialÚNOT_PRESENT_IN_GENERIC_DICT)re   r6   ÚfwdÚforward_sources       rE   Ú&guard_to_detect_forward_monkeypatchingr€   �   s­   € ö  Ø˜Ÿ™Ó$¬°#·,±,¸yÑ2I×)JÑ)Jà—,‘,˜yÑ)ˆCÜ'¨°	Ó:ˆNÜ�C‹yœE×,Ñ,Ò,Ü!+¨N¸JÓ!G�Ü˜.×3Ñ3´L×4NÑ4NÓOÕPô Ø×!Ñ!Ü×%Ò%Ü$×@Ñ@Àyñóõð ó    c                   ó.  ^ • \ rS rSrSSSS1\R
                  krS\S\S\R                  R                  S\SS4
U 4S	 jjrS\4S
 jrS\SS4S jrS\4S jrSSS\S\R                  R                  S\S\SS4S jrSSS\\   4S jrSSS\SS4S jrSSS\4S jrS%S jrSSS\S\4S jrS\R                  R                  SSS\S\S\\   4
S jrSSS\S\4S jrSSS \\   S\\\4   S\4S! jr S&SSS\S \\   S\\\4   S"\S\4U 4S# jjjrS$r U =r!$ )'ÚNNModuleVariableé³   Úmodule_typerd   ÚvalueÚnn_module_stack_sourcer8   r9   Nc                 óŽ   >• [         TU ]  " S0 UD6  Xl        X l        X0l        U R
                  U l        U R
                  U l        g )Nr@   )ÚsuperÚ__init__r…   rd   r†   re   r‡   )Úselfr…   rd   r†   r8   rm   s        €rE   rŠ   ÚNNModuleVariable.__init__¼   s>   ø€ ô 	‰ÒÑ"˜6Ò"Ø&ÔØ$ŒØŒ
ð #Ÿk™kˆŒØ&*§k¡kˆÕ#r�   c                 óV   • U R                   =(       d    U R                  nU(       d   eU$ r?   ©r‡   re   ©r‹   Úress     rE   Úget_nn_module_stack_sourceÚ+NNModuleVariable.get_nn_module_stack_sourceÉ   ó"   € Ø×)Ñ)×8¨T¯[©[ˆÞˆ
ˆsØˆ
r�   re   c                 ó   • Xl         g r?   ©r‡   ©r‹   re   s     rE   Úset_nn_module_stack_sourceÚ+NNModuleVariable.set_nn_module_stack_sourceÎ   ó   € Ø&,Õ#r�   c                 ó   • U R                   $ r?   )r…   )r‹   s    rE   Úpython_typeÚNNModuleVariable.python_typeÑ   s   € Ø×ÑÐr�   r5   r3   ÚsubmodÚ	key_extraÚoptionsc                 ó   • g r?   r@   )r‹   r5   re   r�   rž   rŸ   s         rE   Ú_wrap_submoduleÚ NNModuleVariable._wrap_submoduleÔ   s   € ð 	r�   c                 óf  • UR                   R                  U R                  5      n/ n[        U[        R
                  R                  5      (       aŽ  UR                  5        Hx  u  pE[        R                  R                  U5      nUR                   R                  UU R                  U[        [        U R                  U5      5      S9  UR                  U5        Mz     U$ [        U[        R
                  R                   [        R
                  R"                  [        R
                  R$                  45      (       d   ['        U5      5       e[)        U5       HW  u  puUR                  UR                   R                  UU R                  U[        [        U R                  U5      5      S95        MY     U$ ©N©re   )ÚoutputÚget_submodulerd   rK   rQ   ÚnnÚ
ModuleDictrM   r   r4   ÚcreateÚregister_attr_or_moduler   r   re   ÚappendÚ
ModuleListÚParameterListÚ
Sequentialr,   Ú	enumerate)r‹   r5   ÚbaseÚresultrh   r�   Úname_varÚidxs           rE   Úunpack_var_sequenceÚ$NNModuleVariable.unpack_var_sequenceÞ   sS  € à�y‰y×&Ñ& t§¡Ó7ˆØ(*ˆÜ�dœEŸH™H×/Ñ/×0Ñ0Ø $§
¡
¦‘�Ü$×5Ñ5×<Ñ<¸TÓB�Ø—	‘	×1Ñ1ØØ—O‘OØÜ)¬-¸¿¹ÀTÓ*JÓKð	 2ñ ð —‘˜hÖ'ñ !-ð ˆMäØ”5—8‘8×&Ñ&¬¯©×(>Ñ(>ÄÇÁ×@SÑ@SÐT÷
ñ 
ð 	ä�4‹=ó	ð 
ô % Tž?‰KˆCØ�M‰MØ—	‘	×1Ñ1ØØ—O‘OØÜ)¬-¸¿¹ÀSÓ*IÓJð	 2ð öñ +ð ˆr�   rh   r4   c                 ó*  • UR                   R                  U R                  5      n[        X25      n[	        [        [        U R                  U5      5      R                  [        R                  5      5        [        R                  R                  U5      $ r?   )r¦   r§   rd   rY   r   r   r   re   ry   r   ÚHASATTRr   r4   rª   )r‹   r5   rh   r6   r²   s        rE   Úcall_obj_hasattrÚ!NNModuleVariable.call_obj_hasattrü   sn   € ð �i‰i×%Ñ% d§o¡oÓ6ˆÜ˜Ó#ˆÜÜœ: d§k¡k°4Ó8Ó9×DÑDÜ×$Ñ$óô	
ô
 ×)Ñ)×0Ñ0°Ó8Ð8r�   c                 óf   • UR                   R                  U R                  5      n[        USS5      $ )NÚtrainingF)r¦   r§   rd   Úgetattr©r‹   r5   r6   s      rE   Úis_trainingÚNNModuleVariable.is_training  s)   € Ø�i‰i×%Ñ% d§o¡oÓ6ˆÜ�s˜J¨Ó.Ð.r�   c                 óö   • UR                   R                  U R                  5      n[        R                  " U5        UR
                  R                  S:w  a  [        R                  " [        U5      5        [        e)zIRestart analysis treating this module as an UnspecializedNNModuleVariablerŠ   )
r¦   r§   rd   r   ÚtagÚf_codeÚco_nameÚmark_class_dynamicrJ   r   r¾   s      rE   Úconvert_to_unspecializedÚ)NNModuleVariable.convert_to_unspecialized  sT   € à�i‰i×%Ñ% d§o¡oÓ6ˆÜ×Ò˜cÔ"ð �9‰9×Ñ 
Ó*Ü×0Ò0´°c³Ô;Ü)Ð)r�   Úkeyc                 óÀ  • UR                   R                  U R                  5      n[        U5      (       a#  [	        SSU  SU 3SS/[
        R                  QS9  UR                   R                  R                  X5      (       aC  UR                   R                  R                  XSS9n[        U[        R                  5      (       + $ [        R                  US	5      nX%;   $ )
Nz3Custom __getattribute__ in nn.Module dict key checkzhas_key_in_generic_dict Ú ú}Dynamo does not support checking key existence on `nn.Module` instances that have a custom `__getattribute__` method defined.ú1Avoid defining `__getattribute__` in your module.©Úgb_typeÚcontextÚexplanationÚhintsT)Ú
deleted_okru   )r¦   r§   rd   r$   r   r   ÚSUPPORTABLEÚside_effectsÚhas_pending_mutation_of_attrÚ	load_attrrK   r   ÚDeletedVariableÚobjectÚ__getattribute__)r‹   r5   rÈ   r±   Úmutated_attrÚ	base_dicts         rE   Úhas_key_in_generic_dictÚ(NNModuleVariable.has_key_in_generic_dict  sÌ   € Ø�y‰y×&Ñ& t§¡Ó7ˆä" 4×(Ñ(ÜØMØ2°4°&¸¸#¸Ð?ð5ð Hðä&×2Ñ2ðò
ð �9‰9×!Ñ!×>Ñ>¸t×IÑIØŸ9™9×1Ñ1×;Ñ;¸DÐRVÐ;ÐWˆLÜ! ,´	×0IÑ0IÓJÔJÐJä×+Ñ+¨D°*Ó=ˆ	ØÑÐr�   r±   Ú
obj_sourcec                 ó°  • [        U5      (       a#  [        SSU  SU 3SS/[        R                  QS9  [	        USS9nUc  g	[        U[        R                  5      (       d#  [        S
SU  SU 3SS/[        R                  QS9  S[        US5      0n[        R                  " XP40 UD6R                  U[        R                  R                  U5      /0 5      $ )zDCheck for a __getattr__ and handle it specially if it is implementedz5Custom __getattribute__ in nn.Module attribute accessúvar_getattr rÊ   rË   rÌ   rÍ   T)Úignore_nn_module_getattrNz6torch.nn.Module with a non-function custom __getattr__zîDynamo detected a nn.Module object with a custom `__getattr__` method, but this method is not a standard Python function (e.g., it might be implemented in C/C++). Dynamo cannot currently trace into such non-standard `__getattr__` methods.z—Avoid using objects with non-standard __getattr__ methods within the compiled region. If possible, implement __getattr__ as a standard Python function.re   Ú__getattr__)r$   r   r   rÓ   r   rK   rw   ÚFunctionTyper   r   ÚUserMethodVariableÚcall_functionr4   rª   )r‹   r±   r5   rh   rÞ   Ú
getattr_fnrŸ   s          rE   Ú_custom_getattr_fallbackÚ)NNModuleVariable._custom_getattr_fallback-  sþ   € ô # 4×(Ñ(ÜØOØ& t f¨A¨d¨VÐ4ð5ð Hðä&×2Ñ2ðò
ô (¨ÀtÑLˆ
ØÑØä˜*¤e×&8Ñ&8×9Ñ9ÜØPØ& t f¨A¨d¨VÐ4ð-ðAðô '×2Ñ2ð	òð$ œZ¨
°MÓBÐCˆä×+Ò+¨JÑHÀÑH×VÑVØ”×+Ñ+×2Ñ2°4Ó8Ð9¸2ó
ð 	
r�   c                 ó	  • U R                   =(       a    [        U R                   U5      nUR                  R                  U R                  5      n[
        R                  US5      nSn[        5       n[        R                  " UR                  5       H,  nUR                  UR                  R                  5       5        M.     U R                   (       d"  [        SSU  SU 3S/ [        R                   QS9  US:X  a  ["        R$                  " XUS9$ S n	X%;   a  XR   n	OcS	U;   a  X%S	   ;   a  X';  a	  US	   U   n	OGS
U;   a  X%S
   ;   a	  US
   U   n	O0SU;   a  X%S   ;   a	  US   U   n	O [        R&                  " XB5      n	SnUS:X  a  [3        U R                   U5        US:X  a&  U(       d  ["        R4                  " UR                  US9$ U(       af  [6        R8                  " X[;        U5      5      n[=        U[>        [@        45      (       a)  URC                  [        U RE                  5       U5      5        U$ [G        U	[H        5      (       am  U R                   (       a,  [        [        U R                   S5      U5      n[        US5      n["        RJ                  " U	RL                  US9RO                  X/0 5      $ [G        U	[P        5      (       a=  ["        RR                  " U	RT                  ["        RV                  " [/        U5      5      US9$ [G        U	[X        5      (       a$  ["        RJ                  " U	R[                  U5      US9$ [G        U	[\        R^                  5      (       a  ["        RR                  " X�US9$ [a        U	5      (       d  [c        U	5      (       a   [6        R8                  " X[;        U5      5      $ [        SS[e        U5       SU S[e        U	5       3S[e        U	5       S3SU S[e        U	5       S[e        U5       S3S/[        Rf                  QS9  ["        R$                  " XUS9$ ! [(         aO    U R+                  XAX R                   S9n
U
b  U
s $ [-        [(        US[/        U5      R0                   SU S3/S9   GNf = f)Nru   Tzgetattr with no sourcerà   rÊ   zŒDynamo does not know how to access an attribute on an `nn.Module` instance that lacks a source. This is usually an internal error in Dynamo.rÍ   r¥   Ú_modulesÚ_parametersÚ_buffersF)r±   r5   rh   rÞ   Ú'ú' object has no attribute 'rX   rr   rm   Úfgetz$Unsupported nn.Module attribute typeznn.Module subclass: z, name: z, attribute type: z>Dynamo does not support tracing nn.Module attributes of type `Ú`zRefactor your code so that `z	` (type `z`) is not an attribute of `zqCurrently supported attribute types are methods, classmethods, staticmethods, properties, constants, and tensors.)4re   r   r¦   r§   rd   rØ   rÙ   rP   ÚinspectÚgetmrorm   Úupdateru   Úkeysr   r   Ú
DYNAMO_BUGr   ÚGetAttrVariableÚgetattr_staticr[   rç   r   rJ   Ú__name__r€   ÚUserDefinedClassVariabler.   Úbuildr   rK   rƒ   ÚUnspecializedNNModuleVariabler—   r‘   r"   ÚpropertyÚUserFunctionVariablerï   rå   Úclassmethodrä   rs   r2   ÚstaticmethodÚ__get__rw   rã   r    r!   r,   rÓ   )r‹   r5   rh   re   r±   rÛ   Úobject_memberÚall_class_attribute_namesr<   Úsubobjr²   Úouts               rE   Úvar_getattrÚNNModuleVariable.var_getattr_  s;  € Ø—‘×>¤¨D¯K©K¸Ó!>ˆà�y‰y×&Ñ& t§¡Ó7ˆÜ×+Ñ+¨D°*Ó=ˆ	ØˆÜ$'£EÐ!Ü—’ §¡Ö/ˆAØ%×,Ñ,¨Q¯Z©Z¯_©_Ó->Ö?ñ 0ð �{�{ÜØ0Ø& t f¨A¨d¨VÐ4ð7ð 6Ô)×4Ñ4Ð5òð �:ÓÜ×,Ò,¨TÀÑGÐGàˆØÓØ‘_‰Fà˜)Ó#Ø *Ñ-Ó-ØÓ5à˜zÑ*¨4Ñ0‰FØ˜iÓ'¨D¸mÑ4LÓ,LØ˜}Ñ-¨dÑ3‰FØ˜9Ó$¨¸:Ñ1FÓ)FØ˜zÑ*¨4Ñ0‰FðÜ ×/Ò/°Ó;�Ø %�ð �9ÓÜ2°4·;±;ÀÔEà�;Ó¦}Ü×5Ò5°d·n±nÈVÑTÐTæÜ!×'Ò'¨´NÀ6Ó4JÓKˆCä˜#Ô 0Ô2OÐP×QÑQð ×.Ñ.Ü˜t×>Ñ>Ó@À$ÓGôð ˆJô �fœh×'Ñ'Ø—;—;ä'¬
°4·;±;ÀÓ(LÈdÓS�Fä'¨°Ó7�FÜ ×5Ò5Ø—K‘KØ!ñ÷  ‘-  H¨bÓ1ð2ô ˜¤×,Ñ,Ü ×3Ò3Ø—O‘OÜ×7Ò7¼¸T»
ÓCØ!ñð ô
 ˜¤×-Ñ-Ü ×5Ò5Ø—N‘N 4Ó(Ø!ñð ô ˜¤× 2Ñ 2×3Ñ3Ü ×3Ò3°FÈÑPÐPÜ! &×)Ñ)¬X°f×-=Ñ-=ä&×,Ò,¨R¼ÈÓ9OÓPÐPäØBØ2´7¸4³=°/ÀÈ$ÈÐOaÔbiÐjpÓbqÐarÐsØ"`ÔahÐioÓapÐ`qÐqrÐ sà6°t°f¸IÄgÈfÃoÐEVÐVqÔryÐz~Órð  rAð  ABð  Cð>ðô +×6Ñ6ð	ò	
ô ×(Ò(¨¸FÑCÐCøôQ "ó à×6Ñ6Ø¨4¿K¹Kð 7ð �ð Ñ%Ø!’Mä(Ü"ØØœd 4›j×1Ñ1Ð2Ð2MÈdÈVÐSTÐUÐVõðús   Å&P+ Ð+)RÑ*RÒRr7   c                 ó<  • UR                   R                  U R                  5      n[        U R                  U R	                  5       X5         [        U5      n[        U[        R                  R                  5      (       Ga"  UR                  R                  [        R                  R                  R                  L aç  [        U5      (       a  U R                  U5        U(       a   S5       eU(       a  [        USS[        U5       S35        Uu  nUR                   R#                  5        Hj  u  pxUR%                  UR                   R'                  UU R                  U[)        [+        U R,                  U5      5      S9U/0 5        UR/                  5       nMl     UsS S S 5        $ U(       a*  UR0                  b  UR0                  U l        [5        XX#5        UR                   R7                  5       (       a–  UR8                  R;                  S5      (       av  UR8                  S:w  af  [        USSS	9(       a  U R                  U5        S
SKJn	  U	" UUR                   R@                  " SU R                  /[C        X#5      Q76 S9sS S S 5        $ [        U[        RD                  RF                  5      (       a#  UR                  n
[+        U R,                  S5      nO"URH                  n
[+        U R,                  S5      n[K        U
[L        RN                  5      (       a(  U
RP                  n
[+        US5      nU /[S        U5      -   nO![K        U
[L        RT                  5      (       d   eURW                  [X        RZ                  " X«S9UU5      sS S S 5        $ ! , (       d  f       g = f)Nz3Expected lazy sequential isn't a valid combination?ztorch.nn.Module.Sequentialz0 kwargsú kwargsr¥   )z	torch.nn.z	torch.ao.ztorch.nn.utils.parametrizeT)Úcheck_forward_hooksÚcheck_backward_hooksr*   ©Úwrap_fx_proxyÚcall_module©r5   Úproxyrr   Ú
_call_implrs   ).r¦   r§   rd   rp   r‘   r   rK   rQ   r¨   r¯   rm   rr   r#   rÆ   r&   Úlenrê   rM   rå   r«   r   r   re   ÚpopÚcls_to_becomer…   rc   Úis_root_tracerÚ
__module__Ú
startswithÚbuilderr  Úcreate_proxyr%   rR   ÚGraphModuler  r"   rw   rx   rs   rN   rã   Úinline_user_function_returnr   rý   )r‹   r5   r7   r8   r6   Úis_lazyr_   Ú
child_namer�   r  ÚfnÚ	fn_sources               rE   rå   ÚNNModuleVariable.call_functionÑ  sø  € ð �i‰i×%Ñ% d§o¡oÓ6ˆä#Ø�O‰O˜T×<Ñ<Ó>Àõ
ô % SÓ)ˆGä˜3¤§¡× 3Ñ 3×4Ò4Ø—M‘M×)Ñ)¬U¯X©X×-@Ñ-@×-HÑ-HÒHä% c×*Ñ*ð ×1Ñ1°"Ô5ö #ð ØIó�{ö Ü'ØØ4Ø"Ü˜v›;˜- wÐ/ô	ð ‘�à*-¯,©,×*<Ñ*<Ö*>Ñ&�JØ×$Ñ$ØŸ	™	×9Ñ9Ø"Ø ŸO™OØ&Ü#1´*¸T¿[¹[È*Ó2UÓ#Vð	 :ð ð ˜Øô	ð Ÿ&™&›(’Cñ +?ð ÷O
ñ 
öR à×$Ñ$Ñ0Ø'*×'8Ñ'8�DÔ$ô
 ' r°Ô=ð —	‘	×(Ñ(×*Ñ*Ø—N‘N×-Ñ-Ð.H×IÑIØ—N‘NÐ&BÓBä%Ø¨TÈ÷ð ×1Ñ1°"Ô5å2á$ØØŸ)™)×0Ò0Ø%ØŸ™ðô +¨4Ó8òñ÷O
ñ 
ô` ˜c¤5§8¡8×#7Ñ#7×8Ñ8ð Ÿ™�BÜ *¨4¯;©;¸	Ó B‘IàŸ™�BÜ *¨4¯;©;¸Ó E�IÜ˜"œe×.Ñ.×/Ñ/ØŸ™�BÜ *¨9°jÓ A�IØ ˜6¤D¨£JÑ.‘Dä! "¤e×&8Ñ&8×9Ñ9Ð9Ð9Ø×5Ñ5Ü×2Ò2°2ÑHØØó÷
÷ 
÷ 
ús   ÁENÆ#CNÊ	C:NÎ
NÚconstantc                 ó€  >^ ^^^^^^ ^!^"^#^$^%• SSK JmJm Jm!  T R                  m$TR
                  R                  T$5      m%S[        S[        4UUU%U U4S jjnTS;   a  T R                  TTT5      $ TS:X  a8  [        T R                  T R                  5       TT%5         U" T5      sS S S 5        $ TS:X  aU  [        R                  " [        R                  " T%R                   R"                  5      5      (       a  TR$                  " S	5      $ TS
:X  aè  TS   R'                  5       (       d  [)        TST% ST S35        [+        TS   T!5      (       d  [)        TST% ST S35        TS   R,                  TS   R.                     n[+        U[0        5      (       a  U$ UR                  m$TR
                  R                  T$5      nTR
                  R3                  UT$T$[5        [7        T R8                  T$5      5      S9$ U(       a7  [;        T%T5      n	T%R                   R<                   ST S3m[?        TU	TTT5      $ SIUUU%UU 4S jjm"S[        S[@        [        [B        4   4UU"UU%U4S jjn
S[D        [F        [B        [B        4      SS4U U#U$U U4S jjnS[        S[B        SS4UU!U#U$U U4S jjnS[H        S[        S[H        4S jm#TS:X  a°  TR
                  RJ                  RM                  [O        T R8                  S5      5        T(       d  T(       a&  [Q        TTS [S        T5       S![S        T5       S"35        / nT%RU                  5        H  u  mnURW                  U" TU5      5        M      T " U[Y        5       S#9$ TS$:X  a…  TR
                  RJ                  RM                  [O        T R8                  S%5      5        / nT%RZ                  " SJ0 U
" S&S'5      D6 H  u  mnURW                  U" TU5      5        M      T " U[Y        5       S#9$ TS(:X  a†  TR
                  RJ                  RM                  [O        T R8                  S)5      5        / nT%R\                  " SJ0 U
" S&S'S*5      D6 H  u  mnURW                  U" TU5      5        M      T " U[Y        5       S#9$ TS+:X  a†  TR
                  RJ                  RM                  [O        T R8                  S5      5        / nT%R^                  " SJ0 U
" S,S&S*5      D6 H  u  mnURW                  U" TU5      5        M      T " U[Y        5       S#9$ TS-:X  aƒ  TR
                  RJ                  RM                  [O        T R8                  S5      5        T(       d  T(       a&  [Q        TTS [S        T5       S![S        T5       S"35        U" T%RU                  5       5      $ TS.:X  aO  TR
                  RJ                  RM                  [O        T R8                  S5      5        U" T%R_                  5       5      $ TS/:X  aW  TR
                  RJ                  RM                  [O        T R8                  S%5      5        U" T%RZ                  " SJ0 U
" S'5      D65      $ TS0:X  aW  TR
                  RJ                  RM                  [O        T R8                  S)5      5        U" T%R\                  " SJ0 U
" S'5      D65      $ TS1:X  ao  T(       d  T(       a&  [Q        TTS [S        T5       S![S        T5       S"35        / nT% H$  nURW                  TR$                  " U5      5        M&     T " U[Y        5       S#9$ TS2:X  aJ  T(       d  T(       a&  [Q        TTS [S        T5       S![S        T5       S"35        U" T%R-                  5       5      $ TS:X  aw  T(       d  T(       a&  [Q        TTS [S        T5       S![S        T5       S"35        / nT%R-                  5        H  u  mnURW                  U" TU5      5        M      T " U[Y        5       S#9$ TS3:X  aO  T(       d  T(       a&  [Q        TTS [S        T5       S![S        T5       S"35        TR$                  " [S        T%5      5      $ TS4:X  a  T " T Ra                  T5      [Y        5       S#9$ TS5:X  a’  [+        T%[b        Rd                  Rf                  [b        Rd                  Rh                  45      (       aO  T(       aH  TS   R'                  5       (       a0  TR$                  " TS   Rk                  5       T%Rl                  ;   5      $ TS6:X  Ga  T(       d  [S        T5      S:w  a&  [Q        TTS7[S        T5       S![S        T5       S"35        [b        Rd                  Rf                  Rn                  [b        Rd                  Rp                  Rn                  [b        Rd                  Rh                  Rn                  [b        Rd                  Rr                  Rn                  [b        Rd                  Rt                  Rn                  4n[w        T%5      Rn                  U;  aî  TS   R'                  5       (       a,  [+        TS   Rk                  5       [        [x        45      (       d   [{        S8S9T  S:T S:T S:T 3S;T S<T% S=3S>/S?9  [;        T%T5      R|                  n	[+        U	[~        R€                  5      (       d   e[O        [O        T R8                  T5      S@5      nTRƒ                  [„        R†                  " U	US9T /[‰        T5      -   T5      $ [+        TS   [Š        5      (       Ga;  TR
                  RŒ                  (       Ga  / n[‰        [�        [S        T%5      5      5      TS   Rk                  5          n[‘        T%TS   Rk                  5          5       HT  u  nnUU   m$[5        [7        T R8                  T$5      5      nURW                  TR
                  R3                  UT$US95        MV     T%TS   Rk                  5          nTR
                  R3                  UT  SA3[5        [7        T R8                  TS   Rk                  5       5      5      S9nU$ T R“                  T5        SSBKJJKn  Sn[+        TS   U5      (       a  TS   R™                  TR
                  5      nODTS   R'                  5       (       a  TS   Rk                  5       nO[{        SCS9T  S:T S:T S:T 3SD/ S?9  T%U   nTR
                  R3                  UT R                  U[5        [7        T R8                  U5      5      S9$ TSE:X  d†  [+        T%[b        Rd                  Rš                  Rœ                  Rž                  5      (       a  TSF:X  dC  [+        T%[b        Rd                  Rš                  Rœ                  R                   5      (       ao  TSG:X  ai  [;        T%T5      R|                  n	[O        [O        T R8                  T5      S@5      nTRƒ                  [„        R†                  " U	US9T /[‰        T5      -   T5      $ TT%R                   R¢                  ;   ai  [¥        T%R                   R¢                  T   5      (       aB  [§        SH [¨        Rª                  " TTR­                  5       5       5       5      (       a  U" T5      $ [®        T&T G]a  TT[‰        T5      T5      $ ! , (       d  f       GN= f)KNr*   )r4   ÚListIteratorVariableÚTupleVariablerh   r9   c           
      óò   >• T	R                   R                  STR                  S0 5      n[        UR                  T5        [        TT5      u  p#SSKJn  U" T	T	R                   R                  SU U/UQ7US9S9$ )NÚget_attrr@   r*   r  Úcall_method)r7   r8   r  )r¦   r  rd   r'   rT   r%   r  r  )
rh   Ú	mod_proxyr]   r^   r  r7   r8   Úmoduler‹   r5   s
        €€€€€rE   Úgeneric_call_method_helperÚ@NNModuleVariable.call_method.<locals>.generic_call_method_helperK  s†   ø€ ð Ÿ	™	×.Ñ.ØØ—‘ØØó	ˆIô ˜iŸn™n¨fÔ5ä'8¸¸vÓ'FÑ$ˆJå.á ØØ—i‘i×,Ñ,Ø!ØØ#Ð1 jÑ1Ø'ð	 -ð ñð r�   ©r  Ú_wrapped_call_implrr   Ú_check_input_dimTÚ_get_item_by_idxz``nn.Module`` z's call method z# requires a constant index argumentr   z# requires a tuple as first argumentr¥   Ú_Ú_resultc                  óº   >• [        S [        R                  " T TR                  5       5       5       5      (       d   [	        SST ST ST  ST 3ST ST S3/ S9  g g )	Nc              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr?   )Úis_python_constant©rB   r<   s     rE   rF   ÚUNNModuleVariable.call_method.<locals>.assert_all_args_kwargs_const.<locals>.<genexpr>”  s   é € ð Ú0V¨1×$Ñ$×&Ð&Ò0Vùó   ‚z&non-const argument in nn.Module methodúcall_method: rÊ   ú(Dynamo does not support calling method `ú` of ``nn.Module`` z with non-constant arguments.rÍ   )ÚallÚ	itertoolsÚchainÚvaluesr   )r7   r8   r(  rh   r‹   s   €€€€€rE   Úassert_all_args_kwargs_constÚBNNModuleVariable.call_method.<locals>.assert_all_args_kwargs_const“  sy   ø€ Üñ Ü09·²ÀÀfÇmÁmÃoÔ0Vó÷ ñ ô ØDØ+¨D¨6°°4°&¸¸$¸¸qÀÀÐIð!Ø#˜fÐ$7¸°xÐ?\ð!^àóðr�   Únamesc                  ó–  >• T" 5         [        T	T
5      n[        R                  " U5      R                  " T Vs/ s H  o"R	                  5       PM     sn0 TR                  5        VVs0 s H  u  p4X4R	                  5       _M     snnD6nUR                  5         UR                  nU  Vs0 s H  o3XS   _M	     sn$ s  snf s  snnf s  snf r?   )r½   rñ   Ú	signatureÚbindÚas_python_constantrM   Úapply_defaultsÚ	arguments)r@  r  r<   rU   rV   Ú
bound_argsr7   r>  r8   r(  rh   s         €€€€€rE   Ú
get_kwargsÚ0NNModuleVariable.call_method.<locals>.get_kwargsŸ  s´   ø€ Ù(Ô*Ü˜ Ó&ˆBÜ ×*Ò*¨2Ó.×3Ò3Ù37Ó8²4¨a×'Ñ'Ö)±4Ñ8ðà9?¿¹¼ÔHº±°�1×*Ñ*Ó,Ò,¹ÒHñˆJð ×%Ñ%Ô'Ø#×-Ñ-ˆJÙ.3Ó4ªe¨�z‘}Ò$©eÑ4Ð4ùò 9ùÛHùò 5s   ¹B;Á(C Â*CrM   zvariables.ListIteratorVariablec                 óÆ   >• / nU  HJ  u  p#UR                  TR                  R                  UTU[        T" TR                  U5      5      S95        ML     T" U[        5       S9$ )Nr¥   ©Úmutation_type)r¬   r¦   r«   r   re   r-   )	rM   Únamed_childrenrh   r�   r"  Ú
gen_sourcerÈ   r‹   r5   s	       €€€€€rE   Úwrap_valuesÚ1NNModuleVariable.call_method.<locals>.wrap_valuesª  so   ø€ ð 57ˆNÛ %‘�Ø×%Ñ%Ø—I‘I×5Ñ5ØØØÜ-©j¸¿¹ÀdÓ.KÓLð	 6ð öñ !&ñ (ØÔ.>Ó.@ñð r�   Úobjzvariables.TupleVariablec                 ó    >• T" TR                   " U 5      TR                  R                  UTU [        T" TR                  U 5      5      S9/5      $ r¤   )rª   r¦   r«   r   re   )rh   rQ  r4   r#  rN  rÈ   r‹   r5   s     €€€€€€rE   Únamed_embedÚ1NNModuleVariable.call_method.<locals>.named_embed»  sV   ø€ Ù à$×+Ò+¨DÓ1Ø—I‘I×5Ñ5ØØØÜ-©j¸¿¹ÀdÓ.KÓLð	 6ð ðó
ð 
r�   re   c                 ó¶   • UR                  S5      nUS   S:X  a  U $ [        U5      S:”  a-  UR                  S5      n[        X5      n [        U5      S:”  a  M-  U $ )NÚ.r   Ú )Úsplitr  r  r   )re   rh   Ú
name_splitr<   s       rE   rN  Ú0NNModuleVariable.call_method.<locals>.gen_sourceÈ  sY   € ØŸ™ C›ˆJØ˜!‰} Ó"Ø�Ü�j“/ AÓ%Ø—N‘N 1Ó%�Ü# FÓ.�ô �j“/ AÕ%ð ˆMr�   rM  rê   z0 args and 0 kwargsz
 args and r  rK  Únamed_parametersrë   ÚprefixÚrecurseÚnamed_buffersrì   Úremove_duplicateÚnamed_modulesÚmemoÚchildrenÚmodulesÚ
parametersÚbuffersrô   r=  Ú__len__Ú__iter__Ú__contains__Ú__getitem__z1 args and 0 kwargsz6Invalid or non-const argument in nn.Module __getitem__r7  rÊ   r8  r9  z+ with a non-constant or non-(str, int) key.z9Use constant arguments of type str or int for __getitem__rÍ   rs   z.__getitem__(slice))ÚSymNodeVariablez.Unsupported key type for nn.Module.__getitem__zEDynamo does not support getitem on `nn.Module` with non-constant key.Ú_get_abs_string_indexÚ_conv_forwardÚ_output_paddingc              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr?   )Ú	is_tensorr4  s     rE   rF   Ú/NNModuleVariable.call_method.<locals>.<genexpr>Á  s   é € ÐRÒ+Q a—K‘K—M�MÒ+Qùr6  )r9   Nr@   )YrW  r4   r"  r#  rd   r¦   r§   r\   r.   rå   rp   r‘   r   Úis_torch_inline_allowedrñ   Úgetfilerm   r-  rª   r3  r+   rK   rM   r†   rû   r«   r   r   re   r½   rø   r/   rL   r   r   rO   r
   Úguard_on_key_orderÚaddr   r&   r  rM  r¬   r-   r[  r^  r`  rµ   rQ   r¨   r©   ÚParameterDictrD  rê   ri  r­   r®   r¯   rJ   Úintr   rs   rw   rã   r  r   rý   rN   r1   ÚexportÚranger°   rÆ   Útensorrj  Úevaluate_exprrc  ÚconvÚ_ConvNdÚ_ConvTransposeNdru   rv   r:  r;  r<  r=  r‰   r&  )'r‹   r5   rh   r7   r8   r   r)  Úmod_varr�   r  rH  rO  rS  rM  r[  Úparamr^  ÚbufferÚnamed_modules_listr²   ÚtmpÚitems_resultÚbuiltin_supportedÚsrcrô   r´   Ú
new_moduleÚnew_module_variablerj  Ú	key_valuer  r4   r"  r#  r>  rN  rÈ   r(  rm   s'   `````                          @@@@@@@€rE   r&  ÚNNModuleVariable.call_method>  sG  ÿü€ ÷ 	LÑKà�o‰oˆØ—‘×(Ñ(¨Ó-ˆð	¬Sð 	´_÷ 	ó 	ð2 Ð7Ó7ð ×%Ñ% b¨$°Ó7Ð7Ø�YÓô (Ø—‘ ×!@Ñ!@Ó!BÀBÈõñ 2°$Ó7÷ñ ð
 Ð%Ó%¬+×*MÒ*MÜ�OŠO˜F×,Ñ,×=Ñ=Ó>÷+
ñ +
ð $×*Ò*¨4Ó0Ð0àÐ%Ó%Ø˜‘7×-Ñ-×/Ñ/Ü$ØØ$ V H¨O¸D¸6ÐAdÐeôô ˜d 1™g }×5Ñ5Ü$ØØ$ V H¨O¸D¸6ÐAdÐeôð ˜1‘g—m‘m D¨¡G§M¡MÑ2ˆGÜ˜'Ô#@×AÑAØ�Ø×$Ñ$ˆCØ—Y‘Y×,Ñ,¨SÓ1ˆFØ—9‘9×4Ñ4ØØØÜ%¤m°D·K±KÀÓ&EÓFð	 5ð ð ö Ü˜ Ó&ˆBØ×&Ñ&×/Ñ/Ð0°°$°°wÐ?ˆDÜ/°°B¸¸dÀFÓKÐK÷
	ó 
	ð		5œsð 		5¤t¬C´¨H¡~÷ 		5ó 		5ð	ÜœE¤#¤s (™OÑ,ð	à-÷	ó 	ð"	œcð 	¬ð 	Ð0I÷ 	ô 	ð	œvð 	¬Sð 	´Vô 	ð Ð#Ó#Ø�I‰I×(Ñ(×,Ñ,¬Z¸¿¹ÀZÓ-PÔQÞ–vÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð 57ˆNØ &× 5Ñ 5Ö 7‘��fØ×%Ñ%¡k°$¸Ó&?Ö@ñ !8á'ØÔ.>Ó.@ñð ð Ð'Ó'Ø�I‰I×(Ñ(×,Ñ,¬Z¸¿¹À]Ó-SÔTØ68ÐØ%×6Ò6ñ  Ù˜X yÓ1ô ‘��eð !×'Ñ'©°D¸%Ó(@ÖAñ ñ (Ø Ô0@Ó0Bñð ð �_Ó$Ø�I‰I×(Ñ(×,Ñ,¬Z¸¿¹ÀZÓ-PÔQØ35ˆMØ &× 4Ò 4ñ !Ù˜X yÐ2DÓEô!‘��fð ×$Ñ$¡[°°vÓ%>Ö?ñ!ñ (¨ÔEUÓEWÑXÐXØ�_Ó$Ø�I‰I×(Ñ(×,Ñ,¬Z¸¿¹ÀZÓ-PÔQØ8:ÐØ &× 4Ò 4ñ !Ù˜V XÐ/AÓBô!‘��fð #×)Ñ)©+°d¸FÓ*CÖDñ!ñ (Ø"Ô2BÓ2Dñð ð �ZÓØ�I‰I×(Ñ(×,Ñ,¬Z¸¿¹ÀZÓ-PÔQÞ–vÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ñ ˜v×4Ñ4Ó6Ó7Ð7Ø�YÓØ�I‰I×(Ñ(×,Ñ,¬Z¸¿¹ÀZÓ-PÔQÙ˜v×3Ñ3Ó5Ó6Ð6Ø�\Ó!Ø�I‰I×(Ñ(×,Ñ,¬Z¸¿¹À]Ó-SÔTÙ˜v×6Ò6ÑO¹ÀIÓ9NÑOÓPÐPØ�YÓØ�I‰I×(Ñ(×,Ñ,¬Z¸¿¹ÀZÓ-PÔQÙ˜v×3Ò3ÑL±jÀÓ6KÑLÓMÐMØ�V‹^Þ–vÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð ˆFã�Ø—‘Ð.×5Ò5°cÓ:Ö;ñ á'¨Ô>NÓ>PÑQÐQØ�XÓÞ–vÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ñ ˜vŸ|™|›~Ó.Ð.Ø�W‹_Þ–vÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð 35ˆLØ &§¡¦‘��fØ×#Ñ#¡K°°fÓ$=Ö>ñ !/á'¨ÔDTÓDVÑWÐWØ�YÓÞ–vÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð $×*Ò*¬3¨v«;Ó7Ð7Ø�ZÓÙ'Ø×(Ñ(¨Ó,Ô<LÓ<Nñð ð �NÓ"Ü˜6¤E§H¡H×$7Ñ$7¼¿¹×9OÑ9OÐ#P×QÑQÞØ�Q‘×*Ñ*×,Ñ,à#×*Ò*Ø�Q‘×*Ñ*Ó,°·±Ñ?óð ð �]Ô"Þœ˜T› a›Ü#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ô —‘×#Ñ#×/Ñ/Ü—‘×#Ñ#×/Ñ/Ü—‘×&Ñ&×2Ñ2Ü—‘×&Ñ&×2Ñ2Ü—‘×#Ñ#×/Ñ/ð!Ðô �F‹|×'Ñ'Ð/@Ó@à˜‘G×.Ñ.×0Ñ0Ü" 4¨¡7×#=Ñ#=Ó#?Ä#ÄsÀ×LÑLä!Ø XØ"/°¨v°Q°t°f¸A¸d¸VÀ1ÀVÀHÐ Mð%#Ø#' &Ð(;¸F¸8ÐCnð%pð Xðòô ˜V TÓ*×3Ñ3�ä! "¤e×&8Ñ&8×9Ñ9Ð9Ð9ä ¤¨D¯K©K¸Ó!>À
ÓK�Ø×5Ñ5Ü×2Ò2°2¸cÑBØ�FœT $›ZÑ'Øóð ô ˜$˜q™'¤=×1Ò1ð —9‘9×#×#Ð#à�Fô  ¤¤c¨&£kÓ 2Ó3°D¸±G×4NÑ4NÓ4PÑQ�DÜ'0°¸¸Q¹×8RÑ8RÓ8TÑ1UÖ'V™˜˜VØ" 3™i˜Ü,¬]¸4¿;¹;ÈÓ-LÓM˜ØŸ™ØŸI™I×=Ñ=Ø &Ø #Ø'*ð >ð öñ (Wð "(¨¨Q©×(BÑ(BÓ(DÑ!E�JØ*,¯)©)×*KÑ*KØ"Ø˜&Ð 3Ð4Ü-Ü)¨$¯+©+°t¸A±w×7QÑ7QÓ7SÓTó ð +Lð +Ð'ð /Ð.ð ×1Ñ1°"Ô5å/àˆIÜ˜$˜q™' ?×3Ñ3Ø  ™G×1Ñ1°"·)±)Ó<‘	Ø�a‘×+Ñ+×-Ñ-Ø  ™G×6Ñ6Ó8‘	äØLØ+¨D¨6°°4°&¸¸$¸¸qÀÀÐIð!9àòð ˜IÑ&ˆFØ—9‘9×4Ñ4ØØ—‘ØÜ%¤m°D·K±KÀÓ&KÓLð	 5ð ð ð Ð+Ó+ä˜6¤5§8¡8×#3Ñ#3×#8Ñ#8×#@Ñ#@×AÑAØ˜OÓ+ô ˜6¤5§8¡8×#3Ñ#3×#8Ñ#8×#IÑ#I×JÑJØÐ-Ó-ô ˜ Ó&×/Ñ/ˆBÜ"¤:¨d¯k©k¸4Ó#@À*ÓMˆIØ×1Ñ1Ü×.Ò.¨r¸)ÑDØ�œ˜d›Ñ#Øóð ð �F×$Ñ$×-Ñ-Ó-Ü˜×)Ñ)×2Ñ2°4Ñ8×9Ñ9ÜÑR¬9¯?ª?¸4ÀÇÁÃÔ+QÓR×RÑRá-¨dÓ3Ð3ä‘7Ò& r¨4´°d³¸VÓDÐD÷q
ö ús   Âz.ú.
z=)rd   r…   r‡   re   r†   )r5   r3   r9   N)F)"rø   r  Ú__qualname__Ú__firstlineno__r.   Ú_nonvar_fieldsrJ   r\   rQ   r¨   ÚModuler   rŠ   r
   r‘   r—   r›   r¡   rN   rµ   r¹   Úboolr¿   rÆ   rÜ   r   rç   r  r   rL   rå   r&  Ú__static_attributes__Ú__classcell__©rm   s   @rE   rƒ   rƒ   ³   sG  ø† àØØØ ð	ð
 
×	'Ñ	'ð€Nð2Øð2Ø-0ð2Ø9>¿¹¿¹ð2ØTWð2à	÷2ð¨Fô ð
-°ð -¸Dô -ð ˜Tô  ðà#ðð ðð —‘—‘ð	ð
 ðð ðð 
ôðÐ&=ð À$ÀÑBWô ð<
9Ø)ð
9Ø14ð
9à	ô
9ð/Ð5ð /¸$ô /ô*ð Ð*Að  Èð  ÐPTô  ð.0
à�h‰h�o‰oð0
ð $ð0
ð ð	0
ð
 ð0
ð 
�/Ñ	"ô0
ðdpDÐ5ð pD¸Sð pDÀ_ô pDðdkà#ðkð �Ñ'ðkð �S˜/Ð)Ñ*ð	kð
 
ôkðf ñGEà#ðGEð ðGEð �Ñ'ð	GEð
 �S˜/Ð)Ñ*ðGEð ðGEð 
÷GEö GEr�   rƒ   c            
       óÀ  ^ • \ rS rSrSSS1\R
                  kr S\R                  R                  S\	SS4U 4S	 jjr
S
\S\4S jrS\4S jrS\SS4S jr\\R"                  S\\   4S j5       5       rSSS\\   4U 4S jjrSSS\\   S\\\4   S\4S jrSSS\S\\   S\\\4   S\4
U 4S jjrSSS\S\S\\   4S jrSSS\S\4U 4S jjrSSS\S\4S jr Sr!U =r"$ )rû   iÈ  Ú
value_typeÚis_state_mutatedr‡   r†   r8   r9   Nc                 óh  >• [        U5      [        R                  R                  R                  L a%  [        S[        U5      S/ [        R                  QS9  SU;   a,  [        US   SS 5      n[        U5      UL a  [        U5      US'   [        TU ],  " SSU0UD6  SU l        U R                  U l        g )	NzFUnspecializedNNModuleVariable wrapped around ScriptModules unsupportedz„ScriptModules aren't supported in UnspecializedNNModuleVariable because their .forward function isn't a static member of their type.rÍ   r“  r  r†   Fr@   )rJ   rQ   ÚjitÚ_scriptÚRecursiveScriptModuler   r\   r   Ú	DIFFICULTr½   r‰   rŠ   r”  re   r‡   )r‹   r†   r8   Úlazy_value_to_becomerm   s       €rE   rŠ   Ú&UnspecializedNNModuleVariable.__init__Ø  s±   ø€ Ü�‹;œ%Ÿ)™)×+Ñ+×AÑAÒAÜØ`Ü˜E›
ðXðÜ&×0Ñ0ðòð ˜6Ó!Ü#*¨6°,Ñ+?ÀÐRVÓ#WÐ Ü�E‹{Ð2Ò2ô
 (,¨E£{��|Ñ$ä‰ÒÑ/˜uÐ/¨Ò/Ø %ˆÔð '+§k¡kˆÕ#r�   Úattr_sourcec                 ó   • U$ r?   r@   ©r‹   rœ  s     rE   Ú_wrap_sourceÚ*UnspecializedNNModuleVariable._wrap_sourceö  ó   € àÐr�   c                 óV   • U R                   =(       d    U R                  nU(       d   eU$ r?   rŽ   r�   s     rE   r‘   Ú8UnspecializedNNModuleVariable.get_nn_module_stack_sourceú  r“   r�   re   c                 ó   • Xl         g r?   r•   r–   s     rE   r—   Ú8UnspecializedNNModuleVariable.set_nn_module_stack_sourceÿ  r™   r�   c                  óÂ  • [         R                  R                  R                  [         R                  R                  R                  [         R                  R                  R
                  1n [         R                  R                  R                  R                  5        Vs1 s H2  n[        US5      (       d  M  X;  d  M  [        UR                  5      iM4     sn$ s  snf )NÚ__code__)rQ   r¨   r�  Ú__setattr__rŠ   Ú__delattr__ru   r=  rY   Úidr§  )Ú	supportedr<   s     rE   Ú_nn_module_method_idsÚ3UnspecializedNNModuleVariable._nn_module_method_ids  s›   € ô
 �H‰H�O‰O×'Ñ'Ü�H‰H�O‰O×$Ñ$Ü�H‰H�O‰O×'Ñ'ð
ˆ	ô —X‘X—_‘_×-Ñ-×4Ñ4Ô6ó
â6�Ü�q˜*×%ó à*+Ñ*<ó ŒBˆq�z‰zŽNÙ6ñ
ð 	
ùò 
s   Â CÂ9CÃ Cr5   r3   c                 óä  >•  [         R                  " U R                  S5      nU[
        R                  R                  R                  [
        R                  R                  R                  [
        R                  R                  R                  4;   a7  UR                  [        R                  " X5      U /0 5      R                  U5      $ [        TU ]9  U5      $ ! [         a  n[        UeS nAff = f)Nrg  )rñ   r÷   r“  r[   ÚNotImplementedErrorrQ   r¨   r­   rg  r®   r¯   r  r.   rú   rµ   r‰   )r‹   r5   r  rb   rm   s       €rE   rµ   Ú1UnspecializedNNModuleVariable.unpack_var_sequence  sÏ   ø€ ð	-Ü×'Ò'¨¯©¸ÓDˆBð Ü�H‰H×Ñ×(Ñ(Ü�H‰H×"Ñ"×+Ñ+Ü�H‰H×Ñ×(Ñ(ð
ó 
ð ×1Ñ1Ü×%Ò% bÓ-àðð ó÷ "Ñ! "Ó%ð&ô ‰wÑ*¨2Ó.Ð.øô' ó 	-Ü%¨1Ð,ûð	-ús   ƒ!C Ã
C/Ã#C*Ã*C/r7   c                 óŽ
  • U R                   n[        U5      (       a*  UR                  b  UR                  U l        [	        XX#5        [        U[        R                  R                  5      (       d  Sn[        U R                  U5      nOSn[        U R                  U5      n[        UR                  [        R                  5      (       Ga3  [        UR                  [        R                  5      (       Ga	  UR                  R                  [         L Gaë  UR                  R                  ["        L GaÍ  SUR$                  ;  Ga¼  [&        R(                  " US5      n[        U[        R*                  5      (       Ga…  UR,                  nU R/                  US5      R1                  5       R3                  5       (       GdE  U R/                  US5      R1                  5       R3                  5       (       Gd  U R/                  US5      R1                  5       R3                  5       (       GdÝ  U R/                  US5      R1                  5       R3                  5       (       Gd©  U R/                  US5      R1                  5       R3                  5       (       Gdu  U R/                  US	5      R1                  5       R3                  5       (       GdA  UR/                  US
5      R3                  5       (       Gd  UR/                  US5      R3                  5       (       dö  UR/                  US5      R3                  5       (       dÑ  UR/                  US5      R3                  5       (       d¬  UR/                  US
5      R3                  5       (       d‡  UR/                  US5      R3                  5       (       db  UR/                  US5      R3                  5       (       d=  UR/                  US5      R3                  5       (       d  SnU R                  R4                  nU R6                  (       a  U R9                  U5      n	OS n	[;        U R6                  U5        U R6                  (       a.  [=        [?        [A        U5      5      U RC                  5       UU5      O	[E        5       n
U
   [        U[        R*                  [        RF                  RH                  45      (       d>  [J        RL                  " XU	SS9nURO                  X/[Q        U5      -   U5      sS S S 5        $ [R        RT                  " XiS9RO                  X/[Q        U5      -   U5      sS S S 5        $ ! , (       d  f       g = f)NÚ__call__r  rr   Ú_backward_hooksÚ_backward_pre_hooksÚ_forward_hooksÚ_forward_hooks_with_kwargsÚ_forward_pre_hooksÚ_forward_pre_hooks_with_kwargsÚ_global_backward_pre_hooksÚ_global_backward_hooksÚ_global_forward_hooksÚ_global_forward_pre_hooksT©re   Úrealizer¥   )+r†   r   r  r“  rc   rK   rQ   rR   r  r½   r"   r²  rw   rx   r  rs   r(   r)   ru   rñ   r÷   rã   Únn_modules_globals_vtr  r¾  r  rr   re   Úget_source_by_walking_mror€   rp   r\   rª  r‘   r   r–  ÚScriptFunctionr.   rú   rå   rN   r   rý   )r‹   r5   r7   r8   r6   rh   r  Úforward_methodÚ
globals_vtre   ÚctxÚfn_vts               rE   rå   Ú+UnspecializedNNModuleVariable.call_function)  sæ  € ð �j‰jˆä˜#×ÑØ× Ñ Ñ,Ø"%×"3Ñ"3�”Ü" 2¨DÔ9ä˜#œuŸx™x×3Ñ3×4Ñ4ØˆDÜ˜Ÿ™¨$Ó/‰BàˆDÜ˜Ÿ™¨$Ó/ˆBô
 �3—<‘<¤×!1Ñ!1×2Ò2Ü�s—~‘~¤u×'7Ñ'7×8Ò8Ø—‘×%Ñ%Ô)AÓAØ—‘×'Ñ'Ô+HÓHØ §¡Ô-ä$×3Ò3°C¸ÓCˆNÜ˜.¬%×*<Ñ*<×=Ò=Ø×5Ñ5�
à×$Ñ$ RÐ):Ó;×CÑCÓE×IÑI×KÒKØ×'Ñ'¨Ð,AÓB×JÑJÓL×PÑP×RÒRØ×'Ñ'¨Ð,<Ó=×EÑEÓG×KÑK×MÒMØ×'Ñ'¨Ð,HÓIß‘W“Yß‘S“Uöð ×'Ñ'¨Ð,@ÓA×IÑIÓK×OÑO×QÒQØ×'Ñ'¨Ð,LÓMß‘W“Yß‘S“Uöð "×-Ñ-¨bÐ2NÓO×SÑS×UÒUØ!×-Ñ-¨bÐ2JÓK×OÑO×QÑQØ!×-Ñ-¨bÐ2IÓJ×NÑN×PÑPØ!×-Ñ-¨bÐ2MÓN×RÑR×TÑTØ!×-Ñ-¨bÐ2NÓO×SÑS×UÑUØ!×-Ñ-¨bÐ2JÓK×OÑO×QÑQØ!×-Ñ-¨bÐ2IÓJ×NÑN×PÑPØ!×-Ñ-¨bÐ2MÓN×RÑR×TÑTà$�DØŸ™×0Ñ0�Bà�;�;Ø×3Ñ3°DÓ9‰FàˆFä.¨t¯{©{¸CÔ@ð �{�{ô #Ü”B�s“G“Ø×/Ñ/Ó1ØØô	ô “ð 	ò Ü˜b¤5×#5Ñ#5´u·y±y×7OÑ7OÐ"P×QÑQÜ'×-Ò-¨b¸VÈTÑR�Ø×*Ñ*¨2¨v¼¸T»
Ñ/BÀFÓK÷ ‰Sô !×5Ò5°bÑH×VÑVØ˜¤ d£Ñ+¨Vó÷ �S�Sús   ÒA.T6Ó<0T6Ô6
Urh   c                 ó$  >• US;   ap  [        U R                  U5      nU R                  (       a  U R                  U5      nOS n[        R
                  " XUSS9nUR                  X/[        U5      -   U5      $ U[        U R                  S0 5      ;  GaÑ   [        R                  " [        U R                  5      U5      n[        U[        5      (       aM  [        U R                  U5      S5      n[        R
                  " XR                   USS9nUR                  XU5      $ [#        US5      (       a`  [%        UR&                  5      U R)                  5       ;   a9  [+        SSU  S	U S	U S	U 3S
U SU R                   3S/[,        R.                  QS9  US:X  Ga  SU R                  R0                  ;   aò  US   R3                  5       n	US   n
U
R5                  5       (       a+  U
R7                  5       [8        R:                  R<                  L d  X�R                  R0                  S   ;   a  SU l        OvX�R                  R0                  S   ;   a  SU l        OR[        U
[@        RB                  [@        RD                  45      (       d  X�R                  R0                  S   ;   a  SU l        U[8        R:                  RF                  RH                  L a"  [        US   [@        RJ                  5      (       d'  U[8        R:                  RF                  RL                  L aP  [        R
                  " U[8        R:                  RF                  RL                  5      nUR                  XUS   /U5      $ [N        TU ]¡  X[        U5      U5      $ ! [         a    S n GNÏf = f)Nr+  Tr½  ru   rs   r§  z,UnspecializedNNModuleVariable missing methodr7  rÊ   z'Dynamo does not support tracing method z of nn.Module z@Dynamo does not really define unspecialized nn.Module very well.rÍ   r¨  rë   r   r*   rì   rê   ))r½   r“  re   rÀ  r.   rú   rå   rN   r†   rñ   r÷   rJ   r[   rK   rÿ   r   rs   rY   rª  r§  r¬  r   r   r™  ru   rD  ro  r›   rQ   r¨   Ú	Parameterr”  r   rƒ   rû   r�  r¨  r×   r©  r‰   r&  )r‹   r5   rh   r7   r8   r  re   rÅ  ÚmethodÚ	attr_namer†   rm   s              €rE   r&  Ú)UnspecializedNNModuleVariable.call_method~  s	  ø€ ð Ð7Ó7Ü˜Ÿ™¨$Ó/ˆBØ�{�{Ø×7Ñ7¸Ó=‘à�ä#×)Ò)¨"¸ÈÑNˆEØ×&Ñ& r¨6´D¸³JÑ+>ÀÓGÐGà”w˜tŸz™z¨:°rÓ:Ô:ðÜ ×/Ò/´°T·Z±ZÓ0@À$ÓG�ô ˜&¤,×/Ñ/Ü# D×$BÑ$BÀ4Ó$HÈ*ÓU�Ü'×-Ò-ØŸ™°Àñ�ð ×*Ñ*¨2°VÓ<Ð<ô ˜ 
×+Ñ+Ü�v—‘Ó'¨4×+EÑ+EÓ+GÓGäØJØ+¨D¨6°°4°&¸¸$¸¸qÀÀÐIØ"IÈ$ÈÈ~Ð^b×^hÑ^hÐ]iÐ jàZðä*×4Ñ4ðò	ð �}Ô$¨¸$¿*¹*×:MÑ:MÓ)Mð ! ™G×6Ñ6Ó8�	Ø˜Q™�ð
 —O‘O×%Ñ%¨%×*;Ñ*;Ó*=ÄÇÁ×ASÑASÒ*SØ§*¡*×"5Ñ"5°mÑ"DÓDà,0�DÕ)Ø§*¡*×"5Ñ"5°jÑ"AÓAà,0�DÕ)äØä%×6Ñ6Ü%×CÑCð÷ñ ð !§J¡J×$7Ñ$7¸
Ñ$CÓCð -1�DÔ)ð œ%Ÿ(™(Ÿ/™/×5Ñ5Ò5Ü˜t A™w¬	×(AÑ(A×BÑBØœ5Ÿ8™8Ÿ?™?×6Ñ6Ò6ô (×-Ò-¨b´%·(±(·/±/×2MÑ2MÓN�Ø×*Ñ*¨2°d¸1±g¨ÀÓGÐGä‰wÑ" 2¬T°$«Z¸Ó@Ð@øôM "ó Ø“ðús   Â*M? Í?NÎNÚfieldÚname_vtc                 ó†   • U R                  X5      n[        U[        R                  5      (       a  UR	                  U5      $ g r?   )r  rK   r   ÚConstDictVariableÚmaybe_getitem_const)r‹   r5   rÌ  rÍ  Údict_vts        rE   Úgetattr_helperÚ,UnspecializedNNModuleVariable.getattr_helperÚ  s;   € ð ×"Ñ" 2Ó-ˆÜ�gœy×:Ñ:×;Ñ;Ø×.Ñ.¨wÓ7Ð7Ør�   c           
      ó,  >^^• US;   aÉ  UR                   R                  R                  X5      (       dŸ  [        U R                  U5      n[        U[        5      (       at  [        U5      S:X  ae  U R                  (       a>  [        U R                  U5      n[        UR                  [        R                  5      5        [        R                  " 0 5      $ U R                  (       Ga"  US;   Ga  UR                   R                  R                  X5      (       dñ  [        U R                  U5      n[        U R                  U5      m[        TR                  [        R                   5      5        UR                   R"                  R%                  T5        S[&        S[(        S[(        S[*        [,        [,        4   4U4S jjm[        U4S	 j[/        UR1                  5       5       5       5      n[        R2                  " U[5        U5      TS
9$ [6        TU ]q  X5      $ )N)r³  r´  r¶  rµ  r¸  r·  r   )r¸  r·  r¶  rµ  ÚirU   rV   r9   c                 ó¤   >• [         R                  R                  U5      n[        TU 5      n[	        TU5      n[
        R                  " X%5      nX64$ r?   )r   r4   rª   r   r   r0   )rÕ  rU   rV   rÈ   Ú
source_keyÚsource_valuer†   Úhooks_dict_sources          €rE   Úbuild_key_valueÚBUnspecializedNNModuleVariable.var_getattr.<locals>.build_key_value  sO   ø€ ô  ×0Ñ0×7Ñ7¸Ó:�ô 0Ð0AÀ1ÓE�
Ü0Ð1BÀJÓO�Ü+×2Ò2°1ÓC�Ø�zÐ!r�   c              3   ó@   >#   • U  H  u  nu  p#T" XU5      v •  M     g 7fr?   r@   )rB   rÕ  rU   rV   rÚ  s       €rE   rF   Ú<UnspecializedNNModuleVariable.var_getattr.<locals>.<genexpr>  s%   øé € ð Ú:W©Y¨Q±°‘  a×(Ð(Ò:Wùs   ƒr¥   )r¦   rÔ   rÕ   r½   r†   rK   rL   r  re   r   r   ry   r   ÚEMPTY_NN_MODULE_HOOKS_DICTr   rÏ  ÚSEQUENCE_LENGTHrs  rt  rv  r   rO   r.   r°   rM   ÚNNModuleHooksDictVariablerJ   r‰   r  )	r‹   r5   rh   Ú
hooks_dictÚhooks_sourcer²   rÚ  rÙ  rm   s	         @@€rE   r  Ú)UnspecializedNNModuleVariable.var_getattrâ  s±  ú€ àð 
ó 
ð —9‘9×)Ñ)×FÑFÀt×RÑRÜ$ T§Z¡Z°Ó6�
Ü˜j¬$×/Ñ/´C¸
³OÀqÓ4HØ—{—{Ü'1°$·+±+¸tÓ'D˜Ü%Ø(×3Ñ3Ü ,× GÑ Góôô
 %×6Ò6°rÓ:Ð:ð �K�KˆKØðôð —I‘I×*Ñ*×GÑGÈ×SÑSä  §¡¨TÓ2ˆJÜ *¨4¯;©;¸Ó =ÐÜÐ+×6Ñ6´|×7SÑ7SÓTÔUØ�I‰I×(Ñ(×,Ñ,Ð->Ô?ð"Üð"Üð"Ü#&ð"ä”¬Ð7Ñ8÷"ô ô Ü:CÀJ×DTÑDTÓDVÔ:Wóó ˆFô ×6Ò6Øœ˜ZÓ(Ð1Bñð ô ‰wÑ" 2Ó,Ð,r�   c           	      ó*  • SSK Jn  UR                  X5      nU R                  USU5      nUc  U R                  USU5      nUc  U R                  USU5      nUc4  [	        [
        US[        U R                  5      R                   SU S3/S9  Uc   eU$ )	zå
Dynamo tracing of nn.Module __getattr__ can be expensive if the model
has deep submodule hierarchy. Since the __getattr__ is stable, we can
directly look into the underlying datastructures. This saves a lot of
compilation time.
r*   )ÚSourcelessBuilderrë   rê   rì   rí   rî   rX   )	r  rå  rª   rÒ  r   r[   rJ   r†   rø   )r‹   r5   rh   rå  rÍ  r  s         rE   Ú manually_trace_nn_module_getattrÚ>UnspecializedNNModuleVariable.manually_trace_nn_module_getattr%  sª   € õ 	/à#×*Ñ*¨2Ó4ˆØ×!Ñ! " m°WÓ=ˆØ‰;Ø×%Ñ% b¨*°gÓ>ˆCØ‰;Ø×%Ñ% b¨*°gÓ>ˆCØ‰;Ü$ÜØàœ˜TŸZ™ZÓ(×1Ñ1Ð2Ð2MÈdÈVÐSTÐUðòð ‰ÐˆØˆ
r�   )r”  r‡   r“  )#rø   r  rŠ  r‹  r2   rŒ  rQ   r¨   r�  r   rŠ   r
   rŸ  r‘   r—   rÿ   r{   ÚcacherP   rv  r¬  rN   r.   rµ   r   rL   r\   rå   r&  r   rÒ  r  ræ  r�  r�  r‘  s   @rE   rû   rû   È  s½  ø† àØØ ðð 
#×	1Ñ	1ð	€Nðð2˜eŸh™hŸo™oð 2¸ð 2À÷ 2ð<¨ð °6ô ð¨Fô ð
-°ð -¸Dô -ð Ø‡_�_ð
 3 s¡8ó 
ó ó ð
ð/Ð&=ð /À$ÀÑBW÷ /ð0Sà#ðSð �Ñ'ðSð �S˜/Ð)Ñ*ð	Sð
 
ôSðjZAà#ðZAð ðZAð �Ñ'ð	ZAð
 �S˜/Ð)Ñ*ðZAð 
÷ZAðxØ)ðØ25ðØ@Oðà	�/Ñ	"ôðA-Ð5ð A-¸Sð A-À_÷ A-ðFØ)ðØ14ðà	÷ò r�   rû   c                   ó*   • \ rS rSrSrS\S\4S jrSrg)Ú$UnspecializedBuiltinNNModuleVariableiB  z_
Differentiates between builtin nn modules (e.g. torch.nn.Linear) and user defined nn modules.
rœ  r9   c                 ó   • U$ r?   r@   rž  s     rE   rŸ  Ú1UnspecializedBuiltinNNModuleVariable._wrap_sourceG  r¡  r�   r@   N)rø   r  rŠ  r‹  Ú__doc__r
   rŸ  r�  r@   r�   rE   rê  rê  B  s   † ñð¨ð °6÷ r�   rê  c                   óv   ^ • \ rS rSrSrS\R                  R                  S\SS4U 4S jjr	S\S\4S	 jr
S
rU =r$ )ÚFSDPManagedNNModuleVariableiL  aÜ  
Tracing behavior: trace into submodules and treat them as Unspecialized, do not
register parameters to the top-level, treat them as function inputs.

Guards behavior: if 'skip_fsdp_guards', many guards that would be installed
by a vanilla UnspecializedNNModuleVariable are simply dropped, on the basis
that a user wrapping their model in FSDP(model) is already opting into a
requirement to not modify internal model state, which would already break FSDP without
compilation.
r†   r8   r9   Nc                 ól   >• UR                  S5      nUc   S5       e[        TU ]  " SSU0UD6  X0l        g )Nre   zMFSDPManagedNNModule depends on having an accurate source to control guarding.r†   r@   )rl   r‰   rŠ   re   )r‹   r†   r8   re   rm   s       €rE   rŠ   Ú$FSDPManagedNNModuleVariable.__init__X  sC   ø€ Ø—‘˜HÓ%ˆØÑ!ð 	
Ø[ó	
Ð!ô 	‰ÒÑ/˜uÐ/¨Ò/Ø�r�   rœ  c                 óº   • [        U[        [        45      (       d?  [        R                  R
                  R                  (       a  [        U5      $ [        U5      $ U$ r?   )rK   r   r   rQ   Ú_dynamoÚconfigÚskip_fsdp_guardsrž  s     rE   rŸ  Ú(FSDPManagedNNModuleVariable._wrap_sourcea  sL   € ÜØÔ,Ô.IÐJ÷
ñ 
ô �}‰}×#Ñ#×4×4Ü)¨+Ó6Ð6ä2°;Ó?Ð?ØÐr�   r¥   )rø   r  rŠ  r‹  rí  rQ   r¨   r�  r   rŠ   rŸ  r�  r�  r‘  s   @rE   rï  rï  L  sB   ø† ñ	ð˜eŸh™hŸo™oð ¸ð À÷ ð¨ð °÷ ò r�   rï  )Trí  r{   rñ   r;  ri   rw   Úcollections.abcr   r   Ú
contextlibr   r   Útypingr   r   r	   Útorch.nnrQ   Útorch._guardsr
   rW  r   r   r   Úexcr   r   r   Úguardsr   r   Úmutation_guardr   re   r   r   r   r   r   r   r   Úutilsr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r±   r+   r,   r-   r.   Ú	functionsr/   Úlazyr0   Úlistsr1   Úuser_definedr2   Útorch._dynamo.symbolic_convertr3   r   r4   r¨   r�  rL   r\   rc   rp   r€   rƒ   rû   rê  rï  r@   r�   rE   Ú<module>r     sw  ðñó. Û Û Û 	Û ß .ß 2ß /Ñ /ã Ý  ç 8Ñ 8ß VÑ Vß 0Ý .÷÷ ñ ÷÷ ÷ ÷ ÷  SÓ RÝ 3Ý %Ý  Ý 3ö ÝDå*ð*Øð*à	�‰�‰ð*ð �?Ñ
#ð*ð ��oÐ%Ñ&ð	*ð
 
ô*ðZ ð+Øð+Ø#ð+Ø)@ð+ØGLÇxÁxÇÁð+àó+ó ð+ð( Ø�VÑð Ø#(§8¡8§?¡?ð à	ô ôFRE�ô REôjwÐ$=ô wôtÐ+Hô ôÐ"?õ r�   