ó
    Eñi*¿  ã                  ó  • S SK Jr  S SKrS SKrS SKrS SKrS SK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  S SKJr  S SK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  S SKrS S	KJr   S S
K!J"r"  S SK#J$r$  S SK%J&r&J'r'  S SK(J)r)  \RT                  " \+5      r,\(       a,  S SK-J.r.J/r/J0r0  S SK1J2r2  S SK3r3S SK4J5r5  S SK6J7r7  S SK8J9r9  S SK:J;r;   \Rx                  " S5      r=\Rx                  " S5      r>\" SSSS9 " S S5      5       r? " S S\5      r@ " S S\R‚                  5      rB  " S S5      rC\R$                  " SS 9 " S! S"5      5       rD " S# S$\5      rE\R$                  " SS%9 " S& S'5      5       rF\" S(5      rG \R$                  " SS 9 " S) S*5      5       rH \R$                  " SS 9 " S+ S,\H5      5       rI \R$                  " SS 9 " S- S.\H5      5       rJ  " S/ S0\\G   5      rK " S1 S25      rL " S3 S45      rM " S5 S6\K\M   5      rN " S7 S85      rO " S9 S:\K\O   5      rP " S; S<5      rQ  " S= S>\K\L   5      rR " S? S@5      rS " SA SB\S5      rT " SC SD5      rU\R¬                  " 5       rW  " SE SF5      rX\ " SG SH5      5       rY " SI SJ5      rZ\    SVSK j5       r[\    SWSL j5       r\\SXSM j5       r]\ SY     SZSN jj5       r]\" 5        SY     S[SO jj5       r]\]" SS 9 " SP SQ5      5       r^\]" SS 9 " SR SS\^5      5       r_SYS\ST jjr`S]SU jrag)^é    )ÚannotationsN)Úabstractmethod)Údefaultdict)Úcontextmanager)Ú	dataclass)ÚAnyÚGenericÚ
NamedTupleÚOptionalÚoverloadÚTYPE_CHECKINGÚTypeVar)Údataclass_transform)Ú_pytree)Ú
OrderedSet)Úis_traceable_wrapper_subclass)ÚCapturedTracebackÚformat_frame)ÚWeakTensorKeyDictionary)ÚCallableÚ	GeneratorÚIterator)ÚCodeType)ÚDDPOptimizerContext)Ú	PyCodegen)ÚViewAndMutationMeta©ÚFakeTensorModez-^(?P<frame_id>\d+)/(?P<frame_compile_id>\d+)$zQ^!(?P<compiled_autograd_id>\d+)(?:/(?P<frame_id>\d+)/(?P<frame_compile_id>\d+))?$T)ÚfrozenÚkw_onlyÚslotsc                  óV   • \ rS rSr% S\S'   S\S'   SrS\S'   S
S jr\SS j5       rS	r	g)Ú	CompileIdéD   ú
int | NoneÚframe_idÚframe_compile_idNÚcompiled_autograd_idc                óÎ  • U R                   b  U R                  S L U R                  S L :w  a%  [        SU R                   SU R                   35      eSnU R                  b  SU R                   SU R                   3nSU R                    U 3$ U R                  b  U R                  c%  [        SU R                   SU R                   35      eU R                   SU R                   3$ )NzMframe_id and frame_compile_id must both be None or both be set, got frame_id=z, frame_compile_id=Ú Ú/Ú!z=frame_id and frame_compile_id must not be None, got frame_id=)r(   r&   r'   ÚAssertionError)ÚselfÚ	frame_strs     ÚJ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_guards.pyÚ__str__ÚCompileId.__str__S   s  € à×$Ñ$Ñ0Ø—‘ Ð%¨4×+@Ñ+@ÀDÐ+HÓIÜ$ð$Ø$(§M¡M ?Ð2EÀd×F[ÑF[ÐE\ð^óð ð ˆIØ�}‰}Ñ(Ø §¡˜¨a°×0EÑ0EÐ/FÐG�	à�t×0Ñ0Ð1°)°Ð=Ð=à�}‰}Ñ$¨×(=Ñ(=Ñ(EÜ$ð$Ø$(§M¡M ?Ð2EÀd×F[ÑF[ÐE\ð^óð ð —m‘m�_ A d×&;Ñ&;Ð%<Ð=Ð=ó    c                ó<  • Uc  g [         [        4 H`  nUR                  U5      =n(       d  M  UR                  5       nUR	                  5        H  u  pVUc  M
  [        U5      XE'   M     U " S0 UD6s  $    [        e! [         a  n[        SU S35      UeSnAff = f)zt
Factory method that creates a CompileId from its string representation.
Keep this in sync with the __str__ method.
NzInvalid compile_id 'Ú'© )ÚCOMPILE_ID_PATTERNÚCA_COMPILE_ID_PATTERNÚmatchÚ	groupdictÚitemsÚintÚ
ValueErrorÚ	Exception)ÚclsÚ
compile_idÚpatternr9   ÚgroupsÚkÚvÚes           r0   Úfrom_stringÚCompileId.from_stringh   s¥   € ð ÑØð	JÜ.Ô0EÓF�Ø#ŸM™M¨*Ó5Ð5�5×5Ø"Ÿ_™_Ó.�FØ &§¡¦™˜Ø›=Ü(+¨A«˜F›Iñ !/ñ ™= ™=Ò(ñ Gô !Ð øäó 	JÜÐ3°J°<¸qÐAÓBÈÐIûð	Jús(   †%A< ¯&A< ÁA< Á4A< Á<
BÂBÂBr6   ©ÚreturnÚstr)r@   ú
str | NonerI   úCompileId | None)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r(   r1   ÚclassmethodrF   Ú__static_attributes__r6   r3   r0   r#   r#   D   s8   ‡ àÓð
 !Ó ð (,Ð˜*Ó+ô
>ð* óJó óJr3   r#   c                  ó4   • \ rS rSr% S\S'   S\S'   S	S jrSrg)
ÚTraceIdé   r#   r@   r<   Úattemptc                ó‚   • U R                   S:X  a  [        U R                  5      $ U R                   SU R                    3$ )Nr   Ú_)rW   rJ   r@   ©r.   s    r0   r1   ÚTraceId.__str__…   s7   € à�<‰<˜1ÓÜ�t—‘Ó'Ð'à—o‘oÐ& a¨¯© ~Ð6Ð6r3   r6   NrH   ©rM   rN   rO   rP   rQ   r1   rS   r6   r3   r0   rU   rU      s   ‡ ØÓð ƒL÷7r3   rU   c                  óŠ   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSS jrSS jrSS jrSS jrSS jrSrg)ÚGuardSourceé�   r   é   é   é   é   é   é   é   é   é	   é
   é   é   é   é   é   é   c                óH   • U [         R                  [         R                  4;   $ ©N)r^   ÚGLOBAL_FSDP_MODULEÚLOCAL_FSDP_MODULErZ   s    r0   Úis_fsdp_moduleÚGuardSource.is_fsdp_module    s   € Øœ×6Ñ6¼×8UÑ8UÐVÑVÐVr3   c                óð   • SS K Js  Jn  UR                  (       a:  U [        R
                  [        R                  4;   =(       d    U R                  5       $ U [        R
                  [        R                  4;   $ )Nr   )Útorch._dynamo.configÚ_dynamoÚconfigÚ_unsafe_skip_fsdp_module_guardsr^   ÚGLOBAL_SPECIALIZED_NN_MODULEÚLOCAL_SPECIALIZED_NN_MODULErt   )r.   ry   s     r0   Úis_specialized_nn_moduleÚ$GuardSource.is_specialized_nn_module£   sn   € ß-Ð-à×1×1àä×<Ñ<Ü×;Ñ;ðñ÷ )ð
 ×&Ñ&Ó(ðð Ü×4Ñ4Ü×3Ñ3ð
ñ 
ð 	
r3   c                ó„   • U [         R                  [         R                  [         R                  [         R                  4;   $ rq   )r^   ÚGLOBAL_UNSPECIALIZED_NN_MODULEÚLOCAL_UNSPECIALIZED_NN_MODULEÚ&GLOBAL_UNSPECIALIZED_BUILTIN_NN_MODULEÚ%LOCAL_UNSPECIALIZED_BUILTIN_NN_MODULErZ   s    r0   Úis_unspecialized_nn_moduleÚ&GuardSource.is_unspecialized_nn_module´   s8   € ØÜ×6Ñ6Ü×5Ñ5Ü×>Ñ>Ü×=Ñ=ð	
ñ 
ð 	
r3   c                óH   • U [         R                  [         R                  4;   $ rq   )r^   r‚   rƒ   rZ   s    r0   Ú"is_unspecialized_builtin_nn_moduleÚ.GuardSource.is_unspecialized_builtin_nn_module¼   s&   € ØÜ×>Ñ>Ü×=Ñ=ð
ñ 
ð 	
r3   c                ó¢   • U [         R                  [         R                  [         R                  [         R                  [         R
                  4;   $ rq   )r^   ÚLOCALr|   rs   r�   rƒ   rZ   s    r0   Úis_localÚGuardSource.is_localÂ   sA   € ØÜ×ÑÜ×3Ñ3Ü×)Ñ)Ü×5Ñ5Ü×=Ñ=ð
ñ 
ð 	
r3   r6   N©rI   Úbool)rM   rN   rO   rP   rŠ   ÚGLOBALr|   r{   ÚCONSTANTÚRANDOM_VALUEÚ	SHAPE_ENVrs   rr   ÚBACKWARD_STATEÚ	EPHEMERALÚSYNTHETIC_LOCALr�   r€   rƒ   r‚   Ú
TEMP_LOCALrt   r}   r„   r‡   r‹   rS   r6   r3   r0   r^   r^   �   sy   † Ø€EØ€FØ"#ÐØ#$Ð Ø€HØ€LØ€IØÐØÐØ€NØ€IØ€OØ$&Ð!Ø%'Ð"Ø,.Ð)Ø-/Ð*Ø€JôWô
ô"
ô
÷
r3   r^   c                  ó   • \ rS rSrSrg)ÚGuardBuilderBaseéÚ   r6   N©rM   rN   rO   rP   rS   r6   r3   r0   r˜   r˜   Ú   s   † Úr3   r˜   )r   c                  ó4   • \ rS rSr% S\S'   S\S'   S	S jrSrg)
ÚSLocéÞ   z#traceback.FrameSummary | str | NoneÚframework_locrK   Úmaybe_user_locc                óÌ   • [        U R                  [        5      (       a  U R                  O[        U R                  5      nU R                  b  U R                   SU S3$ SU S3$ )Nz (Ú)Ú()Ú
isinstancerž   rJ   r   rŸ   )r.   Úflocs     r0   r1   ÚSLoc.__str__ã   sk   € ô ˜$×,Ñ,¬c×2Ñ2ð ×Òä˜d×0Ñ0Ó1ð 	ð
 ×ÑÑ*Ø×)Ñ)Ð*¨"¨T¨F°!Ð4Ð4à�t�f˜A�;Ðr3   r6   NrH   r\   r6   r3   r0   rœ   rœ   Þ   s   ‡ à6Ó6ØÓ÷	r3   rœ   c                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg	)
Ú
ShapeGuardéï   zsympy.logic.boolalg.BooleanÚexprrœ   ÚslocrŽ   Úsize_obliviousr6   N©rM   rN   rO   rP   rQ   rS   r6   r3   r0   r§   r§   ï   s   ‡ Ø
%Ó%Ø
ƒJØÖr3   r§   )r!   c                  ób  • \ rS rSr% S\S'   S\S'   SrS\S'   SrS\S	'   SrS
\S'   SrS\S'   Sr	S\S'   Sr
S\S'   SrS\S'   SrS\S'   S'S jrS(S jrS)S jrS*S jr\S+S j5       r\S,S j5       r\S-S j5       rS+S jrS+S jrS.S  jrS/S! jrS/S" jrS/S# jrS+S$ jr          S0S% jrS&rg)1ÚGuardéõ   ÚSourceÚoriginating_sourcez)Callable[[GuardBuilderBase, Guard], None]Ú	create_fnNzlist[str] | NoneÚguard_typesÚ	code_listzobject | NoneÚobj_weakrefú!weakref.ReferenceType[Any] | NoneÚguarded_class_weakrefzCapturedTraceback | NoneÚstackztraceback.StackSummary | NoneÚ
user_stackr%   Ú_hashFrŽ   Ú_unserializablec                ó¨   • U R                   c:  [        U R                  U R                  [	        U R
                  5      45      U l         U R                   $ rq   )rº   ÚhashÚnameÚsourceÚidr²   rZ   s    r0   Ú__hash__ÚGuard.__hash__  s:   € Ø�:‰:ÑÜ˜tŸy™y¨$¯+©+´r¸$¿.¹.Ó7IÐJÓKˆDŒJØ�z‰zÐr3   c                óº  • [        U R                  [        R                  5      =(       aD    U R                  R                  [
        R                  R                  R                  R                  L nUU R                  (       a  U R                  R                  OS[        U R                  5      U R                  U R                  5       R                  R                   4$ )Néÿÿÿÿ)r£   r²   Ú	functoolsÚpartialÚfuncÚtorchrx   ÚguardsÚGuardBuilderÚDUPLICATE_INPUTr¿   ÚvalueÚlenr¾   Úinner_create_fnÚ__code__Úco_firstlineno)r.   Úis_duplicate_inputs     r0   Úsort_keyÚGuard.sort_key  s™   € ô
 �t—~‘~¤y×'8Ñ'8Ó9÷ YØ—‘×#Ñ#¤u§}¡}×';Ñ';×'HÑ'H×'XÑ'XÐXð 	ð
 Ø!%§§ˆD�K‰K×Ò°"Ü�—	‘	‹NØ�I‰IØ× Ñ Ó"×+Ñ+×:Ñ:ð
ð 	
r3   c                óD   • U R                  5       UR                  5       :  $ rq   )rÒ   ©r.   Úothers     r0   Ú__lt__ÚGuard.__lt__+  s   € Ø�}‰}‹ §¡Ó!1Ñ1Ð1r3   c                ó˜   • [        U R                  [        R                  5      (       a  U R                  R                  $ U R                  $ rq   )r£   r²   rÅ   rÆ   rÇ   rZ   s    r0   rÎ   ÚGuard.inner_create_fn.  s3   € Ü�d—n‘n¤i×&7Ñ&7×8Ñ8Ø—>‘>×&Ñ&Ð&à—>‘>Ð!r3   c                ó.   • U R                   R                  $ rq   )r±   r¾   rZ   s    r0   r¾   Ú
Guard.name4  s   € à×&Ñ&×+Ñ+Ð+r3   c                ó.   • U R                   R                  $ rq   )r±   Úguard_sourcerZ   s    r0   r¿   ÚGuard.source8  s   € à×&Ñ&×3Ñ3Ð3r3   c           
     ó"  • [        U [        R                  5      (       af  U " 5       nUbD  S[        [	        U 5      5       SUR
                  R                   S[        [	        U5      5       S3$ S[        [	        U 5      5       S3$ [        U 5      $ )a„  
This is a workaround of a Python weakref bug.

`obj_weakref` is instance returned by `weakref.ref`,
`str(obj_weakref)` is buggy if the original obj overrides __getattr__, e.g:

    class MyConfig(dict):
        def __getattr__(self, x):
            return self[x]

    obj = MyConfig(offset=5)
    obj_weakref = weakref.ref(obj)
    str(obj_weakref)  # raise error: KeyError: '__name__'
z<weakref at z; to 'z' at Ú>z; dead>)r£   ÚweakrefÚReferenceTypeÚhexrÀ   Ú	__class__rM   rJ   )rµ   Úobjs     r0   Úweakref_to_strÚGuard.weakref_to_str<  s‡   € ô  �k¤7×#8Ñ#8×9Ñ9Ù“-ˆCØ‰Ø%¤c¬"¨[«/Ó&:Ð%;¸6À#Ç-Á-×BXÑBXÐAYÐY^Ô_bÔceÐfiÓcjÓ_kÐ^lÐlmÐnÐnà%¤c¬"¨[«/Ó&:Ð%;¸7ÐCÐCä�{Ó#Ð#r3   c                ód  • SU R                   (       a$  U R                   R                  R                  5       OS S[        U R                  5       SU R	                  5       R
                   SU R                   SU R                   SU R                  U R                  5       SU R                   S3nU$ )	Nz	
        r*   Ú z&
        {
            'guard_types': z,
            'code': z,
            'obj_weakref': z
            'guarded_class': z
        }
        )r¿   r¾   ÚlowerÚreprrÎ   rM   r³   r´   rç   rµ   r·   )r.   Úss     r0   Ú__repr__ÚGuard.__repr__U  s¯   € ð	Ø%)§[§[ˆ�‰×	Ñ	×	Ñ	Ô	!°bÐ9¸¼4ÀÇ	Á	»?Ð:KÈ1ÈT×MaÑMaÓMc×MlÑMlÐLmð nà ×,Ñ,Ð-ð .Ø—^‘^Ð$ð %Ø ×/Ñ/°×0@Ñ0@ÓAÐBð CØ"×8Ñ8Ð9ð :	ðˆð ˆr3   c                ó°  • S[        U R                  5       S3nU R                  (       a$  U R                  R                  R                  5       OSnUSU S3-  nUSU R	                  5       R
                   S3-  nUSU R                   S3-  nUSU R                   S3-  nUSU R                  U R                  5       S3-  nUS	U R                   S3-  nU$ )
NzName: Ú
r*   z    Source: z    Create Function: z    Guard Types: z    Code List: z    Object Weakref: z    Guarded Class Weakref: )rì   r¾   r¿   rë   rÎ   rM   r³   r´   rç   rµ   r·   )r.   Úoutputr¿   s      r0   r1   ÚGuard.__str__a  sé   € Øœ$˜tŸy™y›/Ð*¨"Ð-ˆØ-1¯[¯[�—‘×!Ñ!×'Ñ'Ô)¸bˆØ�L  ¨Ð+Ñ+ˆØÐ)¨$×*>Ñ*>Ó*@×*IÑ*IÐ)JÈ"ÐMÑMˆØÐ% d×&6Ñ&6Ð%7°rÐ:Ñ:ˆØ�O D§N¡NÐ#3°2Ð6Ñ6ˆØÐ(¨×)<Ñ)<¸T×=MÑ=MÓ)NÐ(OÈrÐRÑRˆØÐ/°×0JÑ0JÐ/KÈ2ÐNÑNˆØˆr3   c           	     ó\  •  U R                  X5      $ ! [         aŽ    [        R                  S[	        U 5      R                  5       5        U R                  (       aN  [        R                  SSR                  U R                  R                  5       SS  5      R                  5       5        e f = f)NzError while creating guard:
%szCreated at:
%sr*   éüÿÿÿ)
r²   r>   ÚlogÚ	exceptionrJ   Úrstripr¸   ÚerrorÚjoinÚformat)r.   Úbuilders     r0   ÚcreateÚGuard.createl  s€   € ð	Ø—>‘> 'Ó0Ð0øÜó 	Ü�M‰MÐ;¼SÀ»Y×=MÑ=MÓ=OÔPØ�z�zÜ—	‘	Ð+¨R¯W©W°T·Z±Z×5FÑ5FÓ5HÈÈÐ5MÓ-N×-UÑ-UÓ-WÔXØð		ús
   ‚ “BB+c                ó6   • U R                   R                  5       $ rq   )r¿   r}   rZ   s    r0   r}   ÚGuard.is_specialized_nn_moduleu  s   € Ø�{‰{×3Ñ3Ó5Ð5r3   c                ó6   • U R                   R                  5       $ rq   )r¿   rt   rZ   s    r0   rt   ÚGuard.is_fsdp_modulex  s   € Ø�{‰{×)Ñ)Ó+Ð+r3   c                ó6   • U R                   R                  5       $ rq   )r¿   r‹   rZ   s    r0   r‹   ÚGuard.is_local{  s   € Ø�{‰{×#Ñ#Ó%Ð%r3   c                óÈ   • [        U R                  [        R                  5      (       a"  U R                  R                  nUR
                  $ U R                  nUR
                  $ rq   )r£   r²   rÅ   rÆ   rÇ   rM   )r.   r²   s     r0   Úcreate_fn_nameÚGuard.create_fn_name~  sM   € Ü�d—n‘n¤i×&7Ñ&7×8Ñ8ØŸ™×+Ñ+ˆIð ×!Ñ!Ð!ð Ÿ™ˆIØ×!Ñ!Ð!r3   c                ó  • U R                   (       d  / U l         U R                   R                  U5        U R                  US 4;  a  [        SU R                   SU 35      eX l        U R                  (       d  X0l        OU R                  R                  U5        U R                  US 4;   =(       d.    [        U R                  5      =(       a    U R                  5       S L nU(       d  [        SU R                   SU 35      eX@l        g )Nz1Guarded class id must be identical, or None, got z vs zHGuarded object must be identical, None or ephemeral (dead weakref), got )r³   Úappendr·   r-   r´   Úextendrµ   Úcallable)r.   Ú
guard_typeÚguarded_classr´   rµ   Úis_valids         r0   Úset_export_infoÚGuard.set_export_info…  s  € ð ××Ø!ˆDÔà×Ñ×Ñ 
Ô+à×%Ñ%¨m¸TÐ-BÓBÜ ðØ×1Ñ1Ð2°$°}°oðGóð ð &3Ô"à�~�~Ø&�Nà�N‰N×!Ñ! )Ô,ð ×Ñ ¨dÐ 3Ñ3÷ +Ü˜×(Ñ(Ó)÷ +Ø× Ñ Ó" dÐ*ð 	ö
 Ü ðØ×'Ñ'Ð(¨¨[¨Mð;óð ð 'Õr3   )rº   r´   r³   r·   rµ   ©rI   r<   )rI   ztuple[bool, int, int, str, int])rÖ   r®   rI   rŽ   )rI   z(Callable[[GuardBuilderBase, Guard], Any]rH   ©rI   r^   )rµ   ÚobjectrI   rJ   )rü   r˜   rI   r   r�   )
r  rJ   r  r¶   r´   ú	list[str]rµ   r  rI   ÚNone)rM   rN   rO   rP   rQ   r³   r´   rµ   r·   r¸   r¹   rº   r»   rÁ   rÒ   r×   rÎ   Úpropertyr¾   r¿   Ústaticmethodrç   rî   r1   rý   r}   rt   r‹   r  r  rS   r6   r3   r0   r®   r®   õ   s  ‡ ð& ÓØ8Ó8ð %)€KÐ!Ó(Ø"&€IÐÓ&Ø!%€K�Ó%Ø?CÐÐ<ÓCà&*€EÐ#Ó*Ø04€JÐ-Ó4Ø€Eˆ:ÓØ!€O�TÓ!ôô

ô 2ô"ð ó,ó ð,ð ó4ó ð4ð ó$ó ð$ô0
ô	ôô6ô,ô&ô"ð&'àð&'ð 9ð&'ð ð	&'ð
 ð&'ð 
÷&'r3   r®   ÚTc                  ó   • \ rS rSrSrg)ÚGuardEnvExpri¸  r6   Nrš   r6   r3   r0   r  r  ¸  s   † âr3   r  c                  ó4   • \ rS rSr% S\S'   S\S'   SS jrSrg)	ÚDuplicateInputsiÃ  r°   Úinput_source_aÚinput_source_bc                óh   • U R                   U R                  :X  a  [        SU R                    35      eg )Nz9input_source_a and input_source_b must be different, got )r  r  r-   rZ   s    r0   Ú__post_init__ÚDuplicateInputs.__post_init__È  s>   € Ø×Ñ $×"5Ñ"5Ó5Ü ðØ×*Ñ*Ð+ð-óð ð 6r3   r6   N©rI   r  )rM   rN   rO   rP   rQ   r   rS   r6   r3   r0   r  r  Ã  s   ‡ àÓØÓ÷r3   r  c                  ó*   • \ rS rSr% S\S'   S\S'   Srg)ÚStorageOverlapiÞ  zlist[Source]Úoverlapping_sourcesÚnon_overlapping_sourcesr6   Nr¬   r6   r3   r0   r$  r$  Þ  s   ‡ à%Ó%Ø)Ö)r3   r$  c                  ó<   • \ rS rSr\SS j5       r\SS j5       rSrg)ÚCheckpointableiñ  c                ó   • g rq   r6   rZ   s    r0   Úcopy_graphstateÚCheckpointable.copy_graphstateò  s   € Ø$'r3   c                ó   • g rq   r6   ©r.   Ústates     r0   Úrestore_graphstateÚ!Checkpointable.restore_graphstateõ  s   € Ø47r3   r6   N)rI   r  )r.  r  rI   r  )rM   rN   rO   rP   r   r*  r/  rS   r6   r3   r0   r(  r(  ñ  s   † ØÛ'ó Ø'àÛ7ó Û7r3   r(  c                  óB   • \ rS rSr% SrS\S'   S
S jrSS jrSS jrSr	g	)ÚGuardsCheckpointStateiù  zO
The GuardCheckpointState - it is the T of Checkpointable[T] for GuardsContext
úOrderedSet[Guard]Údynamo_guardsc                ó   • Xl         g rq   ©r4  )r.   r4  s     r0   Ú__init__ÚGuardsCheckpointState.__init__   s   € Ø*Õr3   c                óp   • U R                   R                  UR                   5      n[        U5      S:X  a  gU$ )z¡
Produces a delta against another GuardsCheckpointState.

Returns None if no delta is found, otherwise, return an OrderedSet() of mismatched
Guard type objects.
r   N)r4  Ú
differencerÍ   ©r.   rÖ   Úrs      r0   ÚdiffÚGuardsCheckpointState.diff  s3   € ð ×Ñ×)Ñ)¨%×*=Ñ*=Ó>ˆÜˆq‹6�Q‹;ØØˆr3   c                óT   • [        U[        5      (       d  gU R                  U5      S L $ ©NF)r£   r2  r=  rÕ   s     r0   Ú__eq__ÚGuardsCheckpointState.__eq__  s'   € Ü˜%Ô!6×7Ñ7ØØ�y‰y˜Ó 4Ð'Ð'r3   r6  N)r4  r3  rI   r  )rÖ   r2  rI   úOptional[OrderedSet[Guard]]©rÖ   r  rI   rŽ   )
rM   rN   rO   rP   Ú__doc__rQ   r7  r=  rA  rS   r6   r3   r0   r2  r2  ù  s   ‡ ñð %Ó$ô+ô
÷(r3   r2  c                  óB   • \ rS rSr% 0 rS\S'   S	S jrS
S jrSS jrSr	g)ÚModuleContextCheckpointStatei  údict[str, torch.nn.Module]Ú
nn_modulesc                ó   • Xl         g rq   ©rI  )r.   rI  s     r0   r7  Ú%ModuleContextCheckpointState.__init__  s   € Ø$�r3   c                óÌ   • [        U R                  R                  5       5      R                  [        UR                  R                  5       5      5      n[	        U5      S:X  a  gU$ )zž
Produces a delta against another ModuleContextCheckpointState.

Returns None if no delta is found, otherwise, return a set() of mismatched
module key names.
r   N)ÚsetrI  Úkeysr:  rÍ   r;  s      r0   r=  Ú!ModuleContextCheckpointState.diff  sM   € ô �—‘×$Ñ$Ó&Ó'×2Ñ2´3°u×7GÑ7G×7LÑ7LÓ7NÓ3OÓPˆÜˆq‹6�Q‹;ØØˆr3   c                óT   • [        U[        5      (       d  gU R                  U5      S L $ r@  )r£   rG  r=  rÕ   s     r0   rA  Ú#ModuleContextCheckpointState.__eq__'  ó'   € Ü˜%Ô!=×>Ñ>ØØ�y‰y˜Ó 4Ð'Ð'r3   rK  N)rI  rH  rI   r  )rÖ   rG  rI   úset[str] | NonerD  )
rM   rN   rO   rP   rI  rQ   r7  r=  rA  rS   r6   r3   r0   rG  rG    s   ‡ Ø-/€JÐ*Ó/ô%ô
÷(r3   rG  c                  ó2   • \ rS rSrSS jrSS jrS	S jrSrg)
ÚModuleContexti-  c                ó   • 0 U l         g rq   rK  rZ   s    r0   r7  ÚModuleContext.__init__.  s	   € Ø*,ˆ�r3   c                ó>   • [        [        U R                  5      5      $ rq   )rG  ÚdictrI  rZ   s    r0   r*  ÚModuleContext.copy_graphstate1  s   € Ü+¬D°·±Ó,AÓBÐBr3   c                ó~   • [        U[        5      (       d  [        S[        U5       35      eUR                  U l        g )Nz+expected ModuleContextCheckpointState, got )r£   rG  r-   ÚtyperI  r-  s     r0   r/  Ú ModuleContext.restore_graphstate4  s:   € Ü˜%Ô!=×>Ñ>Ü Ø=¼dÀ5»k¸]ÐKóð ð  ×*Ñ*ˆ�r3   rK  Nr"  )rI   rG  )r.  rG  rI   r  ©rM   rN   rO   rP   r7  r*  r/  rS   r6   r3   r0   rV  rV  -  s   † ô-ôC÷+r3   rV  c                  óB   • \ rS rSr% 0 rS\S'   S	S jrS
S jrSS jrSr	g)ÚGlobalContextCheckpointStatei<  údict[str, tuple[Callable, Any]]Úglobal_statec                ó   • Xl         g rq   ©rc  )r.   Úglobal_statess     r0   r7  Ú%GlobalContextCheckpointState.__init__?  s   € Ø)Õr3   c                óÌ   • [        U R                  R                  5       5      R                  [        UR                  R                  5       5      5      n[	        U5      S:X  a  gU$ )zž
Produces a delta against another GlobalContextCheckpointState.

Returns None if no delta is found, otherwise, return a set() of mismatched
global key names.
r   N)rN  rc  rO  r:  rÍ   r;  s      r0   r=  Ú!GlobalContextCheckpointState.diffB  sO   € ô �×!Ñ!×&Ñ&Ó(Ó)×4Ñ4´S¸×9KÑ9K×9PÑ9PÓ9RÓ5SÓTˆÜˆq‹6�Q‹;ØØˆr3   c                óT   • [        U[        5      (       d  gU R                  U5      S L $ r@  )r£   ra  r=  rÕ   s     r0   rA  Ú#GlobalContextCheckpointState.__eq__N  rS  r3   re  N)rf  rb  rI   r  )rÖ   ra  rI   rT  rD  )
rM   rN   rO   rP   rc  rQ   r7  r=  rA  rS   r6   r3   r0   ra  ra  <  s   ‡ Ø46€LÐ1Ó6ô*ô
÷(r3   ra  c                  ó>   • \ rS rSrSr1 SkrS	S jrS
S jrSS jrSr	g)ÚGlobalContextiT  zn
This keeps track of the global torch state during tracing of a function.
For example, torch.is_grad_enabled.
>   Úgrad_enabledÚautocast_enabledÚautocast_cpu_dtypeÚautocast_gpu_dtypeÚautocast_cpu_enabledÚautocast_cache_enabledc                ó   • 0 U l         g rq   re  rZ   s    r0   r7  ÚGlobalContext.__init__c  s
   € Ø=?ˆÕr3   c                ó,   • [        U R                  5      $ rq   )ra  rc  rZ   s    r0   r*  ÚGlobalContext.copy_graphstatef  s   € Ü+¨D×,=Ñ,=Ó>Ð>r3   c                ó  • [        U[        5      (       d  [        S[        U5       35      eUR                  U l        [        U R                  5      [        U R                  5      :X  a1  [        U R                  R                  5       5      U R                  :X  d<  [        S[        U R                  R                  5       5       SU R                   35      eU R                  R                  5        H  u  p#U" U5        M     g )Nz+expected GlobalContextCheckpointState, got z Global state mismatch: got keys z, expected )
r£   ra  r-   r]  rc  rÍ   Ú_supported_global_statesrN  rO  Úvalues)r.   r.  rÇ   Úargss       r0   r/  Ú GlobalContext.restore_graphstatei  sß   € Ü˜%Ô!=×>Ñ>Ü Ø=¼dÀ5»k¸]ÐKóð ð "×.Ñ.ˆÔä�×!Ñ!Ó"¤c¨$×*GÑ*GÓ&HÓHÜ�D×%Ñ%×*Ñ*Ó,Ó-°×1NÑ1NÓNä Ø2´3°t×7HÑ7H×7MÑ7MÓ7OÓ3PÐ2Qð RØ ×9Ñ9Ð:ð<óð ð ×+Ñ+×2Ñ2Ö4‰JˆDÙ�ŽJò 5r3   re  Nr"  )rI   ra  )r.  ra  rI   r  )
rM   rN   rO   rP   rE  ry  r7  r*  r/  rS   r6   r3   r0   rm  rm  T  s   † ñò
 Ðô@ô?÷r3   rm  c                  ó€   • \ rS rSrSSS jjrSS jrSS jrSS jrSS jrSS	S
.       SS jjr	SS jr
SS jrSrg)Ú	GuardsSeti}  Nc                ó6   • Uc  [        5       U l        g Xl        g rq   )r   Úinner)r.   r€  s     r0   r7  ÚGuardsSet.__init__~  s   € Ø‰=Ü,6«LˆD�Jà�Jr3   c                ó,   • [        U R                  5      $ rq   )Úiterr€  rZ   s    r0   Ú__iter__ÚGuardsSet.__iter__„  ó   € Ü�D—J‘JÓÐr3   c                ó,   • [        U R                  5      $ rq   )rÍ   r€  rZ   s    r0   Ú__len__ÚGuardsSet.__len__‡  s   € Ü�4—:‘:‹Ðr3   c                óF   • [        U R                  UR                  -
  5      $ rq   )r~  r€  rÕ   s     r0   Ú__sub__ÚGuardsSet.__sub__Œ  s   € Ü˜Ÿ™ e§k¡kÑ1Ó2Ð2r3   c                ó,   • [        U R                  5      $ rq   )rŽ   r€  rZ   s    r0   Ú__bool__ÚGuardsSet.__bool__�  r†  r3   Tr   )Úcollect_debug_stackÚskipc               ó  • XR                   ;   a  g U(       a)  UR                  c  [        R                  " SU-   S9Ul        UR                  c  [
        R                  5       Ul        U R                   R                  U5        g ©Nr`   )r‘  )r€  r¸   r   Úextractr¹   ÚTracingContextÚextract_stackÚadd)r.   Úguardr�  r‘  s       r0   r—  ÚGuardsSet.add’  sa   € ð —J‘JÓØÞØ�{‰{Ñ"Ü/×7Ò7¸QÀ¹XÑF�”Ø×ÑÑ#Ü-×;Ñ;Ó=ˆEÔØ�
‰
�‰�uÕr3   c                óH   • U H  nU H  nU R                  USS9  M     M     g r“  )r—  )r.   ÚothersÚoÚgs       r0   ÚupdateÚGuardsSet.updatež  s&   € ÛˆAÛ�Ø—‘˜ �Ó#ó ò r3   c                ó^   ^^• SSK Jm  [        UU4S jU R                   5       5      U l        g)z.Delete all guards that contains a given sourcer`   )Úis_from_sourcec              3  ó\   >#   • U  H!  nT" UR                   T5      (       a  M  Uv •  M#     g 7frq   )r±   )Ú.0r�  r¡  r¿   s     €€r0   Ú	<genexpr>Ú6GuardsSet.remove_guards_with_source.<locals>.<genexpr>§  s%   øé € ð  
Ú!�!©¸×8LÑ8LÈf×)U�A‰A’zùs   ƒ,£	,N)Ú_dynamo.sourcer¡  r   r€  )r.   r¿   r¡  s    `@r0   Úremove_guards_with_sourceÚ#GuardsSet.remove_guards_with_source£  s#   ù€ å2äõ  
Ø—z’zó 
ó 
ˆ�
r3   )r€  rq   )r€  rC  rI   r  )rI   zIterator[Guard]r  )rÖ   r~  rI   r~  r�   )r˜  r®   r�  rŽ   r‘  r<   rI   r  )r›  z
set[Guard]rI   r  )r¿   r°   rI   r  )rM   rN   rO   rP   r7  r„  rˆ  r‹  rŽ  r—  rž  r§  rS   r6   r3   r0   r~  r~  }  sR   † öô ôô
3ô ð <@ÈQñ
Øð
Ø48ð
ØGJð
à	õ
ô$÷

r3   r~  c                  ó2   • \ rS rSrSS jrSS jrS	S jrSrg)
ÚGuardsContexti´  c                ó0   • [        5       U l        / U l        g rq   )r~  r4  Úaotautograd_guardsrZ   s    r0   r7  ÚGuardsContext.__init__µ  s   € Ü(1«ˆÔØ68ˆÕr3   c                óR   • [        [        U R                  R                  5      5      $ rq   )r2  r   r4  r€  rZ   s    r0   r*  ÚGuardsContext.copy_graphstate¹  s   € Ü$¤Z°×0BÑ0B×0HÑ0HÓ%IÓJÐJr3   c                ó�   • [        U[        5      (       d  [        S[        U5       35      e[	        UR
                  5      U l        g )Nz$expected GuardsCheckpointState, got )r£   r2  r-   r]  r~  r4  r-  s     r0   r/  Ú GuardsContext.restore_graphstate¼  s:   € ä˜%Ô!6×7Ñ7Ü Ð#GÌÈUËÀ}Ð!UÓVÐVÜ& u×':Ñ':Ó;ˆÕr3   )r¬  r4  Nr"  )rI   r2  )r.  r2  rI   r  r_  r6   r3   r0   rª  rª  ´  s   † ô9ôK÷<r3   rª  c                  óÐ   • \ rS rSr\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r	\SS j5       r
\        SS j5       r\      SS	 j5       rS
rg)ÚHopSubgraphCacheiÃ  c                ó   • g rq   r6   ©r.   Úfn_idÚ
identifiers      r0   Úadd_dynamo_installed_submoduleÚ/HopSubgraphCache.add_dynamo_installed_submoduleÄ  s   € ØSVr3   c                ó   • g rq   r6   ©r.   r¶  s     r0   Úget_dynamo_installed_submodulesÚ0HopSubgraphCache.get_dynamo_installed_submodulesÇ  ó   € ØHKr3   c                ó   • g rq   r6   ©r.   r·  Úkeys      r0   Úadd_autograd_key_entryÚ'HopSubgraphCache.add_autograd_key_entryÊ  s   € ØNQr3   c                ó   • g rq   r6   ©r.   r·  s     r0   Úget_autograd_key_entryÚ'HopSubgraphCache.get_autograd_key_entryÍ  s   € ØJMr3   c                ó   • g rq   r6   rÀ  s      r0   Úadd_proxy_dispatch_entryÚ)HopSubgraphCache.add_proxy_dispatch_entryÐ  s   € ØPSr3   c                ó   • g rq   r6   rÅ  s     r0   Úget_proxy_dispatch_entryÚ)HopSubgraphCache.get_proxy_dispatch_entryÓ  s   € ØLOr3   c                ó   • g rq   r6   )r.   r·  Útangent_metadataÚgmods       r0   Úadd_lazy_bwd_entryÚ#HopSubgraphCache.add_lazy_bwd_entryÖ  s   € ð r3   c                ó   • g rq   r6   ©r.   r·  rÏ  s      r0   Úget_lazy_bwd_entryÚ#HopSubgraphCache.get_lazy_bwd_entryÞ  s   € ð :=r3   r6   N©r¶  r<   r·  rJ   rI   r  ©r¶  r<   rI   r  ©r·  rJ   rÁ  r   rI   r  ©r·  rJ   rI   zCallable | None©r·  rJ   rÏ  útuple[object]rÐ  ztorch.fx.GraphModulerI   r<   ©r·  rJ   rÏ  rÜ  rI   z.tuple[torch.fx.GraphModule | None, int | None])rM   rN   rO   rP   r   r¸  r¼  rÂ  rÆ  rÉ  rÌ  rÑ  rÕ  rS   r6   r3   r0   r³  r³  Ã  sº   † ØÛVó ØVàÛKó ØKàÛQó ØQàÛMó ØMàÛSó ØSàÛOó ØOàðàðð (ðð #ð	ð
 
óó ðð ð=Øð=Ø1>ð=à	7ó=ó ó=r3   r³  c                  óž   • \ rS rSrSS jrSS jrSS jrSS jrSS jrSS jr	SS jr
        SS	 jr      SS
 jrSS jrSS jrSrg)ÚInvokeSubgraphCacheiä  c                ó~   • 0 U l         0 U l        [        [        5      U l        [        [
        5      U l        0 U l        g rq   )Úautograd_cacheÚproxy_dispatch_cacher   ÚlistÚdynamo_installed_submodulesrZ  Úlazy_bwd_cacheÚeffects_cacherZ   s    r0   r7  ÚInvokeSubgraphCache.__init__å  s>   € Ø35ˆÔØ9;ˆÔ!ÜALÌTÓARˆÔ(ô œÓð 	Ôð
 ð 	Õr3   c                ó@   • U R                   U   R                  U5        g rq   )rä  r	  rµ  s      r0   r¸  Ú2InvokeSubgraphCache.add_dynamo_installed_submoduleð  s   € Ø×(Ñ(¨Ñ/×6Ñ6°zÕBr3   c                ó:   • U R                   R                  U/ 5      $ rq   )rä  Úgetr»  s     r0   r¼  Ú3InvokeSubgraphCache.get_dynamo_installed_submodulesó  s   € Ø×/Ñ/×3Ñ3°E¸2Ó>Ð>r3   c                ó    • X R                   U'   g rq   )rá  rÀ  s      r0   rÂ  Ú*InvokeSubgraphCache.add_autograd_key_entryö  s   € Ø*-×Ñ˜JÒ'r3   c                ó:   • U R                   R                  US 5      $ rq   )rá  rë  rÅ  s     r0   rÆ  Ú*InvokeSubgraphCache.get_autograd_key_entryù  s   € Ø×"Ñ"×&Ñ& z°4Ó8Ð8r3   c                ó    • X R                   U'   g rq   )râ  rÀ  s      r0   rÉ  Ú,InvokeSubgraphCache.add_proxy_dispatch_entryü  s   € Ø03×!Ñ! *Ò-r3   c                ó:   • U R                   R                  US 5      $ rq   )râ  rë  rÅ  s     r0   rÌ  Ú,InvokeSubgraphCache.get_proxy_dispatch_entryÿ  s   € Ø×(Ñ(×,Ñ,¨Z¸Ó>Ð>r3   c                ó\   • [        U R                  U   5      nX44U R                  U   U'   U$ rq   )rÍ   rå  )r.   r·  rÏ  rÐ  Ú	num_gmodss        r0   rÑ  Ú&InvokeSubgraphCache.add_lazy_bwd_entry  s8   € ô ˜×+Ñ+¨JÑ7Ó8ˆ	Ø=AÐ<Mˆ×Ñ˜JÑ'Ð(8Ñ9ØÐr3   c                ó`   • XR                   ;  a  gU R                   U   R                  US5      $ )N)NN)rå  rë  rÔ  s      r0   rÕ  Ú&InvokeSubgraphCache.get_lazy_bwd_entry  s2   € ð ×0Ñ0Ó0Øà×"Ñ" :Ñ.×2Ñ2Ð3CÀ\ÓRÐRr3   c           	     óš   • U R                   R                  US5      =n(       a  X#:w  a  [        SU SU SU S35      eX R                   U'   g)z>Store the effect types for a given invoke_subgraph identifier.NzPDifferent number of effects were found for invoke_subgraph call with identifier z,. 
Previously we had the following effects: z.
But now we have: Ú.)ræ  rë  r-   )r.   r·  ÚeffectsÚprev_effectss       r0   Úadd_effectsÚInvokeSubgraphCache.add_effects  sj   € à×-Ñ-×1Ñ1°*¸dÓCÐCˆ<ÕCØÓ&Ü$ð,Ø,6¨<ð 8@Ø@L¸~ð N(Ø(/ y°ð3óð ð *1×Ñ˜:Ò&r3   c                ó:   • U R                   R                  US5      $ )zARetrieve the effect types for a given invoke_subgraph identifier.N)ræ  rë  rÅ  s     r0   Úget_effectsÚInvokeSubgraphCache.get_effects!  s   € à×!Ñ!×%Ñ% j°$Ó7Ð7r3   )rá  rä  ræ  rå  râ  Nr"  r×  rØ  rÙ  rÚ  rÛ  rÝ  )r·  rJ   rü  rN  rI   r  )r·  rJ   rI   z
set | None)rM   rN   rO   rP   r7  r¸  r¼  rÂ  rÆ  rÉ  rÌ  rÑ  rÕ  rþ  r  rS   r6   r3   r0   rß  rß  ä  s|   † ô	ôCô?ô.ô9ô4ô?ð	àð	ð (ð	ð #ð		ð
 
ô	ðSØðSØ1>ðSà	7ôSô
1÷8r3   rß  c                  ó(   • \ rS rSrSS jrSS jrSrg)ÚHopDispatchSetCachei&  c                ó2   • SSK Jn  U[        5       0U l        g )Nr   )Úinvoke_subgraph)Ú'torch._higher_order_ops.invoke_subgraphr  rß  Úhop_cache_map)r.   r  s     r0   r7  ÚHopDispatchSetCache.__init__'  s   € åKà-Ô/BÓ/DÐEˆÕr3   c                ó@   • XR                   ;  a  g U R                   U   $ rq   ©r  )r.   Úops     r0   Ú	get_cacheÚHopDispatchSetCache.get_cache-  s"   € Ø×'Ñ'Ó'ØØ×!Ñ! "Ñ%Ð%r3   r  Nr"  )r  ztorch._ops.HigherOrderOperatorrI   zHopSubgraphCache | None)rM   rN   rO   rP   r7  r  rS   r6   r3   r0   r  r  &  s   † ôF÷&r3   r  c                  ón   • \ rS rSr\S	S j5       r\S
S j5       rSS jr\SS j5       r\SS j5       r	Sr
g)ÚCompileContextiH  c                 óZ   • [         R                  c  [        S5      e[         R                  $ )Nzcompile_context is not set)Ú_TLSÚcompile_contextr-   r6   r3   r0   rë  ÚCompileContext.getI  s&   € ä×ÑÑ'Ü Ð!=Ó>Ð>Ü×#Ñ#Ð#r3   c                 ó$   • [        [        SS 5      $ ©Nr  ©Úgetattrr  r6   r3   r0   Útry_getÚCompileContext.try_getO  ó   € ä”tÐ.°Ó5Ð5r3   c                óŠ   • Ub,  [        U[        5      (       d  [        S[        U5       35      eXl        SU l        / U l        g )Nz*compile_id must be None or CompileId, got r   )r£   r#   r-   r]  r@   rW   Úshape_env_guards)r.   r@   s     r0   r7  ÚCompileContext.__init__S  sG   € ØÑ!¬*°ZÄ×*KÑ*KÜ Ø<¼TÀ*Ó=MÐ<NÐOóð ð -7ŒØˆŒà+-ˆÕr3   c                 óJ   • [         R                  5       n U c  g U R                  $ rq   )r  r  r@   rZ   s    r0   Úcurrent_compile_idÚ!CompileContext.current_compile_id]  s"   € ä×%Ñ%Ó'ˆØ‰<ØØ�‰Ðr3   c                 óŽ   • [         R                  5       n U c  g U R                  c  g [        U R                  U R                  5      $ rq   )r  r  r@   rU   rW   rZ   s    r0   Úcurrent_trace_idÚCompileContext.current_trace_idd  s:   € ä×%Ñ%Ó'ˆØ‰<ØØ�?‰?Ñ"ØÜ�t—‘¨¯©Ó5Ð5r3   )rW   r@   r  N)rI   r  )rI   úCompileContext | None)r@   rL   rI   r  )rI   rL   )rI   zTraceId | None)rM   rN   rO   rP   r  rë  r  r7  r   r#  rS   r6   r3   r0   r  r  H  sU   † Øó$ó ð$ð
 ó6ó ð6ô.ð óó ðð ó6ó ó6r3   r  c                  ó8   • \ rS rSr% SrS\S'   S\S'   S\S'   S	rg
)ÚInlinedCodeCachein  z8Cache for code-object-derived data used during inlining.z	list[Any]Úinstructionszdict[Any, int]Úindexofúdict[str, Any]Úcode_optionsr6   N)rM   rN   rO   rP   rE  rQ   rS   r6   r3   r0   r'  r'  n  s   ‡ áBàÓØÓØ Ö r3   r'  c                  óV  • \ rS rSrSr\SS j5       r\SS j5       rSS jrSS jr	\\
SS j5       5       r\SS j5       rSS	 jr\\R                  SS
 j5       5       r\\R                      SS j5       5       r\\R                  SS j5       5       r\SS j5       r\SS j5       rSrg)r•  iw  zµ
