ó
    Eñi½& ã                  ó4  • 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rS SK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Jr  S SKJr  S SKJr  S SKrS SKJs  Jr   S SKJ!r!J"r"J#r#J$r$  S S	K%J&r&J'r'  S S
K(J)r)  S SK*J+r+  S SK,J-r-  S SK.J/r/  S SK0J1r1J2r2J3r3J4r4J5r5  S SK6J7r7  S SK8J9r9  S SK:J;r;  S SK<J=r=  S SK>J?r?  S SK@JArAJBrB  S SKCJDrD  S SKEJFrFJGrG  S SKHJIrIJJrJJKrKJLrLJMrMJNrN  S SKOJPrP  S SKQJRrR  SSKSJTrTJUrUJVrV  \(       a.  S SKWJXrXJYrYJZrZJ[r[J\r\  S SKJ]r]  S SK^J_r_  S SK`Jara  S S KbJcrc  S S!KdJereJfrf  \RÎ                  " \h5      ri\RÔ                  R×                  \hS"5      rl \RÔ                  R×                  \hS#5      rm\qrr\R>                  Ræ                  rt\" S&5      ru\Rì                  Rî                  Rð                  rxSryS qz " S' S(5      r{\ " S) S*\|5      5       r}\ " S+ S,\|5      5       r~\ " S- S.\|5      5       r\ " S/ S0\|5      5       r€\ " S1 S2\|5      5       r�\ " S3 S4\|5      5       r‚ " S5 S6\	GR                  5      r„\„" 5       r…SuS7 jr†\GR                  SvS8 j5       rˆ\GR                  SwS: j5       r‰      SxS; jrŠSyS< jr‹SzS= jrŒ\GR                  S{S> j5       rŽ\GR                  S|S? j5       r�S}S@ jr�S~SA jr‘ " SB SC5      r’\GR                  SSD j5       r“\GR                      SwSE j5       r”S|SF jr• " SG SH5      r– " SI SJ5      r— " SK SL\$5      r˜\\ASMSN4   r™\" SOSP9 " SQ SR5      5       ršS€SS jr›\" SOSP9 " ST SU5      5       rœ " SV SW5      r�\" SOSOSX9 " SY SZ5      5       rž\" SOSOSX9 " S[ S\5      5       rŸ\" SOSOSX9 " S] S^5      5       r \(       a  \\Ÿ\ 4   r¡\" SOSOSX9 " S_ S`\¢5      5       r£\" SOSOSX9 " Sa Sb5      5       r¤ " Sc S9\G5      r¥\¦r§      S�Sd jr¨            S‚Se jr©        SƒSf jrª        SƒSg jr« " Sh Si\?5      r¬S„Sj jr­S…Sk jr®S†Sl jr¯\Rî                  GR`                  GRb                  GRd                  \­\Rî                  Rð                  GRf                  GRd                  Sm \Rî                  Rð                  GRh                  GRd                  Sn \Rî                  Rð                  GRj                  GRd                  So 0r¶\†" \Rî                  Rð                  GRn                  GRd                  \Rî                  Rð                  GRp                  GRd                  \Rî                  Rð                  GRr                  GRd                  \Rî                  GRt                  GRv                  GRx                  5      r½S SpK¾J¿r¿JÀrÀJÁrÁJÂrÂJÃrÃJÄrÄJÅrÅJÆrÆ  S‡Sq jrÇ\GR�                  SˆSr j5       rÉ        S‰Ss jrÊ        SŠSt jrËg! \n a.  roS$\p" \o5      ;   a  \RÎ                  " \hS%-   5      rm SroCoGNŒ\oeSroCoff = f)‹é    )ÚannotationsN)Údefaultdict)Ú	dataclass)ÚAnyÚcastÚLiteralÚOptionalÚTYPE_CHECKINGÚ	TypeGuardÚTypeVarÚUnion)ÚSelf)ÚReferenceType)ÚSymBoolÚSymFloatÚSymIntÚTensor)Úis_functorch_wrapped_tensorÚis_legacy_batchedtensor)ÚFakeScriptObject)ÚMissingOpProfile)Údtrace_structured)Úsuggest_memory_format)Ú	assert_eqÚassert_metadata_eqÚis_sparse_anyÚis_sparse_compressedÚMetaConverter)Úrender_call)Úimmutable_dict)Únormalize_function)ÚStorageWeakRef)ÚTorchFunctionMode)ÚIntLikeTypeÚpy_sym_types)Úno_dispatch)Úis_traceable_wrapper_subclassÚTorchDispatchMode)ÚKeyPathÚkeystrÚPyTreeÚtree_mapÚ	tree_map_ÚTreeSpec)Úcount)ÚCapturedTracebacké   )Ú_CacheKeyStateÚ_PySymInputStubÚ_SymIntOutputStub)ÚCallableÚ	GeneratorÚIterableÚMappingÚSequence)ÚTracebackType)ÚSource)Ú
OpaqueType)Ú
OpOverload)ÚShapeEnvÚSymbolicContextÚhierarchical_compileÚnot_implementedz 'not_implemented' not registeredz.not_implementedÚTc                  ó(   • \ rS rSrSS jrSS jrSrg)ÚIncrementRecursionCountéf   c                ó   • [         S-  q g ©Nr1   ©ÚRECURSION_COUNT©Úselfs    ÚZ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_subclasses/fake_tensor.pyÚ__init__Ú IncrementRecursionCount.__init__g   ó   € ä˜1Ñ‰ó    c                ó   • [         S-  q g rG   rH   rJ   s    rL   Ú__del__ÚIncrementRecursionCount.__del__k   rO   rP   © N©ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rM   rR   Ú__static_attributes__rT   rP   rL   rD   rD   f   s   † ô÷rP   rD   c                  ó    • \ rS rSr% S\S'   Srg)ÚUnsupportedFakeTensorExceptionép   ÚstrÚreasonrT   N©rX   rY   rZ   r[   Ú__annotations__r\   rT   rP   rL   r^   r^   p   ó   ‡ à†KrP   r^   c                  ó    • \ rS rSr% S\S'   Srg)ÚDynamicOutputShapeExceptionéu   r=   ÚfuncrT   Nrb   rT   rP   rL   rf   rf   u   ó   ‡ à
ÖrP   rf   c                  ó    • \ rS rSr% S\S'   Srg)ÚDataDependentOutputExceptionéz   r=   rh   rT   Nrb   rT   rP   rL   rk   rk   z   ri   rP   rk   c                  ó    • \ rS rSr% S\S'   Srg)ÚUnsupportedOperatorExceptioné   r=   rh   rT   Nrb   rT   rP   rL   rn   rn      ri   rP   rn   c                  ó    • \ rS rSr% S\S'   Srg)Ú$UnsupportedMutationAliasingExceptioné„   r`   ra   rT   Nrb   rT   rP   rL   rq   rq   „   rd   rP   rq   c                  ó    • \ rS rSr% S\S'   Srg)ÚMetadataMismatchErroré‰   r`   ra   rT   Nrb   rT   rP   rL   rt   rt   ‰   rd   rP   rt   c                  ó4   • \ rS rSr% S\S'   S\S'   S	S jrSrg)
ÚFakeTensorTLSéŽ   zbool | NoneÚallow_non_fake_inputs_overridezweakref.WeakSet[FakeTensor]Ú%non_strict_export_fake_tensor_trackerc                óF   • S U l         [        R                  " 5       U l        g ©N)ry   ÚweakrefÚWeakSetrz   rJ   s    rL   rM   ÚFakeTensorTLS.__init__”   s   € Ø.2ˆÔ+Ü5<·_²_Ó5FˆÕ2rP   )ry   rz   NrU   )rX   rY   rZ   r[   rc   rM   r\   rT   rP   rL   rw   rw   Ž   s   ‡ ð %0Ó/Ø+FÓF÷GrP   rw   c                 ó.   • [         R                  U S5      $ ©NT)ÚdictÚfromkeys)Úitemss    rL   Úordered_setr…   œ   s   € Ü�=‰=˜ Ó%Ð%rP   c               #  ó.  #   • [         R                  R                  [         R                  R                  R                  5      n  U v •  U b   [         R                  R                  U 5        g g ! U b   [         R                  R                  U 5        f f = f7fr|   )ÚtorchÚ_CÚ_unset_dispatch_modeÚ_TorchDispatchModeKeyÚFAKEÚ_set_dispatch_mode)Úolds    rL   Úunset_fake_temporarilyrŽ       sk   é € ä
�(‰(×
'Ñ
'¬¯©×(FÑ(F×(KÑ(KÓ
L€Cð-ØŠ	à‰?Ü�H‰H×'Ñ'¨Õ,ð øˆ3‰?Ü�H‰H×'Ñ'¨Õ,ð üs   ‚ABÁA- Á	$BÁ-%BÂBÚFakeTensorModec              #  ó^   #   • U R                   n SU l         S v •  Xl         g ! Xl         f = f7f)NF)Úcache_enabled)Ú	fake_modeÚ	old_values     rL   Údisable_fake_tensor_cacher”   ª   s,   é € à×-Ñ-€Ið,Ø"'ˆ	ÔÛà"+Õø )Õüs   ‚-�" ›-¢*ª-c               ó   ^• U /nU(       ar  UR                  5       m[        T5      (       d  UR                  T5        M:  TR                  5       u  p4UR	                  U4S j[        U5       5       5        U(       a  Mr  U$ )Nc              3  ó<   >#   • U  H  n[        TU5      v •  M     g 7fr|   )Úgetattr)Ú.0ÚkeyÚcurrs     €rL   Ú	<genexpr>Ú$get_plain_tensors.<locals>.<genexpr>À   s   øé € ÐGÒ2F¨3”G˜D #×&Ð&Ò2Fùs   ƒ)Úpopr'   ÚappendÚ__tensor_flatten__ÚextendÚreversed)ÚsubclassÚoutÚtodoÚ
inner_keysÚ_rš   s        @rL   Úget_plain_tensorsr§   ´   si   ø€ ð ˆ:€DÞ
Ø�x‰x‹zˆÜ,¨T×2Ñ2Ø�J‰J�tÔÙà×/Ñ/Ó1‰ˆ
Ø�‰ÔG´(¸:Ô2FÓGÔG÷ ˆ$ð €JrP   c                ó@  • SSK Jn  [        U [        5      (       a  g[	        U 5      (       am  [        U 5      R                  U 5      u  p#U Vs/ s H  n[        X5      PM     nn[        S U 5       5      n[        S U 5       5      nXg:w  a  [        S5      eU$ [        X5      (       a  [        U R                  5      $ [        U [        5      (       am  [        R                  " U 5      (       aR  [        R                   R#                  5       n[        R                   R$                  R'                  X5      n	[        U	5      $ [        U [        5      (       aD  [)        U 5      (       a4  [        R                   R$                  R+                  U 5      n	[        U	5      $ gs  snf )Nr   ©ÚFunctionalTensorTc              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr|   ©Úis_fake©r˜   Úxs     rL   r›   Úis_fake.<locals>.<genexpr>Í   ó   é € Ð=Ò+< a”w˜q—z�zÒ+<ùó   ‚c              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr|   r¬   r®   s     rL   r›   r°   Î   r±   r²   z got mixed fake and real tensors!F)Ú#torch._subclasses.functional_tensorrª   Ú
isinstanceÚ
FakeTensorr'   ÚtyperŸ   r—   ÚallÚanyÚAssertionErrorr­   Úelemr   r‡   Ú_is_functional_tensorrˆ   Ú$_functionalization_reapply_views_tlsÚ
_functorchÚ_unwrap_functional_tensorr   Úget_unwrapped)
r¯   rª   Úattrsr¦   ÚattrÚflattened_tensorsÚall_fakeÚany_fakeÚreapply_viewsÚ	unwrappeds
             rL   r­   r­   Å   s<  € ÝDä�!”Z× Ñ ØÜ$ Q×'Ñ'Ü˜“7×-Ñ-¨aÓ0‰ˆÙ:?Ó@º%°$œW QÖ-¹%ÐÐ@ÜÑ=Ñ+<Ó=Ó=ˆÜÑ=Ñ+<Ó=Ó=ˆØÓÜ Ð!CÓDÐDØˆÜ	�A×	(Ñ	(Ü�q—v‘v‹ÐÜ	�A”v×	Ñ	¤5×#>Ò#>¸q×#AÑ#AÜŸ™×EÑEÓGˆÜ—H‘H×'Ñ'×AÑAÀ!ÓSˆ	Ü�yÓ!Ð!Ü	�A”v×	Ñ	Ô#>¸q×#AÑ#AÜ—H‘H×'Ñ'×5Ñ5°aÓ8ˆ	Ü�yÓ!Ð!Øùò As   ÁFc           	     óB  ^• SSK Jn  [        U [        5      (       a  U R                  $ [        U 5      (       ab  U R                  5       u  p#U Vs/ s H  n[        [        X5      5      PM     nnUS   m[        U4S jU 5       5      (       d  [        S5      eT$ [        X5      (       a  [        U R                  5      $ [        U [        5      (       am  [        R                  " U 5      (       aR  [        R                  R!                  5       n[        R                  R"                  R%                  X5      n[        U5      $ [        U [        5      (       aD  ['        U 5      (       a4  [        R                  R"                  R)                  U 5      n[        U5      $ g s  snf )Nr   r©   c              3  ó,   >#   • U  H	  nTUL v •  M     g 7fr|   rT   )r˜   r¯   Úms     €rL   r›   Ú&maybe_get_fake_mode.<locals>.<genexpr>é   s   øé € Ð)¢5˜a�1˜•6¢5ùs   ƒz&All fake tensor modes must be the same)r´   rª   rµ   r¶   r’   r'   rŸ   Úmaybe_get_fake_moder—   r¸   rº   r»   r   r‡   r¼   rˆ   r½   r¾   r¿   r   rÀ   )	Útrª   Úinner_tensor_namesr¦   Út_nameÚmodesrÆ   rÇ   rÊ   s	           @rL   rÌ   rÌ   Þ   sB  ø€ ÝDä�!”Z× Ñ Ø�{‰{ÐÜ$ Q×'Ñ'Ø !× 4Ñ 4Ó 6ÑÐáBTó
ÚBT¸Ô¤¨Ó 2Ö3ÑBTð 	ð 
ð �!‰HˆÜÔ)¡5Ó)×)Ñ)Ü Ð!IÓJÐJØˆÜ	�A×	(Ñ	(Ü" 1§6¡6Ó*Ð*Ü	�A”v×	Ñ	¤5×#>Ò#>¸q×#AÑ#AÜŸ™×EÑEÓGˆÜ—H‘H×'Ñ'×AÑAÀ!ÓSˆ	Ü" 9Ó-Ð-Ü	�A”v×	Ñ	Ô#>¸q×#AÑ#AÜ—H‘H×'Ñ'×5Ñ5°aÓ8ˆ	Ü" 9Ó-Ð-Øùò!
s   ÁFc                óT   • [         R                  R                  U R                  5      $ r|   )r‡   rˆ   Ú_SchemaInfoÚ_schema©rh   s    rL   Úget_schema_inforÕ   ø   s   € ä�8‰8×Ñ §¡Ó-Ð-rP   c                ó¾   • SSK Jn  [        R                  R                  nX   R
                  R                  S5      =(       a    X   R                  [        U5      ;   $ )Nr   ©Údecomposition_tableztorch._decomp)	Útorch._decomprØ   r‡   Ú_decompÚdecompositionsrY   Ú
startswithrX   Údir)rh   rØ   rÛ   s      rL   Útorch_decomp_decompositionsrÞ     sR   € å1ä—]‘]×1Ñ1€Nð Ñ$×/Ñ/×:Ñ:Øó÷ Dà
Ñ
#×
,Ñ
,´°NÓ0CÑ
CðDrP   c                ó€   • [         R                  U5      nU Vs/ s H  n[        X05      (       d  M  UPM     sn$ s  snf r|   )ÚpytreeÚtree_leavesrµ   )ÚtyÚtreeÚ	flat_valsr»   s       rL   Útree_flatten_onlyrå     s1   € Ü×"Ñ" 4Ó(€IÙ&Ó?šY�T¬*°T×*>�D™YÑ?Ð?ùÒ?s   š;²;c                óD  • [        U 5      [        L =(       a‰    U R                  [        R                  :H  =(       ae    U R
                  =(       dM    U R                  =(       d:    [        U 5      =(       d(    [        U 5      =(       d    [        R                  " U 5      (       + $ r|   )
r·   r   Úlayoutr‡   ÚstridedÚ	is_sparseÚ	is_nestedr   r   r¼   )rÍ   s    rL   Ú_is_plain_tensorrë     sx   € äˆQ‹”6Ð÷ 	
Ø�H‰HœŸ™Ñ%÷	
ð �K‰K÷ .Ø�{‰{÷.ä*¨1Ó-÷.ô ' qÓ)÷.ô ×*Ò*¨1Ó-ô
ð
rP   c                  óì   • \ rS rSr% \  SS j5       rS\S'   S\S'   S\S'   S	S	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.               SS jjjr  S           SS jjrSrg) ÚFakeTensorConverteri&  c                ó.   • U R                   R                  $ r|   )Úmeta_converterÚtensor_memorJ   s    rL   rð   ÚFakeTensorConverter.tensor_memo'  s   € ð ×"Ñ"×.Ñ.Ð.rP   zMetaConverter[FakeTensor]rï   z5dict[StorageWeakRef, list[ReferenceType[FakeTensor]]]Úconstant_storage_mappingÚboolÚexportF©Ú	copy_datarô   c               ó:   • [        US9U l        X l        0 U l        g )N)rö   )r   rï   rô   rò   )rK   rö   rô   s      rL   rM   ÚFakeTensorConverter.__init__3  s   € Ü+°iÑ@ˆÔØŒð )+ˆÕ%rP   c                óD  • [        U[        5      (       a  UR                  c  [        S5      e[	        UR                  R                  5       5      nX R                  ;  a  / U R                  U'   U R                  U   R                  [        R                  " U5      5        g )Nz0fake_tensor must be a FakeTensor with a constant)
rµ   r¶   Úconstantrº   r"   Ú_typed_storagerò   rž   r}   Úref)rK   Úfake_tensorÚweak_sts      rL   Úadd_constant_storage_mappingÚ0FakeTensorConverter.add_constant_storage_mapping:  s�   € ô ˜+¤z×2Ñ2°k×6JÑ6JÑ6RÜ Ð!SÓTÐTÜ  ×!5Ñ!5×!DÑ!DÓ!FÓGˆð
 ×7Ñ7Ó7Ø57ˆD×)Ñ)¨'Ñ2Ø×%Ñ% gÑ.×5Ñ5´g·k²kÀ+Ó6NÕOrP   c                ó"  • [        U[        5      (       a  [        S5      e[        UR	                  5       5      nX R
                  ;  a  g U R
                  U    H&  nU" 5       nUc  M  UR                  5         S Ul        M(     U R
                  U	 g )Nz(Expected a real tensor, not a FakeTensor)rµ   r¶   rº   r"   rû   rò   Ú_fix_weakrefrú   )rK   Útensorrþ   Úweak_tensor_refÚtens        rL   Úinvalidate_constant_aliasesÚ/FakeTensorConverter.invalidate_constant_aliasesI  sƒ   € Ü�fœj×)Ñ)Ü Ð!KÓLÐLä  ×!6Ñ!6Ó!8Ó9ˆØ×7Ñ7Ó7Øà#×<Ñ<¸WÔEˆOÙ!Ó#ˆCØ‹à× Ñ Ô"Ø#�–ñ  Fð ×)Ñ)¨'Ñ2rP   c                óž   • U R                   R                  R                  R                  U5      nUc  g U R                  R                  U5      $ r|   )rï   Ú	describerÚlookup_tensorÚgetrð   )rK   rÍ   Útids      rL   Ú	_get_memoÚFakeTensorConverter._get_memoZ  sC   € Ø×!Ñ!×+Ñ+×9Ñ9×=Ñ=¸aÓ@ˆØ‰;ØØ×Ñ×#Ñ# CÓ(Ð(rP   c                ó~   • U R                   R                  R                  U5      nX R                   R                  U'   g r|   )rï   r	  Úget_tensor_idrð   )rK   rÍ   Úvr  s       rL   Úset_tensor_memoÚ#FakeTensorConverter.set_tensor_memo`  s2   € Ø×!Ñ!×+Ñ+×9Ñ9¸!Ó<ˆØ/0×Ñ×'Ñ'¨Ò,rP   NT)ÚsourceÚsymbolic_contextÚtracec          	     ó°  ^^• U(       d”  U(       d�  U(       a†  [         R                  R                  R                  5       =n(       aW  X(R                  ;   aH  UR                  U   nSSKJn	  [        Xi5      (       d  [        S[        U5       35      eUR                  nU R                  U5      n
U
b  U
$ UR                  (       a  [        S5      e[        U5      [         R                  R                  L a  U(       a  [        S5      eU(       a  UOS m      SUU4S jjnU R!                  UUUUUUS9nU["        L a  [        S5      eSS	KJn  S nU R(                  (       GdÈ  [+        U5      (       Ga·  UR-                  5       S:X  Ga¢  UR.                  R                  S
:X  Ga‡  UR0                  [         R2                  [         R4                  [         R6                  [         R8                  [         R:                  4;   Ga+  UGb'  [        X]5      (       Gd  UGb  SSKJnJn  SSKJ n  [C        5          URE                  5       nS S S 5        [F        RH                  " U5      (       dÆ  [F        RJ                  " U5      (       d«  [        UU5      (       a  URL                  nOU" U5      nURO                  UUURP                  US9nUR0                  [         R2                  :X  a  URS                  UUUS9Ul*        O4UR0                  [         R:                  :X  a  URW                  UUUS9Ul*        U(       a  U RY                  U5        U$ ! , (       d  f       GN
= f)Nr   )ÚStatefulSymbolicContextz&Expected StatefulSymbolicContext, got zquantized nyi in meta tensorsz,make_constant must be False for nn.Parameterc                óp   >• [        5          [        TU " 5       UTS9sS S S 5        $ ! , (       d  f       g = f)N©rú   )r&   r¶   )Úmake_meta_tÚdevicerú   r’   s     €€rL   Úmk_fake_tensorÚ<FakeTensorConverter.from_real_tensor.<locals>.mk_fake_tensor“  s,   ø€ ô •Ü!Øá“Màð &ñ	÷ ——ús   Œ'§
5)Ú	shape_envÚcallbackr  r  r  zmeta converter nyi)ÚRandomValueSourceÚcpu)ÚCallMethodItemSourceÚFloatTensorSource)Ú
DimDynamic)r  Údynamic_dimr  )Úhintr  )r  zCallable[[], object]r  zUnion[torch.device, str]rV   r¶   )-r‡   Ú_guardsÚTracingContextÚtry_getÚtensor_to_contextÚ%torch.fx.experimental.symbolic_shapesr  rµ   rº   r·   Útensor_sourcer  Úis_quantizedr^   ÚnnÚ	Parameterrï   ÚNotImplementedÚtorch._dynamo.sourcer!  rô   rë   Údimr  ÚdtypeÚint64Úint32Úint16Úint8Úfloat64r#  r$  r%  r&   ÚitemÚmathÚisnanÚisinfÚbaseÚcreate_unspecified_symbolÚDYNAMICÚcreate_symintnodeÚ	item_memoÚcreate_symfloatnoderÿ   )rK   r’   rÍ   Úmake_constantr  r  r  r  Útracing_contextr  Ú
maybe_memor  r£   r!  Úvaluer#  r$  r%  Úitem_sourceÚsymbolrú   s    `                  @rL   Úfrom_real_tensorÚ$FakeTensorConverter.from_real_tensorj  sÌ  ù€ ö  ®¶9Ü"'§-¡-×">Ñ">×"FÑ"FÓ"HÐHˆÕHØ×9Ñ9Ó9Ø'6×'HÑ'HÈÑ'KÐ$õô &Ð&6×PÑPÜ,ØDÄTÐJZÓE[ÐD\Ð]óð ð .×;Ñ;�Fà—^‘^ AÓ&ˆ
ØÑ!ØÐà�>�>Ü0Ð1PÓQÐQÜ�‹7”e—h‘h×(Ñ(Ò(ÞÜ$Ð%SÓTÐTæ%‘1¨4ˆð
	Ø-ð	Ø7Oð	à÷	ð 	ð, ×!Ñ!ØØØ#ØØ-Øð "ð 
ˆð ”.Ò Ü0Ð1EÓFÐFå:àˆà——�Ü  ×#Ò#Ø—‘“˜1”Ø—‘—‘ Ô&ð —‘Ü—‘œUŸ[™[¬%¯+©+´u·z±zÄ5Ç=Á=ÐQôRàÒ"ô$ ˜v×9Ò9ð Ò%çTÝHä•ØŸ™›�÷ ä—:’:˜e×$Ñ$¬T¯ZªZ¸×->Ñ->ä˜fÐ&7×8Ñ8Ø"(§+¡+‘Ká"6°vÓ">�KØ"×<Ñ<ØØ&Ø *× 2Ñ 2Ø%5ð	 =ð �ð —7‘7œeŸk™kÓ)Ø$-×$?Ñ$?ØØ"Ø*ð %@ð %�C•Mð
 —W‘W¤§¡Ó-Ø$-×$AÑ$AØØ"Ø*ð %Bð %�C”Mö
 Ø×-Ñ-¨cÔ2àˆ
÷? –ús   È2MÍ
Mc                óä   • UR                   R                  S:w  a#  [        SUR                   R                   S35      eU R                  U5      nUb  U$ [	        XX4US9nU R                  X'5        U$ )NÚmetaz$tensor's device must be `meta`, got z instead)ÚpytypeÚdispatch_keys)r  r·   rº   r  r¶   r  )rK   r’   rÍ   r  rN  rO  rF  r£   s           rL   Úfrom_meta_and_deviceÚ(FakeTensorConverter.from_meta_and_device   sw   € ð �8‰8�=‰=˜FÓ"Ü Ø6°q·x±x·}±}°oÀXÐNóð ð
 —^‘^ AÓ&ˆ
ØÑ!ØÐÜØ˜&¸}ñ
ˆð 	×Ñ˜QÔ$Øˆ
rP   )rò   rô   rï   )rV   zRweakref.WeakValueDictionary[torch._subclasses.meta_utils.MetaTensorId, FakeTensor])rö   ró   rô   ró   rV   rW   )rý   r¶   rV   rW   )r  r   rV   rW   )rÍ   r   rV   úOptional[FakeTensor])rÍ   r   r  r¶   rV   rW   )FN)r’   r�   rÍ   r   rD  ró   r  úOptional[ShapeEnv]r  úOptional[Source]r  úOptional[SymbolicContext]r  ró   rV   r¶   )NN)r’   r�   rÍ   r   r  útorch.devicerN  zOptional[type[torch.Tensor]]rO  úOptional[torch.DispatchKeySet]rV   r¶   )rX   rY   rZ   r[   Úpropertyrð   rc   rM   rÿ   r  r  r  rJ  rP  r\   rT   rP   rL   rí   rí   &  s  ‡ Øð/ð
ó/ó ð/ð .Ó-ØSÓSØƒLà,1À%÷ +ôPô3ô")ô1ð $Ø(,ðSð $(Ø6:ØñSà!ðSð ðSð ð	Sð
 &ðSð !ðSð 4ðSð ðSð 
öSðv 04Ø8<ðà!ðð ðð ð	ð
 -ðð 6ðð 
÷ð rP   rí   c                ó  • [         R                  R                  5       (       d#  [         R                  R                  5       (       aF  [         R                  R
                  c  [         R                  " SU S9O[         R                  " SU S9  g g )Nr1   ©r  )r‡   ÚcudaÚis_availableÚxpuÚversionÚhipÚemptyÚzerosrZ  s    rL   Úinit_gpu_contextrb    s_   € ô ‡z�z×Ñ× Ñ ¤E§I¡I×$:Ñ$:×$<Ñ$<ô �}‰}× Ñ Ñ(ô �KŠK˜ &Ò)ä—’˜Q vÑ.ùð	 %=rP   c              #  óä  #   • U R                   n[        R                  R                  5       nX!:w  a  [	        U SU 35      e[        R                  R                  5          SU l         [        R                  R                  5          [        R                  R                  S5         S v •  Xl          S S S 5        S S S 5        g ! Xl         f = f! , (       d  f       N"= f! , (       d  f       g = f7f)Nú, T)Úin_kernel_invocationr‡   rˆ   Ú_meta_in_tls_dispatch_includerº   Ú_DisableTorchDispatchÚ_PreserveDispatchKeyGuardÚ!_set_meta_in_tls_dispatch_include)r’   Úprev_in_kernelÚmeta_in_tlss      rL   Úin_kernel_invocation_managerrl  #  sµ   é € ð
 ×3Ñ3€NÜ—(‘(×8Ñ8Ó:€KØÓ$Ü ˜}¨B¨~Ð.>Ð?Ó@Ð@ä	�‰×	'Ñ	'Õ	)Ø)-ˆ	Ô&ô �X‰X×/Ñ/Õ1Ü�H‰H×6Ñ6°tÔ<ð@Ûà1?Õ.÷ 2÷	 
*Ð	)øð 2@Õ.ú÷ 2Õ1ú÷	 
*Õ	)üsN   ‚AC0Á &CÂ CÂ'CÂ+CÂ2CÂ:	C0ÃCÃCÃ
C	ÃCÃ
C-Ã)C0c                ó¤   • [         R                  R                  U R                  5       R	                  S5      S   R	                  S5      S   5      $ )Nz::éÿÿÿÿÚ.r   )r‡   rˆ   Ú _should_allow_numbers_as_tensorsÚnameÚsplitrÔ   s    rL   Úshould_allow_numbers_as_tensorsrs  ;  sB   € Ü�8‰8×4Ñ4Ø�	‰	‹×Ñ˜$Ó Ñ#×)Ñ)¨#Ó.¨qÑ1óð rP   c                  óR   • \ rS rSr\R
                  R                  SS5      S:H  rSrg)ÚFakeTensorConfigiA  ÚTORCH_FAKE_TENSOR_DEBUGÚ0Ú1rT   N)	rX   rY   rZ   r[   ÚosÚenvironr  Údebugr\   rT   rP   rL   ru  ru  A  s   † Ø�J‰J�N‰NÐ4°cÓ:¸cÑAƒErP   ru  c                  ó”   • \ rS rSr% S\S'   S\S'   S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 jjr
      SS jrSrg)ÚSymNumberMemoDescriptoriP  r`   Ú_nameró   Ú_is_nested_intF©Úis_nested_intc               ó   • Xl         g r|   )r  )rK   r�  s     rL   rM   Ú SymNumberMemoDescriptor.__init__Z  s   € Ø+ÕrP   c                ó   • X l         g r|   ©r~  )rK   Úownerrq  s      rL   Ú__set_name__Ú$SymNumberMemoDescriptor.__set_name__]  s   € Ø�
rP   c                ó    • SU R                    3$ )Nr¦   r…  ©rK   Úobjs     rL   Ú_memoÚSymNumberMemoDescriptor._memo`  s   € Ø�4—:‘:�,ÐÐrP   c                ó"   • SU R                    S3$ )Nr¦   Ú_vcr…  rŠ  s     rL   Ú_memo_vcÚ SymNumberMemoDescriptor._memo_vcc  s   € Ø�4—:‘:�,˜cÐ"Ð"rP   c                ó"   • SU R                    S3$ )Nr¦   Ú_epochr…  rŠ  s     rL   Ú_memo_epochÚ#SymNumberMemoDescriptor._memo_epochj  s   € Ø�4—:‘:�,˜fÐ%Ð%rP   Nc                óâ  • [        XR                  U5      5      =nc  g [        U[        R                  5      (       a  UR
                  R                  b  U$ U R                  (       d(  [        XR                  U5      5      UR                  :w  dC  U R                  (       dN  [        XR                  U5      5      UR                  R                  :w  a  [        XR                  U5      S 5        g U$ r|   )r—   rŒ  rµ   r‡   r   Únoder'  r  r�  Ú_versionr”  r’   ÚepochÚsetattr)rK   r‹  ÚobjtypeÚrs       rL   Ú__get__ÚSymNumberMemoDescriptor.__get__m  s­   € ô ˜Ÿj™j¨›oÓ.Ð.ˆAÑ7Øô �aœŸ™×(Ñ(¨Q¯V©V¯[©[Ñ-DØˆHð
 ×#×#¬°·]±]À3Ó5GÓ(HÈCÏLÉLÓ(Xà×#×#Ü˜×-Ñ-¨cÓ2Ó3°s·}±}×7JÑ7JÓJä�CŸ™ C›¨$Ô/ØØˆrP   c                óü  • UcR  [        XR                  U5      S 5        [        XR                  U5      S 5        [        XR                  U5      S 5        g UR	                  5       (       a  U R
                  (       a�  [        XR                  U5      U5        U R
                  (       d%  [        XR                  U5      UR                  5        [        XR                  U5      UR                  R                  5        g g r|   )	rš  rŒ  r�  r”  Úis_inferencer  r˜  r’   r™  )rK   r‹  rG  s      rL   Ú__set__ÚSymNumberMemoDescriptor.__set__ƒ  s°   € ð ‰=Ü�CŸ™ C›¨$Ô/Ü�CŸ™ sÓ+¨TÔ2Ü�C×)Ñ)¨#Ó.°Õ5Ø×!Ñ!×#Ñ# t×':×':Ü�CŸ™ C›¨%Ô0Ø×&×&Ü˜Ÿ]™]¨3Ó/°·±Ô>Ü�C×)Ñ)¨#Ó.°·±×0CÑ0CÕDð	 (;rP   )r  r~  )r�  ró   rV   rW   )r†  r`   rq  r`   rV   rW   )r‹  r¶   rV   r`   r|   )r‹  r¶   r›  zOptional[type[FakeTensor]]rV   ú-Optional[Union[torch.SymInt, torch.SymFloat]])r‹  r¶   rG  r£  rV   rW   )rX   rY   rZ   r[   rc   rM   r‡  rŒ  r�  r”  r�  r¡  r\   rT   rP   rL   r}  r}  P  sp   ‡ ØƒJð Óà05÷ ,ôô ô#ô&ð FJðØðØ(Bðà	6õð,EØðEØ&SðEà	÷ErP   r}  c                  ó^  ^ • \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   \" 5       rS
\S'   \" 5       r\" 5       r	S
\S'   \" 5       r
S
\S'   \" SS9rS\S'   S\S'   \R                  R                  R                  r\S#S j5       r\R&                  S$S j5       r\S%S j5       r\R&                  S&S j5       r\    S'               S(S jj5       rS)U 4S jjr\S*S j5       r\\S\" 5       4         S+S jj5       5       r\      S,S j5       rSS.   S-S  jjrS.S! jrS"r U =r!$ )/r¶   i‘  aT  
Meta tensors give you the ability to run PyTorch code without having to
actually do computation through tensors allocated on a `meta` device.
Because the device is `meta`, meta tensors do not model device propagation.
FakeTensor extends MetaTensors to also carry an additional `fake_device`
which tracks devices that would have been used.
rV  Úfake_devicer�   r’   úOptional[Tensor]rú   Úreal_tensorz$SymNumberMemoDescriptor | int | NoneÚnonzero_memoÚunique_memoÚunique_consecutive_memoTr€  úOptional[type[Tensor]]rN  rW  rO  c                ó|   • U R                   R                  (       a  [        R                  " S5      $ U R                  $ ©NrM  )r’   re  r‡   r  r¥  rJ   s    rL   r  ÚFakeTensor.device¸  s,   € ð �>‰>×.×.Ü—<’< Ó'Ð'à×#Ñ#Ð#rP   c                ó   • [         er|   ©ÚNotImplementedError©rK   r¦   s     rL   r  r®  À  ó   € ä!Ð!rP   c                ó   • [        S5      e)Nz+torch.compile doesn't support named tensors)r^   rJ   s    rL   ÚnamesÚFakeTensor.namesÔ  s   € ô -Ø9ó
ð 	
rP   c                ó   • [         er|   r°  r²  s     rL   rµ  r¶  Û  r³  rP   c                ó`  • [         R                  " U UUR                  SUS9nUR                  (       d   [        R
                  R                  U5        O[        R
                  R                  U5        UR                  R                  S:w  a"  [        SUR                  R                   35      e[        U[        R                  5      (       a  UO[        R                  " U5      nUR                  (       d  UR                  S:X  a  [        S5      eUR                  S;   a  [        U5        UR                  SSS	S
S[        R
                  R                  5       4;   a¹  UR                  c¬  UR                  S
:w  ay  [!        [        UR                  5      R#                  5       (       aL  [        R                  " UR                   S[!        [        UR                  5      R%                  5        35      nO#[        R                  " UR                   S35      nX8l        Xl        XHl        Xhl        Xxl        [        U[0        5      (       a  [        S5      eXXl        S Ul        S Ul        S Ul        S Ul        S Ul        [>        R@                  (       a  [B        RD                  " 5       Ul#        U$ )NT)Údispatch_deviceÚdevice_for_backend_keysrM  z%elem.device.type must be 'meta', got z7device.type must not be 'meta' when allow_meta is False)r[  r]  r[  Úhpur]  ÚmpsÚmtiaÚ:z:0z$real_tensor must not be a FakeTensor)$r   Ú_make_subclassÚrequires_gradÚ_allow_unsafe_data_ptr_accessr‡   rˆ   Ú_set_throw_on_mutable_data_ptrÚ(_set_warn_deprecated_on_mutable_data_ptrr  r·   rº   rµ   Ú
allow_metarb  Ú_get_privateuse1_backend_nameÚindexr—   Úis_initializedÚcurrent_devicer¥  r’   rú   rN  rO  r¶   r§  r¨  rB  r©  rª  Únested_int_memoru  r{  r0   ÚextractÚ_debug_trace)	Úclsr’   r»   r  rú   r§  rN  rO  rK   s	            rL   Ú__new__ÚFakeTensor.__new__ß  s  € ô ×$Ò$ØØØ×ÑØ Ø$*ñ
ˆð ×6×6Ü�H‰H×3Ñ3°DÕ9ä�H‰H×=Ñ=¸dÔCà�;‰;×Ñ˜vÓ%Ü Ø7¸¿¹×8HÑ8HÐ7IÐJóð ô & f¬e¯l©l×;Ñ;‘ÄÇÂÈfÓAUˆð ×#×#Ø�{‰{˜fÓ$Ü$ØMóð ð �;‰;˜/Ó)Ü˜VÔ$ð �K‰KàØØØØÜ—‘×6Ñ6Ó8ðóð —‘Ñ$à�{‰{˜eÓ#¬´°v·{±{Ó(C×(RÑ(R×(TÑ(TÜŸšØ—{‘{�m 1¤W¬U°F·K±KÓ%@×%OÑ%OÓ%QÐ$RÐSó‘ô Ÿš¨¯©¨°RÐ&8Ó9�à!ÔØ"ŒØ ŒØŒØ*ÔÜ�k¤:×.Ñ.Ü Ð!GÓHÐHØ&ÔØ ˆÔØˆŒØˆÔØ'+ˆÔ$Ø#ˆÔä×!×!Ü 1× 9Ò 9Ó ;ˆDÔØˆrP   c                óü   >• [         TU ]  5         [        R                  R	                  5       (       aJ  [        R
                  R                  R                  (       a   [        R                  R                  U 5        g g g r|   )ÚsuperrM   r‡   ÚcompilerÚis_exportingÚ_exportÚconfigÚ#detect_non_strict_fake_tensor_leaksÚfake_tensor_tlsrz   Úadd)rK   ÚargsÚkwargsÚ	__class__s      €rL   rM   ÚFakeTensor.__init__B  sS   ø€ Ü‰ÑÔä�N‰N×'Ñ'×)Ñ)Ü—‘×$Ñ$×H×Hä×AÑA×EÑEÀdÕKð Ið *rP   c                ó$   • UR                  U 5      $ r|   )Úfrom_tensor)rÍ   r’   s     rL   rÝ  ÚFakeTensor.from_tensorJ  s   € à×$Ñ$ QÓ'Ð'rP   rT   c                ó:  • U[         R                  R                  R                  R                  L au  [        U5      S:w  d  [        US   [        5      (       d  [        S5      eUS   R                  R                  (       a  [         R                  " S5      $ US   R                  $ [        R                  U5      =n(       a  U" U5      $ U Vs/ s H'  n[        U[        5      (       a  M  U[        Ld  M%  UPM)     nnU(       a  [         R#                  SU5        [$        $ S n[&        R(                  " U0 UD6 H&  n	[        U	[        5      (       d  M  U	R                  n  O   Uc  [        S5      e[         R*                  R-                  [         R*                  R.                  R0                  5      n
U
(       a  [         R#                  SUU
5        [$        $ UR                  (       a  [        S5      eU   U" U0 UD6sS S S 5        $ s  snf ! , (       d  f       g = f)	Nr1   r   z@Expected exactly one FakeTensor argument for prim.device.defaultrM  z(FakeTensor unrecognized subclass(es): %sz,Could not find a FakeTensor in the argumentsz(FakeTensor mode already active: %s in %sz,fake_mode.in_kernel_invocation must be False)r‡   ÚopsÚprimr  ÚdefaultÚlenrµ   r¶   rº   r’   re  r¥  Ú_DISPATCH_META_HANDLERSr  Ú
issubclassr   Únot_implemented_logr{  r1  rà   Úarg_tree_leavesrˆ   Ú_get_dispatch_moderŠ   r‹   )rÌ  rh   ÚtypesrØ  rÙ  ÚhandlerrÍ   Úunrecognized_typesr’   ÚargÚmaybe_cur_fake_modes              rL   Ú__torch_dispatch__ÚFakeTensor.__torch_dispatch__N  sÆ  € ð ”5—9‘9—>‘>×(Ñ(×0Ñ0Ò0Ü�4‹y˜A‹~¤Z°°Q±¼×%DÑ%DÜ$ØVóð ð �A‰w× Ñ ×5×5Ü—|’| FÓ+Ð+à˜A‘w×*Ñ*Ð*ô .×1Ñ1°$Ó7Ð7ˆ7Õ7Ù˜4“=Ð ñ ó
Ú�!¤J¨q´*×$=‹AÀ!Ì6À/�A‘uð 	ð 
ö Ü×%Ñ%Ø:Ð<Nôô "Ð!àˆ	Ü×)Ò)¨4Ð:°6Ô:ˆCÜ˜#œz×*Ó*ØŸM™M�	Ùñ ;ð
 ÑÜ Ð!OÓPÐPô $Ÿh™h×9Ñ9Ü�H‰H×*Ñ*×/Ñ/ó
Ðö Ü×%Ñ%Ø:ØØ#ôô
 "Ð!à×)×)Ü Ð!OÓPÐPâÙ˜Ð( Ñ(÷ ‰YùòO
÷N �Yús   ÃHÃ,HÃ7HÇ5HÈ
Hc                ó€  ^ ^^^^^	^
• S mSnS m	[        [        R                  R                  5      m
[        [        R                  R                  5      mSS jmS	U4S jjmS
UUUUU U	U
4S jjnU H  nU" U5        M     [        T 5      (       a  Tc  Sn[        R                  " S5      mTc  [        ST  35      eTU4$ )NFc                ó    • U R                   S:H  $ )Nr"  )r·   rZ  s    rL   Úcheck_cpu_deviceÚ8FakeTensor._find_common_device.<locals>.check_cpu_deviceµ  s   € Ø—;‘; %Ñ'Ð'rP   c                ó\   >• T" U R                   5      =(       a    U R                  5       S:H  $ ©Nr   )r  r3  )rÍ   rò  s    €rL   Úcpu_zero_dimÚ4FakeTensor._find_common_device.<locals>.cpu_zero_dim¸  s!   ø€ Ù# A§H¡HÓ-×>°!·%±%³'¸Q±,Ð>rP   c                ó�  >• [        U [        5      (       d  g Tc  U R                  mT	" U 5      mg T	" U 5      nU R                  T:X  a
  T(       a  Umg T
T;   nU(       a  U(       d  g T(       a  U(       d  U R                  mUmg T
T;   a'  [        [	        TTU R                  45      5      (       a  g [
        R                  R                  R                  nUbS  UTR                  ;   nX0R                  R                  ;   nU(       d  U(       a  U R                  mUmg U(       a  U(       d  g [        ST
 ST SU R                   35      e)Nz,Unhandled FakeTensor Device Propagation for z, found two different devices rd  )rµ   r¶   r  r¹   Úmapr‡   r¾   rÔ  Úfake_tensor_prefer_device_typer·   ÚRuntimeError)rÍ   Út_is_cpu_zero_dimÚ&is_bypass_zero_dim_cpu_tensor_check_opÚprefer_device_typeÚcommon_has_preferredÚt_has_preferredÚ$bypass_zero_dim_cpu_tensor_check_opsrò  Úcommon_devicerö  rh   Úis_cpu_zero_dimÚmixed_device_fnss         €€€€€€€rL   Úmerge_devicesÚ5FakeTensor._find_common_device.<locals>.merge_devices»  s?  ø€ ô ˜a¤×,Ñ,ØàÑ$Ø !§¡�Ù".¨q£/�Øá ,¨Q£ÐØ�x‰x˜=Ó(Þ"Ø&7�OØð Ð<Ñ<ð 3ö !Ö)OØö Ö'MØ !§¡�Ø"3�Øð Ð'Ó'Ü”sÐ+¨m¸Q¿X¹XÐ-FÓG×HÑHØô "'×!1Ñ!1×!8Ñ!8×!WÑ!WÐØ!Ñ-Ø'9¸]×=OÑ=OÑ'OÐ$Ø"4¿¹¿¹Ñ"E�æ+¶à$%§H¡H�MØ&7�OØÞ)¶/àô Ø>¸t¸fÐDbÐcpÐbqÐqsÐtu×t|Ñt|Ðs}Ð~óð rP   Tr"  z!Could not find common device for )r  rV  rV   ró   ©rÍ   r   rV   ró   )rÍ   ÚobjectrV   rW   )	r…   ÚatenÚ_foreach_copyrâ  Ú	nextafterrs  r‡   r  rº   )rh   Ú	flat_argsÚhas_scalar_only_inputsr  rì  r  rò  r  rö  r  r  s   `    @@@@@@rL   Ú_find_common_deviceÚFakeTensor._find_common_devicež  s¿   þ€ ð ˆØ!&ÐØˆô 'Ü×Ñ×&Ñ&ó
Ðô
 0;Ü�N‰N×"Ñ"ó0
Ð,ô	(÷	?÷;	õ ;	óz ˆCÙ˜#Öñ ô +¨4×0Ñ0°]Ñ5Jà%)Ð"Ü!ŸLšL¨Ó/ˆMàÑ Ü Ð#DÀTÀFÐ!KÓLÐLàÐ4Ð4Ð4rP   r1   )Úcoeffc               ó
  • U R                   c  U R                  R                  S S9U l         [        U R                   [        R
                  5      (       d!  [        S[        U R                   5       35      eU R                   U-  $ )N©Únt_tensor_idz1Expected nested_int_memo to be torch.SymInt, got )rÉ  r’   Úcreate_symbolic_nested_intrµ   r‡   r   rº   r·   )rK   r  s     rL   Úget_nested_intÚFakeTensor.get_nested_int  s   € ð
 ×ÑÑ'Ø#'§>¡>×#LÑ#LØ!ð $Mð $ˆDÔ ô ˜$×.Ñ.´·±×=Ñ=Ü ØCÄDÈ×I]ÑI]ÓD^ÐC_Ð`óð ð ×#Ñ# eÑ+Ð+rP   c                ó  • U R                  5       S:X  a  U R                  5       $ U R                  5       S:X  a   U  Vs/ s H  oR                  5       PM     sn$ U  Vs/ s H  oR                  5       PM     sn$ s  snf s  snf ©Nr   r1   )r3  r:  Útolist)rK   r»   s     rL   r  ÚFakeTensor.tolist  sb   € Ø�8‰8‹:˜‹?Ø—9‘9“;ÐØ�X‰X‹Z˜1‹_Ù,0Ó1ªD D—I‘I–K©DÑ1Ð1á.2Ó3ªd d—K‘K–M©dÑ3Ð3ùò 2ùâ3s   ½A9ÁA>)rË  rú   rO  r¥  r’   rB  rÉ  r¨  rN  r§  rª  r©  )rV   rV  )r¦   rV  rV   rW   )rV   ú	list[str])r¦   r  rV   rW   )NNNN)r’   r�   r»   r   r  rV  rú   r¦  r§  r¦  rN  r«  rO  rW  rV   r   )rØ  r  rÙ  r  rV   rW   )rÍ   r   r’   r�   rV   r¶   ©
rh   r=   ré  úSequence[type]rØ  úSequence[object]rÙ  úMapping[str, object]rV   r  )rh   r=   r  r  rV   ztuple[torch.device, bool])r  zUnion[int, torch.SymInt]rV   útorch.SymInt)rV   r   )"rX   rY   rZ   r[   Ú__doc__rc   r}  r¨  rB  r©  rª  rÉ  r‡   rˆ   rŠ   r‹   Ú	_mode_keyrX  r  Úsetterrµ  ÚstaticmethodrÍ  rM   rÝ  Úclassmethodr/   r    rî  r  r  r  r\   Ú__classcell__©rÚ  s   @rL   r¶   r¶   ‘  s1  ø‡ ñð ÓØÓØÓØ!Ó!ñ
 :QÓ9R€LÐ6ÓRÙ'Ó)€IÙ8OÓ8Q€KÐ5ÓQáÓ!ð ÐAó ñ .¸DÑA€Oð
 #Ó"Ø1Ó1ð —‘×.Ñ.×3Ñ3€Iàó$ó ð$ð ‡]�]ó"ó ð"ð& ó
ó ð
ð
 ‡\�\ó"ó ð"ð ð &*Ø(,Ø)-Ø8<ðNà!ðNð ðNð ð	Nð
 #ðNð &ðNð 'ðNð 6ðNð 
ôNó ðN÷DLð ó(ó ð(ð Ø
ð
 "$Ù'5Ó'7ðL)àðL)ð ðL)ð ð	L)ð
 %ðL)ð 
ôL)ó ó ðL)ð\ ðg5Øðg5Ø%5ðg5à	"óg5ó ðg5ðX +,ñ,ð (ð,ð 
õ	,÷ 4ò 4rP   r¶   r3   r4   T)Úslotsc                  óÞ   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   S
\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'           S!S jrSrg )"ÚTensorMetadatai$  zC
The Tensor metadata relevant to hashing FakeTensors when caching.
ztorch.dtyper4  ztuple[_MetadataIntLike, ...]ÚshapeÚstriderV  r  ztorch.layoutrç   zOptional[torch.memory_format]Úmemory_formatÚ_MetadataIntLikeÚstorage_offsetzOptional[_MetadataIntLike]Ústorage_bytesró   rÀ  r.  Úis_conjÚis_negr   ré   úOptional[bool]Úis_coalescedúOptional[int]Ú	dense_dimÚ
sparse_dimc                óz  • [         R                  " U 5       H¡  n[        XR                  5      n[	        U[
        [        [        R                  45      (       a&  / nUR                  XX65        UR                  5         Mh  [	        U[        5      (       a  UR                  X5        M�  UR                  U5        M£     g r|   )ÚdataclassesÚfieldsr—   rq  rµ   ÚtupleÚlistr‡   ÚSizeÚ_prep_args_for_hashÚclearr   Úconvert_sym_intrž   )rK   ÚresultÚmodeÚstateÚfieldrG  Úid_hashed_objectss          rL   Ú_flatten_intoÚTensorMetadata._flatten_into<  sŠ   € ô !×'Ò'¨Ö-ˆEÜ˜D§*¡*Ó-ˆEÜ˜%¤%¬¬u¯z©zÐ!:×;Ñ;ð 35Ð!Ø×(Ñ(¨¸ÔQØ!×'Ñ'Ö)Ü˜E¤6×*Ñ*Ø×%Ñ% fÖ4à—‘˜eÖ$ò .rP   rT   N)rA  úlist[object]rB  r�   rC  r2   rV   rW   )rX   rY   rZ   r[   r!  rc   rF  r\   rT   rP   rL   r*  r*  $  s—   ‡ ñð ÓØ'Ó'Ø(Ó(ØÓØÓØ0Ó0Ø$Ó$Ø-Ó-ØÓØÓØƒMØƒLØÓØƒOØ Ó ØÓØÓð%àð%ð ð%ð ð	%ð
 
÷%rP   r*  c                ó>  • [        U 5      nU R                  (       d$  [        U 5      (       d  U R                  US9(       d  SnU R	                  5       n[        U R                  U R                  U R                  [        R                  :X  a  U R                  5       OSU R                  U R                  UU[        U 5      (       d  U R                  5       R                  5       OSU R                  U R                   U R#                  5       U R%                  5       U R'                  5       U R(                  U R(                  (       a  U R+                  5       OS[        U 5      (       a  U R-                  5       OS[        U 5      (       a  U R/                  5       5      $ S5      $ )z)
Extract the TensorMetadata of a tensor.
)r-  NrT   )r   Ú_has_symbolic_sizes_stridesr   Úis_contiguousr/  r*  r4  r+  rç   r‡   rè   r,  r  Úuntyped_storageÚnbytesrÀ  r.  r1  r2  r   ré   r4  r6  r7  )rÍ   r-  r/  s      rL   Úextract_tensor_metadatarN  R  s)  € ô *¨!Ó,€Mð 	
×%×%Ü˜×ÑØ�‰¨]ˆÖ;àˆà×%Ñ%Ó'€NäØ	�‰Ø	�‰Ø—h‘h¤%§-¡-Ó/ˆ�‰Œ
°RØ	�‰Ø	�‰ØØä,9¸!×,<Ñ,<ˆ×ÑÓ×"Ñ"Ô$À$Ø	�‰Ø	�‰Ø	�	‰	‹Ø	�‰‹
Ø	�‰ÓØ	�‰ØŸKŸKˆ�‰Ô¨TÜ& q×)Ñ)ˆ�‰Œ¨tÜ'¨×*Ñ*ˆ�‰‹ó%ð ð$ 15ó%ð rP   c                  óV   • \ rS rSr% SrS\S'   S\S'   SS jrSS jrSS	 jrSS
 jr	Sr
g)Ú_DispatchCacheKeyix  z(
Key for the FakeTensor dispatch cache.
útuple[object, ...]r™   ÚintÚ	hashvaluec                ó0   • Xl         [        U5      U l        g r|   )r™   ÚhashrS  )rK   Útups     rL   rM   Ú_DispatchCacheKey.__init__�  s   € ØŒÜ˜c›ˆ�rP   c                ób   • [        U[        5      =(       a    U R                  UR                  :H  $ r|   )rµ   rP  r™   )rK   Úothers     rL   Ú__eq__Ú_DispatchCacheKey.__eq__…  s"   € Ü˜%Ô!2Ó3×M¸¿¹ÀEÇIÁIÑ8MÐMrP   c                ó   • U R                   $ r|   )rS  rJ   s    rL   Ú__hash__Ú_DispatchCacheKey.__hash__ˆ  s   € Ø�~‰~ÐrP   c                óx   • U R                    H*  n[        U[        5      (       d  M  UR                  5         M,     g r|   )r™   rµ   r3   Ústrip_shape_env)rK   r  s     rL   r`  Ú!_DispatchCacheKey.strip_shape_env‹  s+   € ð —”ˆAÜ˜!œ_×-Ó-Ø×!Ñ!Ö#ò rP   )rS  r™   N)rV  rQ  rV   rW   )rY  r  rV   ró   )rV   rR  rU   )rX   rY   rZ   r[   r!  rc   rM   rZ  r]  r`  r\   rT   rP   rL   rP  rP  x  s)   ‡ ñð 
ÓØƒNô#ôNô÷$rP   rP  c                  ó   • \ rS rSrSrg)ÚSingletonConstanti•  rT   N)rX   rY   rZ   r[   r\   rT   rP   rL   rc  rc  •  s   † ÚrP   rc  )Úfrozenr(  c                  óF   • \ rS rSr% SrS\S'   S\S'   S\S'   \rS\S	'   S
rg)Ú_DispatchCacheEntryOutputInfoi™  a™  
Entry type for the FakeTensor dispatch cache for an output. Accounts for three
possibilities:
1) The op is inplace, and a hit means we need to alias the argument at a
   given index.
2) We need to synthesize a new FakeTensor given tensor metadata. For view
   ops, we further capture the index of the arg to alias.
3) if the tensor related fields are None, then it is a constant value (e.g.
None or integer)
r5  Úinplace_idxzOptional[TensorMetadata]ÚmetadataÚview_idxzOptional[Any]Úconstant_valuerT   N)	rX   rY   rZ   r[   r!  rc   rc  rj  r\   rT   rP   rL   rf  rf  ™  s%   ‡ ñ	ð ÓØ&Ó&ØÓØ$5€N�MÖ5rP   rf  c                  ó2   • \ rS rSr% SrS\S'   SrS\S'   Srg	)
Ú_DispatchCacheValidEntryi¬  z­
Entry type for the FakeTensor dispatch cache. It supports two types of outputs
1) tensor
2) tuple of tensors

is_output_tuple flag helps in differentiating the return type
z$tuple[_DispatchCacheEntryOutputInfo]Úoutput_infosFró   Úis_output_tuplerT   N)rX   rY   rZ   r[   r!  rc   rn  r\   rT   rP   rL   rl  rl  ¬  s   ‡ ñð 7Ó6Ø!€O�TÖ!rP   rl  c                  ó$   • \ rS rSr% SrS\S'   Srg)Ú_DispatchCacheBypassEntryiº  z(
Entry type for a negative cache entry.
r`   ra   rT   N©rX   rY   rZ   r[   r!  rc   r\   rT   rP   rL   rp  rp  º  ó   ‡ ñð †KrP   rp  c                  ó$   • \ rS rSr% SrS\S'   Srg)Ú_BypassDispatchCacheiÇ  z4
Signals cases that should skip FakeTensor caching.
r`   ra   rT   Nrq  rT   rP   rL   rt  rt  Ç  rr  rP   rt  c                  óB   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S	rg
)ÚDispatchCacheInfoiÐ  z?
Information about the state of the FakeTensor dispatch cache.
rR  ÚhitsÚmissesúdict[str, int]ÚbypassesÚsizerT   Nrq  rT   rP   rL   rv  rv  Ð  s   ‡ ñð ƒIØƒKØÓØ
†IrP   rv  c                  óV  ^ • \ rS rSr% 0 rS\S'   SrS\S'   SrS\S'   \" \	5      r
S\S	'   SrS\S
'   SrS\S'   S\S'   S\S'   S\S'   S\S'   SrS\S'   SrS\S'   SSSSSS.           SGU 4S jjjrSHS jrSIS jr\SJS j5       r\SKS j5       r\S\" 5       4         SLS  jj5       rSMU 4S! jjr        SNU 4S" jjr\SJS# j5       r\SOS$ j5       r\SHS% j5       r          SLS& jr          SPS' jr        SQS( jr           SRS) jr!              SSS* jr"              STS+ jr#              SUS, jr$            SVS- jr%            SWS. jr&            SXS/ jr'S\" 5       4         SLS0 jjr(          SYS1 jr)            SZS2 jr*          S[S3 jr+\," S4S5S6S7S8S9S:S;5      r-S\S< jr.          S]S= jr/          S^S> jr0SS?.   S_S@ jjr1\," \2Rf                  Rh                  \2Rj                  Rl                  \2Rn                  Rl                  \2Rp                  Rl                  \2Rr                  Rl                  \2Rt                  Rl                  \2Rv                  Rl                  \2Rx                  Rl                  \2Rz                  Rl                  \2R|                  R~                  \2R€                  Rl                  5      rA\," \2R„                  Rl                  \2R†                  Rl                  \2Rˆ                  RŠ                  5      rFS\SA jrG\," \2R�                  Rl                  \2R’                  Rl                  5      rJS`SB jrK          SaSC jrLSSSSSD.           SbSE jjrMSFrNU =rO$ )cr�   iå  ú,dict[_DispatchCacheKey, _DispatchCacheEntry]Úcacher   rR  Ú
cache_hitsÚcache_missesry  Úcache_bypassesr™  Fró   re  Ústatic_shapesrS  r  zOptional[str]Ú_stackrÄ  rn  Únt_tensor_id_counterÚnt_tensor_id_initial_countTN)Úallow_fallback_kernelsÚallow_non_fake_inputsr  r‚  rô   c               óÌ  >• [         R                  S[        U 5      5        [        TU ]  5         Xl        SS KnSS KnUR                  R                  R                  U l        [        U R                  US9U l        Ub  X@l        O	US L U l        SU l        UR                  R                  R                   U l        UR                  R                  R$                  U l        UR(                  R                  R*                  =(       a    U R                  (       + U l        UR(                  R                  R.                  U l        X l        SU l        / U l        X0l        [:        R<                  " 5       U l        S U l         URB                  RD                  RF                  U l$        SS K%nURL                  RN                  RP                  RR                  U l*        U RT                  U l+        g )Nzcreate_mode 0x%xr   rõ   F),Úlogr{  ÚidrÐ  rM   r†  Útorch._dynamo.configÚtorch._functorch.configr¾   rÔ  Ú"fake_tensor_propagate_real_tensorsÚpropagate_real_tensorsrí   Úfake_tensor_converterr‚  Úallow_scalar_outputsÚ(fake_tensor_allow_unsafe_data_ptr_accessrÁ  Úfake_tensor_allow_metarÄ  Ú_dynamoÚfake_tensor_cache_enabledr‘   Ú$fake_tensor_cache_crosscheck_enabledÚcache_crosscheck_enabledr‡  re  Úenter_stackr  Ú	tracebackÚextract_stackÚ_stack_tracerƒ  rˆ   rŠ   r‹   r"  Ú$torch.nested._internal.nested_tensorÚnestedÚ	_internalÚnested_tensorÚ_tensor_id_counterr…  r„  )rK   r†  r‡  r  r‚  rô   r‡   rÚ  s          €rL   rM   ÚFakeTensorMode.__init__ý  sž  ø€ ô$ 	�	‰	Ð$¤b¨£hÔ/Ü‰ÑÔØ&<Ô#ã#Û&ð ×Ñ×#Ñ#×FÑFð 	Ô#ô &9Ø×1Ñ1Øñ&
ˆÔ"ð
 Ñ$Ø!.Õà!*¨dÐ!2ˆDÔð %*ˆÔ!ð ×Ñ×#Ñ#×LÑLð 	Ô*ð  ×*Ñ*×1Ñ1×HÑHˆŒà�M‰M× Ñ ×:Ñ:÷ 0Ø×/Ñ/Ô/ð 	Ôð
 �M‰M× Ñ ×EÑEð 	Ô%ð &;Ô"ð %*ˆÔ!ð ð 	Ôð #Œä%×3Ò3Ó5ˆÔØˆŒð Ÿ™×7Ñ7×<Ñ<ˆŒã3ð �L‰L×"Ñ"×0Ñ0×CÑCð 	Ô'ð %)×$CÑ$CˆÕ!rP   c                ó&   • U R                   U l        g r|   )r…  r„  rJ   s    rL   Úreset_nt_tensor_id_counterÚ)FakeTensorMode.reset_nt_tensor_id_counter\  s   € Ø$(×$CÑ$CˆÕ!rP   c                óL   • [        U[        5      =(       a    UR                  U L $ r|   )rµ   r¶   r’   ©rK   rÍ   s     rL   Úis_our_fakeÚFakeTensorMode.is_our_fakek  s   € Ü˜!œZÓ(×@¨Q¯[©[¸DÐ-@Ð@rP   c                ó¨  • [         R                  R                  5       (       aQ  [         R                  R                  5       (       a  [	        S5      e[         R                  R                  5       (       + $ [         R                  R                  5       =(       d5    [        [         S5      =(       a    [         R                  R                  5       (       + $ )Nz&Cannot have both xpu and cuda compiledr»  )r‡   r]  Ú_is_compiledr[  rº   r\  Úhasattrr»  rJ   s    rL   Úavoid_device_initÚ FakeTensorMode.avoid_device_inits  sˆ   € ä�9‰9×!Ñ!×#Ñ#Ü�z‰z×&Ñ&×(Ñ(Ü$Ð%MÓNÐNÜ—y‘y×-Ñ-Ó/Ô/Ð/ô �J‰J×#Ñ#Ó%÷ DÜœ˜uÓ%×B¬%¯)©)×*@Ñ*@Ó*Bô
ð 	
rP   c                óœ   • U R                   c4  SR                  [        R                  " U R                  5      5      U l         U R                   $ )NÚ )rƒ  Újoinr˜  Úformat_listrš  rJ   s    rL   ÚstackÚFakeTensorMode.stack  s7   € à�;‰;ÑØŸ'™'¤)×"7Ò"7¸×8IÑ8IÓ"JÓKˆDŒKØ�{‰{ÐrP   rT   c                ó  • [         R                  R                  [         R                  R                  R                  5      b  [        SU 35      e U R                  XX45      $ ! [         a    [        R                  S5        e f = f)Nz2FakeTensorMode should not be set when dispatching zfake tensor raised TypeError)
r‡   rˆ   rè  rŠ   r‹   rº   ÚdispatchÚ	TypeErrorr‰  Ú	exception)rK   rh   ré  rØ  rÙ  s        rL   rî  Ú!FakeTensorMode.__torch_dispatch__…  su   € ô �8‰8×&Ñ&¤u§x¡x×'EÑ'E×'JÑ'JÓKÑWÜ ØDÀTÀFÐKóð ð	Ø—=‘= ¨dÓ;Ð;øÜó 	Ü�M‰MÐ8Ô9Øð	ús   ÁA$ Á$!Bc                óî  >• SS K nS nU R                  (       aO  UR                  R                  5       nUR                  R	                  S5        UR                  R                  5         UR                  R                  U R                  5      nXLa+  U R                  R                  SX245        [        TU ]-  5       $ UR                  R                  U 5        U R                  R                  SS U45        U $ )Nr   TF)r›  r«  rˆ   Ú_only_lift_cpu_tensorsÚ_set_only_lift_cpu_tensorsÚ_ensureCUDADeviceGuardSetr‰   r"  r—  rž   rÐ  Ú	__enter__rŒ   )rK   r‡   Úprev_only_lift_cpu_tensorsÚmaybe_prev_fake_moderÚ  s       €rL   r¼  ÚFakeTensorMode.__enter__š  sÍ   ø€ Û3à%)Ð"Ø×!×!à).¯©×)HÑ)HÓ)JÐ&Ø�H‰H×/Ñ/°Ô5ð
 �H‰H×.Ñ.Ô0à$Ÿx™x×<Ñ<¸T¿^¹^ÓLÐØÒ+Ø×Ñ×#Ñ#ØÐ+ÐHôô ‘7Ñ$Ó&Ð&ð �H‰H×'Ñ'¨Ô-Ø×Ñ×#Ñ# U¨DÐ2LÐ$MÔNàˆrP   c                óú   >• U R                   R                  5       u  pEnU(       aV  [        TU ]  XU5        Ub  [        R
                  R                  U5        Ub   [        R
                  R                  U5        g g g r|   )r—  r�   rÐ  Ú__exit__r‡   rˆ   rŒ   rº  )rK   Úexc_typeÚexc_valÚexc_tbÚliver¾  Ú maybe_prev_only_lift_cpu_tensorsrÚ  s          €rL   rÁ  ÚFakeTensorMode.__exit__µ  st   ø€ ð ×Ñ× Ñ Ó"ñ 	GˆÐ%Eö Ü‰GÑ˜X°Ô7ð $Ñ/Ü—‘×+Ñ+Ð,@ÔAØ/Ñ;Ü—‘×3Ñ3Ð4TÕUð <ð rP   c                ó   • gr�   rT   ©rÌ  s    rL   Úis_infra_modeÚFakeTensorMode.is_infra_modeÇ  s   € àrP   c                ó²   • [        [        R                  [        R                  [	        [        R
                  5      [        [        R                  5      5      $ )z(
Query the state of the dispatch cache.
)rv  r�   r  r€  r‚   r�  rã  r~  rÉ  s    rL   Ú
cache_infoÚFakeTensorMode.cache_infoË  s?   € ô
 !Ü×%Ñ%Ü×'Ñ'Ü”×.Ñ.Ó/Ü”×$Ñ$Ó%ó	
ð 	
rP   c                óˆ   • SU l         SU l        U R                  R                  5         U R                  R                  5         g)z
Clear the dispatch cache.
r   N)r  r€  r�  r?  r~  rÉ  s    rL   Úcache_clearÚFakeTensorMode.cache_clear×  s3   € ð
 ˆŒØˆÔØ×Ñ× Ñ Ô"Ø�	‰	�‰ÕrP   c                ó\  • SnSn [        U R                  5      nU R                  XQX45      nUc  U R                  XX45      $ Uc  [        S5      eUR!                  5       (       a5  UR                  c  [        S5      eUR                  R"                  n[$        n	O[        R&                  n[(        n	UR+                  US5      n
U
b´  [	        U
[,        5      (       a7  [        R                  U
R                  ==   S-  ss'   U R                  XX45      $ U R/                  XZXaU5      n[        =R0                  S-  sl        U R2                  (       a)  [5        U 5         U R7                  X±X#U5        SSS5        U$ U$ U R                  XX45      n U R9                  XVXXK5      n
U	" X†U
5        [        =R:                  S-  sl        U$ ! [         a‘  n[	        U[
        R                  R                  5      (       a8  UR                  5       S:X  a$  [        R                  SUS   UR                  5        [        R                  UR                  ==   S-  ss'    SnAGN,SnAff = f! , (       d  f       U$ = f! [         a®  n[	        U[
        R                  R                  5      (       a8  UR                  5       S:X  a$  [        R                  SUS   UR                  5        [        R                  UR                  ==   S-  ss'   U	" X†[-        UR                  5      5        Us SnA$ SnAff = f)z†
Lookup a cache entry for the given arguments. If none exists, dispatch
and cache the result (if the result is eligible for caching).
NÚinvoke_subgraphz6Fake tensor cache failed: identifier = %s, reason = %sr1   z1state must not be None after cache key generationz:state.shape_env must not be None when caching on shape_env)r2   r  Ú
_cache_keyrt  rµ   r‡   Ú_opsÚHigherOrderOperatorrq  Úhc_logr{  ra   r�   r�  Ú_dispatch_implrº   Úcache_on_shape_envÚfake_tensor_cacheÚ_set_cache_key_for_shape_envr~  Ú_set_cache_keyr  rp  Ú_output_from_cache_entryr  r–  r”   Ú_crosscheck_cache_outputÚ_make_cache_entryr€  )rK   rh   ré  rØ  rÙ  rC  r™   Úer~  Úset_cache_keyÚentryÚoutputs               rL   Ú_cached_dispatch_implÚ$FakeTensorMode._cached_dispatch_implá  sº  € ð ˆØˆð	9Ü" 4§>¡>Ó2ˆEØ—/‘/ %¨tÓ<ˆCð ‰;ð
 ×&Ñ& t°DÓAÐAà‰=Ü Ð!TÓUÐUØ×#Ñ#×%Ñ%Ø�‰Ñ&Ü$ØPóð ð —O‘O×5Ñ5ˆEÜ8‰Mä"×(Ñ(ˆEÜ*ˆMØ—	‘	˜#˜tÓ$ˆàÑÜ˜%Ô!:×;Ñ;ô ×-Ñ-¨e¯l©lÓ;¸qÑ@Ó;à×*Ñ*¨4¸ÓEÐEð ×2Ñ2°5ÀÈDÓQˆFÜ×%Ò%¨Ñ*Õ%Ø×,×,ô /¨tÕ4Ø×1Ñ1°&ÀÈVÔT÷ 5àˆM�6ˆMð ×$Ñ$ T°$Ó?ˆð	Ø×*Ñ*¨5°tÀ6ÓRˆEñ$ 	�e %Ô(Ü×#Ò# qÑ(Õ#Øˆøô] $ó 	9ô ˜4¤§¡×!?Ñ!?×@Ñ@Ø—I‘I“KÐ#4Ó4ä—‘ØLØ˜‘GØ—H‘Hôô
 ×)Ñ)¨!¯(©(Ó3°qÑ8×3Ñ3ûð	9ú÷b 5Ô4àˆMûô $ó 	ô
 ˜4¤§¡×!?Ñ!?×@Ñ@Ø—I‘I“KÐ#4Ó4ä—‘ØLØ˜‘GØ—H‘Hôô
 ×)Ñ)¨!¯(©(Ó3°qÑ8Ó3Ù˜%Ô&?ÀÇÁÓ&IÔJØ�Mûð	úsC   †'G ÅI!ÆI3 Ç
IÇBIÉIÉ!
I0É3
L+É=B#L&Ì L+Ì&L+c           	     óÆ  • [         R                  R                  R                  R	                  5       SLnU[         R
                  " 5       [         R                  R                  5       [         R                  " 5       U R                  (       a  U R                  R                  OSU/nUR                  (       a  UR                  U R                  5        / nU(       a  U R                  XcX5        U(       a  U R                  XdX5        [        [!        U5      5      nU H1  n	["        R$                  " U	[&        R(                  " [*        US95        M3     UR-                  5         U$ )zs
Create a cache key given the dispatch args. Raises _BypassDispatchCache
for any situation that precludes caching.
N©r™   )r‡   ÚfxÚexperimentalÚproxy_tensorÚget_proxy_modeÚget_default_dtyperˆ   Ú_get_default_deviceÚis_inference_mode_enabledr  ÚsettingsÚknown_symbolsrž   r™  r>  rP  r;  r}   ÚfinalizeÚ	functoolsÚpartialÚevict_fake_tensor_cache_keyr?  )
rK   rC  rh   rØ  rÙ  Ú
is_tracingÚ
key_valuesrE  r™   Úid_hashed_objs
             rL   rÔ  ÚFakeTensorMode._cache_keyA  s  € ô —X‘X×*Ñ*×7Ñ7×FÑFÓHÐPTÐTˆ
àô ×#Ò#Ó%ô �H‰H×(Ñ(Ó*ô ×+Ò+Ó-ð (,§~§~ˆD�N‰N×#Ò#¸4ð ð%
ˆ
ð( ××ð ×Ñ˜dŸj™jÔ)à*,Ðæà×$Ñ$ Z°uÔPÞà×$Ñ$ Z¸ÔRÜ¤ jÓ 1Ó2ˆã.ˆMÜ×ÒØœy×0Ò0Ô1LÐRUÑVöñ /ð 	×ÑÔ!Øˆ
rP   c                óÜ  • SSK Jn  [        U[        R                  R
                  5      (       a  X;   a  g[        R                  R                  UR                  ;   a  [        S5      e[        R                  R                  UR                  ;   a�  U[        R                  R                  L au  [        UUUSS9u  pVUS    H]  n[        U[        R                  5      (       d  M$  UR                  [        R                   [        R"                  4;   d  MT  [        S5      e   g[        S5      e[        R                  R$                  UR                  ;   a  [        S	5      eU[        R&                  R(                  L a  [        S
5      eXR*                  ;   a  [        S5      eUR-                  5       S:X  a  [        S5      e[        R.                  R0                  R3                  U5      (       d  [        S5      eUR4                  (       aa  [        R6                  R9                  UR-                  5       [        R6                  R:                  R<                  5      (       a  [        S5      egg)zI
Validate that the cache key generated by _cache_key will be
reasonable.
r   ©Úregistered_hop_fake_fnsNzdata dependent outputT©rØ  rÙ  Únormalize_to_only_use_kwargsÚindiceszdynamic output shapezinplace viewzunsafe viewÚliftzinductor::resize_storage_bytes_znon-builtinÚCompositeImplicitAutograd)Útorch._higher_order_ops.utilsrû  rµ   r‡   rÕ  rÖ  ÚTagÚdata_dependent_outputÚtagsrt  Údynamic_output_shaper	  rÆ  r   r!   r4  ró   r8  Úinplace_viewÚ_unsafe_viewrâ  Úlift_fnsrq  Ú_libraryÚutilsÚ
is_builtinÚis_viewrˆ   Ú%_dispatch_has_kernel_for_dispatch_keyÚDispatchKeyr   )rK   rh   rØ  rÙ  rû  r¦   Ú
new_kwargsrÆ  s           rL   Ú_validate_cache_keyÚ"FakeTensorMode._validate_cache_keyx  sÕ  € õ 	Jô
 �tœUŸZ™Z×;Ñ;×<Ñ<ØÓ/àô
 �9‰9×*Ñ*¨d¯i©iÓ7Ü&Ð'>Ó?Ð?ä�9‰9×)Ñ)¨T¯Y©YÓ6Ø”t—z‘z×(Ñ(Ò(Ü 2ØØØ!Ø15ñ	!‘�ð (¨	Ô2�Eô " %¬¯©×6Ó6¸5¿;¹;ÜŸ
™
ÜŸ
™
ðKõ <ô 3Ð3IÓJÐJñ 3ð ä&Ð'=Ó>Ð>ä�9‰9×!Ñ! T§Y¡YÓ.Ü& ~Ó6Ð6à”4×$Ñ$×,Ñ,Ò,Ü& }Ó5Ð5à—=‘=Ó Ü& vÓ.Ð.à�9‰9‹;Ð;Ó;Ü&Ð'HÓIÐIä�~‰~×#Ñ#×.Ñ.¨t×4Ñ4Ü& }Ó5Ð5ð
 �<�<œEŸH™H×JÑJØ�I‰I‹KœŸ™×-Ñ-×GÑG÷
ñ 
ô 'Ð'BÓCÐCð
ˆ<rP   c                óÜ  • SSK Jn  SSKJn  [	        U[
        [        [        45      (       a7  UR                  [        U5      5        UR                  S[        U5       35        [	        U[        5      (       aA  U R                  XR                  5       X45        U R                  XR                  5       X45        gU GH¬  n[	        U[        5      (       a€  U R                  U5      (       d  [!        S5      eUR"                  b  [!        S5      e[%        U5      (       a  [!        UR&                   S35      e[)        U5      nUR+                  XU5        M™  [	        U[,        5      (       a  [!        S	5      e[	        U[.        5      (       a  UR1                  X5        Má  [	        U[2        [4        45      (       a  [!        S
5      e[	        U[
        [        [        45      (       a  U R                  XX45        GM<  [	        U[6        R8                  5      (       a  [!        S5      e[	        U[:        R<                  R>                  5      (       aH  UR                  [        U5      5        UR                  [A        U5      5        UR                  U5        GM×  [	        Xv5      (       a8  UR                  [C        U5      5        UR                  URD                  5        GM  [	        Xu5      (       aR  UR                  [        U5      5        UR                  [C        U5      5        UR                  URF                  5        GM�  UR                  [        U5      5        UR                  U5        GM¯     g)a  
Translate the provided args into a form suitable for caching at FakeTensor
dispatch, i.e., convert unhashable types like lists & dicts into tuples and
convert FakeTensors into metadata. Raises _BypassDispatchCache to signal
unsupported cases that should bypass caching.
r   )ÚFunctionalCallableWithEpilogue)ÚFunctionalizeCtxWrapperÚlength_Nznot our fakeúconstant attributez tensorznon-fake tensorzsymbolic shapezfunction argument)$Ú*torch._higher_order_ops.auto_functionalizer  r  r  rµ   r<  r;  r‚   rž   r·   rã  r>  ÚkeysÚvaluesr¶   r¦  rt  rú   r   rç   rN  rF  r   r   r@  r   r   ré  ÚFunctionTyper‡   rè  ÚGraphModulerŠ  rU  ÚsubgraphÚorig_callable)	rK   rA  rØ  rC  rE  r  r  rì  rh  s	            rL   r>  Ú"FakeTensorMode._prep_args_for_hash¾  ss  € õ	
õ 	Jä�dœT¤5¬$Ð/×0Ñ0Ø�M‰Mœ$˜t›*Ô%Ø�M‰M˜G¤C¨£I ;Ð/Ô0ä�dœD×!Ñ!Ø×$Ñ$ V¯Y©Y«[¸%ÔSØ×$Ñ$ V¯[©[«]¸EÔUØäˆCÜ˜#œz×*Ñ*Ø×'Ñ'¨×,Ñ,Ü.¨~Ó>Ð>Ø—<‘<Ñ+Ü.Ð/CÓDÐDÜ  ×%Ñ%Ü.°#·*±*°¸WÐ/EÓFÐFÜ2°3Ó7�Ø×&Ñ& v°UÖ;Ü˜C¤×(Ñ(Ü*Ð+<Ó=Ð=Ü˜C¤×(Ñ(Ø×%Ñ% fÖ2Ü˜C¤'¬8Ð!4×5Ñ5Ü*Ð+;Ó<Ð<Ü˜C¤$¬¬tÐ!4×5Ñ5Ø×(Ñ(¨°e×OÜ˜C¤×!3Ñ!3×4Ñ4Ü*Ð+>Ó?Ð?Ü˜C¤§¡×!5Ñ!5×6Ñ6ð —‘œd 3›iÔ(Ø—‘œb ›gÔ&Ø!×(Ñ(¨×-Ü˜C×9Ñ9ð —‘œd 3›iÔ(ð "×(Ñ(¨¯©×6Ü˜C×@Ñ@Ø—‘œd 3›iÔ(Ø—‘œd 3›iÔ(Ø!×(Ñ(¨×):Ñ):×;ð
 —‘œd 3›iÔ(Ø—‘˜c×"òU rP   c                ó®  • [        U[        [        S 5      45      (       a  g [        X5        [        U[        5      (       d  [        S5      eUR                  b  [        S5      eUR                  (       a  [        S5      e[        U5      (       a  [        S5      eUR                  5        H&  n[        U5      [        U5      :X  d  M  [        S5      e   g )Nznon-FakeTensor outputr  zsparse outputzsparse compressed outputzkwarg aliases output)rµ   rR  r·   Ú%_validate_symbolic_output_for_cachingr¶   rt  rú   ré   r   r  rŠ  )rK   rC  r™   rh   rØ  rÙ  rã  Úkvals           rL   Ú _validate_output_for_cache_entryÚ/FakeTensorMode._validate_output_for_cache_entry  sµ   € ô �fœs¤D¨£JÐ/×0Ñ0Øô 	.¨eÔ<ô ˜&¤*×-Ñ-Ü&Ð'>Ó?Ð?ð �?‰?Ñ&Ü&Ð';Ó<Ð<ð ××Ü& Ó7Ð7ä ×'Ñ'Ü&Ð'AÓBÐBð —M‘M–OˆDÜ�$‹xœ2˜f›:Õ%Ü*Ð+AÓBÐBò $rP   c                ó¶  ^• [        U[        [        R                  [	        S 5      45      (       a  [        S S S US9$ [        [        U5      5       H*  n[        XG   5      [        U5      :X  d  M  [        US S S9s  $    S n[        U[        R                  R                  5      (       ar  UR                  (       aa  [        U5       V	V
s/ s H  u  pš[        U
[        5      (       d  M  U	PM      nn	n
[        U5      S:w  a  [        S[        U5       35      eUS   n[        U5      n[!        U4S jUR"                   5       5      Ul        [!        U4S jUR$                   5       5      Ul        TR'                  UR(                  5      Ul        UR*                  c  S OTR'                  UR*                  5      Ul        [        S UUS9n[-        U4SS	9nSS
KJn   U R3                  TXâX45      n[        R6                  R9                  U5      n[        R6                  R9                  U5      nUU:w  a  [5        S5      eU$ s  sn
n	f ! U a    [5        S5      S ef = f)N©rg  rh  ri  rj  )rg  rh  ri  r1   z1Expected exactly one tensor arg for view op, got r   c              3  óF   >#   • U  H  nTR                  U5      v •  M     g 7fr|   ©Úconvert_output©r˜   r  rC  s     €rL   r›   ÚBFakeTensorMode._get_output_info_for_cache_entry.<locals>.<genexpr>O  s   øé € ÐOÂ¸1˜u×3Ñ3°A×6Ð6Âùó   ƒ!c              3  óF   >#   • U  H  nTR                  U5      v •  M     g 7fr|   r'  r)  s     €rL   r›   r*  P  s   øé € ÐQÂ¸A × 4Ñ 4°Q× 7Ð 7Âùr+  F©rm  rn  )ÚGuardOnDataDependentSymNodezdata dependent symnodezdispatch_key_set mismatch)rµ   rR  r‡   r   r·   rf  Úrangerã  rŠ  rÕ  r=   r  Ú	enumerater   rº   rN  r;  r+  r,  r(  r/  r0  rl  r,  r.  rÝ  rt  rˆ   Ú_dispatch_key_set)rK   rC  r™   rh   rØ  rÙ  rã  Úidxri  ÚirÍ   Úidxsrh  râ  Úentry_for_synth_outputr.  Úsynth_outputÚsynth_key_setÚkey_sets    `                 rL   Ú _get_output_info_for_cache_entryÚ/FakeTensorMode._get_output_info_for_cache_entry/  s#  ø€ ô �fœs¤E§L¡L´$°t³*Ð=×>Ñ>Ü0Ø ¨4¸$Èvñð ô
 œ˜T›Ö#ˆCÜ�$‘)‹}¤ 6£
Õ*Ü4Ø #¨d¸Tñò ñ $ð ˆÜ�dœEŸJ™J×1Ñ1×2Ñ2°t·|·|Ü"+¨D¤/ÔK¢/™$˜!´ZÀÄ6×5J—A¡/ˆDÑKÜ�4‹y˜A‹~Ü$ØGÌÈDË	À{ÐSóð ð ˜A‘wˆHä*¨6Ó2ˆÜÔOÀÇÂÓOÓOˆŒÜÔQÀÇÂÓQÓQˆŒØ"'×"6Ñ"6°x×7NÑ7NÓ"OˆÔð ×%Ñ%Ñ-ñ à×%Ñ% h×&<Ñ&<Ó=ð 	Ôô .ØØØñ
ˆô ":Ø˜°5ñ"
Ðõ 	Vð		KØ×8Ñ8ØÐ-°DóˆLô Ÿ™×2Ñ2°<Ó@ˆÜ—(‘(×,Ñ,¨VÓ4ˆØ˜GÓ#Ü&Ð'BÓCÐCàˆùóg LøðJ +ó 	Kô
 'Ð'?Ó@ÀdÐJð	Kús   Ã	H?Ã(H?ÇI ÉIc                óf  ^• SSK Jn  SSKJm  U R	                  X4U5        [        U[        R                  R                  5      (       ae  X7;   a`  [        U[        5      (       d  Ub  [        SU S[        U5       35      eUb+  [        U4S jU 5       5      nU(       a  [        SU S	35      e[        U[        [        R                  [        S5      45      (       a  [!        SSSUS
9n	[#        U	4SS9$ [        U[        5      (       a   U H  n
U R%                  UUUUUU
5        M     OU R%                  UUUUUU5        [        U[        5      (       a9  U Vs/ s H  nU R'                  UUUUUU5      PM     nn[#        [        U5      SS9$ U R'                  UUUUUU5      n	[#        U	4SS9$ s  snf )z˜
Make a cache entry object for the given 'output' Tensor. Raises
_BypassDispatchCache if the output tensor has characteristics that
prevent caching it.
r   rú  )Úhas_free_unbacked_symbolsNzExpected tuple output for HOP z, got c              3  ó–   >#   • U  H>  n[        U[        R                  [        R                  45      =(       a    T" U5      v •  M@     g 7fr|   )rµ   r‡   r   r   )r˜   Úor<  s     €rL   r›   Ú3FakeTensorMode._make_cache_entry.<locals>.<genexpr>�  s@   øé € ð $ò $˜ô ˜q¤5§<¡<´·±Ð">Ó?÷ 5Ù1°!Ó4ô5â#ùs   ƒAA	zunbacked symbol in HOP z outputr%  Fr-  T)r  rû  r,  r<  r  rµ   r‡   rÕ  rÖ  r;  rº   r·   r¹   rt  rR  r   rf  rl  r"  r9  )rK   rC  r™   rh   rØ  rÙ  rã  rû  Únon_cacheableÚoutput_infoÚout_elementÚout_elemrm  r<  s                @rL   rß  Ú FakeTensorMode._make_cache_entry|  sô  ø€ õ 	JÝSà× Ñ  ¨VÔ4ô �tœUŸZ™Z×;Ñ;×<Ñ<ØÓ/ä˜f¤e×,Ñ,°Ñ1CÜ$Ø4°T°F¸&ÄÀfÃÀÐOóð ð Ñ!Ü #ô $ñ $ó$ó !�ö
 !Ü.Ð1HÈÈÈgÐ/VÓWÐWä�fœs¤E§L¡L´$°t³*Ð=×>Ñ>Ü7Ø ¨4¸$ÈvñˆKô ,Ø)˜^¸Uñð ô �fœe×$Ñ$Û%�Ø×5Ñ5ØØØØØØöò  &ð ×1Ñ1ØØØØØØôô �fœe×$Ñ$ñ !'ó
ò !'�Hð ×5Ñ5ØØØØØØöñ !'ð ð 
ô ,ä" <Ó0Ø $ñð ð ×?Ñ?ØØØØØØóˆKô ,Ø)˜^¸Uñð ùò5
s   Å F.c                ó�  ^^^• UR                   cD  UR                  c7  UR                  c*  UR                  [        L a  [        S5      eUR                  $ UR                   b0  XRR                      n[        U[        5      (       d  [        S5      eU$ UR                  nUc  g [        U5      (       a  [        S5      e      SU4S jjm[        UU4S jUR                   5       5      n[        UU4S jUR                   5       5      n	T" UR                  T5      n
UR                  b  T" UR                  T5        [        R                  nU R                   b  U R                   R"                  n[%        U 5         U" 5          [&        R(                  " UU	UR*                  UR,                  SUR.                  S9nS S S 5        S S S 5        UR0                  (       a   [&        R2                  R5                  WS	5        UR6                  (       a   [&        R2                  R9                  WS	5        [        U[&        R:                  R<                  5      (       a”  UR>                  (       aƒ  U[A        [B        UR                  5         n[        U[        5      (       d  [        S
5      eURE                  5       n[%        U 5         U" 5          WRG                  XêX‰5        S S S 5        S S S 5        [        U WURH                  5      $ ! , (       d  f       GNM= f! , (       d  f       GNW= f! , (       d  f       NQ= f! , (       d  f       NZ= f)Nz2entry.constant_value must not be SingletonConstantz inplace_arg must be a FakeTensorz)Sparse tensors are not supported in cachec                óÚ   >• [        U [        5      (       a4  UR                  c  [        S5      eU R	                  TUR                  5      $ [        U [
        5      (       a  [        S5      eU $ )Nz6state.shape_env must not be None for _SymIntOutputStubz Unexpected _PySymInputStub value)rµ   r4   r  rº   rÊ  r3   )rG  rC  r™   s     €rL   Úcheck_valueÚGFakeTensorMode._get_output_tensor_from_cache_entry.<locals>.check_value  sb   ø€ ô ˜%Ô!2×3Ñ3Ø—?‘?Ñ*Ü(ØPóð ð —}‘} S¨%¯/©/Ó:Ð:ä˜e¤_×5Ñ5Ü(Ð)KÓLÐLØ�rP   c              3  ó6   >#   • U  H  nT" UT5      v •  M     g 7fr|   rT   ©r˜   r  rG  rC  s     €€rL   r›   ÚEFakeTensorMode._get_output_tensor_from_cache_entry.<locals>.<genexpr>  s   øé € ÐD²^°‘k ! U×+Ð+²^ùó   ƒc              3  ó6   >#   • U  H  nT" UT5      v •  M     g 7fr|   rT   rJ  s     €€rL   r›   rK    s   øé € ÐF²o°‘{ 1 e×,Ð,²oùrL  rM  )r4  rç   r  rÀ  Tzview_arg must be a FakeTensor)rG  r.  rC  r2   rV   zUnion[IntLikeType])%rg  rh  ri  rj  rc  rº   rµ   r¶   r   r;  r+  r,  r/  r0  Ú
contextlibÚnullcontextr  Úsuppress_guardsrl  r‡   Úempty_stridedr4  rç   rÀ  r1  rˆ   Ú	_set_conjr2  Ú_set_negrÕ  r=   r  r   rR  rL  Úset_r  )rK   rC  râ  r™   rh   rØ  Úinplace_argrh  r+  r,  r/  Úmaybe_suppressr`  Úview_argÚstoragerG  s    ` `           @rL   Ú#_get_output_tensor_from_cache_entryÚ2FakeTensorMode._get_output_tensor_from_cache_entryà  sŠ  ú€ ð ×ÑÑ%Ø—‘Ñ&Ø—‘Ñ&à×#Ñ#Ô'8Ò8Ü$ØHóð ð ×'Ñ'Ð'Ø×ÑÑ(à×0Ñ0Ñ1ˆKÜ˜k¬:×6Ñ6Ü$Ð%GÓHÐHØÐð —>‘>ˆØÑØä˜×"Ñ"Ü Ð!LÓMÐMð	Ø#ð	Ø,:ð	à÷	ô ÕD°X·^²^ÓDÓDˆÜÕF°h·o²oÓFÓFˆÙ$ X×%<Ñ%<¸eÓDˆØ×!Ñ!Ñ-Ù˜×.Ñ.°Ô6ô ×"Ñ"ð 	ð �>‰>Ñ%Ø!Ÿ^™^×;Ñ;ˆNä)¨$Õ/±Õ1AÜ×'Ò'ØØØ—n‘nØ—‘ØØ&×4Ñ4ñˆE÷ 2B×/ð ××Ü�H‰H×Ñ˜u dÔ+Ø�?�?Ü�H‰H×Ñ˜e TÔ*ä�dœEŸJ™J×1Ñ1×2Ñ2°t·|·|àœD¤ e§n¡nÓ5Ñ6ˆHÜ˜h¬
×3Ñ3Ü$Ð%DÓEÐEØ×.Ñ.Ó0ˆGÜ-¨dÕ3±^Õ5EØ—
‘
˜7°EÔB÷ 6F×3ô ˜$  x§¡Ó7Ð7÷1 2BÖ1Aú×/Ö/ú÷* 6FÕ5Eú×3Õ3úsH   Å<LÆ8LÆ<LË L7ËL&ËL7Ì
L	ÌLÌ
L#Ì&
L4	Ì0L7Ì7
Mc           
     óÞ   • UR                   (       a8  UR                   Vs/ s H  nU R                  XX4U5      PM     nn[        U5      $ U R                  XR                  S   X4U5      $ s  snf )z/
Create a new FakeTensor from the cache entry.
r   )rn  rm  rY  r;  )rK   rC  râ  r™   rh   rØ  rA  Úoutputss           rL   rÝ  Ú'FakeTensorMode._output_from_cache_entry5  s�   € ð × × ð
 $)×#5Ò#5ó	ò $6�Kð ×8Ñ8Ø¨°4öñ $6ð	 ð ô ˜“>Ð!à×;Ñ;Ø×)Ñ)¨!Ñ,¨c¸óð ùòs    A*c                óð   ^• SU4S jjm U R                  X#XE5      n T" Xa5        g! [         a  n[        SU SU SU SU 35      UeSnAff = f! [         a  n[        SU SU SU 35      UeSnAff = f)zn
Helper to validate that the output synthesized from the cache matches
the output created by normal dispatch.
c                óŠ  >• [        U [        5      (       a„  [        U[        5      (       d  [        S[        U5       35      e[	        U 5      [	        U5      :w  a#  [        S[	        U 5       S[	        U5       35      e[        X5       H  u  p#T" X#5        M     g [        U [        5      (       a,  [        U[        5      (       a  X:w  a  [        SU  SU 35      eg U c  Ub  [        SU 35      eg [        U [        5      (       aB  [        U 5      [        U5      Ld  U R                  UR                  La  [        SU  SU 35      eg [        U [        R                  5      (       aG  [        U[        R                  5      (       d  [        S[        U5       35      e[        [        X5        g [        S[        U 5       35      e)	NzExpected tuple, got zTuple length mismatch: z != zInt mismatch: zExpected None, got zSymType mismatch: úExpected Tensor, got zUnsupported type )rµ   r;  rº   r·   rã  ÚziprR  r%   r—  r‡   r   r   r   rû  )ÚaÚbÚlrœ  Úassert_helpers       €rL   re  Ú>FakeTensorMode._crosscheck_cache_output.<locals>.assert_helper[  s€  ø€ Ü˜!œU×#Ñ#Ü! !¤U×+Ñ+Ü(Ð+?ÄÀQÃ¸yÐ)IÓJÐJÜ�q“6œS ›VÓ#Ü(Ð+BÄ3ÀqÃ6À(È$ÌsÐSTËvÈhÐ)WÓXÐXÜ žI‘D�AÙ! !Ö'ò &ä˜Aœs×#Ñ#Ü! !¤S×)Ñ)¨Q«VÜ(¨>¸!¸¸DÀÀÐ)DÓEÐEð .4à‘Ø‘=Ü(Ð+>¸q¸cÐ)BÓCÐCð !ä˜Aœ|×,Ñ,Ü˜“7¤$ q£'Ò)¨Q¯V©V¸1¿6¹6Ò-AÜ(Ð+=¸a¸SÀÀQÀCÐ)HÓIÐIð .Bä˜AœuŸ|™|×,Ñ,Ü! !¤U§\¡\×2Ñ2Ü(Ð+@ÄÀaÃÀ	Ð)JÓKÐKÜ"¤9¨aÕ3ä"Ð%6´t¸A³w°iÐ#@ÓAÐArP   z*FakeTensor cache crosscheck failure: func=z, args=z	, kwargs=z: Dispatch raised=N)rb  r   rc  r   rV   rW   )rØ  Ú	Exceptionrû  )	rK   rã  rh   ré  rØ  rÙ  Útrue_outputrà  re  s	           @rL   rÞ  Ú'FakeTensorMode._crosscheck_cache_outputN  s¶   ø€ ÷	Bð0	Ø×-Ñ-¨d¸4ÓHˆKð	Ù˜+Õ.øô ó 	ÜØ<¸T¸Fð CØ�v˜Y v hÐ.@ÀÀðEóð ðûð	ûô ó 	ÜØ<¸T¸Fð CØ�v˜Y v hð0óð ðûð	ús+   ‹' žA §
A±A	Á	AÁ
A5ÁA0Á0A5c                ó6  • U=(       d    0 n[        5          [        R                  SXU5        S S S 5        U[        ;   a  [        U   " U5      $ [        R	                  5       [
        R                  ::  a(  [        R                  SS[        -  U5        [        5       nU[        ;   a  [        U 5         U" U0 UD6sS S S 5        $ U R                  (       a  U R                  XX45      $ U R                  XX45      $ ! , (       d  f       NÑ= f! , (       d  f       NT= f)Nz%s %s %sz'%sFakeTensorMode.__torch_dispatch__: %sÚ )r&   r‰  r{  rä  ÚgetEffectiveLevelÚloggingÚDEBUGrI   rD   Ú_DISPATCH_HANDLE_DIRECTLYrl  r‘   rä  rØ  )rK   rh   ré  rØ  rÙ  Úincrs         rL   r´  ÚFakeTensorMode.dispatch‚  sä   € ð —˜2ˆÜ�]Ü�I‰I�j $¨fÔ5÷ ð Ô*Ó*Ü*¨4Ò0°Ó6Ð6ä× Ñ Ó"¤g§m¡mÓ3Ü�I‰IØ9¸3ÄÑ;PÐRVôô +Ó,ˆDð Ô,Ó,ä-¨dÕ3Ù˜TÐ, VÑ,÷ 4Ñ3ð ××Ø×-Ñ-¨d¸4ÓHÐHà×&Ñ& t°DÓAÐA÷/ �]ú÷" 4Õ3ús   –C9Â2D
Ã9
DÄ

Dc                ó„  ^ ^^^^
^• SSK mSSKJn  SU U4S jjn[        T[        R
                  5      (       aW   U" TTSSSSSS9  [        [        TR                  5       TR                  5       5      5       H  u  nu  p‰ U" X‰5        M     TS4$ Tck  Tbh  [        R                  R                  R                  (       a  [        S	UUU4S jS9  [        T TT5      S4$ [        ST ST S[        U5       ST 35      e U" TT5        TS4$ ! [         ar  m
[        R                  R                  R                  (       a#  [        S	U
U4S
 jS9  [        T TT5      S4s Sm
@
$ [        ST ST S[        U5       ST 35      T
eSm
@
ff = f! [         aw  m
[        R                  R                  R                  (       a%  [        S	U
U4S jS9  [        T TT5      S4s Sm
@
s  $ [        SU SU	 S[        U5       SU ST 3
5      T
eSm
@
ff = f! [         a&  m
[        ST ST S[        U5       ST 35      T
eSm
@
ff = f)z®
Helper to cross-check fake/real output properties & values,
and create new fake vals if mismatched.
Returns tuple of object & boolean, for whether or not it was overwrriten
r   N)Ú_check_fake_real_tensorsc                óŒ  >• [        U [        [        45      (       að  TR                  c  [	        S5      eU R
                  R                  R                  TR                  R                  R                  5       -
  TR                  R                  R                  5       -
  (       dh  TR                  R                  TR                  U R
                  R                  U5      SS9TR                  R                  La  [        SU  SU S35      eg g [        U [         ["        [$        45      (       a  X:w  a  [        SU  SU S35      eg g )Nz3self.shape_env must not be None for symbolic valuesT)Úcompute_hintúmismatch between fake value ú and real value rk  )rµ   r   r   r  rº   r—  ÚexprÚfree_symbolsÚbacked_var_to_valr  Úreal_tensor_prop_unbacked_valsÚ_maybe_evaluate_staticÚEqÚSÚtruert   rR  Úfloatró   )ÚfakeÚrealrK   Úsympys     €€rL   Ú_check_fake_real_valsÚ?FakeTensorMode._maybe_infer_fake.<locals>._check_fake_real_vals¯  s9  ø€ ä˜$¤¬Ð 2×3Ñ3à—>‘>Ñ)Ü(ØMóð ð Ÿ	™	Ÿ™×3Ñ3Ø—n‘n×6Ñ6×;Ñ;Ó=ñ>à—n‘n×CÑC×HÑHÓJ÷Kð
 Ÿ™×=Ñ=Ø!ŸH™H T§Y¡Y§^¡^°TÓ:Èð >ð ð  %Ÿw™wŸ|™|ò,ô
 4Ø:¸4¸&Ð@PÐQUÐPVÐVWÐXóð ð,ðKô Ø”sœE¤4Ð(÷ñ ð “<Ü/Ø6°t°fÐ<LÈTÈFÐRSÐTóð ð  ðrP   úReal tensor propagation foundFT)ÚcontextÚsizesÚstridesr/  rÀ  Úmismatched_fake_kernelc                 ó4   >• [        T5      T R                  S.$ ©N©Úopra   ©r`   ra   ©Úexcrh   s   €€rL   Ú<lambda>Ú2FakeTensorMode._maybe_infer_fake.<locals>.<lambda>Ü  s   ø€ Ü"% d£)Ø&)§j¡jò-rP   ©Úmetadata_fnzFReal tensor propagation found a metadata mismatch between fake tensor z and real tensor z,  at outputz, for func: c                 ó4   >• [        T5      T R                  S.$ rŒ  r�  r�  s   €€rL   r’  r“  ï  s   ø€ Ü&)¨$£iØ*-¯*©*ò1rP   zIReal tensor propagation found an output size mismatch between fake shape z and real shape z, at outputz.size(z), for func: c                 ó,   >• [        T5      ST  ST 3S.$ )Nrv  rw  r�  ©r`   )r�  rh   r‚  s   €€€rL   r’  r“  þ  s"   ø€ Ü! $›iØ$@ÀÀÐFVÐW[ÐV\Ð"]ò)rP   zQReal tensor propagation found an output value mismatch between fake output value z and real output value )r�  r   r‚  r   rV   rW   )rƒ  Útorch._subclasses.fake_utilsrs  rµ   r‡   r   rt   r¾   rÔ  Ú*generate_fake_kernels_from_real_mismatchesr   Ú_infer_fake_from_real_tensorr*   r0  ra  r{  )rK   rh   Úpathr�  r‚  rs  r„  ÚjÚs_fakeÚs_realr‘  rƒ  s   `` ``     @@rL   Ú_maybe_infer_fakeÚ FakeTensorMode._maybe_infer_fake£  s–  ý€ ó 	åI÷	ð 	ô< �dœEŸL™L×)Ñ)ðÙ(ØØØ;ØØ!Ø#'Ø"'òô2 (1´°T·Y±Y³[À$Ç)Á)Ã+Ó1NÖ'OÑ#�Ñ#�FðÙ)¨&Ö9ñ (PðT �Uˆ{Ðð1 ‰\˜dÑ.Ü×Ñ×&Ñ&×Q×QÜ!Ø,ö!òô 4°D¸$ÀÓEÀtÐKÐKÜ'ðØ#˜fÐ$5°d°Vð <Ü# D›\˜N¨,°t°fð>óð ðÙ% d¨DÔ1ð �Uˆ{Ðøôu )ó Ü×#Ñ#×*Ñ*×U×UÜ%Ø0õ%òô 8¸¸dÀDÓIÈ4ÐOÕOÜ+ð#Ø#' &Ð(9¸$¸ð @!Ü!'¨£ ¨l¸4¸&ðBóð ð	ûðûô& -ó Ü×'Ñ'×.Ñ.×Y×YÜ)Ø4õ)òô  <¸DÀ$ÈÓMÈtÐS×SÜ/ð&Ø&, XÐ-=¸f¸Xð F$Ü$*¨4£L >°¸°s¸-ÈÀvðOóð ð	ûðûôB )ó Ü+ð)Ø)-¨Ð.EÀdÀVð L Ü & t£˜~¨\¸$¸ðAóð ð	ûðúsa   ºD Â FÃ?	H Ä
FÄAFÅFÅ"!FÆFÆ
HÆAHÇHÇ#$HÈHÈ
H?È!H:È:H?c                óè  ^ ^^^• SSK Jn  SmT R                  (       a  [        T R                  R                  5      mSUU 4S jjn[
        R                  U5      u  p‰[
        R                  U5      u  p« U" SXSXB5        [        [        XŠ5       VVVs/ s H  u  u  pÍnT R!                  TXÍU5      PM     snnn6 u  nn[#        U5      (       a  T(       a  U" 5         [
        R%                  Xù5      $ ! [         ao  m[        R                  R                  R                  (       a,  [        SUU4S jS9  U" 5         [        UU 4S	 jU5      s Sm@$ [        S
U SU ST 35      TeSm@ff = fs  snnnf )z³
Helper to cross-check fake/real output properties & values,
and create new fake vals if mismatched, but at the kernel level.
Means this handles pytree outputs & checks aliasing.
r   )Ú_check_alias_infoNc                 ó’   >• [        [        TR                  R                  5      R	                  T 5      5      TR                  l        g r|   )r<  Úsetr  Úpending_fresh_unbacked_symbolsÚ
difference)Úpending_unbackedrK   s   €€rL   Ú_clear_pending_unbackedÚXFakeTensorMode._maybe_infer_fake_kernel_from_pytree_out.<locals>._clear_pending_unbacked(	  s4   ø€ Ü<@Ü�D—N‘N×AÑAÓB×MÑMØ$óó=ˆD�N‰NÕ9rP   r†  rŠ  c                 ó:   >• [        T5      ST R                   3S.$ )Nz>Mismatched aliasing spec between fake kernel and real kernel: r�  r�  r�  s   €€rL   r’  ÚIFakeTensorMode._maybe_infer_fake_kernel_from_pytree_out.<locals>.<lambda>;	  s!   ø€ Ü! $›ià\Ð]`×]gÑ]gÐ\hÐiò)rP   r”  c                ó   >• [        TTU 5      $ r|   )r›  )r¯   rh   rK   s    €€rL   r’  r¬  G	  s   ø€ Ô:¸4ÀÀqÔIrP   zGReal tensor propagation found an aliasing mismatch between fake output z and real output z,  for func: rU   )r™  r£  r  r<  r¦  rà   Útree_flatten_with_pathÚtree_flattenrt   r‡   r¾   rÔ  rš  r   r,   ra  r   r¹   Útree_unflatten)rK   rh   Úfake_inÚreal_inÚfake_outÚreal_outr£  r©  Úfake_paths_leavesÚ	fake_specÚreal_leavesr¦   Ú
_fake_pathÚ	_fake_outÚ	_real_outÚfake_leavesÚ	overridesr‘  r¨  s   ``               @@rL   Ú(_maybe_infer_fake_kernel_from_pytree_outÚ7FakeTensorMode._maybe_infer_fake_kernel_from_pytree_out	  st  û€ õ 	Cð  ÐØ�>�>Ü# D§N¡N×$QÑ$QÓRÐ÷	ð 	ô (.×'DÑ'DÀXÓ'NÑ$ÐÜ×,Ñ,¨XÓ6‰ˆð	áØ/°ÀHôô> "%ô ;>Ø%ô;õò;Ñ6Ñ+�Z¨Yð ×&Ñ& t¨ZÀIÖNñ;óð"
Ñˆ�Yô �	�N‰NÖ/á#Ô%Ü×$Ñ$ [Ó<Ð<øôQ %ó 	ä×Ñ×&Ñ&×Q×QÜ!Ø,õ!òñ (Ô)ÜÝIÈ8óõ ô ,ð#Ø#+ *Ð,=¸h¸Zð H"Ø"& ð)óð ð	ûð)	üô:s+   Á5
C1 Â"E-Ã1
E*Ã;AE%Å
E*ÅE%Å%E*c                ót  ^ ^^^^,^-^.^/^0^1^2^3^4^5^6^7• SSK Jn  [        R                  TT45      u  m0m,[	        T05      nU(       aI  T0 Vs/ s H   n[        U5      (       d  M  [        U5      PM"     nn[        R                  SU5        [        $ T0 V	s/ s H  n	T R                  U	5      (       d  M  U	PM     n
n	[        S U
 5       5      =(       d    [        S T0 5       5      m2T R                  m.TT R                  ;   nSnT R                  (       a  T[        R                   R"                  R$                  R&                  L a  ST;   a  TS   R                  S:w  a  S	nT[        R                   R(                  R*                  R&                  L a  S	nT[        R                   R"                  R$                  R&                  L =(       a@    [-        TS   [        R.                  5      =(       a    TS   R0                  R                  S
:H  =(       d    UnU(       a  U
(       a%  [3        T5      (       aë  T2(       dä  U
(       dÝ  U(       dÖ  [5        S U
 5       5      (       d  [7        T S35      eT0 Vs/ s H'  nT R                  U5      (       a  UR8                  OUPM)     nn[        R;                  UT,5      u  nnT" U0 UD6n[        U5      [.        L aJ  T R=                  U5      (       a4  [?        5          URA                  5       nS S S 5        T.RC                  T US	S9$ U(       aY  [E        T5      S:w  d  [E        T5      S:w  a  [7        ST ST 35      e[        TS   5      [.        L a  T.RC                  T TS   5      $ T RG                  TT.T0T,5      u  m0n
@@[5        S U
 5       5      n[-        T[        RH                  RJ                  5      (       Ga°  [        RL                  RN                  TRP                  ;  Ga‡  [        RL                  RR                  TRP                  ;  d  T["        RT                  R&                  L GaA  U(       Ga9  [E        U
5      S:w  Ga)  T2(       Gd!  U(       Gd  T["        RV                  R&                  Laü  T0 Vs/ s H'  nT R                  U5      (       a  UR8                  OUPM)     nn[        R;                  UT,5      u  nn[?        5          T" U0 UD6nS S S 5        [        RY                  W5      nU V	s/ s H  n	[-        U	[.        5      (       d  M  U	PM     nn	[5        U 4S jU 5       5      nU(       a   [        R[                  [.        U.U 4S jU5      $ U H  nT.R]                  U5        M     [        R;                  T0T,5      u  mm[-        T[        RH                  R^                  5      (       aa  TU;   a[  T R`                  c  [b        Rd                  OT R`                  Rf                  nT    U" 5          UT   " T0 TD6sS S S 5        sS S S 5        $ T Ri                  TU
TT5            S)U 4S jjnSSK5J6m-J7m1  [q        5       m3T3m6T Rr                  (       aò  [5        S U
 5       5      (       aÛ  [        U1U U74S jT0 5       5      (       d¿  [t        R                  ST5        T0 Vs/ s H  nU" U5      PM     nn[        R;                  UT,5      u  m4m5[v        Rx                  " T5      nU(       d  [v        Rz                  " TUT,5      n T" T40 T5D6m6U(       d2  WR                  5         [v        R€                  " TR‚                  T0T65        OQT Rr                  (       a@  [t        R                  STU
T0T R`                  (       a  T R`                  R„                  OS 5        S*UU-U1UUU3U4U5U6U 4
S jjnT2(       a.  [‡        5       R‰                  T5      nUb  U" U" T /TQ70 TD65      $ SSKEJFn  TU;  a¼  T R�                  T5      (       d¦  T2(       a  TT R�                  ;   d�  SSKEJIn   TU ;   aK  T2(       d'  [•        T5      (       a4  [5        S U
 5       5      (       a  T    U" U T   " T0 TD65      sS S S 5        $ T    TR–                  " T0 TD6n!U![        La  U" U!5      sS S S 5        $  S S S 5        STR˜                  Rš                  ;   aE  [�        TS 5      (       a4  [Ÿ        T5      (       d$  T    U" TR                   " T0 TD65      sS S S 5        $ [        R¢                  R¤                  R¦                  n"U"b'  TU"R¨                  ;   a  U"Rª                  " TT /TQ70 TD6$ T Rr                  (       ak  T6T3Laf  [v        Rx                  " T5      (       dK  T R`                  b>  [v        R¬                  " T5      (       d#  [¯        T TT65      n#[±        S!U4S" jS#9  U" U#5      $ [        R²                  R´                  R¶                  R¹                  TR›                  5       5      Rº                  R¼                  n$U$(       a~   [        R²                  Rº                  R¿                  T T5      m/[        R²                  Rº                  RÁ                  U/4S$ j5         T    U$" T0 TD6n#U" U#5      sS S S 5        sS S S 5        $ [Ä         H5  u  n&n'U&" T5      (       d  M  U'" T T/TQ70 TD6n(U([        Ld  M-  U" U(5      s  $     S+   S,U,U0UU2U 4S& jjjn)[Ç        T5      (       d  U)" 5       n*U" U*5      $  [É        T 5         T" T0 TD6n!S S S 5        U" T RÑ                  W!TT0TR‰                  S5      S(95      $ s  snf s  sn	f s  snf ! , (       d  f       GN„= fs  snf ! , (       d  f       GN¹= fs  sn	f ! , (       d  f       O= fS S S 5        GM¦  ! , (       d  f       GNµ= fs  snf ! [|         a"  n[t        R                  STU5         S nAGNçS nAff = f! , (       d  f       GN�= f! , (       d  f       GNw= f! , (       d  f       GN*= f! , (       d  f       O= fS S S 5        GM¥  ! , (       d  f       GN´= f! [Â         am  n%T Rr                  (       aU  T6T3LaP  [v        Rx                  " T5      (       d5  T R`                  b(  [¯        T TT65      n#[±        S!U4S% jS#9  U" U#5      s S n%A%$ U%eS n%A%ff = f! , (       d  f       GN³= f! [Ê         a  n+U)" U+5      s S n+A+$ S n+A+f[Ì         a    [t        RÏ                  S'T5        e f = f)-Nr   rú  z,FakeTensorMode unrecognized subclass(es): %sc              3  ó8   #   • U  H  oR                   v •  M     g 7fr|   )rJ  )r˜   r3  s     rL   r›   Ú0FakeTensorMode._dispatch_impl.<locals>.<genexpr>~	  s   é € ð !
Ú3H¨a×)Ö)Ò3Hùr²   c              3  óB   #   • U  H  n[        U[        5      v •  M     g 7fr|   )rµ   r   )r˜   rb  s     rL   r›   rÁ  €	  s   é € Ð:²	¨1”˜Aœv×&Ð&²	ùó   ‚Fr  r"  TrM  c              3  ó<   #   • U  H  oR                   S Lv •  M     g 7fr|   r  ©r˜   rÍ   s     rL   r›   rÁ  ª	  s   é € ÐMÒ7L°!—z‘z¨Õ-Ò7Lùó   ‚z. should not have fake inputs without constants©rD  r1   z1Expected exactly one arg for lift func, got args=z kwargs=c              3  ó<   #   • U  H  oR                   S Lv •  M     g 7fr|   r  ©r˜   rà  s     rL   r›   rÁ  Ü	  ó   é € ÐQÒ;P°aŸ:™:¨TÕ1Ò;PùrÆ  c              3  óF   >#   • U  H  nTR                  U5      v •  M     g 7fr|   )Úmay_turn_const)r˜   rÍ   rK   s     €rL   r›   rÁ  ú	  s!   øé € ÐPÒ?O¸!˜t×2Ñ2°1×5Ð5Ò?Oùr+  c                ó&   >• TR                  TU SS9$ )NTrÇ  )rJ  )rÍ   Ú	converterrK   s    €€rL   r’  Ú/FakeTensorMode._dispatch_impl.<locals>.<lambda>ÿ	  s   ø€ ˜i×8Ñ8¸¸qÐPTÐ8ÑUrP   c                óÐ  >• [        U [        5      (       a  U R                  $ [        U [        5      (       a�  TR                  c  [        S5      eU R                  R                  U R                  R                  R                  TR                  R                  5      R                  TR                  R                  5      5      $ [        U [        5      (       a  U R                  $ U $ )Nz2self.shape_env must not be None for symbolic types)rµ   r¶   r§  r%   r  rº   r—  rN  rx  Úxreplacerz  r{  r   Úreal_obj)rÍ   rK   s    €rL   Úmaybe_to_real_tensorÚ;FakeTensorMode._dispatch_impl.<locals>.maybe_to_real_tensor
  s±   ø€ ô ˜!œZ×(Ñ(Ø—}‘}Ð$Ü˜Aœ|×,Ñ,Ø—>‘>Ñ)Ü(ØLóð ð —v‘v—}‘}Ø—F‘F—K‘K×(Ñ(¨¯©×)IÑ)IÓJ×SÑSØŸ™×EÑEóóð ô
 ˜AÔ/×0Ñ0Ø—z‘zÐ!à�rP   )Úcompute_unbacked_bindingsÚfree_unbacked_symbolsc              3  ó<   #   • U  H  oR                   S Lv •  M     g 7fr|   )r§  rÉ  s     rL   r›   rÁ  :
  s   é € ÐMÒ7L°!—M‘M¨Õ-Ò7LùrÆ  c              3  óÈ   >#   • U  HW  n[        U[        5      =(       a;    T" U5      =m=(       a*    TR                  S L=(       a    [        U4S jT 5       5      v •  MY     g 7f)Nc              3  óV   >#   • U  H  nUTR                   R                  ;  v •  M      g 7fr|   )r  r{  )r˜   ÚsrK   s     €rL   r›   Ú:FakeTensorMode._dispatch_impl.<locals>.<genexpr>.<genexpr>@
  s'   øé € ð â!%˜Að  §¡×!NÑ!NÖNÚ!%ùs   ƒ&))rµ   r%   r  r¹   )r˜   rb  rÖ  rK   Úsymss     €€€rL   r›   rÁ  ;
  sg   øé € ð ò #�Aô ˜q¤,Ó/÷ Ù!6°qÓ!9Ð9˜÷àŸ™¨dÐ2÷ô ô á!%óó ôò #ùs   ƒAA"zpropagate_real_tensors %sz9real-tensor fallback failed for %s: %s; silently ignoringz,SKIPPED propagate_real_tensors %s(%s, %s) %sc           	     óf  >
^^• SS K m[        R                  ST5        SUUUU4S jjmTTLGa  [        R                  R
                  R                  (       d  TR                  TTT4T	T
4U T5        OTR                  TTT4T	T
4U T5      n [        U [        5      (       dr  [        T[        5      (       d]  [        U 5      [        T5      LaF  [        T[        [        R                  U 5      5      [        [        R                  T5      5      5        O[        TU T5        T" TR                  U SS9  U $ )Nr   zmaybe_propagate_real_tensors %sc                óF  >• [        U [        5      (       aÇ  [        R                  S[	        U 5      [	        U5      5        Xl        [        U R                  5       UR                  5       5       H  u  p#T" X#5        M     [        U R                  5       UR                  5       5       H  u  p#T" X#5        M     T" U R                  5       UR                  5       5        g [        U [        5      (       Ga.  T" U 5      (       Ga  [        U R                  R                  TR                  5      (       aI  TR                  c  [        S5      eTR                  R!                  U R                  R                  U5        g [        U R                  R                  =nTR"                  5      (       au  [        UR$                  TR                  5      (       aO  UR&                  S:X  a>  TR                  c  [        S5      eTR                  R!                  U[)        U5      5        g g g g g g )Nz%maybe_propagate_real_tensors %s -> %sz3self.shape_env must not be None for symbolic Symbolr1   z/self.shape_env must not be None for symbolic Eq)rµ   r¶   r‰  r{  rŠ  r§  ra  r{  r,  r/  r%   r—  rx  ÚSymbolr  rº   Ú"set_real_tensor_prop_unbacked_valsr}  ÚlhsÚrhsrR  )rÍ   Úreal_trÚ  Úreal_srÖ  ÚgorK   rƒ  s       €€€€rL   rå  ÚOFakeTensorMode._dispatch_impl.<locals>.maybe_propagate_real_tensors.<locals>.gox
  s—  ø€ Ü˜a¤×,Ñ,ä—I‘IØ?ÄÀAÃÌÈ6Ë
ôð %+”MÜ%(¨¯©«°6·;±;³=Ö%A™	˜Ù˜1žñ &Bä%(¨¯©«°V·]±]³_Ö%E™	˜Ù˜1žñ &Fá�q×'Ñ'Ó)¨6×+@Ñ+@Ó+BÕCÜ ¤<×0Ò0Ñ5JÈ1×5MÒ5MÜ! !§&¡&§+¡+¨u¯|©|×<Ñ<ØŸ>™>Ñ1Ü"0Ø Uó#ð ð Ÿ™×IÑIØŸF™FŸK™K¨õô #¨¯©¯©Ð#3 1°U·X±X×>Ñ>Ü& q§u¡u¨e¯l©l×;Ñ;ØŸE™E Q›JàŸ>™>Ñ1Ü"0Ø Qó#ð ð Ÿ™×IÑIØœs 6›{õð 'ð <ð ?ð 6NÐ0rP   T)Úpeek)rÍ   r  rã  r   rV   rW   )rƒ  r‰  r{  r‡   r¾   rÔ  rš  r½  rµ   r   r·   r-   r;  rà   r¯  r  )r³  rå  rƒ  rØ  rÕ  rÖ  rh   rÙ  ÚnilÚ	real_argsÚreal_kwargsr´  rK   s    @@€€€€€€€€€€rL   Úmaybe_propagate_real_tensorsÚCFakeTensorMode._dispatch_impl.<locals>.maybe_propagate_real_tensorss
  s  ú€ Ûä�I‰IÐ7¸Ô>÷!ò !ðF ˜sÓ"ä×'Ñ'×.Ñ.×Y×YØ×AÑAØØ˜v˜Ø" KÐ0Ø Ø õð  $×LÑLØØ˜v˜Ø" KÐ0Ø Ø ó �Hô # 8¬V×4Ñ4Ü& x´×8Ñ8Ü˜X›¬d°8«nÒ<ô ØÜœf×1Ñ1°(Ó;Ó<Üœf×1Ñ1°(Ó;Ó<õô ˜b (¨HÔ5ñ
 *¨$¯.©.¸(ÈÒNàˆOrP   )Ú
meta_tabler×   c              3  óB   #   • U  H  n[        U5      (       + v •  M     g 7fr|   )r   rÉ  s     rL   r›   rÁ  ß
  s   é € ÐPÒ:O°Q¤¨aÓ 0×0Ñ0Ò:OùrÃ  zprims::Úprim_meta_implÚmissing_fake_kernelc                 ó   >• S[        T 5      0$ ©NrŽ  r˜  rÔ   s   €rL   r’  rÏ    s   ø€ Øœc $›iñ)rP   r”  c                 ó   >• T $ r|   rT   )Úctxs   €rL   r’  rÏ    s   ø€ ÁSrP   c                 ó   >• S[        T 5      0$ rò  r˜  rÔ   s   €rL   r’  rÏ  -  s   ø€ Ø ¤# d£)ñ-rP   c                óì   >• [         R                  R                  R                  T5      (       a  g T(       d  TR	                  T5      (       d  [        T5      eU c  [        T5      n [        TTTTU 5      $ r|   )r‡   r	  r
  Úcan_generate_trivial_fake_implÚcan_run_unsafe_fallbackrn   Úrun_fallback_kernel)ÚerrorÚ	args_specr  rh   Úhas_symbolic_sizesrK   s    €€€€€rL   Úmaybe_run_unsafe_fallbackÚ@FakeTensorMode._dispatch_impl.<locals>.maybe_run_unsafe_fallback>  sc   ø€ ô �~‰~×#Ñ#×BÑBÀ4×HÑHØæ!¨×)EÑ)EÀd×)KÑ)KÜ2°4Ó8Ð8Ø‰}Ü4°TÓ:�Ü& t¨T°9¸iÈÓOÐOrP   z*failed while attempting to run meta for %srZ  )rÍ   rB   rV   z1Optional[Union[T, Tensor, torch._C.ScriptObject]])r³  rB   rV   rB   r|   )rú  zOptional[RuntimeError]rV   rR  )ir  rû  rà   r¯  Ú_check_for_subclassÚ_check_for_subclass_argr·   ræ  r{  r1  r¦  r¹   r�  r  r«  r‡   rà  r	  Ú_to_copyrâ  ÚprimsÚ
device_putrµ   r   r  rs  r¸   rº   rú   r°  rÌ  r&   ÚclonerJ  rã  Ú%validate_and_convert_non_fake_tensorsrÕ  r=   r  Únondeterministic_seededr  r  Údetach_Ú_nested_tensor_from_tensor_listrá   Útree_map_onlyr  rÖ  r  rN  rO  Úignore_fresh_unbacked_symbolsÚinvalidate_written_to_constantsr,  rÕ  rÖ  r  rŽ  r‰  Úlibrary_utilsr  ÚMutationCheckerÚZeroDivisionErrorÚcheckÚcheck_aliasing_constraintr~  r{  Úget_fast_op_implsr  rÙ   rí  Úcpp_meta_supports_symintÚ#_unbacked_special_fake_handling_opsrØ   rÞ   Ú	decomposerÓ   rq  rª  Ústride_incorrect_oprï  r“  rÔ  Ú_custom_ops_profileÚdataÚgeneric_fake_kernelÚhas_fake_kernelÚ"inferred_fake_kernel_from_real_outr   r	  Úsimple_registryÚ	singletonÚfindÚ	fake_implÚkernelÚFakeImplCtxÚset_ctx_getterr   Úop_implementations_checksÚhas_metarl  r±  rg  r¶  Ú+wrap_meta_outputs_with_default_device_logic)8rK   rh   ré  rØ  rÙ  rû  Úhas_unrecognized_typesr¯   rë  rÍ   Úflat_arg_fake_tensorsÚis_lift_funcÚavoiding_device_initÚ!device_conversion_skip_const_proprb  Úconst_flat_argsÚ
const_argsÚconst_kwargsr£   Úall_constantÚflat_outÚflat_out_tensorsr  Ú#maybe_ignore_fresh_unbacked_symbolsrÓ  Úreal_flat_argsr  Úmutation_checkerr‘  rë  Ú	fast_implrí  rØ   rœ  ÚprofilesrA  Úmaybe_fake_implrà  Úrun_impl_checkÚop_implÚop_impl_outrý  ÚfallbackÚnot_implemented_errorrû  rÕ  rÎ  rô  r  rÖ  rü  rè  ré  rê  r´  rÜ  s8   `` ``                                       @@@@@@@@@@@@rL   rØ  ÚFakeTensorMode._dispatch_impl`	  sp  ÿÿ€ õ 	Jä%×2Ñ2°D¸&°>ÓBÑˆ	�9ô "5°YÓ!?ÐÞ!á!*ó"Ú!*˜AÔ.EÀa×.H“”�Q–¡ð ð "ô  ×%Ñ%Ø>Ð@Rôô "Ð!á,5Ó MªI q¸×9IÑ9IÈ!×9L§©IÐÐ MÜ ñ !
Ù3Hó!
ó 
÷ ;äÑ:±	Ó:Ó:ð 	ð ×.Ñ.ˆ	à˜tŸ}™}Ñ,ˆð  %ÐØ×!×!àœŸ	™	Ÿ™×/Ñ/×7Ñ7Ò7Ø Ó&Ø˜8Ñ$×)Ñ)¨UÓ2à'+Ð$Ø”u—y‘y—‘×1Ñ1×9Ñ9Ò9Ø'+Ð$ð ”E—I‘I—N‘N×+Ñ+×3Ñ3Ð3÷ .Ü˜4 ™7¤E§L¡LÓ1÷.à�Q‘—‘×#Ñ# vÑ-÷-"ð "ð	 	*ö Ö!6Ü+¨D×1Ñ1Þ&Þ)Þ5äÑMÑ7LÓM×MÑMÜ$Ø�fÐJÐKóð ñ CLóÚBK¸Q˜d×.Ñ.¨q×1Ñ1�—
’
°qÒ8Á)ð ð ô (.×'<Ñ'<¸_ÈiÓ'XÑ$ˆJ˜Ù˜
Ð3 lÑ3ˆCÜ�C‹yœFÒ" t×':Ñ':¸3×'?Ñ'?ô !•]ØŸ)™)›+�C÷ #à ×1Ñ1°$¸È4Ð1ÐPÐPö Ü�6‹{˜aÓ¤3 t£9°£>Ü$ØGÈÀvÈXÐV\ÐU]Ð^óð ô �D˜‘G‹}¤Ò&Ø ×1Ñ1°$¸¸Q¹Ó@Ð@ð .2×-WÑ-WØ�)˜Y¨	ó.
Ñ*ˆÐ)ð �&ô ÑQÑ;PÓQÓQˆä�tœUŸZ™Z×2Ñ2×3Ò3Ü—	‘	×1Ñ1¸¿¹ÔBô —	‘	×&Ñ&¨d¯i©iÓ7¸4Ä4Ç<Á<×CWÑCWÓ;WçÜÐ)Ó*¨aÔ/ß&ß(ØœD×@Ñ@×HÑHÒHñ CLóÚBK¸Q˜d×.Ñ.¨q×1Ñ1�—
’
°qÒ8Á)ð ð ô (.×'<Ñ'<¸_ÈiÓ'XÑ$ˆJ˜ô •Ù˜JÐ7¨,Ñ7�÷ ô ×)Ñ)¨#Ó.ˆHÙ+3ÓMª8 a´zÀ!ÄV×7L§©8ÐÐMÜÔPÑ?OÓPÓPˆLæÜ×+Ñ+ÜÝUØóð ó (�Ø×5Ñ5°cÖ:ñ (ô
 ×,Ñ,¨Y¸	ÓB‰ˆˆfô �tœUŸZ™Z×;Ñ;×<Ñ<ØÐ/Ó/ð
 —>‘>Ñ)ô ×&Ò&à—^‘^×AÑAð 0ò Ñ:Õ<Ø.¨tÒ4°dÐE¸fÑE÷ =Ð<—‘ð 	×,Ñ,¨TÐ3HÈ$ÐPVÔWð	Øð	à>÷	÷(	
ô
 ‹hˆàˆà×'×'ÜÑMÑ7LÓM×MÑMÜö ñ #ó÷ ñ ô �I‰IÐ1°4Ô8Ù?HÓIºy¸!Ñ2°1Ö5¹yˆNÐIÜ%+×%:Ñ%:¸>È9Ó%UÑ"ˆI�{ä&×1Ò1°$Ó7ˆJÞÜ#0×#@Ò#@Ø˜.¨)ó$Ð ð
Ù Ð:¨kÑ:�ö Ø ×&Ñ&Ô(Ü×7Ò7¸¿
¹
ÀIÈxÔXøà×(×(ô �I‰IØ>ØØ%Øà—>—>ð —‘×=Ò=àô÷Q	÷ Q	ð Q	öh Ü)Ó+×/Ñ/°Ó5ˆIØÑ$Ù3±I¸dÐ4TÀTÒ4TÈVÑ4TÓUÐUõ 	-ð ˜
Ó"Ø×1Ñ1°$×7Ñ7æ" t¨t×/WÑ/WÓ'Wõ :ð Ð*Ó*Þ"ô 0°×5Ñ5ÜÑPÑ:OÓP×PÑPò Ù7Ø+¨DÒ1°4ÐB¸6ÑBó÷ ‘Tò
 à—N’N DÐ3¨FÑ3�ØœNÒ*Ù7¸Ó:÷	 ‘ð +÷ ð ˜Ÿ™×*Ñ*Ó*Ü˜Ð.×/Ñ/Ü'¨×-Ñ-âÙ3Ø×'Ò'¨Ð8°Ñ8ó÷ ‘ô
 —=‘=×'Ñ'×;Ñ;ˆØÑØ�x—}‘}Ó$Ø×3Ò3°D¸$ÐPÀÒPÈÑPÐPð ×'×'Ø Ò#Ü!×,Ò,¨T×2Ñ2Ø—‘Ñ*ô !×0Ò0°×6Ñ6Ü;¸DÀ$ÈÓQ�ä!Ø)ô!òñ 4°FÓ;Ð;ô  Ÿ.™.×8Ñ8×BÑB×GÑGØ�I‰I‹Kó
ç
‰)—F‘Fð 	ö ðÜ—n‘n×.Ñ.×:Ñ:¸4ÀÓF�Ü—^‘^×-Ñ-×<Ñ<¼[ÕIÊ4Ù,¨dÐ=°fÑ=�FÙ7¸Ó?÷ LPÈ4×IÑI÷8 (AÑ#ˆN˜GÙ˜d×#Ó#Ù% d¨DÐB°4ÒB¸6ÑB�Ø¤nÔ4Ù7¸ÓDÒDñ	 (Að -1ð	PØ)ð	Pà!÷	Pô 	Pô" ˜�~‰~Ù0Ó2ˆHÙ/°Ó9Ð9ð
	Ü-¨dÕ3Ù˜$Ð) &Ñ)�÷ 4ñ ,Ø×<Ñ<Ø�4˜¨6¯:©:°hÓ+?ð =ð ó
ð 	
ùòU"ùò !Nùòb÷ #–]üòj÷ –üò  N÷< =Õ<ú———‘üòd Jøô %ó ô —	‘	ØOØØ÷ò ûð	ú÷\ –Tú÷
 –ú÷" –ú÷H LPÍ4ú×I×I×IÑIûô $ó ð ×/×/Ø ¨Ò+Ü)×4Ò4°T×:Ñ:ØŸ™Ñ2ä?ÀÀdÈHÓU�Fä%Ø-ô%òñ 8¸Ó?Õ?à�Gûð'ú÷n 4Ö3ûä"ó 	DÙ,Ð-BÓCÕCûÜó 	Ü�M‰MÐFÈÔMØð	úsL  Ám,Ám,Âm1Â.m1É*.m6Ë-m;Ò.nÓ	nÔn$Ôn$×9oØn)Ø	oÚ1oÜo á"pá?#pã2p/è;Aq/ êqêqê%	qê.	q/ ì)s; ì4	s)ì=s; í;
n
î
n!î)
n7	î3oï
oï
pï&pðpð
pð
p,ð/
p>ñ
q	ñqñq/ ñ
q,ñ'q/ ñ,q/ ñ/
s&ñ9A s!ós&ós!ó!s&ó)
s8ó3s; ó8s; ó;
t7ôtôt7ô%t7Ú
debugprimsr  r	  ÚxlaÚvisionÚ	torchtextÚ
torchaudioÚ	quantizedc                óŒ   • U R                   (       d  gUR                  U R                  ;   =(       d    UR                  5       S:H  $ )NFzfbgemm::gmm)r†  Ú	namespaceÚ+_can_run_unsafe_fallback_allowed_namespacesrq  ©rK   rh   s     rL   rø  Ú&FakeTensorMode.can_run_unsafe_fallbacku  s:   € Ø×*×*Øð
 �N‰N˜d×NÑNÑN÷ ,Ø�y‰y‹{˜mÑ+ð	
rP   c                ól   ^ ^^^^^• / mSUUUUUU 4S jjnT Vs/ s H
  oe" U5      PM     nnUT4$ s  snf )z¿
Checks if the list of tensors are fake tensors.
If not, try to convert them to fake tensors.
Returns the original args, kwargs, and a flattened list of (args, kwargs) that are fake tensors.
c                ó¨  >• [        U [        5      (       d  U $ T
R                  U 5      (       Gd  [        T	S5      (       aX  [        R
                  R                  T	R                  ;   a0  [        R                  TT5      u  p[        S[        T	X5       35      e[        R                  c  T
R                  O[        R                  nU(       d_  [        U [        5      (       a  U R                   T
La  [        S5      e[        R                  TT5      u  p[        S[        T	X5       35      eTR#                  T
U 5      nOU nTR%                  U5        U$ )Nr  zECan't call metadata mutating ops on non-Fake Tensor inputs. Found in zMixing fake modes NYIzuPlease convert all Tensors to FakeTensors first or instantiate FakeTensorMode with 'allow_non_fake_inputs'. Found in )rµ   r   r¦  rª  r‡   r  r  r  rà   r°  rº   r   rÖ  ry   r‡  r¶   r’   rJ  rž   )r¯   rØ  rÙ  r‡  r£   rû  rÎ  r&  r  rh   rK   s        €€€€€€rL   ÚvalidateÚFFakeTensorMode.validate_and_convert_non_fake_tensors.<locals>.validateŽ  s>  ø€ Ü˜a¤×(Ñ(Ø�ð ×#Ñ# A×&Ò&Ü˜4 ×(Ñ(¬U¯Y©Y×-CÑ-CÀtÇyÁyÓ-PÜ#)×#8Ñ#8¸ÀIÓ#N‘L�DÜ(Ø_Ô`kÐlpÐrvÓ`ð  `Að  Bóð ô
 '×EÑEÑMð ×.Ò.ä(×GÑGð &ö
 -Ü! !¤Z×0Ñ0°Q·[±[ÈÒ5LÜ,Ð-DÓEÐEÜ#)×#8Ñ#8¸ÀIÓ#N‘L�DÜ(ðBÜBMÈdÐTXÓBaÐAbðdóð ð
  ×0Ñ0°°qÓ9‘à�à!×(Ñ(¨Ô-ØˆJrP   )r¯   rB   rV   úUnion[T, FakeTensor]rT   )	rK   rh   rÎ  r  rû  rI  rb  Úvalidated_argsr&  s	   `````   @rL   r  Ú4FakeTensorMode.validate_and_convert_non_fake_tensors€  sA   ý€ ð 35Ð÷	ô 	ñ@ 09Ó9ªy¨!˜( 1ž+©yˆÐ9ØÐ4Ð4Ð4ùò :s   š1c                ób   ^ ^^^^^^• T R                   mS mSmSUUUUUUU 4S jjn[        XQ5      $ )NFc                ó‚  >^ • [        T [        5      (       d  T $ Tc  [        R                  TT5      u  mmTR	                  T 5      nU(       a9  [
        R                  " T R                  T:H  UU 4S j5        [        [        T 5      $ Tb5  T(       a  TR                  TT 5      $ TR                  TT T=(       d    T5      $ T $ )Nc                 ó(   >• STR                    ST  3$ )Nz-FakeTensor is wrapped to wrong device, found z, expected rZ  )r  rà  s   €€rL   r’  ÚZFakeTensorMode.wrap_meta_outputs_with_default_device_logic.<locals>.wrap.<locals>.<lambda>Ï  s   ø€ ÐKÈAÏHÉHÈ:ÐU`ÐanÐ`oÑprP   )rµ   r   r¶   r  r¦  r‡   Ú_checkr  r   rB   rJ  rP  )	rà  r¦  r  rÎ  r  r  rh   r  rK   s	   ` €€€€€€€rL   ÚwrapÚHFakeTensorMode.wrap_meta_outputs_with_default_device_logic.<locals>.wrap¾  s¼   ù€ ô ˜a¤×(Ñ(Ø�àÑ$ô ×2Ñ2°4¸ÓCñØ!Ø*ð ×*Ñ*¨1Ó-ˆKÞÜ—’Ø—H‘H Ñ-Ýpôô œA˜q“zÐ!ØÑ&Þ)ð %×5Ñ5°d¸AÓ>Ð>à$×9Ñ9Ø˜a ×!8¨=óð ð
 �rP   ©rà  rB   rV   rK  )r�  r,   )	rK   rœ  rh   r  r  rS  r  rÎ  r  s	   ` ``` @@@rL   r$  Ú:FakeTensorMode.wrap_meta_outputs_with_default_device_logic±  s5   þ€ ð ×.Ñ.ˆ	ð ˆØ!&Ð÷ 	õ  	ôD ˜Ó Ð rP   r  c               ó¬  • SS K nSSKJn  Uc=  U R                  nU R                  (       d  [        S5      eU =R                  S-  sl        UR                  " U" US5      5      nUR                  R                  R                  S5      nU R                  c  [        S5      eU R                  R                  U R                  R                  UUS9UUS9nU$ )	Nr   )ÚNestedIntNodez4should only be called while FakeTensorMode is activer1   Úintermediate_offsets_or_lengthszself.shape_env must not be None)Úvalr  )Úsymr'  r  )r›  Ú!torch.nested._internal.nested_intrX  r„  r—  rº   r   r“  r  ÚEphemeralSourcer  rA  Úcreate_symbol)rK   r  r‡   rX  r'  ÚsrcÚrets          rL   r  Ú)FakeTensorMode.create_symbolic_nested_intâ  sÒ   € ó
 	4ÝCàÑØ×4Ñ4ˆLØ×#×#Ü$ØJóð ð ×%Ò%¨Ñ*Õ%Ø�|Š|™M¨,¸Ó:Ó;ˆà�m‰m×"Ñ"×2Ñ2Ð3TÓUˆØ�>‰>Ñ!Ü Ð!BÓCÐCØ�n‰n×.Ñ.Ø—‘×,Ñ,ØØð -ð ð Øð /ð 
ˆð ˆ
rP   c                óp   • [         R                  R                  UR                  ;   a  gXR                  ;   $ r�   )r‡   r  Ú	view_copyr  Ú_cpp_meta_supports_symintrE  s     rL   r  Ú'FakeTensorMode.cpp_meta_supports_symint  s*   € Ü�9‰9×Ñ $§)¡)Ó+ØØ×5Ñ5Ñ5Ð5rP   c                óØ   • UR                  5       [        :*  =(       aM    [        U5      (       + =(       a6    U R                  U5      (       + =(       a    UR                  R
                  S:g  $ r­  )ÚnumelÚCONSTANT_NUMEL_LIMITr   r¦  r  r·   r¥  s     rL   rÌ  ÚFakeTensorMode.may_turn_const  sS   € à�G‰G‹IÔ-Ñ-÷ (Ü! !Ó$Ô$÷(à×$Ñ$ QÓ'Ô'÷(ð —‘—‘ Ñ'ð		
rP   c                óÐ  • [        S U 5       5      n[        U5      nU(       aÂ  UR                  5       (       a¬  [        UUUSS9u  pxUR	                  5        H‰  u  pšU	S:w  d  UR                  U	5      (       a  U	OSn	U R                  U
5      (       d  M=  UR                  U	5      (       d  MU  U
R                  c  Md  U R                  R                  U
R                  5        M‹     g g g )Nc              3  ó<   #   • U  H  oR                   S Lv •  M     g 7fr|   r  rÉ  s     rL   r›   ÚAFakeTensorMode.invalidate_written_to_constants.<locals>.<genexpr>*  rÊ  rÆ  Trü  ÚinputrK   )
r¹   rÕ   Ú
is_mutabler!   r„   Úhas_argumentr¦  rú   r�  r  )rK   rh   r&  rØ  rÙ  Úany_constantÚschema_infor¦   r  Úkr  s              rL   r  Ú.FakeTensorMode.invalidate_written_to_constants#  sÇ   € ô ÑQÑ;PÓQÓQˆÜ% dÓ+ˆÞ˜K×2Ñ2×4Ñ4Ü.ØØØØ-1ñ	‰MˆAð #×(Ñ(Ö*‘�Ø˜w›,¨+×*BÑ*BÀ1×*EÑ*E‘AÈF�à×$Ñ$ Q×'Ó'Ø#×.Ñ.¨q×1Ó1ØŸ
™
Ó.à×.Ñ.×JÑJÈ1Ï:É:ÖVò +ð 5ˆ<rP   )r‚  r  r  r  c          	     ó¢   • U R                   nUc  U R                  nU(       a  Ub  [        S5      eS nU R                  R	                  U UUUUUS9$ )Nz2cannot set both static_shapes and symbolic_context)r  r  r  r  )r  r‚  rº   r�  rJ  )rK   r  r‚  r  r  r  r  s          rL   rÝ  ÚFakeTensorMode.from_tensor<  sn   € ð )-¯©ˆ	ØÑ Ø ×.Ñ.ˆMÞØÑ+Ü$ØHóð ð ˆIØ×)Ñ)×:Ñ:ØØØØØ-Øð ;ð 
ð 	
rP   )rÁ  r"  rƒ  rš  r†  rÄ  r‡  r�  r–  r‘   r—  r�  re  r„  r…  rŽ  r  r‚  )r†  ró   r‡  ró   r  rS  r‚  r3  rô   ró   rV   rW   rU   )rÍ   r  rV   zTypeGuard[FakeTensor])rV   ró   )rV   r`   r  )rV   r   )rÂ  ztype[BaseException] | NonerÃ  zBaseException | NonerÄ  zTracebackType | NonerV   rW   )rV   rv  )
rC  r2   rh   r=   rØ  r  rÙ  r  rV   rP  )rh   r=   rØ  r  rÙ  r  rV   rW   )
rA  rH  rØ  z?Union[Mapping[str, object], Sequence[object], Iterable[object]]rC  r2   rE  rH  rV   rW   )rC  r2   r™   rP  rh   r=   rØ  r  rÙ  r  rã  rR  rV   rW   )rC  r2   r™   rP  rh   r=   rØ  r  rÙ  r  rã  r¶   rV   rf  )rC  r2   r™   rP  rh   r=   rØ  r  rÙ  r  rã  rR  rV   rl  )rC  r2   râ  rf  r™   rP  rh   r=   rØ  r  rV   rR  )rC  r2   râ  rl  r™   rP  rh   r=   rØ  r  rV   ú=Union[Optional[FakeTensor], tuple[Optional[FakeTensor], ...]])rã  rv  rh   r=   ré  r  rØ  r  rÙ  r  rV   rW   )
rh   r=   rœ  r)   r�  r  r‚  r  rV   ztuple[Optional[object], bool])rh   r=   r±  r  r²  r  r³  r  r´  r  rV   zOptional[object])
rh   r=   ré  r  rØ  r  rÙ  r  rV   rR  ©rh   r=   rV   ró   )
rh   r=   rÎ  rí   r  r  rû  r.   rV   z%tuple[list[object], list[FakeTensor]])
rœ  r  rh   r=   r  r  r  rV  rV   r+   )r  r5  rV   r   r  )
rh   r=   r&  zSequence[FakeTensor]rØ  r  rÙ  r  rV   rW   )r  r   r‚  r3  r  rT  r  rU  r  ró   rV   r¶   )PrX   rY   rZ   r[   r~  rc   r  r€  r   rR  r�  r™  re  r„  r…  rM   r¢  r¦  rX  r«  r±  r/   r    rî  r¼  rÁ  r%  rÊ  rÍ  rÐ  rä  rÔ  r  r>  r"  r9  rß  rY  rÝ  rÞ  r´  r   r½  rØ  r…   rD  rø  r  r$  r  r	  r`  r-  rQ  râ  Úas_strided_scatterÚ
as_stridedÚas_strided_ra  ÚdetachÚview_as_realÚview_as_complexrT  Úsource_Storage_storage_offsetÚ(_sparse_coo_tensor_with_dims_and_tensorsrd  Úviewr  Úslicer   r  r  Ú
lift_freshÚlift_fresh_copyr  rÌ  r  rÝ  r\   r&  r'  s   @rL   r�   r�   å  s¾  ø‡ Ø:<€EÐ7Ó<Ø€J�ÓØ€L�#ÓÙ%0°Ó%5€N�NÓ5ð €Eˆ3ƒNØ!&Ð˜$Ó&ØÓØ!Ó!ØÓØÓð !#Ð˜#Ó"Ø&(Ð Ó(ð
 (,Ø&+Ø(,Ø(,ð ñ!]Dð !%ð]Dð  $ð	]Dð
 &ð]Dð &ð]Dð  ð!]Dð" 
÷#]Dð ]Dô~DôAð ó	
ó ð	
ð óó ðð
 ð "$Ù'5Ó'7ðàðð ðð ð	ð
 %ðð 
ôó ð÷&ð6Và,ðVð &ðVð %ð	Vð
 
÷Vð$ óó ðð ó	
ó ð	
ð óó ðð^àð^ð ð^ð ð	^ð
 %ð^ð 
ô^ð@5àð5ð ð5ð ð	5ð
 %ð5ð 
ô5ðnDDàðDDð ðDDð %ð	DDð
 
ôDDðLE#àðE#ð NðE#ð ð	E#ð
 (ðE#ð 
ôE#ðN(Càð(Cð ð(Cð ð	(Cð
 ð(Cð %ð(Cð %ð(Cð 
ô(CðTKàðKð ðKð ð	Kð
 ðKð %ðKð ðKð 
'ôKðZbàðbð ðbð ð	bð
 ðbð %ðbð %ðbð 
"ôbðHS8àðS8ð -ðS8ð ð	S8ð
 ðS8ð ðS8ð 
ôS8ðjàðð (ðð ð	ð
 ðð ðð 
Gôð22àMð2ð ð2ð ð	2ð
 ð2ð %ð2ð 
ô2ðp "$Ù'5Ó'7ðBàðBð ðBð ð	Bð
 %ðBð 
õBðBoØðoØ&-ðoØ5;ðoØCIðoà	&ôoðbJ=àðJ=ð ðJ=ð ð	J=ð
 ðJ=ð ðJ=ð 
ôJ=ðXC
àðC
ð ðC
ð ð	C
ð
 %ðC
ð 
ôC
ñT 3>ØØØØØØØØó	3Ð/ô	
ð/5àð/5ð 'ð/5ð $ð	/5ð
 ð/5ð 
/ô/5ðb/!àð/!ð ð/!ð $ð	/!ð
 ð/!ð 
ô/!ðd 04ñØ,ðà	õñ< !,Ø�
‰
× Ñ Ø×Ñ×"Ñ"Ø×Ñ×'Ñ'Ø�‰×ÑØ×Ñ× Ñ Ø�
‰
×ÑØ�‰×ÑØ×Ñ×!Ñ!Ø×Ñ×$Ñ$Ø�	‰	×/Ñ/Ø×5Ñ5×=Ñ=ó!Ðñ +6Ø�	‰	×ÑØ×Ñ×!Ñ!Ø�
‰
×Ñó+Ð'ô6ñ
 ˜4Ÿ?™?×2Ñ2°D×4HÑ4H×4PÑ4PÓQ€Hô
ðWàðWð  4ðWð ð	Wð
 %ðWð 
ôWð: )-Ø#'Ø6:Øñ
àð
ð &ð	
ð
 !ð
ð 4ð
ð ð
ð 
÷
ó 
rP   c                ó4  • SSK JnJn  [        R                  R
                  R                  R                  5       SLnU(       a  U" U5       H  n[        S5      e   gU" U5       H0  nUR                   H  nXpR                  ;  d  M  [        S5      e   M2     g)a�  
Validate symbolic content in output and raise _BypassDispatchCache if
caching should be bypassed.

Args:
    state: Cache key state containing known symbols
    output: Output to validate
    proxy_mode_active: Whether PROXY dispatch mode is currently active

Raises: _BypassDispatchCache: If output contains symbolic content that
    prevents caching

Details:

If our output contains any symbols that didn't appear in the input then we
need to bypass. Usually this will be unbacked symbols which can't be
properly reconstructed but there could be "weird" cases where backed symbols
spontaneously appear (from non-input state)?

If we're proxy (symbol) tracing and the output contains ANY symbols then we
need to bypass. The problem is that ProxyTorchDispatchMode relies on SymNode
object identity and being able to see the construction of SymNodes.

We could improve the proxy tracing case in a few ways:

1. If the output SymNodes are directly copied from inputs then this is
   actually fine - they're already tracked. This would probably be the
   biggest bang/buck.

2. If the output (tensors) are all direct copies of the inputs then this is
   also fine - since they're inputs they must be tracked. We already compute
   this we just don't plumb it around enough.

3. If the output SymNodes are already tracked by the proxy then this is also
   actually fine - they're properly tracked. This probably wouldn't be
   common since for most outputs we use torch.empty_strided() and recompute
   strides.

4. We could use the proxy to track "how" the SymNodes were computed and when
   using the cache we could "replay" them properly to teach the proxy how to
   build them.
r   )Ú_iterate_exprsÚ_iterate_nodesNzProxy mode with SymNode outputzunrepresented symbol in output)r,  r…  r†  r‡   rè  ré  rê  rë  rt  ry  rð  )rC  rã  r…  r†  rõ  r¦   rÚ  rI  s           rL   r   r   [  sƒ   € ÷Z Uä—‘×&Ñ&×3Ñ3×BÑBÓDÈDÐP€JÞñ   Ö'ˆAÜ&Ð'GÓHÐHò (ñ   Ö'ˆAØŸ.œ.�Ø×!4Ñ!4Õ4Ü.Ð/OÓPÐPó )ò (rP   c                ó>  ^ ^^^• [         R                  R                  UR                  ;   a  Te0 m[	        5          SU U4S jjnU Vs/ s H
  oe" U5      PM     nn[
        R                  X#5      u  pxU" U0 UD6n	S S S 5        [        5       mU HU  n
[        U
[        5      (       d  M  [        U
5      (       a  M,  TR                  U
R                  5       R                  5        MW     SU UUU4S jjn[
        R                  UW	5      $ s  snf ! , (       d  f       N™= f)Nc                óð   >• TR                  U 5      (       a^  [        R                  " X R                  S9nU R                  (       a  UR                  U R                  5       5        U T[        U5      '   U$ U $ )NrZ  )r¦  r‡   Ú
zeros_liker¥  ré   Ú_coalesced_r4  rŠ  )rà  r£   r’   Ú	inp_implss     €€rL   Úto_real_tensorÚ+run_fallback_kernel.<locals>.to_real_tensor­  sZ   ø€ Ø×$Ñ$ Q×'Ñ'Ü×&Ò& q·±Ñ?�Ø—;—;Ø—O‘O A§N¡NÓ$4Ô5Ø%&�	œ"˜S›'Ñ"Ø�
ØˆHrP   c                óL  >• [        U 5      T;  aE  [        U [        5      (       a0  [        U 5      (       d   U R	                  5       R
                  T;   a  Te[        U [        5      (       a9  [        U 5      T;   a  T[        U 5         $ TR                  R                  TU 5      $ U $ r|   )rŠ  rµ   r   r   rû   Ú_cdatar�  rJ  )rà  r’   r‹  Úorig_not_implemented_exceptionÚstoragess    €€€€rL   Úmap_outÚ$run_fallback_kernel.<locals>.map_outÇ  s‹   ø€ Üˆa‹5˜	Ó!Ü�qœ&×!Ñ!Ü! !×$Ñ$Ø× Ñ Ó"×)Ñ)¨XÓ5à0Ð0ä�aœ× Ñ Ü�!‹u˜	Ó!Ø ¤ A£Ñ'Ð'à ×6Ñ6×GÑGÈ	ÐSTÓUÐUàˆHrP   )rà  rB   rV   zUnion[T, Tensor]rU  )r‡   r  r  r  r&   rà   r°  r¥  rµ   r   r   r×  rû   r�  r,   )r’   rh   r  rû  r�  rŒ  rb  rØ  rÙ  rœ  rà  r’  r‹  r‘  s   `   `       @@rL   rù  rù  ™  së   û€ ô ‡y�y×Ñ §¡Ó*Ø,Ð,ð €Iô 
�÷	ð 	ñ 1:Ó:²	¨1�^ AÖ&±	ˆ	Ð:Ü×,Ñ,¨YÓB‰ˆá�$Ð!˜&Ñ!ˆ÷ 
ô  &)£U€HãˆÜ�aœ× Ó Ü  ×#Ó#Ø—‘˜Q×-Ñ-Ó/×6Ñ6Ö7ñ ÷ò ô  �?‰?˜7 AÓ&Ð&ùòC ;÷ 
�ús   »DÁ	D	Á!DÄ	DÄ
Dc                ó,   • UR                  5         X U'   g r|   )r`  ©r~  r™   râ  s      rL   rÛ  rÛ  Ú  s   € ð
 ×ÑÔØˆ#‚JrP   c                ó   • X U'   g r|   rT   r•  s      rL   rÜ  rÜ  ã  s   € ð
 ˆ#‚JrP   c                  óB   • \ rS rSrSS jr  S         SS jjrSrg)	ÚFakeCopyModeií  c                ó   • Xl         g r|   ©r’   )rK   r’   s     rL   rM   ÚFakeCopyMode.__init__î  s   € Ø"�rP   Nc                ó0  • U(       a  UO0 nU[         R                  R                  R                  L aV  [	        US   [
        5      (       d  [        S[        US   5       35      eU" U R                  R                  US   SS940 UD6$ U[
        R                  L a»  [        U5      S:w  d  [        U5      S:w  a$  [        S[        U5       S[        U5       S35      e[        [
        US   5      n[        [        [        [        4   US	   5      n[!        U5      U;   a  U[!        U5         $ U R                  R                  USS9nXv[!        U5      '   U$ [         R                  R#                  5          U" U0 UD6sS S S 5        $ ! , (       d  f       g = f)
Nr   r`  T)r‚  é   z3Expected 2 args and 0 kwargs for __deepcopy__, got z
 args and z kwargsr1   )r‡   rˆ   Ú
TensorBaser  rµ   r   rº   r·   r’   rÝ  Ú__deepcopy__rã  r   r‚   rR  r¶   rŠ  ÚDisableTorchFunctionSubclass)rK   rh   ré  rØ  rÙ  r  Úmemor£   s           rL   Ú__torch_function__ÚFakeCopyMode.__torch_function__ñ  so  € ö "‘ rˆð ”5—8‘8×&Ñ&×,Ñ,Ò,Ü˜d 1™g¤v×.Ñ.Ü$Ð'<¼TÀ$ÀqÁ'»]¸OÐ%LÓMÐMÙØ—‘×*Ñ*¨4°©7À$Ð*ÐGñØKQñð ð ”V×(Ñ(Ò(Ü�4‹y˜A‹~¤ V£°Ó!1Ü$ØIÌ#ÈdË)ÈÐT^Ô_bÐciÓ_jÐ^kÐkrÐsóð ô œ& $ q¡'Ó*ˆFÜœœS¤*˜_Ñ-¨t°A©wÓ7ˆDä�&‹z˜TÓ!ØœB˜v›JÑ'Ð'à—.‘.×,Ñ,¨VÀ4Ð,ÐHˆCØ"”�F“ÑØˆJä—‘×6Ñ6Õ8Ù˜TÐ, VÑ,÷ 9×8×8ús   Å5FÆ
Frš  )r’   r�   rV   rW   )rT   N)
rh   r=   ré  r  rØ  r  rÙ  zOptional[Mapping[str, object]]rV   r¶   )rX   rY   rZ   r[   rM   r¢  r\   rT   rP   rL   r˜  r˜  í  sI   † ô#ð "$Ø15ð -àð -ð ð -ð ð	 -ð
 /ð -ð 
÷ -ð  -rP   r˜  c                óì   • [        U 5      S:w  d  [        U S   [        5      (       d  [        S5      eU S   R                  R
                  (       a  [        R                  " S5      $ U S   R                  $ )Nr1   r   z<Expected exactly one FakeTensor argument for _device_handlerrM  )	rã  rµ   r¶   rº   r’   re  r‡   r  r¥  ©rØ  s    rL   Ú_device_handlerr¦    sc   € ô ˆ4ƒy�Aƒ~œZ¨¨Q©´×<Ñ<ÜØJó
ð 	
ð ˆA�w×Ñ×-×-Ü�|Š|˜FÓ#Ð#à�A‰w×"Ñ"Ð"rP   c                ó&   • [        S U  5       5      $ )Nc              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr|   )r   r®   s     rL   r›   Ú&_check_for_subclass.<locals>.<genexpr>0  s   é € Ð=²9¨aÔ& q×)Ð)²9ùr²   )r¹   )r  s    rL   rÿ  rÿ  /  s   € ÜÑ=±9Ó=Ó=Ð=rP   c                óâ   • [        U [        5      (       + =(       aT    [        U [        5      =(       a=    [        U 5      [        L=(       a%    [        U 5      [        R
                  R                  L$ r|   )rµ   r¶   r   r·   r‡   r/  r0  ©r¯   s    rL   r   r   3  sQ   € ä�qœ*Ó%Ô%÷ 	.Ü�qœ&Ó!÷	.ä�‹Gœ6Ð!÷	.ô �‹Gœ5Ÿ8™8×-Ñ-Ð-ð	rP   c                ód   • [        S [        [        U S   5      R                  5        5       5      $ )Nc              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr|   ©rR  ©r˜   rÚ  s     rL   r›   Ú<lambda>.<locals>.<genexpr>>  s   é € ð 4Ú4�1ŒˆA�ˆÒ4ùr²   r   )r;  r   r   r{  r¥  s    rL   r’  r’  >  s*   € ¬eñ 4ÜœV T¨!¡WÓ-×2Ñ2Ô4ó4ô /rP   c                ód   • [        S [        [        U S   5      R                  5        5       5      $ )Nc              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr|   r®  r¯  s     rL   r›   r°  A  s   é € ð 6Ú6�1ŒˆA�ˆÒ6ùr²   r   )r;  r   r   r,  r¥  s    rL   r’  r’  A  s*   € ´ñ 6ÜœV T¨!¡WÓ-×4Ñ4Ô6ó6ô 1rP   c                óV   • [        [        [        U S   5      R                  5       5      $ rõ  )rR  r   r   r/  r¥  s    rL   r’  r’  D  s    € ¼ÜŒV�T˜!‘WÓ×,Ñ,Ó.ô9rP   )Ú_device_not_kwarg_opsÚ_is_tensor_constructorÚ_like_tensor_constructorsÚcontains_tensor_typesr  r#  r"  r  c                ól   • U [         R                  ;   a   [         R                  R                  U 5        g g r|   )r�   r~  r�   rç  s    rL   rô  rô  ^  s)   € Ø
Œn×"Ñ"Ó"Ü×Ñ× Ñ  Õ%ð #rP   c                 ó¼  • [         R                  S5        [         R                  S[        R                  5        [         R                  S[        R                  5        [        R
                  n U (       ah  [         R                  S5        [        S U  5       5      n[        U R                  5       S S9 H#  u  p#[         R                  SUS	-   U S
3U5        M%     g g )NzFakeTensor cache stats:z  cache_hits: %sz  cache_misses: %sz  cache_bypasses:c              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr|   )rã  )r˜   rr  s     rL   r›   Ú#dump_cache_stats.<locals>.<genexpr>k  s   é € Ð-¢H˜q”C˜—F�F¢Hùr²   c                ó   • U S   * $ rG   rT   )r3  s    rL   r’  Ú"dump_cache_stats.<locals>.<lambda>l  s
   € ¸A¸a¹D¹5rP   rç  z    %-*s %sr1   r¾  )	r‰  Úinfor�   r  r€  r�  ÚmaxÚsortedr„   )rz  Úwidthrr  r  s       rL   Údump_cache_statsrÂ  c  s    € ä‡H�HÐ&Ô'Ü‡H�HÐ¤×!:Ñ!:Ô;Ü‡H�HÐ!¤>×#>Ñ#>Ô?Ü×,Ñ,€HÞÜ�‰Ð$Ô%ÜÑ-¡HÓ-Ó-ˆÜ˜8Ÿ>™>Ó+±ÔA‰DˆAÜ�H‰H�] E¨A¡I°!°°A¨w¸Ö:ò Bð rP   c           	     ó0  ^• SU4S jjnUR                  5       S:w  a  U" SUR                  5        35        [        UR                  5       5       Vs/ s H6  n[        R                  R
                  R                  U R                  5      PM8     nnS/UR                  5       -  n[        UR                  5       5       VVs/ s H  u  pxX‡4PM
     n	nnU	R                  S S9  Sn
U
nU	 HM  u  p‡XŠ:w  a'  U" SUR                   S	UR                  5        S
35        X¶U'   X¢R                  U   -  n
XµU   -  nMO     U    [        R                  " UUUR                  UR                  UR                  S9sS S S 5        $ s  snf s  snnf ! , (       d  f       g = f)Nc                ó<   >• [        STR                   SU  S35      e)NzQpropagate_real_tensors: we cannot infer a Fake kernel (meta kernel) for operator z	 because z>. Please use torch.library.register_fake to add a Fake kernel.)rû  r~  )ra   rŽ  s    €rL   ÚunsupportedÚ1_infer_fake_from_real_tensor.<locals>.unsupporteds  s1   ø€ Üð*Ø*,¯(©(¨°9¸V¸Hð EKðLó
ð 	
rP   r   z'a return has a non-zero storage offset rn  c                ó   • U S   U S   * 4$ r  rT   r«  s    rL   r’  Ú._infer_fake_from_real_tensor.<locals>.<lambda>–  s   €   !¡ q¨¡t e™}rP   rç  r1   z(a return was not dense in memory (sizes z	 strides Ú))r  r4  rç   )ra   r`   rV   rW   )r/  r/  r3  r‡   r	  r  Úallocate_sizer  r0  r,  Úsortr+  rQ  r  r4  rç   )rB  rŽ  r´  rÅ  r¦   Ú
fake_shapeÚfake_stridesr2  rÚ  r‰  ÚexpectedÚfake_strides    `          rL   r›  r›  p  s{  ø€ ÷
ð ×ÑÓ  AÓ%ÙØ5°h×6MÑ6MÓ6OÐ5PÐQô	
ô �x—|‘|“~Ô&óâ&ˆAô 	�‰× Ñ ×.Ñ.¨t¯~©~Ö>Ù&ð ð ð �4˜(Ÿ,™,›.Ñ(€LÜ&/°·±Ó0AÔ&BÔCÒ&B™F˜C�‹xÑ&B€GÑCØ‡L�LÑ,€LÑ-Ø€HØ€KÛ‰ˆØ‹=ÙØ:¸8¿>¹>Ð:JÈ)ÐT\×TcÑTcÓTeÐSfÐfgÐhôð (�SÑØŸn™n¨SÑ1Ñ1ˆØ!¨s¡OÑ3Šñ ò 
Ü×"Ò"ØØØ—?‘?Ø—.‘.Ø—?‘?ñ
÷ 
‰ùò5ùó D÷ 
�ús   Á=E<ÃFÄ<6FÆ
Fc                ó*  • U R                   c  [        S5      e[        R                  U5      u  p4[	        S U 5       5      (       d  [        SUR                   35      eU Vs/ s H  n[        XU5      PM     nn[        R                  Xd5      $ s  snf )Nzmode.shape_env must not be Nonec              3  óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7fr|   )rµ   r‡   r   rÅ  s     rL   r›   Ú5inferred_fake_kernel_from_real_out.<locals>.<genexpr>¶  s   é € ÐB²M¨qŒz˜!œUŸ\™\×*Ð*²Mùs   ‚')zPpropagate_real_tensors: we don't support operators that return non-Tensors. Got )	r  rº   rà   r¯  r¸   rû  rÓ   r›  r°  )rB  rŽ  r´  Úreal_flat_outÚspecrÍ   Úfake_flat_outs          rL   r  r  ¬  s—   € ð ‡~�~ÑÜÐ>Ó?Ð?ô
 !×-Ñ-¨hÓ7Ñ€MÜÑB±MÓB×BÑBÜð Ø "§
¡
˜|ð-ó
ð 	
ñ
 IVÓVÊÀ1Ô1°$¸AÖ>É€MÐVÜ× Ñ  Ó5Ð5ùò Ws   Á#B)r„   rB   rV   zdict[T, Literal[True]])rV   z/Generator[TorchDispatchMode | None, None, None])r’   r�   rV   zGenerator[None, None, None])r¢   r   r£   ú(list[Tensor | int | SymInt | OpaqueType]rV   rÖ  )r¯   r  rV   zTypeGuard[Tensor])rÍ   r  rV   zOptional[FakeTensorMode])rh   r=   rV   ztorch._C._SchemaInforw  )râ   ztype[T]rã   r+   rV   zlist[T])rÍ   r  rV   ró   )r  rV  rV   rW   )rÍ   r   rV   r*  )rC  r2   rã  r¶   rV   rW   )r’   r�   rh   r=   r  r  rû  r+   r�  rû  rV   r¶   )r~  r}  r™   rP  râ  Ú_DispatchCacheEntryrV   rW   )rØ  r  rV   rV  )r  r  rV   ró   )r¯   r  rV   ró   )r™   rP  rV   rW   rU   )rB  r�   rŽ  útorch._ops.OpOverloadr´  útorch.TensorrV   rÙ  )rB  r�   rŽ  rØ  r´  r   rV   r   )ÌÚ
__future__r   ÚatexitrN  r9  rò  rm  r;  ry  Ú	threadingr˜  ré  Útypingr}   Úcollectionsr   r   r   r   r   r	   r
   r   r   r   Útyping_extensionsr   r   r‡   Útorch._library.utilsr	  r
  r  r   r   r   r   Útorch._C._functorchr   r   Ú"torch._library.fake_class_registryr   Útorch._library.fake_profiler   Útorch._loggingr   Útorch._prims_commonr   Útorch._subclasses.meta_utilsr   r   r   r   r   Útorch._utilsr   Útorch.fx.immutable_collectionsr    Útorch.fx.operator_schemasr!   Ú torch.multiprocessing.reductionsr"   Útorch.overridesr#   Útorch.typesr$   r%   Útorch.utils._mode_utilsr&   Útorch.utils._python_dispatchr'   r(   Útorch.utils._pytreer)   r*   r+   r,   r-   r.   Útorch.utils._statsr/   Útorch.utils._tracebackr0   Ú_fake_tensor_utilsr2   r3   r4   Úcollections.abcr5   r6   r7   r8   r9   r:   Útorch._guardsr;   Útorch._library.opaque_objectr<   Ú
torch._opsr=   r,  r>   r?   Ú	getLoggerrX   r‰  Ú_loggingÚgetArtifactLoggerr×  ræ  Ú
ValueErrorrà  r`   r<  ÚDimListÚ_pytreerà   rB   rÕ  rà  r	  rh  rI   rD   rû  r^   rf   rk   rn   rq   rt   Úlocalrw   rÖ  r…   ÚcontextmanagerrŽ   r”   r§   r­   rÌ   r~  rÕ   rÞ   rå   rë   rí   rb  rl  rs  ru  r}  r¶   r.  r*  rN  rP  rc  rf  rl  rp  r×  rg  rt  rv  r�   r  Ú_StoragePointerr   rù  rÛ  rÜ  r˜  r¦  rÿ  r   rá  r  râ  r{  r,  r/  rä  r4  r6  r7  ÚprofilerÚ_record_function_exitÚ_RecordFunctionro  Útorch._subclasses.fake_implsr´  rµ  r¶  r·  r  r#  r"  r  rô  ÚregisterrÂ  r›  r  rT   rP   rL   Ú<module>r     s¾  ðÝ "ã Û Û Û Û Û Û 	Û Û Û Û Û Ý #Ý !÷	÷ 	ó 	õ #Ý !ã ß ,Ð ,ß 3Ó 3ß TÝ ?Ý 8Ý ,Ý 5÷õ õ %Ý 9Ý 8Ý ;Ý -ß 1Ý /÷÷ W× VÝ $Ý 4ç RÑ Rö ßPÕPÝ#å$Ý7Ý%ßOà×Ò˜Ó!€Ø	�‰×	)Ñ	)¨(Ð4JÓ	K€ðØŸ.™.×:Ñ:¸8ÐEVÓWÐð €à	�‰×	Ñ	€ÙˆCƒL€à‡z�z‡~�~×Ñ€àÐ à€÷ñ ð ô \ó ó ðð ô ,ó ó ðð ô <ó ó ðð ô <ó ó ðð ô¨<ó ó ðð ô˜Ló ó ðôG�I—O’Oô Gñ  “/€ô&ð ×Òó-ó ð-ð ×Òó,ó ð,ðØðØFðà-ôô"ô2ð4 ‡‚ó.ó ð.ð ‡‚ó	Dó ð	Dô@ô
÷$oñ oðd ‡‚ó
ó ð
ð ×Òð@Øð@à ó@ó ð@ô.÷Bñ B÷>Eñ >EôBM4�ô M4ð` ˜Ð&7Ð9LÐLÑMÐ ñ �Ñ÷*%ð *%ó ð*%ôZ#ñL �Ñ÷$ð $ó ð$÷8	ñ 	ñ �$˜dÑ#÷6ð 6ó $ð6ñ$ �$˜dÑ#÷
"ð 
"ó $ð
"ñ �$˜dÑ#÷ð ó $ðö ØÐ 8Ð:SÐ SÑTÐñ �$˜dÑ#ô˜9ó ó $ðñ �$˜dÑ#÷ð ó $ðô(p
Ð&ô p
ðf; €ð:QØð:QØ#-ð:Qà	ô:Qð|>'Øð>'à
ð>'ð  ð>'ð ð	>'ð
 %1ð>'ð ô>'ðBØ7ðà	ðð ðð 
ô	ðØ7ðà	ðð ðð 
ô	ô$-Ð$ô $-ôN#ô6>ôð 
‡I�I‡N‚N×Ò×!Ò! ?Ø	‡I�I‡N�N×Ò×Òñ "ð 
‡I�I‡N�N×Ò×!Ò!ñ $ð 
‡I�I‡N�N×!Ò!×)Ò)ñ ,ðÐ ñ (Ø	‡I�I‡N�N×Ò×'Ò'Ø	‡I�I‡N�N×Ò×$Ò$Ø	‡I�I‡N�N×Ò×%Ò%ð 
‡I�I×Ò×,Ò,×<Ò<óÐ ÷	÷ 	ó 	ô&ð
 ‡‚ó	;ó ð	;ð9
Ø
ð9
Ø3ð9
Ø?Kð9
àô9
ðx6Ø
ð6Ø3ð6Ø?Bð6àõ6øð{j ó Ø)©S°«VÓ3Ø%×/Ò/°Ð;MÑ0MÓNÖàˆûð	ús   Å(W# ×#X×)!XØXØX