+
    ˜°³jŽH ã            %       ó>  a € R£ tc0 t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RI	H
t
 ^ RIt^ RIHt ^ RIHt ^ RIHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHt ^ RI H!t!H"t"H#t#H$t$H%t%H&t& ^ R	I'H(t(H)t) ^ R
I*H+t+ ^ RI,H-t-H.t.H/t/H0t0 ^ RI1H2t2 RR.t3 ! R R4      t4 ! R R]4      t5 ! R R4      t6 ! R R4      t7 ! R R]-4      t8R t9R¤R lt:R t;R¤R lt<R t=R¤R lt>R t?R¤R  lt@R! tAR¤R" ltBR# tCR¤R$ ltDR% tER¤R& ltFR' tGR¤R( ltHR) tIR¤R* ltJR+ tKR¤R, ltLR- tMR¥R. ltNR/ tOR¤R0 ltPR1 tQR¤R2 ltRR3 tSR¤R4 ltTR5 tUR¤R6 ltVR7 tWR8 R9 ltXR§R: R; lltY]7! ]]:];R¨R<]+! ]/! R=4      R>R?4      ]+! ])! ]P´                  ](! R@RARB7      /4      RCRD4      ]+! ]/! RE4      R>RF4      3RG7      ]7! ]]<]=R©R©RH]+! ]P¶                  ! RI4      RCRDRRJ RK7      ]+! ]/! RI4      R>RLRRM7      ]+! ]/! RI4      R>RNRRM7      ]+! ]/! RI4      R>RO4      ]+! ]/! RI4      R>RP4      ]+! ]/! RI4      R>RQRRM7      ]+! ]/! RI4      R>RR4      ]+! ]/! RI4      R>RSRRM7      ]+! ]/! RI4      R>RTRRM7      ]+! ]/! RI4      R>RU4      ]+! ]/! RI4      R>RVRRM7      ]+! ]/! RI4      R>RWRRM7      ]+! ]/! RI4      R>RXRRM7      ]+! ]P¶                  ! RI4      RCRDRRY RK7      ]+! ]/! RI4      R>RLRRM7      ]+! ]/! RI4      R>RNRRM7      ]+! ]/! RI4      R>RQRRM7      ]+! ]/! RI4      R>RSRRM7      ]+! ]/! RI4      R>RTRRM7      ]+! ]/! RI4      R>RVRRM7      ]+! ]/! RI4      R>RWRRM7      ]+! ]/! RI4      R>RXRRM7      3RZ7      ]7! ]]>]?RªR«R¬R<R\R]R^^ R_^ /R` Ra .3]+! ])! ]P¸                  ](! RbRbRc7      ]Pº                  ](! RbRbRc7      /4      R>Rd4      ]+! ])! ]P´                  ](! ReRfRc7      /4      R>RR]0Rg7      3]+! ]/! R=4      R>R?4      ]+! ]/! RE4      R>RF4      3Rh7
      ]7! ]]@Ri .Rj .Rk Rl .Rm Rn .Ro .Rp .Rq Rr .3]ARªR<R«R­]+! ])! ]P¼                  ](! RtRuRc7      /4      R>RdRv Rg7      ]+! ])! ]P¸                  ](! RbRbRc7      ]Pº                  ](! RbRbRc7      /4      R>Rd4      3]+! ]/! R=4      R>R?4      ]+! ]/! RE4      R>RF4      3Rw7
      ]7! ]]B]CR¨R<]+! ]/! R=4      R>R?4      ]+! ]P¶                  ! Rx4      R>RO4      ]+! ]/! RE4      R>RF4      3RG7      ]7! ]]D]ERªR«R®R<]+! ])! ]P¼                  ](! RtRuRc7      /4      R>RdRy Rg7      ]+! ])! ]P¸                  ](! RbRbRc7      ]Pº                  ](! RbRbRc7      /4      R>Rd4      3]+! ]/! R=4      R>R?4      ]+! ]/! RE4      R>RF4      3Rz7	      ]7! ]]F]GR¨R<]+! ]/! R=4      R>R?4      ]+! ])! ]P´                  ](! R{R|Rc7      /4      R>RX4      ]+! ]/! RE4      R>RF4      ]+! ]P¶                  ! R}4      R>RX4      3RG7      ]7! ]]H]IR¦R<RHRH]+! ].R>RLRsRM7      ]+! ])! ]P¾                  ](! R~RARB7      /4      R>R?4      ]+! ]P¶                  ! R4      R>RS4      ]+! ]P¶                  ! R4      R>RT4      ]+! ]P¶                  ! R€4      R>R�4      ]+! ]P¶                  ! R4      R>R‚4      ]+! ]PÀ                  RCRDRƒ Rg7      3R„7      ]7! ]]J]KR¦R¦RH]+! ]P¶                  ! R…4      RCRD4      3RZ7      ]7! ]]L]MR¨R<]+! ]/! R=4      R>R?4      ]+! ]/! R†4      R>RQ4      ]+! ]/! RE4      R>RF4      3RG7      ]7! ]]N]OR¨R<]+! ]/! R=4      R>R?4      ]+! ])! ]P¼                  ](! R‡RˆRc7      /4      R>RP4      ]+! ]/! RE4      R>RF4      3RG7      ]7! ]]P]QR¨R<]+! ]/! R=4      R>R?4      ]+! ])! ]P´                  ](! ReR‰Rc7      /4      R>RR]0Rg7      ]+! ]/! RE4      R>RF4      3RG7      ]7! ]]R]SR¨R<]+! ]/! R=4      R>R?4      ]+! ]/! RE4      R>RF4      3RG7      ]7! ]]TRŠ .R‹ .RŒ R� .RŽ R� R� .R‘ .R’ .R“ R” .3]URªR«R<R\R•R[RHR–^ R—RHR^^ /R˜ .3R­]+! ]/! R=4      R>R?4      ]+! ]/! RE4      R>RF4      3R™7
      ]7! ]]V]WR¦R<R\Rš/. 3RH]+! ].R>RsRM7      ]+! ]/! R›4      R>RS4      ]+! ]/! R›4      R>Rœ4      ]+! ]P¶                  ! R�4      R>RL4      ]+! ]/! R›4      R>RQ4      ]+! ]/! R›4      R>Rž4      ]+! ]/! R›4      R>R�4      ]+! ]/! R›4      R>R‚4      ]+! ]/! R›4      R>RŸ4      ]+! ]/! R›4      R>RN4      3
R 7      .ta] ^ k  ! R¡ R¢4      tbR# )¯é    N)Údeepcopy)ÚEnum)ÚAny)ÚTensor)Ú	Parameter)ÚAdadeltaÚ	AdafactorÚAdagradÚAdamÚAdamaxÚAdamWÚASGDÚLBFGSÚMuonÚNAdamÚ	OptimizerÚRAdamÚRMSpropÚRpropÚSGDÚ
SparseAdam)Ú
ConstantLRÚExponentialLRÚLinearLRÚPolynomialLRÚReduceLROnPlateauÚStepLR)ÚtolÚtoleranceOverride)ÚDecorateInfo)Ú_TestParametrizerÚ	skipIfMPSÚskipIfTorchDynamoÚTEST_WITH_TORCHDYNAMO)Ú&_get_foreach_kernels_supported_devicesÚcudaÚxpuc                   óH   a € ] tR t^6t o Rt. ROtRV 3R lR lltR tRtV t	R# )	ÚOptimizerInputz@Contains args / kwargs to be passed to an optimizer constructor.c                óÎ   <€ V ^8„  d   QhRS[ S[,          S[ S[,          ,          S[S[S[3,          ,          S[ S[S[S[3,          ,          ,          RS[S[S[3,          RS[/# )é   ÚparamsÚkwargsÚdesc)Úlistr   r   Údictr   Ústr)ÚformatÚ__classdict__s   "€Új/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/testing/_internal/common_optimizers.pyÚ__annotate__ÚOptimizerInput.__annotate__;   s^   ø€ ÷ 	ñ 	á‘Y•¡$¡v¥,Õ.±±c¹3°hµÕ?Á$ÁtÉCÑQTÈHÅ~ÕBVÕVð	ñ ‘S™#�X•ð	ñ ñ		ó    c                ó*   € Wn         W n        W0n        R # ©N©r,   r-   r.   )Úselfr,   r-   r.   s   &&&&r4   Ú__init__ÚOptimizerInput.__init__;   s   € ð ŒØŒØŽ	r7   c                óT   € R V P                    RV P                   RV P                   2# )zparams=z	, kwargs=z, desc=r:   ©r;   s   &r4   Ú__repr__ÚOptimizerInput.__repr__F   s'   € Ø˜Ÿ™˜ Y¨t¯{©{¨m¸7À4Ç9Á9À+ÐNÐNr7   )r.   r-   r,   Nr:   )Ú )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__r<   r@   Ú__static_attributes__Ú__classdictcell__©r3   s   @r4   r)   r)   6   s#   ø‡ € ÙJâ,€I÷	ò 	÷Oð Or7   r)   c                   ó"   € ] tR t^JtRt^ t^tRtR# )ÚOptimizerErrorEnumz;Enumerates when an error is raised when testing optimizers.© N)rC   rD   rE   rF   rG   ÚCONSTRUCTION_ERRORÚ
STEP_ERRORrI   rN   r7   r4   rM   rM   J   s   † ÙEàÐØ„Jr7   rM   c                   óV   a € ] tR t^Qt o Rt. R	OtR]P                  R]RR/R lt	Rt
V tR# )
ÚErrorOptimizerInputzŠ
An OptimizerInput that will cause the optimizer to throw an error when constructed.
Includes the type and string of the resulting error.
Úerror_onÚ
error_typeÚerror_regexrB   c               ó6   € Wn         W n        W0n        W@n        R # r9   ©Úoptimizer_error_inputrS   rT   rU   )r;   rX   rS   rT   rU   s   &&$$$r4   r<   ÚErrorOptimizerInput.__init__Y   s   € ð &;Ô"Ø ŒØ$ŒØ&Ör7   )rS   rU   rT   rX   NrW   )rC   rD   rE   rF   rG   rH   rM   rO   ÚRuntimeErrorr<   rI   rJ   rK   s   @r4   rR   rR   Q   s@   ø‡ € ñò
 S€Ið'ð $×6Ñ6ð	'ð
  ð'ð ÷'ò 'r7   rR   c                   óš   a € ] tR t^gt o RtRR R .3RRRRRRR	RR