Provides the currently installed TracingContext, or None.

Note that it is a staticmethod, and invocations outside of `with tracing()` (see below), are valid but
will return None.
c                 ó$   • [        [        SS 5      $ )NÚtracing_contextr  r6   r3   r0   r  ÚTracingContext.try_get  r  r3   c                 óR   • [         R                  5       =n (       a  U $ [        S5      e)Nz<TracingContext.get() must be called within an ongoing trace.)r•  r  ÚRuntimeError)Úctxs    r0   rë  ÚTracingContext.getƒ  s+   € ä ×(Ñ(Ó*Ð*ˆ3Õ*ØˆJÜØJó
ð 	
r3   c                ó¨  • [        5       U l        [        5       U l        [	        5       U l        [        5       U l        [        5       U l        [        5       U l	        Xl
        / U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l        SU l        [+        5       U l        SU l        [1        5       U l        / U l        g r@  )rª  Úguards_contextrV  Úmodule_contextrm  Úglobal_contextrZ  Úpreviously_inlined_functionsÚpreviously_cleaned_instructionsÚinlined_code_cacheÚ	fake_modeÚframe_summary_stackÚloc_in_frameÚfw_metadataÚddp_optimizer_ctxÚaot_graph_nameÚparams_flatÚparams_flat_unwrap_subclassesÚparams_unwrapped_to_flat_indexÚoutput_stridesÚ#force_unspec_int_unbacked_size_liker   Útensor_to_contextÚfakify_first_callr  Úhop_dispatch_set_cacheÚtraced_code)r.   r;  s     r0   r7  ÚTracingContext.__init__‹  sÃ   € Ü+›oˆÔÜ+›oˆÔÜ+›oˆÔÜ<@»FˆÔ)Ü?C»vˆÔ,ä?C»vˆÔØ09ŒØACˆÔ ð :>ˆÔà7;ˆÔà=AˆÔà04ˆÔØ-1ˆÔØ?CˆÔ*Ø@DˆÔ+ð DHˆÔð 49ˆÔ0ä!8Ó!:ˆÔð
 "'ˆÔÜ&9Ó&;ˆÔ#à+-ˆÕr3   c                óÂ   • 0 U R                   l        U R                  R                  5         U R                  R                  5         U R
                  R                  5         g rq   )r7  rc  r8  Úclearr9  r:  rZ   s    r0   rL  ÚTracingContext.clearÀ  sH   € ð ,.ˆ×ÑÔ(Ø×)Ñ)×/Ñ/Ô1Ø×,Ñ,×2Ñ2Ô4Ø×Ñ×%Ñ%Õ'r3   c               +  óV  #   • 0 n[         R                  5       nU  H  n[        X#5      X'   M     U R                  5        H  u  p4[	        X#U5        M      S v •  UR                  5        H  u  p4[	        X#U5        M     g ! UR                  5        H  u  p4[	        X#U5        M     f = f7frq   )r•  rë  r  r;   Úsetattr)ÚkwargsÚpriorr2  rÁ  Úvals        r0   ÚpatchÚTracingContext.patchÈ  sŽ   é € ð ˆÜ× Ñ Ó"ˆãˆCä  Ó*ˆE‹Jñ ð Ÿ™ž‰HˆCÜ�C˜cÖ"ñ 'ð	'Ûà!ŸK™KžM‘�Ü˜ #Ö&ò *ø˜EŸK™KžM‘�Ü˜ #Ö&ò *üs   ‚AB)ÁA? Á&B)Á?'B&Â&B)c                 óð   • [         R                  5       n U c  [        R                  " 5       $ U R                  nU R
                  b  XR                  5       /-   n[        R                  R                  U5      $ rq   )r•  r  Ú	tracebackÚStackSummaryr<  r=  Ú_populate_loc_in_frame_summaryÚ	from_list)r.   r¸   s     r0   r–  ÚTracingContext.extract_stackÙ  sf   € ä×%Ñ%Ó'ˆØ‰<Ü×)Ò)Ó+Ð+Ø×(Ñ(ˆØ×ÑÑ(Ø×@Ñ@ÓBÐCÑCˆEÜ×%Ñ%×/Ñ/°Ó6Ð6r3   c                ó|   • U R                   c  [        S5      eU R                   u  pn[        R                  " XUSS9$ )Nzloc_in_frame must not be NoneF)Úlookup_line)r=  r-   rV  ÚFrameSummary)r.   ÚfilenameÚlinenoÚ
frame_names       r0   rX  Ú-TracingContext._populate_loc_in_frame_summaryã  s@   € Ø×ÑÑ$Ü Ð!@ÓAÐAØ'+×'8Ñ'8Ñ$ˆ˜*Ü×%Ò% h¸
ÐPUÑVÐVr3   c               #  óª  #   • [         R                  5       n [        R                  R                  R                  U S/ 5         [        R                  R                  R                  U SS 5          S v •   S S S 5        S S S 5        g ! [         a  n[        US5      (       d  S Ul        e S nAff = f! , (       d  f       NB= f! , (       d  f       g = f7f)Nr<  r=  Ú
real_stack)	r•  rë  ÚunittestÚmockrS  r  r>   Úhasattrrc  )ÚtcrE   s     r0   Úclear_frameÚTracingContext.clear_frameë  s£   é € ô ×ÑÓ!ˆä�M‰M×Ñ×&Ñ& rÐ+@À"ÕEÜ�M‰M×Ñ×&Ñ& r¨>¸4Õ@ðÜ÷ A÷ FÐEøô
 ó ô$ ˜q ,×/Ñ/Ø#'�A”LØûð)ú÷	 AÕ@ú÷ FÕEüsT   ‚A CÁ,CÁ.B1Á0BÁ5CÁ=	CÂ
B.ÂB)Â)B.Â.B1Â1
B?	Â;CÃ
CÃCc              #  óª  #   • [         R                  5       nU b  UR                  R                  U 5        UR                  nS Ul         S v •   U b  UR                  R                  5         X!l        g ! [
         a,  n[        US5      (       d  UR                  5       Ul        e S nAff = f! U b  UR                  R                  5         X!l        f = f7f)Nrc  )
r•  rë  r<  r	  r=  r>   rf  r–  rc  Úpop)Úframe_summaryrg  ÚoldrE   s       r0   Úcurrent_frameÚTracingContext.current_frame  s·   é € ô ×ÑÓ!ˆØÑ$Ø×"Ñ"×)Ñ)¨-Ô8Ø�o‰oˆØˆŒð		"Üð Ñ(Ø×&Ñ&×*Ñ*Ô,Ø!�Oøô ó 	Ü˜1˜l×+Ñ+Ø!×/Ñ/Ó1�”Øûð	ûð
 Ñ(Ø×&Ñ&×*Ñ*Ô,Ø!�Oüs6   ‚ACÁ	A2 Á$CÁ2
B(Á<'B#Â#B(Â(B+ Â+%CÃCc               #  óª   #   • [         R                  5       n U c  S v •  g U R                  n/ U l         U R                  v •  Xl        g ! Xl        f = f7frq   )r•  r  rD  )rg  Úold_output_stridess     r0   Úreport_output_stridesÚ$TracingContext.report_output_strides"  sT   é € ô
 ×#Ñ#Ó%ˆØ‰:ØŠJØØ×.Ñ.ÐØˆÔð	3Ø×#Ñ#Ò#à 2ÕøÐ 2Õüs   ‚0A³A ÁAÁAÁAc                ó:   • XU4[         R                  5       l        g rq   )r•  rë  r=  )r^  r_  r`  s      r0   Úset_current_locÚTracingContext.set_current_loc2  s   € ð .6¸zÐ,JŒ×ÑÓÕ)r3   c                 óJ   • [         R                  5       n U c  g U R                  $ rq   )r•  r  rI  )rg  s    r0   Úget_traced_codeÚTracingContext.get_traced_code8  s"   € ä×#Ñ#Ó%ˆØ‰:ØØ�~‰~Ðr3   )r@  r?  r;  rG  rE  r<  r>  r7  r5  rH  r:  r=  r6  rD  rA  rB  rC  r9  r8  rF  rI  N)rI   úTracingContext | None)rI   r•  )r;  úFakeTensorMode | NonerI   r  r"  )rP  r   rI   úGenerator[None, None, None])rI   ztraceback.StackSummary)rI   ztraceback.FrameSummary)rI   r|  )rl  ztraceback.FrameSummary | NonerI   r|  )rI   z:Generator[list[tuple[int, ...] | None] | None, None, None])r^  rJ   r_  r<   r`  rJ   rI   r  )rI   zlist[CodeType] | None)rM   rN   rO   rP   rE  r  r  rë  r7  rL  r   rS  r–  rX  Ú
contextlibrh  rn  rr  ru  rx  rS   r6   r3   r0   r•  r•  w  s  † ñð ó6ó ð6ð ó
ó ð
ô3.ôj(ð Øó'ó ó ð'ð ó7ó ð7ôWð Ø×Ñóó ó ðð< Ø×Ñð"Ø4ð"à	$ó"ó ó ð"ð* Ø×Ñó3ó ó ð3ð óKó ðKð
 óó ór3   r•  c              #  ó„   #   • [        [        SS 5      nU [        l         U v •  U[        l        g ! U[        l        f = f7fr  )r  r  r  )ÚcontextÚold_contexts     r0   r  r  @  s8   é € ô œ$Ð 1°4Ó8€KØ"„DÔð+ØŠà*ŒÕø˜{ŒÕüs   ‚A  0 ¤A °=½A c              #  ó*  #   • [        [        SS5      nU [        l         U v •   U bH  U R                  b;  U R                  R                  b$  U R                  R                  R                  5         U[        l        g! [         a/  n[	        US5      (       d  U b  U R                  5       Ul        e SnAff = f! U bH  U R                  b;  U R                  R                  b$  U R                  R                  R                  5         U[        l        f = f7f)z·
This function installs the passed in tracing context as a dynamic scoped
global variable.

Calls to TracingContext.get() while not under a `with tracing()` context
will return None.
r.  Nrc  )
r  r  r.  r>   rf  r–  rc  r;  Ú	shape_envÚcleanup)r  r€  rE   s      r0   Útracingr„  L  së   é € ô œ$Ð 1°4Ó8€KØ"„DÔð+Ø‹ð ÑØ×!Ñ!Ñ-Ø×!Ñ!×+Ñ+Ñ7à×Ñ×'Ñ'×/Ñ/Ô1Ø*ŒÕøô ó Ü�q˜,×'Ñ'¨GÑ,?Ø"×0Ñ0Ó2ˆAŒLØûðûð ÑØ×!Ñ!Ñ-Ø×!Ñ!×+Ñ+Ñ7à×Ñ×'Ñ'×/Ñ/Ô1Ø*ŒÕüs5   ‚D A< ¥ADÁ<
B5Â*B0Â0B5Â5B8 Â8ADÄDc                ó   • g rq   r6   ©r?   rP  s     r0   Údataclass_with_cached_hashr‡  i  r¾  r3   c                ó   • g rq   r6   r†  s     r0   r‡  r‡  m  s   € ð $'r3   c                ó.   ^• SU4S jjnU c  U$ U" U 5      $ )Nc                ó~   >^• [         R                  " U 40 TD6nU R                  mSU4S jjnS nX!l        X1l        U$ )Nc                óx   >• [        U S5      (       d  [        R                  U ST" U 5      5        U R                  $ )Nrº   )rf  r  Ú__setattr__rº   )r.   Úold_hashs    €r0   rÁ   Ú:dataclass_with_cached_hash.<locals>.wrap.<locals>.__hash__{  s0   ø€ Ü˜4 ×)Ñ)Ü×"Ñ" 4¨±(¸4³.ÔAØ—:‘:Ðr3   c                óv   ^ • [         R                  " T 5      n[        U 4S jU 5       5      nT R                  U4$ )Nc              3  óP   >#   • U  H  n[        TUR                  5      v •  M     g 7frq   )r  r¾   )r£  Úfr.   s     €r0   r¤  ÚOdataclass_with_cached_hash.<locals>.wrap.<locals>.__reduce__.<locals>.<genexpr>…  s   øé € Ð GÂ¸1¤¨¨q¯v©v×!6Ð!6Âùs   ƒ#&)ÚdataclassesÚfieldsÚtuplerå   )r.   r”  Úfield_valuess   `  r0   Ú
__reduce__Ú<dataclass_with_cached_hash.<locals>.wrap.<locals>.__reduce__€  s4   ø€ ô !×'Ò'¨Ó-ˆFÜ Ô GÁÓ GÓGˆLØ—N‘N LÐ1Ð1r3   r  )r“  r   rÁ   r—  )Ú	cls_innerÚnew_clsrÁ   r—  r�  rP  s       @€r0   ÚwrapÚ(dataclass_with_cached_hash.<locals>.wrapw  s@   ù€ Ü×'Ò'¨	Ñ<°VÑ<ˆØ×%Ñ%ˆ÷	ò
	2ð $ÔØ'ÔØˆr3   )r™  útype[T]rI   r�  r6   )r?   rP  r›  s    ` r0   r‡  r‡  s  s   ø€ ÷ð* �{Øˆá�‹9Ðr3   c                  óÎ   • \ rS rSrSS jrSS jrSS jr\R                  SS j5       r	\
SS j5       r\R                  SS j5       r        SS jrSS	 jrSS
 jrSS jrSrg)r°   i”  c                ó   • gr@  r6   rZ   s    r0   Úis_dict_keyÚSource.is_dict_key–  ó   € Ør3   c                ó   • gr@  r6   rZ   s    r0   Úis_ephemeralÚSource.is_ephemeral™  r¢  r3   c                ó   • [         erq   ©ÚNotImplementedError)r.   Úcodegens     r0   ÚreconstructÚSource.reconstructœ  s   € Ü!Ð!r3   c                ó   • [         erq   r§  rZ   s    r0   rÞ   ÚSource.guard_sourceŸ  s   € ä!Ð!r3   c                ó   • [         e)a‚  
A template for the name of the source. Used to prevent code duplication between
`name` and `get_value`.

For non-ChainedSources, `name` and `get_value` use the returned string directly.

For ChainedSources, `name` and `get_value` expect the return to be a format string
with `{0}` present - `name` and `get_value` will apply different values to this function's
returned format string.
r§  rZ   s    r0   Ú_name_templateÚSource._name_template£  s
   € ô "Ð!r3   c                ó   • U R                   $ rq   )r¯  rZ   s    r0   r¾   ÚSource.name±  s   € à×"Ñ"Ð"r3   c                óL   • X;   a  X0   $ [        U R                  X5      nXCU '   U$ rq   )Úevalr¯  )r.   ÚglobalsÚlocalsÚcacherÌ   s        r0   Ú	get_valueÚSource.get_valueµ  s/   € ð ‹=Ø‘;ÐÜ�T×(Ñ(¨'Ó:ˆØˆd‰Øˆr3   c                ó^   • U R                   [        R                  L a  [        e[	        X5      $ rq   )rÞ   r^   r�   r¨  r®   )r.   Úfns     r0   Ú
make_guardÚSource.make_guardÁ  s&   € Ø×Ñ¤× 4Ñ 4Ò4Ü%Ð%Ü�T‹Ðr3   c                ó6   • U R                   R                  5       $ rq   )rÞ   r}   rZ   s    r0   r}   ÚSource.is_specialized_nn_moduleÆ  s   € Ø× Ñ ×9Ñ9Ó;Ð;r3   c                ó<   • U R                   [        R                  :g  $ )z+True if you can guard on attributes of this)rÞ   r^   r•   rZ   s    r0   Úsubguards_allowedÚSource.subguards_allowedÉ  s   € à× Ñ ¤K×$?Ñ$?Ñ?Ð?r3   r6   Nr�   )r©  r   rI   r  r  rH   ©rµ  r*  r¶  r*  r·  z&weakref.WeakKeyDictionary[Source, Any]rI   r   )r»  zCallable[..., Any]rI   r®   )rM   rN   rO   rP   r   r¤  rª  rÅ   Úcached_propertyrÞ   r  r¯  r¾   r¸  r¼  r}   rÁ  rS   r6   r3   r0   r°   r°   ”  s”   † ôôô"ð ×Ñó"ó ð"ð ó"ó ð"ð ×Ñó#ó ð#ð
àð
ð ð
ð 6ð	
ð
 
ô
ôô
<÷@r3   r°   c                  ó¨   • \ rS rSr% S\S'   SS jrSS jr\R                  SS j5       r	SS jr
\R                  SS j5       r        SS	 jrS
rg)ÚChainedSourceiÏ  r°   Úbasec                ó6   • U R                   R                  5       $ rq   )rÇ  r   rZ   s    r0   r   ÚChainedSource.is_dict_keyÓ  s   € à�y‰y×$Ñ$Ó&Ð&r3   c                ó6   • U R                   R                  5       $ rq   )rÇ  r¤  rZ   s    r0   r¤  ÚChainedSource.is_ephemeral×  s   € Ø�y‰y×%Ñ%Ó'Ð'r3   c                ó.   • U R                   R                  $ rq   )rÇ  rÞ   rZ   s    r0   rÞ   ÚChainedSource.guard_sourceÚ  s   € à�y‰y×%Ñ%Ð%r3   c                óz   • U n[        U[        5      (       a#  UR                  n[        U[        5      (       a  M#  U$ rq   )r£   rÆ  rÇ  )r.   Úcurrents     r0   Úget_baseÚChainedSource.get_baseÞ  s1   € ØˆÜ˜¤-×0Ñ0Ø—l‘lˆGô ˜¤-×0Ó0àˆr3   c                ó`   • U R                   R                  U R                  R                  5      $ rq   )r¯  rû   rÇ  r¾   rZ   s    r0   r¾   ÚChainedSource.nameä  s!   € à×"Ñ"×)Ñ)¨$¯)©)¯.©.Ó9Ð9r3   c                óÞ   • X;   a  X0   $ SnSnXB;   a  SU 3nUS-  nXB;   a  M  U R                   R                  XU5      X$'   [        U R                  R	                  U5      X5      nX$	 XcU '   U$ )NÚtmpr   r`   )rÇ  r¸  r´  r¯  rû   )r.   rµ  r¶  r·  ÚtmpvarÚcounterrÌ   s          r0   r¸  ÚChainedSource.get_valueè  s…   € ð ‹=Ø‘;ÐØˆØˆØÓØ˜7˜)�_ˆFØ�q‰LˆGð Õð Ÿ™×,Ñ,¨W¸eÓDˆ‰Ü�T×(Ñ(×/Ñ/°Ó7¸ÓIˆØˆNØˆd‰Øˆr3   r6   Nr�   r  )rI   r°   rH   rÃ  )rM   rN   rO   rP   rQ   r   r¤  rÅ   rÄ  rÞ   rÐ  r¾   r¸  rS   r6   r3   r0   rÆ  rÆ  Ï  su   ‡ à
ƒLô'ô(ð ×Ñó&ó ð&ôð ×Ñó:ó ð:ðàðð ðð 6ð	ð
 
÷r3   rÆ  c                ó¤  • SSK JnJnJn  [        R                  5       =n(       a  UR                  nUb  U$ / nSSKJn  [        [        U" 5       5      5       H+  u  p‰[        X’5      (       d  M  UR                  U	SU45        M-     [        R                  " U 5      n
[        U
5       H±  u  p‹[        X±5      (       a  UR                  UR                  SU45        [        U5      (       d  ME  / nU" X¼S9  U Vs/ s H  n[        XÑ5      (       d  M  UPM     nnUR!                  [        U5       VVs/ s H  u  nnUR                  SU 3U4PM     snn5        M³     U(       ab  US   u  nnnUS	S  HN  u  n	nnXYLd  M  [#        S
U SU SU SU	 SU SU SU SU SUR$                   SU SU SU	R$                   35      e   U$ gs  snf s  snnf )ax  
Attempts to "detect" what the current fake mode is.  If there is one ambiently
available from TracingContext, we preferentially use that.  Otherwise, we
heuristically detect the fake mode via the following sources, in order of
priority:

    - Currently active fake mode on stack
    - Fake mode associated with passed in tensors (inputs does not
      have to be flattened)
r   )Ú
FakeTensorr   Úget_plain_tensorsN©Ú _get_current_dispatch_mode_stackzactive fake modezfake tensor input)Úoutzsubclass input r`   zfake mode (z) from rê   z doesn't match mode (z

fake mode from z allocated at:
z
fake mode from )Útorch._subclasses.fake_tensorrÚ  r   rÛ  r•  r  r;  Útorch.utils._python_dispatchrÝ  Ú	enumerateÚreversedr£   r	  ÚpytreeÚtree_leavesr   r
  r-   r¸   )ÚinputsrÚ  r   rÛ  r  r;  Ú
fake_modesrÝ  ÚiÚmÚflat_inputsÚ
flat_inputrÞ  ÚxÚfake_tensorsÚixÚtensorÚdesc1Úi1Údesc2Úi2s                        r0   Údetect_fake_moderó  ü  s  € ÷ñ ô !×(Ñ(Ó*Ð*€wÕ*Ø×%Ñ%ˆ	ØÑ ØÐà€JåMäœ(Ñ#CÓ#EÓFÖG‰ˆÜ�a×(Ó(Ø×Ñ˜qÐ"4°aÐ8Ö9ñ Hô ×$Ò$ VÓ,€KÜ" ;Ö/‰ˆÜ�j×-Ñ-Ø×Ñ˜z×3Ñ3Ð5HÈ!ÐLÔMÜ(¨×4Ó4Ø;=ˆCÙ˜jÒ2áó.Ú�a¤*¨Q×";—™3ð ð .ð ×Ñô '0°Ô&=ôâ&=™
˜˜Fð ×%Ñ%¨¸¸Ð'<¸bÓAÙ&=òöñ 0ö  Ø)¨!™}Ñˆ	�5˜"Ø& q r›N‰LˆAˆu�bØÔ!Ü$Ø! ) ¨G°E°7¸!¸B¸4Ð?TÐUVÐTWÐW^Ð_dÐ^eÐefÐgiÐfjð k&Ø&+ W¨A¨b¨TÐ1AÀ)Ç/Á/ÐARð S&Ø&+ W¨A¨b¨TÐ1AÀ!Ç'Á'ÀðLóð ñ +ð Ðàùò-.ùós   Ã9GÄGÄ2Gc                 óˆ   • SSK Jn   SSKJn  [	        [        U" 5       5      5       H  u  p#[        X05      (       d  M  Us  $    g)zr
Inspects the dispatch mode stack for an active fake mode and returns it.
Returns None if no fake mode is active.
r   r   rÜ  N)rß  r   rà  rÝ  rá  râ  r£   )r   rÝ  rY   rè  s       r0   Úactive_fake_moderõ  =  s:   € õ
 =ÝMäœ(Ñ#CÓ#EÓFÖG‰ˆÜ�a×(Ó(ØŠHñ Hð r3   )r  r%  rI   z,Generator[CompileContext | None, None, None])r  rz  rI   z,Generator[TracingContext | None, None, None])r?   r�  rP  r   rI   r�  rq   )r?   r  rP  r   rI   zCallable[[type[T]], type[T]])r?   ztype[T] | NonerP  r   rI   z&type[T] | Callable[[type[T]], type[T]])rå  r   rI   r{  )rI   r{  )bÚ
__future__r   r}  r“  ÚenumrÅ   ÚloggingÚreÚ	threadingrV  Úunittest.mockrd  râ   Úabcr   Úcollectionsr   r   r   Útypingr   r	   r
   r   r   r   r   Útyping_extensionsr   rÈ   Útorch.utilsr   rã  Útorch.utils._ordered_setr   rà  r   Útorch.utils._tracebackr   r   Útorch.utils.weakr   Ú	getLoggerrM   rö   Úcollections.abcr   r   r   Útypesr   ÚsympyÚ"torch._dynamo.backends.distributedr   Útorch._dynamo.codegenr   Ú&torch._functorch._aot_autograd.schemasr   rß  r   Úcompiler7   r8   r#   rU   ÚEnumr^   r˜   rœ   r§   r®   r  r  r  r$  r(  r2  rG  rV  ra  rm  r~  rª  r³  rß  r  Úlocalr  r  r'  r•  r  r„  r‡  r°   rÆ  ró  rõ  r6   r3   r0   Ú<module>r     sÅ  ðÝ "ã Û Û Û Û Û 	Û Û Û Û Ý Ý #Ý %Ý !ß W× WÑ WÝ 1ã Ý )Ý /Ý Fß BÝ 4ð ×Ò˜Ó!€ö ß=Ñ=ÝãåFÝ/ÝJÝ<ðð —Z’ZÐ PÓQÐ ØŸ
š
ØXóÐ ñ" �$ ¨DÑ1÷7Jð 7Jó 2ð7Jôt7ˆjô 7ô<
�$—)‘)ô <
ð~÷	ñ 	ð ×Ò˜dÑ#÷ð ó $ðô �ô ð ×Ò˜TÑ"÷u'ð u'ó #ðu'ñp ˆCƒL€ðð ×Ò˜dÑ#÷	ð 	ó $ð	ðð ×Ò˜dÑ#ô	�ló 	ó $ð	ðð ×Ò˜dÑ#ô*�\ó *ó $ð*ð

ô8�W˜Q‘Zô 8÷(ñ (÷8(ñ (ô0+�NÐ#?Ñ@ô +÷(ñ (ô0$�NÐ#?Ñ@ô $÷R,
ñ ,
ð^ô<�NÐ#8Ñ9ô <÷=ñ =ôB?8Ð*ô ?8÷D
&ñ 
&ð ‡‚Ó€ð÷&#6ñ #6ðL ÷!ð !ó ð!÷Fñ FðR ð+Ø"ð+à1ó+ó ð+ð ð+Ø"ð+à1ó+ó ð+ð8 
Û Kó 
Ø Kð 
àð'Ø	ð'Ø #ð'à!ô'ó 
ð'ñ
 ÓàðØ	ðØ*-ðà+ôó ðñ@  4Ñ(÷6@ð 6@ó )ð6@ñt  4Ñ(ô)�Fó )ó )ð)öX>õBr3   