RR/ . 3RRRRRRRRRRRRRRRR/V 3R lR lltR t]R 4       tRt	V t
R# )ÚOptimizerInfoz,Optimizer information to be used in testing.Úscheduler_inputsc                ó   € \        V R ^
R7      # ©çÍÌÌÌÌÌì?©ÚgammaÚ	step_size©r   ©Úopts   &r4   Ú<lambda>ÚOptimizerInfo.<lambda>y   ó   € œF 3¨c¸RÕ@r7   c                ó   € \        V 4      # r9   ©r   re   s   &r4   rg   rh   z   ó
   € Ô-¨cÔ2r7   Úsupported_implsÚnot_og_supported_flagsÚsupports_sparseFÚhas_capturable_argÚonly_supports_sparse_gradsÚmetadata_for_sparseÚsupports_complexTÚstep_requires_closureÚsupports_param_groupsÚsupports_multiple_devicesÚskipsÚ
decoratorsNÚoptim_error_inputs_funcÚsupports_fused_onc                ó˜   <€ V ^8„  d   QhRS[ RS[S[R3,          RS[S[R3,          RS[RS[RS[RS[R	S[R
S[RS[RS[S[R3,          /# )r+   Ú	optim_clsrm   .rn   ro   rp   rq   rs   rt   ru   rv   rz   )r   Útupler1   Úbool)r2   r3   s   "€r4   r5   ÚOptimizerInfo.__annotate__j   s¬   ø€ ÷ G3ñ G3áðG3ñ* ™s C˜x�ð+G3ñ0 !&¡c¨3 h¥ð1G3ñ> ð?G3ñB !ðCG3ñF %)ðGG3ñR ðSG3ñV  $ðWG3ñZ  $ð[G3ñ^ $(ð_G3ñf !¡ c �?ñgG3r7   c               óþ   € Wn         W n        W0n        W@n        WPn        W`n        Wpn        W�n        W€n        W n	        W°n
        WÀn        WÐn        . V'       d   TM. OV'       d   TM. O5V n        VV n        VV n        R # r9   )r|   Úoptim_inputs_funcr]   rm   rn   ro   rp   rr   rq   rs   rt   ru   rv   rx   ry   rz   )r;   r|   r�   r]   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   s   &&$$$$$$$$$$$$$$$$r4   r<   ÚOptimizerInfo.__init__j   s…   € ðj #ŒØ!2ÔØ 0ÔØ.ÔØ&<Ô#Ø.ÔØ"4ÔØ#6Ô Ø*DÔ'Ø 0ÔØ%:Ô"Ø%:Ô"Ø)BÔ&ð
ß&‰j¨Bð
ç‰e "ñ
ˆŒð (?ˆÔ$Ø!2ˆÖr7   c                óî   € . pV P                    Fb  p\        V\        4      '       d9   VP                  WW4V4      '       d   VP	                  VP                   4       KO  KQ  VP                  V4       Kd  	  V# r9   )rx   Ú
isinstancer    Ú	is_activeÚextendÚappend)r;   Ú
test_classÚ	test_nameÚdeviceÚdtypeÚparam_kwargsÚresultÚ	decorators   &&&&&&  r4   Úget_decoratorsÚOptimizerInfo.get_decorators³   sj   € ØˆØŸœˆIÜ˜)¤\×2Ò2Ø×&Ñ&Ø¨6¸,÷ò ð —M‘M )×"6Ñ"6Ö7ñð
 —‘˜iÖ(ñ )ð ˆr7   c                ó.   € V P                   P                  # r9   )r|   rC   r?   s   &r4   ÚnameÚOptimizerInfo.name¿   s   € à�~‰~×&Ñ&Ð&r7   )rx   rp   rr   rn   rq   r|   ry   r�   r]   rt   rm   rs   rz   rv   ru   ro   ©ÚforeachÚdifferentiable)r•   r–   ÚmaximizeÚ
capturablerN   )rC   rD   rE   rF   rG   r<   r�   Úpropertyr’   rI   rJ   rK   s   @r4   r\   r\   g   sü   ø‡ € Ù6ðG3ñ AÙ2ðð
ðG3ð* ,Ið+G3ð03
ð1G3ð> !&ð?G3ðB $)ðCG3ðF ,1ðGG3ðN   ˜HðOG3ðR "&ðSG3ðV ',ðWG3ðZ '+ð[G3ð^ +/ð_G3ð` ðaG3ðb ðcG3ðd !%ðeG3ðf .0÷gG3ò G3òR
ð ñ'ó ö'r7   r\   c                   ó4   a € ] tR t^Ät o RtRR ltR tRtV tR# )ÚoptimszGDecorator for specifying a list of optimizers over which to run a test.Nc                ój   € \        V4      V n        Ve	   W n        R # \        P                  .V n        R # r9   )r/   Úoptim_info_listÚtorchÚfloat32Údtypes)r;   Úoptim_info_iterabler    s   &&&r4   r<   Úoptims.__init__Ç   s(   € Ü#Ð$7Ó8ˆÔð
 !'Ò 2�fŽ¼¿¹¸ˆŽr7   c           	   #  óì  a"  € Vf   \        R4      h\        P                  ! V P                  V P                  4       F  w  rEVP
                  pRVRV/p \        P                  ! S4      V3R l4       p\        P                  ! VP                  VP                  SP                  VP                  V4      p	W†Wy3x € K�  	  R #   \         d$   p
\        RT RTP
                   R24       T
hR p
?
ii ; i5i)Nz§The @optims decorator is only intended to be used in a device-specific context; use it with instantiate_device_type_tests() instead of instantiate_parametrized_tests()Ú
optim_infor‹   c                  ó   <€ S! V / VB # r9   rN   )Úargsr-   Útests   *,€r4   Útest_wrapperÚ.optims._parametrize_test.<locals>.test_wrapperá   s   ø€ á Ð0¨Ñ0Ð0r7   zFailed to instantiate z for module Ú!)rZ   Ú	itertoolsÚproductr�   r    r’   Ú	functoolsÚwrapsÚpartialr�   rC   Údevice_typeÚ	ExceptionÚprint)r;   r§   Úgeneric_clsÚ
device_clsr¤   r‹   r‰   rŒ   r¨   Údecorator_fnÚexs   &f&&       r4   Ú_parametrize_testÚoptims._parametrize_testÏ   sü   øé € ØÒÜð3óð ô "+×!2Ò!2°4×3GÑ3GÈÏÉÖ!UÑˆJð #Ÿ™ˆIð )¨*°g¸uÐEˆLðä—’ Ó&ô1ó 'ð1ô  )×0Ò0Ø×-Ñ-Ø×(Ñ(Ø—M‘MØ×*Ñ*Øó �ð $°ÐKÔKó- "Vøô. ô äØ,¨Y¨K°|ÀJÇOÁOÐCTÐTUÐVôð �ûðüs+   ƒAC4ÁA'CÂ=C4ÃC1ÃC,Ã,C1Ã1C4)r    r�   r9   )	rC   rD   rE   rF   rG   r<   r·   rI   rJ   rK   s   @r4   r›   r›   Ä   s   ø‡ € ÙQôH÷$ð $r7   r›   c                 ó~  € \        V 4      R 8X  Ed,   \        \        P                  ! ^^WR7      4      p\        \        P                  ! ^^WR7      4      p\	        \        V/ RR7      \        RR7      \	        \        W"./ RR7      \        RR7      \	        \        RV/RV/./ R	R7      \        R
R7      \	        \        R\        \        P                  ! RR.4      R7      RR7      \        RR7      \	        \        RV3V./ RR7      \        RR7      \	        \        RV.RR/RRV3././ RR7      \        RR7      .# . # )Úcpu©rŠ   r‹   zinvalid param typer:   zPparams argument given to the optimizer should be an iterable of Tensors or dicts©rT   rU   z.a param group cannot have duplicate parametersz/.*a parameter group with duplicate parameters.*r,   z@duplicate parameters should not occur across param groups eitherz7some parameters appear in more than one parameter groupNçü©ñÒMbP?)ÚlrzTensor lr must be 1-elementÚweightz1all optimizer params should be with/without nameszOall optimizer params should be with/without names. Some param names are missingr¾   ç{®Gáz„?z8all optimizer param groups should be with/without names.zkall optimizer param groups should be with/without names. cannot add param group with names to the optimizer)Ú_get_device_typer   rž   ÚrandnrR   r)   Ú	TypeErrorÚUserWarningÚ
ValueErrorr0   Útensor)rŠ   r‹   Úsample_paramÚsample_param2s   &&  r4   Úget_error_inputs_for_all_optimsrÉ   ÷   ss  € Ü˜Ó 5Õ(ä ¤§¢¨Q°¸&Ô!NÓOˆÜ!¤%§+¢+¨a°¸6Ô"OÓPˆäÜØ'ØØ-ôô
 %Ønôô  ÜØ(Ð7ØØIôô
 'ØMôô  ÜØ% |Ð4°xÀÐ6NÐOØØ[ôô
 &ØUôô  ÜØÜ¤5§<¢<°¸°Ó#?Ô@Ø6ôô
 &Ø9ôô  ÜØ% |Ð4°mÐDØØLôô
 &Ømôô  Üà! L >°4¸Ð>Ø! X¨}Ð$=Ð#>Ð?ðð ØSôô &ðEôð];
ð ;	
ðz ˆ	r7   c                 ó’  € \        R RR/RR7      \        R RRRR/RR7      \        R R\        P                  ! R4      RR/R	R7      .p\        R / R
R7      \        R RR/RR7      \        R RR/RR7      \        R RR/RR7      \        R RRRR/RR7      \        R RRRR/RR7      .\        V 4      \        9   d	   V,           # . ,           # )Nr˜   Tr:   Úweight_decayçš™™™™™¹?zcapturable with weight decayr¾   r½   úTensor lr with capturableÚdefaultrÀ   únon-default lrúnonzero weight_decayr—   úmaximize, weight_decayÚrhogffffffî?r`   ©r)   rž   rÆ   rÁ   ÚCUDA_CONFIG_GPUS©rŠ   r‹   Úcuda_supported_configss   && r4   Úoptim_inputs_func_adadeltar×   V  s  € ä˜d¨L¸$Ð+?ÀlÔSÜØØ" C¨°tÐ<Ø/ô	
ô
 	ØØœ%Ÿ,š, uÓ-¨|¸TÐBØ,ô	
ðÐô 	˜d¨2°IÔ>Ü˜d¨D°$¨<Ð>NÔOÜØ °Ð 5Ð<Rô	
ô 	˜d¨J¸Ð+=ÀJÔOÜØØ" C¨°TÐ:Ø)ô	
ô
 	Ø ¨¨n¸cÐ BÈô	
ðô $4°FÓ#;Ô?OÔ#OÐ	õYð Yð VXõYð Yr7   c                 óž   € \        W4      p\        V 4      R 8X  d2   V\        \        R\	        RRR7      RR7      \
        RR7      .,          pV# )	rº   NrÀ   gš™™™™™ñ?)r¾   rÒ   zrho should be between 0 and 1r:   zInvalid rho value: 1.1r¼   ©rÉ   rÁ   rR   r)   r0   rÅ   ©rŠ   r‹   Úerror_inputss   && r4   Ú optim_error_inputs_func_adadeltarÜ   w  sX   € Ü2°6ÓA€LÜ˜Ó 5Ô(ØÜÜØÜ 4¨SÔ1Ø8ôô
 &Ø4ôð

õ 
	
ˆð Ðr7   c           
      ó    € \        R / RR7      \        R RRRR/RR7      \        R RRRR	/RR7      \        R R
R/RR7      \        R RR/RR7      .# )NrÎ   r:   rË   rÌ   r¾   rÀ   rÐ   r—   TÚbeta2_decayznon-default beta2_decayÚdç      ø?z non-default clipping threshold dç      ð¿)r)   r»   s   &&r4   Úoptim_inputs_func_adafactorrâ   ˆ  s}   € ä˜d¨2°IÔ>ÜØØ" C¨¨tÐ4Ø'ô	
ô
 	ØØ" C¨°TÐ:Øô	
ô
 	ØØ! 4Ð(Ø*ô	
ô
 	ØØ˜�:Ø3ô	
ð#ð r7   c                 ó(  € \        W4      p\        V 4      R 8X  d÷   \        P                  ! ^^V \        P                  R7      p\        P
                  ! V4      Vn        V\        \        R\        RR7      RR7      \        RR7      \        \        R\        RR7      R	R7      \        R
R7      \        \        R\        RR7      RR7      \        RR7      \        \        V.\        4       RR7      \        R\        P                  R7      .,          pV# )rº   r»   N)Úepszepsilon1 should be >= 0r:   r¼   ç        )rß   z	invalid dz#Clipping threshold d should be >= 1çš™™™™™é?)rÞ   zinvalid beta2_decayzbeta2_decay should be <= 0ú#does not support complex parametersz-Adafactor does not support complex parameters©rT   rU   rS   )g ÂëþKH´¹r½   )rÉ   rÁ   rž   ÚrandÚ	complex64Ú	rand_likeÚgradrR   r)   r0   rÅ   rZ   rM   rP   )rŠ   r‹   rÛ   Úcomplex_params   &&  r4   Ú!optim_error_inputs_func_adafactorrî   ¢  sÿ   € Ü2°6ÓA€LÜ˜Ó 5Ô(ÜŸ
š
 1 a°¼e¿o¹oÔNˆÜ"Ÿ_š_¨]Ó;ˆÔØÜÜØÜ NÔ3Ø2ôô
 &Ø5ôô  ÜØÜ #œ;Ø$ôô
 &ØAôô  ÜØÜ¨CÔ0Ø.ôô
 &Ø8ôô  ÜØ)˜?Ü›6Ø>ôô
 (ØKÜ+×6Ñ6ô	ð9&
õ &	
ˆðN Ðr7   c                 ó  € \        R / RR7      \        R RR/RR7      \        R RRRR/RR7      \        R RR/R	R7      \        R R
RRR/R
R7      \        R RRRRRR/RR7      \        R R\        P                  ! R4      /RR7      .# )NrÎ   r:   rË   rÌ   rÐ   r—   Tr¾   rÏ   Úinitial_accumulator_valueÚlr_decayç      à?r½   ú	Tensor lr©r)   rž   rÆ   r»   s   &&r4   Úoptim_inputs_func_adagradrõ   Ñ  s·   € ä˜d¨2°IÔ>ÜØ °Ð 5Ð<Rô	
ô 	ØØ" C¨°TÐ:Øô	
ô
 	˜d¨D°#¨;Ð=MÔNÜØØ/°°nÀcÐJØ,ô	
ô
 	ØØ˜#˜z¨3°ÀÐDØô	
ô
 	ØØœ%Ÿ,š, uÓ-Ð.Øô	
ð+ð r7   c                 óˆ  € \        W4      p\        V 4      R 8X  d2   V\        \        R\	        RRR7      RR7      \
        RR7      .,          p\        V 4      R8X  df   \        P                  ! RWR	7      pV\        \        V.R
RRR/RR7      \        RR7      \        \        V.RRRR/RR7      \        RR7      .,          pV# )rº   NrÀ   )r¾   rñ   zlr_decay must be bigger than 0r:   zInvalid lr_decay value: -0.5r¼   r&   r»   r•   TÚfusedú/`fused` and `foreach` cannot be `True` togetherr–   ú)`fused` does not support `differentiable`ç      à¿rN   )	rÉ   rÁ   rR   r)   r0   rÅ   rž   ÚemptyrZ   ©rŠ   r‹   rÛ   Úsample_tensors   &&  r4   Úoptim_error_inputs_func_adagradrþ   ï  sá   € Ü2°6ÓA€LÜ˜Ó 5Ô(ØÜÜØÜ 4°$Ô7Ø9ôô
 &Ø:ôð

õ 
	
ˆô ˜Ó 6Ô)ÜŸš B¨vÔCˆØÜÜØ)˜?Ø% t¨W°dÐ;ØJôô
 (ØMôô  ÜØ)˜?Ø# TÐ+;¸TÐBØDôô
 (ØGôð
õ 	
ˆð( Ðr7   c                 ó¢  € \        R RR/RR7      \        R RRRRRR/RR7      \        R R\        P                  ! R	4      RRRR/R
R7      \        R R\        P                  ! R	4      R\        P                  ! R...4      \        P                  ! R..4      3RRRR/RR7      \        R R\        P                  ! R	4      R\        P                  ! R4      \        P                  ! R4      3RRRR/RR7      .p\        R R\        P                  ! R4      /RR7      .p\        R / RR7      \        R RR/RR7      \        R RR/RR7      \        R RRRR/RR7      \        R RRRR/RR7      .\        V 4      \        9   d   TM. ,           \        V 4      R8X  d   TM. ,           pV\        P
                  8X  d   V F  p RVP                  R&   K  	  V# )Nr˜   Tr:   rË   rÌ   Úamsgradzcapturable, amsgradr¾   r½   z%Tensor lr with capturable and amsgradÚbetasr`   ç®Gáz®ï?z4Tensor lr, Tensor betas, with capturable and amsgradFz(Tensor lr, Tensor betas, with capturablerÀ   ró   rÎ   rÏ   rÐ   r—   Úmpsrä   )r)   rž   rÆ   rÁ   rÔ   Úfloat16r-   )rŠ   r‹   rÖ   Úmps_supported_configsÚtotalÚinputs   &&    r4   Úoptim_inputs_func_adamr    s  € ä˜d¨L¸$Ð+?ÀlÔSÜØØ" C¨°D¸,ÈÐMØ&ô	
ô
 	ØØœ%Ÿ,š, uÓ-¨y¸$ÀÈdÐSØ8ô	
ô
 	Øà”e—l’l 5Ó)Øœ%Ÿ,š,¨#¨¨ yÓ1´5·<²<À$ÀÀÓ3IÐJØ˜4Ø˜dð	ð Hô		
ô 	Øà”e—l’l 5Ó)Øœ%Ÿ,š, sÓ+¬U¯\ª\¸$Ó-?Ð@Ø˜5Ø˜dð	ð <ô		
ð- ÐôD 	Ø ¤u§|¢|°DÓ'9Ð :Àô	
ðÐô  $¨r¸	ÔBÜ $°°d¨|ÐBRÔSÜØ ^°SÐ$9Ð@Vôô ØØ&¨¨Z¸Ð>Øôô
 ØØ&¨¨Y¸Ð=Øôð	
ô&   Ó'Ô+;Ô;ñ #àõ)	
ô, %5°VÓ$<ÀÔ$EÑ È2õ-	Oð 
ð2 ”—‘ÔÛˆEðð #&ˆE�L‰L˜Óñ ð €Lr7   c                 óø  € \        W4      p\        V 4      R 8X  Ede   V\        \        R\	        RRR7      RR7      \
        RR7      \        \        R\	        RRR7      R	R7      \
        R
R7      \        \        R\	        \        P                  ! R4      RR7      RR7      \
        RR7      \        \        R\	        RR\        P                  ! R4      3R7      RR7      \
        RR7      \        \        R\	        R\        P                  ! R4      R3R7      RR7      \
        RR7      \        \        R\	        R\        P                  ! R4      \        P                  ! R4      3RR7      RR7      \
        RR7      .,          p\        V 4      \        9   df   \        P                  ! RWR7      pV\        \        V.RRRR/RR7      \        RR7      \        \        V.RRRR/RR7      \        RR7      .,          pV# )rº   NrÀ   ©r¾   r  úbeta1 should be between 0 and 1r:   ú&Invalid beta parameter at index 0: 1.0r¼   ©r¾   rË   úweight_decay should > 0úInvalid weight_decay value: -1r½   T)r¾   r•   z7lr as Tensor doesn't work with foreach & not capturablezElr as a Tensor is not supported for capturable=False and foreach=Truer`   r  z0betas must be either both floats or both Tensors)r¾   r  r•   zMbetas\[0\] as a Tensor is not supported for capturable=False and foreach=Truer»   r•   r÷   rø   r–   rù   ©ç      ð?rå   éÿÿÿÿrN   )rÉ   rÁ   rR   r)   r0   rÅ   rž   rÆ   rÔ   rû   rZ   rü   s   &&  r4   Úoptim_error_inputs_func_adamr  h  sü  € Ü2°6ÓA€LÜ˜Ó 5Õ(ØÜÜØÜ 4¨zÔ:Ø:ôô
 &ØDôô  ÜØÜ 4°bÔ9Ø2ôô
 &Ø<ôô  ÜØÜ¤5§<¢<°Ó#6ÀÔEØRôô
 &Øcôô  ÜØÜ 4°´U·\²\À$Ó5GÐ/HÔIØKôô
 &ØNôô  ÜØÜ 4´·²¸SÓ0AÀ4Ð/HÔIØKôô
 &ØNôô  ÜØÜØÜ$Ÿ|š|¨CÓ0´%·,²,¸tÓ2DÐEØ $ôð
 jôô &Ølôð];
õ ;	
ˆôx ˜ÓÔ#3Ô3ÜŸš B¨vÔCˆØÜÜØ)˜?Ø% t¨W°dÐ;ØJôô
 (ØMôô  ÜØ)˜?Ø# TÐ+;¸TÐBØDôô
 (ØGôð
õ 	
ˆð( Ðr7   c                 óÈ  € \        R RR/RR7      \        R RRRRRR/RR7      \        R R^ RRRR/RR7      \        R RRRR	RR/R
R7      \        R R\        P                  ! R4      RRRR	RR/RR7      .p\        R / RR7      \        R RR/RR7      \        R RR/RR7      \        R RR/RR7      \        R RRRR/RR7      .\        V 4      \        9   d	   V,           # . ,           # )Nr˜   Tr:   rË   r`   r—   z"capturable, maximize, weight_decayúcapturable, maximizeFúcapturable, weight_decayr¾   r½   z#capturable, weight_decay, tensor LRrÎ   rÌ   rÏ   rÐ   rÑ   rÓ   rÕ   s   && r4   Úoptim_inputs_func_adamaxr  À  sL  € ä˜d¨L¸$Ð+?ÀlÔSÜØØ" C¨°T¸<ÈÐNØ5ô	
ô
 	ØØ" A z°4¸ÀtÐLØ'ô	
ô
 	ØØ" C¨°U¸LÈ$ÐOØ+ô	
ô
 	Øà”e—l’l 5Ó)Ø Ø˜EØ˜dð	ð 7ô		
ð#Ðô< 	˜d¨2°IÔ>Ü˜d¨D°#¨;Ð=MÔNÜØ °Ð 5Ð<Rô	
ô 	ØØ Ð%Øô	
ô
 	ØØ" C¨°TÐ:Ø)ô	
ðô  $4°FÓ#;Ô?OÔ#OÐ	õ!Yð Yð  VXõ!Yð Yr7   c                 óž   € \        W4      p\        V 4      R 8X  d2   V\        \        R\	        RRR7      RR7      \
        RR7      .,          pV# )	rº   NrÀ   r
  zbeta2 should be between 0 and 1r:   z&Invalid beta parameter at index 1: 1.0r¼   )rå   r  rÙ   rÚ   s   && r4   Úoptim_error_inputs_func_adamaxr  ñ  sX   € Ü2°6ÓA€LÜ˜Ó 5Ô(ØÜÜØÜ 4¨zÔ:Ø:ôô
 &ØDôð

õ 
	
ˆð Ðr7   c                 ó   € \        W4      # r9   )r  r»   s   &&r4   Úoptim_inputs_func_adamwr    s   € Ü! &Ó0Ð0r7   c                 ó   € \        W4      # r9   )r  r»   s   &&r4   Úoptim_error_inputs_func_adamwr    s   € Ü'¨Ó6Ð6r7   c                 óü  € \        R RR/RR7      \        R RRRR/RR7      \        R RRRR/RR7      \        R RRRRRR/R	R7      \        R R
\        P                  ! R4      RRRRRR/RR7      .p\        R / RR7      \        R RR/RR7      \        R R
R/RR7      \        R R^d/RR7      \        R RR/RR7      \        R RR/RR7      \        R RRRR/RR7      .\        V 4      \        9   d	   V,           # . ,           # )Nr˜   Tr:   r—   zmaximize, capturablerË   rÌ   úweight_decay, capturablez"maximize, weight_decay, capturabler¾   r½   z-maximize, weight_decay, capturable, tensor LRrÎ   Úlambdznon-default lambdg{®Gáz”?rÏ   Út0rÐ   zmaximize, nonzero weight_decayrÓ   rÕ   s   && r4   Úoptim_inputs_func_asgdr"  
  s_  € ä˜d¨L¸$Ð+?ÀlÔSÜØØ  l°DÐ9Ø'ô	
ô
 	ØØ" C¨°tÐ<Ø+ô	
ô
 	ØØ" C¨°T¸<ÈÐNØ5ô	
ô
 	Øà”e—l’l 5Ó)Ø Ø˜DØ˜dð	ð Aô		
ð#Ðô: 	˜d¨2°IÔ>Ü˜d¨G°S¨>Ð@SÔTÜ˜d¨D°$¨<Ð>NÔOÜ˜d¨D°#¨;¸TÔBÜ˜d¨J¸Ð+=ÀJÔOÜØ °Ð 5Ð<Rô	
ô 	ØØ" C¨°TÐ:Ø1ô	
ðô $4°FÓ#;Ô?OÔ#OÐ	õYð Yð VXõYð Yr7   c                 óž   € \        W4      p\        V 4      R 8X  d2   V\        \        R\	        RRR7      RR7      \
        RR7      .,          pV# )	rº   NrÀ   r  r  r:   z Invalid weight_decay value: -0.5r¼   rú   rÙ   rÚ   s   && r4   Úoptim_error_inputs_func_asgdr$  8  sX   € Ü2°6ÓA€LÜ˜Ó 5Ô(ØÜÜØÜ 4°dÔ;Ø2ôô
 &Ø>ôð

õ 
	
ˆð Ðr7   c                 ó   € \        R / RR7      \        R RR/RR7      \        R R\        P                  ! R4      /RR7      \        R RR	/RR7      \        R R
R/RR7      \        R RR/RR7      \        R RRR
R/RR7      .# )NrÎ   r:   r¾   rÀ   rÏ   r½   ró   Útolerance_gradç�íµ ÷Æ°>Úline_search_fnÚstrong_wolfer—   TÚmaximize_strong_wolferô   r»   s   &&r4   Úoptim_inputs_func_lbfgsr+  I  s«   € ä˜d¨2°IÔ>Ü˜d¨D°$¨<Ð>NÔOÜØ ¤u§|¢|°EÓ':Ð ;À+ô	
ô 	ØÐ!1°4Ð 8Ð?Oô	
ô 	ØØ$ nÐ5Øô	
ô
 	ØØ Ð%Øô	
ô
 	ØØ Ð&6¸ÐGØ(ô	
ð'ð r7   c                 ó   € \        W4      pV# r9   )rÉ   rÚ   s   && r4   Úoptim_error_inputs_func_lbfgsr-  e  s   € Ü2°6ÓA€LØÐr7   c                 ó8  € \        R / RR7      \        R RR/RR7      \        R R\        P                  ! R4      /RR7      \        R RR	/R
R7      \        R RR/RR7      \        R R^/RR7      \        R RR/RR7      \        R RR/RR7      \        R RR/RR7      .	# )NrÎ   r:   r¾   rÀ   rÏ   r½   ró   rË   gš™™™™™É?znon-default weight_decayÚmomentumræ   znon-default momentumÚns_stepszpassing alternative ns_stepsÚns_coefficientsz#passing alternative ns_coefficientsÚadjust_lr_fnÚmatch_rms_adamwzmatch_rms_adamw lr adjustmentÚspectral_unclampedz spectral_unclamped lr adjustment)g333333@gÍÌÌÌÌÌÀg       @rô   r»   s   &&r4   Úoptim_inputs_func_muonr5  j  sÝ   € ä˜d¨2°IÔ>Ü˜d¨D°$¨<Ð>NÔOÜØ ¤u§|¢|°EÓ':Ð ;À+ô	
ô 	ØØ" CÐ(Ø+ô	
ô
 	ØØ Ð$Ø'ô	
ô
 	ØØ �?Ø/ô	
ô
 	Øà!Ð#3ðð 7ô	
ô 	ØØ"Ð$5Ð6Ø0ô	
ô
 	ØØ"Ð$8Ð9Ø3ô	
ðC&ð &r7   c                 ó¸  € \        W4      p\        P                  ! ^^V \        P                  R7      p\        P                  ! V4      Vn        \        P                  ! ^^^WR7      p\        P                  ! V4      Vn        \        P                  ! ^^WR7      p\        P                  ! V4      Vn        V\        \        V.\        4       RR7      \        R\        P                  R7      \        \        V.RR/RR7      \        R	\        P                  R7      \        \        V.\        4       R
R7      \        R\        P                  R7      .,          pV# )r+   r»   zonly support 2D parametersr:   z Muon only supports 2D parametersrè   r2  Ú	arbitraryzunsupported adjust_lr_fnz8Adjust learning rate function arbitrary is not supportedrç   z(Muon does not support complex parameters)rÉ   rž   ré   rê   rë   rì   rR   r)   r0   rÅ   rM   rO   rZ   rP   )rŠ   r‹   rÛ   rí   Únon_2d_paramÚparams   &&    r4   Úoptim_error_inputs_func_muonr:  ”  s%  € Ü2°6ÓA€LÜ—J’J˜q !¨F¼%¿/¹/ÔJ€MÜŸš¨Ó7€MÔÜ—:’:˜a  A¨fÔB€LÜŸš¨Ó5€LÔÜ�JŠJ�q˜! FÔ8€EÜ—’ Ó'€E„JØÜÜØ$�~Ü“vØ1ôô
 "Ø:Ü'×:Ñ:ô		
ô 	ÜØ�wØ&¨Ð4Ø/ôô
 "ØRÜ'×:Ñ:ô		
ô 	ÜØ%�Ü“vØ:ôô
 $ØBÜ'×2Ñ2ô		
ð+õ €Lð@ Ðr7   c                 óò  € \        R RR/RR7      \        R RRRRRR/RR7      \        R RRRRR	RRR/R
R7      \        R R\        P                  ! R4      RRRRR	RRR/R
R7      .p\        R / RR7      \        R RR/RR7      \        R RR/RR7      \        R RR/RR7      \        R RRRR/RR7      \        R RRRRR	R/R	R7      \        R RRRR/RR7      .\        V 4      \        9   d	   V,           # . ,           # )Nr˜   Tr:   rË   r`   Úmomentum_decaygú~j¼t“x?r  Údecoupled_weight_decayz"decoupled_weight_decay, capturabler¾   r½   rÎ   rÏ   znon-zero momentum_decayrÌ   zweight_decay, momentum_decayr—   rÓ   rÕ   s   && r4   Úoptim_inputs_func_nadamr>  ¿  s‰  € ä˜d¨L¸$Ð+?ÀlÔSÜØØ" CÐ)9¸4ÀÈtÐTØ+ô	
ô
 	Øà Ø  $Ø(¨$Ø˜dð	ð 6ô		
ô 	Øà”e—l’l 5Ó)Ø Ø  $Ø(¨$Ø˜dðð 6ô
	
ð#Ðô< 	˜d¨2°IÔ>Ü˜d¨D°$¨<Ð>NÔOÜØØ$ dÐ+Ø*ô	
ô
 	Øà ðð  ô	
ô 	ØØ" CÐ)9¸4Ð@Ø/ô	
ô
 	Øà Ø  $Ø(¨$ðð
 *ô	
ô 	ØØ" C¨°TÐ:Øô	
ð;"ôD $4°FÓ#;Ô?OÔ#OÐ	õE"Yð "YðD VXõE"Yð "Yr7   c                 óî   € \        W4      p\        V 4      R 8X  dZ   V\        \        R\	        RRR7      RR7      \
        RR7      \        \        R\	        RRR7      R	R7      \
        R
R7      .,          pV# )rº   NrÀ   r
  r  r:   r  r¼   )r¾   r<  zmomentum_decay should > 0z"Invalid momentum_decay value: -0.2r  gš™™™™™É¿rÙ   rÚ   s   && r4   Úoptim_error_inputs_func_nadamr@    s‚   € Ü2°6ÓA€LÜ˜Ó 5Ô(ØÜÜØÜ 4¨zÔ:Ø:ôô
 &ØDôô  ÜØÜ 4¸Ô=Ø4ôô
 &Ø@ôð
õ 	
ˆð( Ðr7   c                 óÀ  € \        R RR/RR7      \        R RRRR/RR7      \        R RRRRRR/RR7      \        R R	\        P                  ! R
4      RRRRRR/RR7      .p\        R / RR7      \        R R	R/RR7      \        R RR/RR7      \        R RR/RR7      \        R RRRR/RR7      \        R RRRR/RR7      .\        V 4      \        9   d	   V,           # . ,           # )Nr˜   Tr:   rË   rÌ   r  r=  z0capturable, weight_decay, decoupled_weight_decayr¾   r½   z;capturable, weight_decay, decoupled_weight_decay, tensor LRrÎ   gü©ñÒMb`?rÏ   rä   r'  znon-default epsrÐ   r—   rÓ   rÕ   s   && r4   Úoptim_inputs_func_radamrB    sK  € ä˜d¨L¸$Ð+?ÀlÔSÜØà˜dØ ðð ,ô	
ô 	Øà˜dØ Ø(¨$ðð
 Dô	
ô 	Øà”e—l’l 5Ó)Ø˜dØ Ø(¨$ð	ð Oô		
ð'Ðô> 	˜d¨2°IÔ>Ü˜d¨D°$¨<Ð>NÔOÜ˜d¨E°4¨=Ð?PÔQÜØ °Ð 5Ð<Rô	
ô 	ØØ" CÐ)AÀ4ÐHØ)ô	
ô
 	ØØ" C¨°TÐ:Øô	
ðô" $4°FÓ#;Ô?OÔ#OÐ	õ#Yð Yð" VXõ#Yð Yr7   c                 óî   € \        W4      p\        V 4      R 8X  dZ   V\        \        R\	        RRR7      RR7      \
        RR7      \        \        R\	        RRR7      R	R7      \
        R
R7      .,          pV# )rº   NrÀ   r
  r  r:   r  r¼   r  r  r  r  r  rÙ   rÚ   s   && r4   Úoptim_error_inputs_func_radamrD  P  s‚   € Ü2°6ÓA€LÜ˜Ó 5Ô(ØÜÜØÜ 4¨zÔ:Ø:ôô
 &ØDôô  ÜØÜ 4°bÔ9Ø2ôô
 &Ø<ôð
õ 	
ˆð( Ðr7   c                 óæ  € \        R RR/RR7      \        R RRRRRR/RR7      \        R R\        P                  ! R	4      RR/R
R7      .p\        R / RR7      \        R RR	/RR7      \        R RR/RR7      \        R RR/RR7      \        R RRRR/RR7      \        R RRRR/RR7      \        R RRRRRR/RR7      \        R RRRRRRRR/RR7      .\        V 4      \        9   d	   V,           # . ,           # )Nr˜   Tr:   rË   rÌ   r—   r  r¾   r½   rÍ   rÎ   rÏ   rÐ   ÚcenteredrÑ   r/  z-maximize, centered, weight_decay, w/ momentumrÓ   rÕ   s   && r4   Úoptim_inputs_func_rmsproprG  j  sr  € ä˜d¨L¸$Ð+?ÀlÔSÜØØ" C¨°T¸<ÈÐNØ'ô	
ô
 	ØØœ%Ÿ,š, uÓ-¨|¸TÐBØ,ô	
ðÐô 	˜d¨2°IÔ>Ü˜d¨D°$¨<Ð>NÔOÜØ °Ð 5Ð<Rô	
ô 	Øà˜Dðð ô	
ô 	ØØ" C¨°TÐ:Øô	
ô
 	Øà˜DØ ðð *ô	
ô 	ØØ" C¨°T¸:ÀsÐKØô	
ô
 	Øà Ø˜DØ˜CØ˜Dð	ð Aô		
ð?)ôR $4°FÓ#;Ô?OÔ#OÐ	õS)Yð )YðR VXõS)Yð )Yr7   c                 óž   € \        W4      p\        V 4      R 8X  d2   V\        \        R\	        RRR7      RR7      \
        RR7      .,          pV# )	rº   NrÀ   ©r¾   r/  ú"momentum should be between 0 and 1r:   zInvalid momentum value: -1.0r¼   rá   rÙ   rÚ   s   && r4   Úoptim_error_inputs_func_rmsproprK  ¥  óX   € Ü2°6ÓA€LÜ˜Ó 5Ô(ØÜÜØÜ 4°$Ô7Ø=ôô
 &Ø:ôð

õ 
	
ˆð Ðr7   c           
      óJ  € \        R RR/RR7      \        R R\        P                  ! R4      RR/RR7      .p\        R / RR7      \        R RR/R	R7      \        R R
R/RR7      \        R RR/RR7      \        R RR/RR7      .\        V 4      \        9   d	   V,           # . ,           # )Nr˜   Tr:   r¾   r½   rÍ   rÎ   g-Cëâ6*?rÏ   Úetasznon-default etasÚ
step_sizesznon-default step_sizesr—   )rò   rà   )g�íµ ÷ÆÀ>éd   rÓ   rÕ   s   && r4   Úoptim_inputs_func_rproprQ  ¶  sÔ   € ä˜d¨L¸$Ð+?ÀlÔSÜØØœ%Ÿ,š, uÓ-¨|¸TÐBØ,ô	
ðÐô 	˜d¨2°IÔ>Ü˜d¨D°$¨<Ð>NÔOÜØ ¨Ð 4Ð;Mô	
ô 	ØØ  +Ð.Ø)ô	
ô
 	˜d¨J¸Ð+=ÀJÔOðô $4°FÓ#;Ô?OÔ#OÐ	õYð Yð VXõYð Yr7   c                 óž   € \        W4      p\        V 4      R 8X  d2   V\        \        R\	        RRR7      RR7      \
        RR7      .,          pV# )	rº   NrÀ   )r¾   rN  z0 < eta1 < 1 < eta2r:   zInvalid eta values: 1.0, 0.5r¼   )r  rò   rÙ   rÚ   s   && r4   Úoptim_error_inputs_func_rproprS  Ï  sX   € Ü2°6ÓA€LÜ˜Ó 5Ô(ØÜÜØÜ 4¨jÔ9Ø.ôô
 &Ø:ôð

õ 
	
ˆð Ðr7   c                 óL  € \        R / RR7      \        R RR/RR7      \        R R\        P                  ! R4      /RR7      \        R RR	/R
R7      \        R RR/RR7      \        R RRRR/RR7      \        R RRRR	/RR7      \        R RRRR/RR7      \        R RRRRRR/RR7      .	# )NrÎ   r:   r¾   rÀ   rÏ   r½   z	tensor lrrË   rò   znon-zero weight_decayr/  r`   rÌ   r—   TÚ	dampeningzweight_decay w/ momentumÚnesterovrô   r»   s   &&r4   Úoptim_inputs_func_sgdrW  à  sâ   € ä˜d¨2°IÔ>Ü˜d¨D°$¨<Ð>NÔOÜØ ¤u§|¢|°EÓ':Ð ;À+ô	
ô 	Ø °Ð 5Ð<Sô	
ô 	˜d¨J¸Ð+<À:ÔNÜØØ" C¨°TÐ:Øô	
ô
 	ØØ  [°#Ð6Øô	
ô
 	ØØ  ^°SÐ9Ø+ô	
ô
 	ØØ  Z°°~ÀsÐKØô	
ð3ð r7   c                 óž   € \        W4      p\        V 4      R 8X  d2   V\        \        R\	        RRR7      RR7      \
        RR7      .,          pV# )	rº   NrÀ   rI  rJ  r:   zInvalid momentum value: -0.5r¼   rú   rÙ   rÚ   s   && r4   Úoptim_error_inputs_func_sgdrY    rL  r7   c           	      ó¢   € \        R / RR7      \        R RR/RR7      \        R R\        P                  ! R4      /RR7      \        R RR	/RR7      .# )
NrÎ   r:   r¾   rÀ   rÏ   r½   ró   r—   Trô   r»   s   &&r4   Úoptim_inputs_func_sparseadamr[    s^   € ä˜d¨2°IÔ>ÜØ  t Ð3Cô	
ô 	Ø ¤u§|¢|°EÓ':Ð ;À+ô	
ô 	˜d¨J¸Ð+=ÀJÔOð	ð 	r7   c                 ó<  € \        W4      p\        V 4      R 8X  Ed    V\        \        R\	        RRR7      RR7      \
        RR7      \        \        \        P                  ! ^\        P                  WR7      ./ R	R7      \
        R
R7      \        \        R\        P                  ! ^\        P                  V VR7      ././ RR7      \
        R
R7      \        \        \        P                  ! ^^V \        P                  R7      ./ RR7      \
        RR7      .,          pV# )rº   NrÀ   r
  r  r:   r  r¼   )ÚlayoutrŠ   r‹   zdense params requiredz+SparseAdam requires dense parameter tensorsr,   z%dense params required in param_groupsr»   zcomplex not supportedz.SparseAdam does not support complex parametersr  )rÉ   rÁ   rR   r)   r0   rÅ   rž   ÚzerosÚ
sparse_cooré   rê   rÚ   s   && r4   Ú"optim_error_inputs_func_sparseadamr`     s'  € Ü2°6ÓA€Lä˜Ó 5Õ(ØÜÜØÜ 4¨zÔ:Ø:ôô
 &ØDôô  ÜäŸšØ¤e×&6Ñ&6¸vôðð
 Ø0ôô &ØIôô  Üð %Ü %§¢Ø$%Ü+0×+;Ñ+;Ø+1Ø*/ô	!"ð'ð	ðð Ø@ôô  &ØIô%ô(  ÜÜ!ŸJšJ q¨!°FÄ%Ç/Á/ÔRÐSØØ0ôô
 &ØLôðW4
õ 4	
ˆðj Ðr7   c                óZ   € V ^8„  d   QhR\         \        P                  ,          R\         /# )r+   rŠ   Úreturn)r1   rž   rŠ   )r2   s   "r4   r5   r5   \  s#   € ÷  ñ  œS¤5§<¡<Õ/ð  ´Cñ  r7   c                 óö   € \        V \        P                  4      '       d   \        V P                  4      p \        V \        4      '       g   \        R \	        V 4       24      hV P                  R4      ^ ,          # )z!Expected device to be a str, got Ú:)r„   rž   rŠ   r1   ÚtypeÚAssertionErrorÚsplit)rŠ   s   &r4   rÁ   rÁ   \  sY   € ä�&œ%Ÿ,™,×'Ò'Ü�V—[‘[Ó!ˆÜ�fœc×"Ò"ÜÐ@ÄÀfÃÀÐOÓPÐPØ�<‰<˜Ó˜QÕÐr7   c                ó:   € V ^8„  d   QhR\         \        ,          /# )r+   rb  )r/   r)   )r2   s   "r4   r5   r5   e  s   € ÷ 7ñ 7ä	Œ.Õñ7r7   c                ó¼  a aa€ \         ;QJ d    R S 4       F  '       d   K   RM	  RM! R S 4       4      '       g   \        R4      hSP                  S 4      p\        ;QJ d#    . V VV3R lSP                   4       F  NK  	  5M! V VV3R lSP                   4       4      p. pV F°  p\        VP                  4      p\        V4      ^ 8w  d5   V F  p	RW‰&   K	  	  VP                  \        RW‡P                  R7      4       MVP                  V4       V F=  p	\        V4      p
RW©&   VP                  \        RW§P                   RV	 2R7      4       K?  	  K²  	  V# )	aZ  
Return a list of all configs for a given optimizer as a list of OptimizerInputs,
including configs that have supported global cliquey kwargs (foreach, fused,
differentiable) based on optim_info.supported_impls.

The configs (optim_inputs) returned by optim_info.optim_inputs_func(...)
intentionally do NOT include global cliquey kwargs to give flexibility to tests.
For example, testing correctness between toggling foreach on and off is now
trivial. That said, we sometimes want to test for all possible configs on an
optimizer including all supported flags, so this helper returns all optim inputs.
c              3   ó*   "  € T F	  qR9   x € K  	  R# 5i)r•   N)r•   r÷   r–   rN   )Ú.0Úxs   & r4   Ú	<genexpr>ÚD_get_optim_inputs_including_global_cliquey_kwargs.<locals>.<genexpr>s  s   é € ÐIÁD¸qÐ:Ö:ÃDùs   ‚FTz?skip must be a subset of ['foreach', 'fused', 'differentiable']c              3   óÂ   <"  € T FT  pVS9  g   K  \        S4      SP                  9   g
   VR 8w  g   K/  \        S4      \        4       9   g
   VR8w  g   KP  Vx € KV  	  R# 5i)r÷   r•   N)rÁ   rz   r%   )rk  rl  rŠ   r¤   Úskips   & €€€r4   rm  rn  z  s`   øé € ð 	á+ˆAØ�D‰=ô 	
ô ˜fÓ%¨×)EÑ)EÔEÈÈgÉô 	
ô
 ˜VÓ$Ô(NÓ(PÔPØ�I‰~÷ 	
ŠÛ+ùs   ƒ	A‘A´AÁ
ANr:   z & )Úallrf  r�   r}   rm   r   r-   Úlenr‡   r)   r.   )rŠ   r‹   r¤   rp  Úoptim_inputsrm   Úall_optim_inputsÚoptim_inputÚbase_kwargsÚflagÚ
new_kwargss   f&ff       r4   Ú1_get_optim_inputs_including_global_cliquey_kwargsry  e  sB  ú€ ÷ ‹3ÑIÁDÓI�3�3Š3ÑIÁDÓI×IÒIÜØMó
ð 	
ð ×/Ñ/°Ó7€Lç”eö 	à×+Ò+ó	—e‘eö 	à×+Ò+ó	ó 	€Oð ÐÛ#ˆä˜{×1Ñ1Ó2ˆÜˆÓ 1Ô$Û'�Ø$)�Ó!ñ (à×#Ñ#Ü d°;×EUÑEUÔVõð ×#Ñ# KÔ0ó $ˆDÜ! +Ó.ˆJØ#ˆJÑØ×#Ñ#ÜØ¨
×<LÑ<LÐ;MÈSÐQUÐPVÐ9Wôöó $ñ $ð, Ðr7   TzPAccessing grad.real errors, see https://github.com/pytorch/pytorch/issues/117184ÚTestOptimRenewedÚtest_complex_2dg/n£¼B?g-Cëâ6
?)ÚrtolÚatolÚCompiledOptimizerParityTestsÚtest_correctnessz3This test uses mocks, which dynamo does not supportÚ test_defaults_changed_to_foreach)r�   ry   rm   rp   rw   Fz&See #133268 regarding dtype being Nonec                 ó&   € V P                  R R4      # ©Úuse_closureF©Úget©r-   s   &r4   rg   rg   ×  ó   € ¨¯©°MÀ5Ô)Ir7   )r°   Ú	active_ifÚtest_can_load_older_state_dict)r°   Ú%test_deepcopy_copies_all_public_attrsÚtest_foreach_large_tensorÚtest_foreach_matches_forloopÚtest_load_nontensor_stepÚtest_mixed_device_dtypeÚtest_param_groups_lrÚtest_param_groups_weight_decayÚtest_peak_memory_foreachÚ)test_save_load_equality_with_weights_onlyÚtest_state_dict_deterministicÚ test_step_is_noop_for_zero_gradsc                 ó&   € V P                  R R4      # r‚  r„  r†  s   &r4   rg   rg   "  r‡  r7   )r�   ry   rm   rn   rs   rw   r—   r¾   rÌ   rË   rñ   c                 ó   € \        V RRR7      # )é   iô  ra   çwJëÿï?rd   re   s   &r4   rg   rg   g  s   € œF 3¨hÀ#ÕFr7   c                 ó   € \        V R R7      # )g-Cëâ6?)Ú	thresholdrk   re   s   &r4   rg   rg   h  s   € Ô-¨c¸TÕBr7   g{®Gázt?)r}  r|  Útest_fused_matches_forloopgü©ñÒMb@?g¸…ëQ¸Ž?)rˆ  )	r�   ry   rm   rn   rz   ro   rr   rx   rw   c                 ó   € \        V R R7      # ©r`   ©rb   ©r   re   s   &r4   rg   rg   ›  s   € œ s°#Õ6r7   c                 ó   € \        V R ^R7      # )çš™™™™™Ù?)Ústart_factorÚtotal_iters©r   re   s   &r4   rg   rg   œ  s   € œ #°CÀQÕGr7   c                 ó   € \        V R ^R7      # ©r¡  )Úfactorr£  ©r   re   s   &r4   rg   rg   ž  s   € œJ s°3ÀAÕFr7   c                 ó   € \        V R R7      # r�  rŸ  re   s   &r4   rg   rg   Ÿ  ó   € œM¨#°SÕ9r7   c                 ó   € \        V R R7      # r�  rŸ  re   s   &r4   rg   rg   ¢  rª  r7   c                 ó   € \        V 4      # r9   rk   re   s   &r4   rg   rg   £  rl   r7   c                 ó   € \        V R ^R7      # r¦  r¨  re   s   &r4   rg   rg   ¥  ó   € œ C°ÀÕCr7   c                 ó   € \        V R ^R7      # ©r`   )Úpowerr£  ©r   re   s   &r4   rg   rg   ¦  ó   € œ c°À!ÕDr7   c                 ó   € \        V R ^
R7      # r_   rd   re   s   &r4   rg   rg   ¨  ri   r7   c                 ó   € \        V 4      # r9   rk   re   s   &r4   rg   rg   ©  rl   r7   r  g1Eîð2ž>g‚¸aÊvtÂ>c                 óR   € \         ;'       d    V R ,          \        P                  8H  # ©r‹   ©r$   rž   Úfloat64r†  s   &r4   rg   rg   ½  ó$   € Ô)>÷ *5ð *5Ø˜7•O¤u§}¡}Ñ4ð*5r7   )	r�   r]   ry   rm   rp   rn   rz   rx   rw   z2Uses too much memory, even for H100, surprisingly.c                 óR   € \         ;'       d    V R ,          \        P                  8H  # r·  r¸  r†  s   &r4   rg   rg     rº  r7   )r�   ry   rm   rn   rz   rp   rx   rw   giUMuï>gñhãˆµøä>z7ASGD internally changes the weights even with zero gradgÖÿ9Ì—?zDoes not support param groupsz!LBFGS doesn't support multideviceÚ*test_forloop_goes_right_direction_multigpuÚ6test_param_group_with_lrscheduler_goes_right_directionc                 óJ   € \         P                  R 8H  ;'       d
    V R,          # )Údarwinrƒ  )ÚsysÚplatformr†  s   &r4   rg   rg   ‘  s$   € ¬¯©¸Ñ)A÷ **ð **Ø˜=Õ)ð**r7   )r�   ry   rm   rt   ru   rv   rw   zXExpect high difference between compiled and eager due to bfloat16 and iterative process.z8Errors, https://github.com/pytorch/pytorch/issues/117150gvƒôõ!„>gÐÀw$‡}>rÀ   c                 ó   € \        V R ^
R7      # r_   rd   re   s   &r4   rg   rg   &  s   € œ ¨3¸"Õ=r7   c                 ó    € \        V R R^R7      # )r¡  ræ   ©r¢  Ú
end_factorr£  r¤  re   s   &r4   rg   rg   (  ó   € œHØ c°cÀqõr7   c                 ó   € \        V R ^
R7      # r_   rd   re   s   &r4   rg   rg   -  ri   r7   c                 ó    € \        V R R^R7      # )r¡  g333333ã?rÄ  r¤  re   s   &r4   rg   rg   .  rÆ  r7   c                 ó   € \        V R ^
R7      # )r  ra   rd   re   s   &r4   rg   rg   3  s   € œF 3¨d¸bÕAr7   c                 ó   € \        V R R7      # )r  rž  rŸ  re   s   &r4   rg   rg   4  s   € œM¨#°TÕ:r7   c                 ó   € \        V 4      # r9   rk   re   s   &r4   rg   rg   5  rl   r7   c                 ó   € \        V R ^R7      # r¦  r¨  re   s   &r4   rg   rg   7  r®  r7   c                 ó   € \        V R ^R7      # r°  r²  re   s   &r4   rg   rg   8  r³  r7   c                 ó   € \        V R ^
R7      # r_   rd   re   s   &r4   rg   rg   :  ri   r7   c                 ó   € \        V 4      # r9   rk   re   s   &r4   rg   rg   ;  rl   r7   ga2U0*©s?r/  rV  c                 ó   € \        V R RR7      # )r˜  i,  ra   rd   re   s   &r4   rg   rg   P  s   € œ ¨7¸cÕBr7   )	r�   r]   ry   rm   rn   ro   rr   rz   rw   g{®Gáz¤?z,cannot call to_sparse on p.grad, see #117184Útest_tensor_lrz8SparseAdam does not support dense gradients, see #116507Ú!test_forloop_goes_right_directionÚ test_state_dict_with_cuda_params)r�   ry   rm   rq   rr   rs   rw   c                   óD   a € ] tR tRt o RtR	R ltR tR	R ltR tRt	V t
R# )
ÚTensorTrackeri«  a  
A utility to track tensor clones in a list, with the expectation of popping them later (in
order) to make fair comparisons between two multi-step computation. The intended use case is
usually when comparing two supposed equal computations, such as an optimizer step that each
individually consists of multiple steps, where numerical deviation could multiply.

The goal is to be able to compare and align numbers at every milestone so as to minimize
numerical discrepancies, and so when the test fails, it is likely a real problem.
Nc                ó,   € Vf   / pWn         . V n        R # r9   ©Úassert_eq_kwargsÚtensors)r;   rØ  s   &&r4   r<   ÚTensorTracker.__init__¶  s   € ØÒ#Ø!ÐØ 0ÔØˆŽr7   c                ót   € V P                   P                  VP                  4       P                  4       4       R# )z0
Add a detach().clone()'d version of the tensor
N)rÙ  r‡   ÚdetachÚclone)r;   rÆ   s   &&r4   ÚaddÚTensorTracker.add¼  s%   € ð 	�‰×Ñ˜FŸM™M›O×1Ñ1Ó3Ö4r7   c                óÂ  € VP                  \        V P                  4      ^ R4       V P                  P                  ^ 4      pVP	                  \        V\        4      R\        V4      : 24       Ve   TMV P                  pVP                  ! W3/ VB  \        P                  ! 4       ;_uu_ 4        VP                  V4       RRR4       R#   + '       g   i     R# ; i)zÇ
Pop the first element in the tensor tracker, assert equality between the popped tensor and
the input tensor, and then set the input tensor to have the same values as the popped tensor
(with copy_).
zno tensors to popz
type(ref)=N)ÚassertGreaterrr  rÙ  ÚpopÚ
assertTruer„   r   re  rØ  ÚassertEqualrž   Úno_gradÚcopy_)r;   Útensor_to_setÚtestcaseÚoverride_assert_eq_kwargsÚrefrØ  s   &&&&  r4   Úpop_check_setÚTensorTracker.pop_check_setÃ  s«   € ð 	×Ñœs 4§<¡<Ó0°!Ð5HÔIØ�l‰l×Ñ˜qÓ!ˆà×ÑœJ s¬FÓ3¸
¼¸S»	±|°_ÔEð )Ò4ñ &à×&Ñ&ð 	ð
 	×Ò˜]ÑDÐ3CÒDä�]Š]�_�_Ø×Ñ Ô$÷ �_�_Š_ús   Â1CÃC	c                ó2   € \        V P                  4      ^ 8H  # )r   )rr  rÙ  r?   s   &r4   Ú
all_poppedÚTensorTracker.all_popped×  s   € Ü�4—<‘<Ó  AÑ%Ð%r7   r×  r9   )rC   rD   rE   rF   rG   r<   rÞ  rë  rî  rI   rJ   rK   s   @r4   rÕ  rÕ  «  s#   ø‡ € ñôò5ô%÷(&ð &r7   rÕ  c                óV   € V ^8„  d   Qh/ ^ \         9   d   \        \        ,          ;R&   # )r+   Úoptim_db)Ú__conditional_annotations__r/   r\   )r2   s   "r4   r5   r5      s(   € × Ñ ÷z,Hò HŒ$Œ}Õ
ñ Hò{, r7   r9   )NNrN   )rN   r”   )r•   )r•   r–   r÷   )r•   r–   r÷   r—   r˜   )rº   r&   r'   )rº   r&   r'   r  )rº   r&   r  )drò  r­   r«   rÀ  ÚunittestÚcopyr   Úenumr   Útypingr   rž   r   Útorch.nnr   Útorch.optimr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Útorch.optim.lr_schedulerr   r   r   r   r   r   Ú*torch.testing._internal.common_device_typer   r   Ú2torch.testing._internal.common_methods_invocationsr    Ú$torch.testing._internal.common_utilsr!   r"   r#   r$   Útorch.utils._foreach_utilsr%   rÔ   r)   rM   rR   r\   r›   rÉ   r×   rÜ   râ   rî   rõ   rþ   r  r  r  r  r  r  r"  r$  r+  r-  r5  r:  r>  r@  rB  rD  rG  rK  rQ  rS  rW  rY  r[  r`  rÁ   ry  rŸ   rp  Úbfloat16r  r¹  rê   ÚexpectedFailurerñ  rÕ  r5   )rò  s   @r4   Ú<module>r      sÖ  øð÷ Ð Û Û 
Û Ý Ý Ý ã Ý Ý ÷÷ ÷ ÷ ó ÷$÷ ÷ NÝ K÷ó õ Nð ˜E�?Ð ÷Oñ Oô(˜ô ÷'ñ '÷,Z'ñ Z'ôz/Ðô /òfBô~YòBô"ò4,ô^ò<$ôRMò`Uôp.Yòbô"1ò7ô+Yò\ô"ò8ô
'òT(ôV@YòFô60Yòfô48Yòvô"Yò2ô"òDô"
ò9õx ÷7ñx ØØ4Ø @Ø5ØáÙ!Øfóð #Ø!óñ Ù!àŸ™¡sØ!'Ø!%ô(ðóð /Ø"óñ Ù!ØIóð #Ø2óð5!
ô(ñR ØØ5Ø AØ$Ø+ØáØ—’ÐFÓGØ.Ø"Ø"ÙIôñ Ù!Ð"JÓKØ"Ø0Ø"ô	ñ Ù!Ð"JÓKØ"Ø7Ø"ô	ñ Ù!Ð"JÓKØ"Ø+óñ
 Ù!Ð"JÓKØ"Ø.óñ
 Ù!Ð"JÓKØ"Ø*Ø"ô	ñ Ù!Ð"JÓKØ"Ø)óñ
 Ù!Ð"JÓKØ"Ø&Ø"ô	ñ Ù!Ð"JÓKØ"Ø0Ø"ô	ñ Ù!Ð"JÓKØ"Ø*óñ
 Ù!Ð"JÓKØ"Ø;Ø"ô	ñ Ù!Ð"JÓKØ"Ø/Ø"ô	ñ Ù!Ð"JÓKØ"Ø2Ø"ô	ñ Ø—’ÐFÓGØ.Ø"Ø!ÙIôñ Ù!Ð"JÓKØ"Ø0Ø!ô	ñ Ù!Ð"JÓKØ"Ø7Ø!ô	ñ Ù!Ð"JÓKØ"Ø*Ø!ô	ñ Ù!Ð"JÓKØ"Ø&Ø!ô	ñ Ù!Ð"JÓKØ"Ø0Ø!ô	ñ Ù!Ð"JÓKØ"Ø;Ø!ô	ñ Ù!Ð"JÓKØ"Ø/Ø!ô	ñ Ù!Ð"JÓKØ"Ø2Ø!ô	ð{C
ôKñX ØØ3Ø ?Ø>ð 
ð 1Øà�3˜¨¨:°qÐ9áFÙBðð
ñ ñ "àŸ™©°¸DÔ(AØŸ™¡s°¸4Ô'@ðóð #Ø,óñ Ù!àŸ™¡s°¸EÔ'Bðóð
 #Ø)Ø/ô	ð!
ñ8 Ù!Øfóð #Ø!óñ Ù!ØIóð #Ø2óð
ôa@ñB ØØ0á6Ð7ÙGÐHáFÙ9ðñ
 :Ù2ðñ DÐDÙDÐEá@Ù2ðð
ð$ !=Ø>Øð 
ð 8ñ Ù! 5§=¡=±#¸6ÈÔ2OÐ"PÓQØ"Ø,ñ5ô	ñ ñ "àŸ™©°¸DÔ(AØŸ™¡s°¸4Ô'@ðóð #Ø,óð
ñ4 Ù!Øfóð #Ø!óñ Ù!ØIóð #Ø2óð
ôsIñT ØØ2Ø >Ø5ØáÙ!Øfóð #Ø!óñ Ø—’ÐRÓSØ"Ø+óñ
 Ù!ØIóð #Ø2óð
ôñ8 ØØ1Ø =Ø>ð 
ð 1Øñ Ù! 5§=¡=±#¸6ÈÔ2OÐ"PÓQØ"Ø,ñ5ô	ñ Ù!ð Ÿ™©°¸DÔ(AØŸ™¡s°¸4Ô'@ðó
ð #Ø,óð
ñ4 Ù!Øfóð #Ø!óñ Ù!ØIóð #Ø2óð
ôO7ñp ØØ0Ø <Ø5ØáÙ!Øfóð #Ø!óñ Ù!àŸ™¡s°¸TÔ'Bðóð
 #Ø2óñ Ù!ØIóð #Ø2óñ Ø—’ØMóð #Ø2óð1
ô&ñN ØØ1Ø =ØØ"Ø#Ø"'ñ ØØ"Ø0Ø!ô	ñ Ù!àŸ™©Ø!'Ø!%ô*ðóð #Ø!óñ Ø—’Ð=Ó>Ø"Ø&óñ
 Ø—’Ð=Ó>Ø"Ø0óñ
 Ø—’ÐAÓBØ"Ø<óñ
 Ø—’Ð=Ó>Ø"ØHóñ Ø×(Ñ(Ø.Ø"ñ*ô	ðS0
ô9ñt ØØ0Ø <ØØ!Øñ Ø—’Ønóð /Ø"óð
ôñ* ØØ1Ø =Ø5ØáÙ!Øfóð #Ø!óñ Ù!ØNóð #Ø*óñ Ù!ØIóð #Ø2óð
ôñ< ØØ1Ø =Ø5ØáÙ!Øfóð #Ø!óñ Ù!ð Ÿ™¡s°¸VÔ'Dðóð #Ø.ó	ñ Ù!ØIóð #Ø2óð%
ô ñB ØØ3Ø ?Ø5ØáÙ!Øfóð #Ø!óñ Ù!àŸ™¡s°¸DÔ'Aðóð
 #Ø)Ø/ô	ñ Ù!ØIóð #Ø2óð%
ô ñB ØØ1Ø =Ø5ØáÙ!Øfóð #Ø!óñ Ù!ØIóð #Ø2óð
ôñ. ØØ/á=Ð>ñðñ Añðñ BÙ:Ù2ðñ
 DÐDÙDÐEá@Ù2ðð)
ð2 !<Ø>ð 
ð ð �fØ˜EØ˜AØ˜EØ ðñ CÐCð	
ð
ñ Ù!Øfóð #Ø!óñ Ù!ØIóð #Ø2óð
ômFñN ØØ6Ø BØØ#'Ø" D˜\¨2Ð.ØáØØ"Ø!ôñ
 Ù!Ð"PÓQØ"Ø&óñ
 Ù!Ð"PÓQØ"Ø óñ
 Ø—’ØNóð #Ø0óñ Ù!Ð"PÓQØ"Ø*óñ
 Ù!Ð"PÓQØ"Ø3óñ
 Ù!Ð"PÓQØ"Ø<óñ
 Ù!Ð"PÓQØ"ØHóñ
 Ù!Ð"PÓQØ"Ø2óñ
 Ù!Ð"PÓQØ"Ø7óða5
ô>ðSH!€ó H÷V-&ó -&r7   