+
    –°³jÙ‰  ã                  óp  € ^ RI Ht ^ RIHtHtHt ^ RIHtHt ^ RI	t	^ RI
Hu Ht ^ RIHtHtHtHt ^ RIHt ^ RIHt ^ RIHtHtHtHtHt ^ R	IHt ^ R
IH t  ]'       d   ^ RI!H"t"H#t#H$t$ ^ RI%H&t&H't' ]! R4      t(]! R4      t) ! R R]4      t*]*! 4       t+]+PY                  ]PZ                  4      ]+PY                  ]P\                  4      R R l4       4       t/R R lt0Rt1]13R R llt2 ! R R]4      t3R R lt4R R lt5]+PY                  ]Pl                  4      R R l4       t7R  R! lt8R" R# lt9R$ R% lt:]+PY                  ]Pv                  4      R& R' l4       t<R( R) lt=R* R+ lt> ! R, R-4      t? ! R. R/]?4      t@ ! R0 R1]?4      tAR<R2 R3 lltBR<R4 R5 lltCR6 R7 ltD ! R8 R9]4      tE]E! 4       tF ! R: R;4      tGR# )=é    )Úannotations)ÚAnyÚ
NamedTupleÚTYPE_CHECKING)Ú	ParamSpecÚTypeVarN)Ú_unwrap_for_gradÚ_wrap_for_gradÚcurrent_levelÚTransformType)Úvmap)Ú%enable_single_level_autograd_function)Ú_add_batch_dimÚ_broadcast_to_and_flattenÚrestore_vmapÚunwrap_batchedÚwrap_batched)ÚHigherOrderOperator)Ú_set_fwd_grad_enabled)ÚCallableÚIterableÚSequence)ÚFuncTorchInterpreterÚVmapInterpreterÚ_PÚ_Rc                  ó@   a € ] tR t^+tR V 3R lltR V 3R lltRtV ;t# )Ú!CustomFunctionHigherOrderOperatorc               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚNone© )Úformats   "Úc/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_functorch/autograd_function.pyÚ__annotate__Ú.CustomFunctionHigherOrderOperator.__annotate__,   s   € ÷ 1ñ 1˜$ñ 1ó    c                	ó&   <€ \         SV `  R 4       R# )Úcustom_function_callN©ÚsuperÚ__init__©ÚselfÚ	__class__s   &€r&   r.   Ú*CustomFunctionHigherOrderOperator.__init__,   s   ø€ Ü‰ÑÐ/Ö0r)   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r!   Úautograd_functionútype[torch.autograd.Function]Úargsú_P.argsÚkwargsú	_P.kwargsr"   r   r$   )r%   s   "r&   r'   r(   /   s2   € ÷ 8ñ 8à8ð8ð ð8ð ð	8ð
 
ñ8r)   c                	ó˜   <€ \         P                  P                  4       '       d   \        SV `  ! V.VO5/ VB # VP
                  ! V/ VB # ©N)ÚtorchÚ_CÚ _are_functorch_transforms_activer-   Ú__call__Úapply)r0   r4   r6   r8   r1   s   &&*,€r&   r?   Ú*CustomFunctionHigherOrderOperator.__call__/   sI   ø€ ô" �8‰8×4Ñ4×6Ò6ä‘7Ò#Ð$5ÐG¸ÒGÀÑGÐGØ ×&Ò&¨Ð7°Ñ7Ð7r)   r$   ©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r.   r?   Ú__static_attributes__Ú__classcell__©r1   s   @r&   r   r   +   s   ø† ÷1ð 1÷8ö 8r)   r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r!   Úinterpreterr   r4   r5   Úoperandsr   r"   r$   )r%   s   "r&   r'   r'   k   s0   € ÷ 	ñ 	Ø%ð	à4ð	ð ð	ð 	ñ		r)   c                óš   € \        W4      p\        4       ;_uu_ 4        VP                  ! V!  pR R R 4       V#   + '       g   i     X# ; ir;   )Úgenerate_single_level_functionr   r@   )rK   r4   rL   Ú	GeneratedÚflat_outs   &&*  r&   Úcustom_function_call_gradrQ   i   sA   € ô /¨{ÓN€IÜ	.×	0Õ	0à—?’? HÑ-ˆ÷ 
1ð €O÷ 
1Ö	0ð €Oús	   ž9¹A
	c               ó$   € V ^8„  d   QhRRRRRR/# )r!   rK   r   r4   r5   r"   z2type[torch.autograd.function._SingleLevelFunction]r$   )r%   s   "r&   r'   r'   w   s&   € ÷ 6ñ 6Ø%ð6à4ð6ð 8ñ6r)   c                óN  a aa€ S P                  4       oR  VV V3R llpR V3R llpR V3R llpR V3R llpSP                   R2p\        V\        P                  P
                  P                  3R	\        V4      R
\        V4      R\        V4      R\        V4      /4      pV# )c               ó    € V ^8„  d   QhRRRR/# ©r!   rL   r   r"   r$   )r%   s   "r&   r'   Ú4generate_single_level_function.<locals>.__annotate__}   s   € ÷ 
ñ 
˜3ð 
 3ñ 
r)   c                 óÖ  <€ \         P                  ! \        P                  V3R  lV 4      p\        P                  ! 4       ;_uu_ 4        \        R4      ;_uu_ 4        SP                  4       ;_uu_ 4        \        S.VO5!  pRRR4       RRR4       RRR4       R V3R llp\        XWV4      #   + '       g   i     L6; i  + '       g   i     LA; i  + '       g   i     LL; i)c                ó   <€ \        V S4      # r;   )r	   )ÚxÚlevels   &€r&   Ú<lambda>ÚAgenerate_single_level_function.<locals>.forward.<locals>.<lambda>   s   ø€ Ô$4°Q¸Ô$>r)   TNc               ó    € V ^8„  d   QhRRRR/# )r!   Úoutputútorch.Tensorr"   r$   )r%   s   "r&   r'   ÚEgenerate_single_level_function.<locals>.forward.<locals>.__annotate__Š   s   € ÷ 	1ñ 	1˜Lð 	1¨\ñ 	1r)   c                ó   <€ \        V S4      # r;   )r
   )r^   rZ   s   &€r&   Úwrap_fnÚ@generate_single_level_function.<locals>.forward.<locals>.wrap_fnŠ   s   ø€ Ü! &¨%Ó0Ð0r)   )	ÚpytreeÚtree_map_onlyr<   ÚTensorÚenable_gradr   Úlowerr+   Ú!wrap_outputs_maintaining_identity)rL   Úunwrapped_operandsÚunwrapped_outputrb   r4   rK   rZ   s   *   €€€r&   ÚforwardÚ/generate_single_level_function.<locals>.forward}   s§   ø€ Ü#×1Ò1Ü�L‰LÔ>Àó
Ðô ×Ò× Õ Ô"7¸×"=Õ"=¸{×?PÑ?P×?RÕ?RÜ3Ø!ð Ø$6ó Ð÷ @S×"=× ÷	1ð 	1ô 1ØÐ0¸Gó
ð 	
÷ @S×?Rú×"=×"=ú× × ús<   Á	CÁC	Á6B2ÂC	ÂCÂ2CÂ=C	ÃCÃCÃC(	c               ó(   € V ^8„  d   QhRRRRRRRR/# )r!   Úctxr   Úinputsr^   r"   r$   )r%   s   "r&   r'   rV   ‘   s.   € ÷ Dñ D˜3ð D¨ð D°Sð D¸Sñ Dr)   c                ó(   <€ SP                  WV4      # r;   )Úsetup_context)ro   rp   r^   r4   s   &&&€r&   rr   Ú5generate_single_level_function.<locals>.setup_context‘   s   ø€ Ø ×.Ñ.¨s¸FÓCÐCr)   c               ó$   € V ^8„  d   QhRRRRRR/# )r!   ro   r   Úgradsr"   r$   )r%   s   "r&   r'   rV   •   s!   € ÷ ñ �cð  3ð ¨3ñ r)   c                ó0   <€ SP                   ! V .VO5!  pV# r;   )Úbackward)ro   ru   Úresultr4   s   &* €r&   rw   Ú0generate_single_level_function.<locals>.backward•   s   ø€ Ø"×+Ò+¨CÐ8°%Ó8ˆØˆr)   c               ó$   € V ^8„  d   QhRRRRRR/# ©r!   ro   r   Útangentsr"   r$   )r%   s   "r&   r'   rV   š   s!   € ÷ ñ �ð  ð ¨ñ r)   c                ó0   <€ SP                   ! V .VO5!  pV# r;   )Újvp)ro   r|   rx   r4   s   &* €r&   r~   Ú+generate_single_level_function.<locals>.jvpš   s   ø€ Ø"×&Ò& sÐ6¨XÓ6ˆØˆr)   rO   rl   rw   r~   rr   )rZ   rC   Útyper<   ÚautogradÚfunctionÚ_SingleLevelFunctionÚstaticmethod)	rK   r4   rl   rr   rw   r~   ÚnamerO   rZ   s	   ff      @r&   rN   rN   w   sª   ú€ ð ×ÑÓ€E÷
ò 
÷(Dð D÷ð ÷
ð ð  ×(Ñ(Ð)¨Ð3€DÜØÜ	�‰×	 Ñ	 ×	5Ñ	5Ð7à”| GÓ,Øœ XÓ.Ø”< Ó$Øœ\¨-Ó8ð		
ó	€Ið Ðr)   znot specifiedc               ó0   € V ^8„  d   QhRRRRRRRRRRRR/# )	r!   Úoutputsr   Úunwrapped_inputsÚorig_inputsrb   úCallable[..., Any]Úout_dimsr"   r$   )r%   s   "r&   r'   r'   À   sD   € ÷ 5/ñ 5/Øð5/àð5/ð ð5/ð  ð	5/ð
 ð5/ð 	ñ5/r)   c           	     óD  € \         P                  ! V!  p\         P                  ! V!  p\        WV4       UUu/ uF  w  rx\        V4      VbK  	  p	pp\         P                  ! V 4      w  r«. pV\
        8g  pR pV'       d@   \        WK4      pVf1   \        RV R\         P                  ! V4      ^,           RV R24      h\        V
4       Fº  w  pp\        V\        P                  4      '       g   VP                  V4       K9  \        V4      V	9   d$   VP                  V	\        V4      ,          4       Kl  V'       d0   Vf   \        R4      hVP                  V! VWï,          4      4       K£  VP                  V! V4      4       K¼  	  \         P                  ! WË4      # u uppi )NzoThe autograd.Function's vmap staticmethod returned an incompatible (output, out_dims) tuple. Expected out_dims=zI to be compatible with the structure of `output`. out_dims has structure z but output has structure zV. For more details, please see https://pytorch.org/docs/main/notes/extending.func.htmlz9flat_out_dims must not be None when out_dims is specified)rd   Úarg_tree_leavesÚzipÚidÚtree_flattenÚNO_OUT_DIMSr   ÚRuntimeErrorÚ	enumerateÚ
isinstancer<   rf   ÚappendÚAssertionErrorÚtree_unflatten)r‡   rˆ   r‰   rb   r‹   Úflat_unwrapped_inputsÚflat_orig_inputsÚ	unwrappedÚorigÚunwrapped_input_to_orig_inputÚflat_outputsÚspecrx   Úout_dims_specifiedÚflat_out_dimsÚir^   s   &&&&&            r&   ri   ri   À   s—  € ô #×2Ò2Ð4DÑEÐÜ×-Ò-¨{Ñ;Ðô  #Ð#8ÔKô%áK‰OˆIô 	ˆ9‹�tÒÙKð "ñ %ô
  ×,Ò,¨WÓ5Ñ€LØ€Fà!¤[Ñ0Ðà€MßÜ1°(ÓAˆð Ò Üð%à%- Jð /*ä*0×*=Ò*=¸hÓ*GÈÕ*JÐ)Kð L,Ø,0¨6ð 2JðKó	ð 	ô ˜|Ö,‰	ˆˆ6Ü˜&¤%§,¡,×/Ò/Ø�M‰M˜&Ô!ÙÜˆf‹:Ð6Ô6Ø�M‰MÐ7¼¸6»
ÕCÔDÙßØÒ$Ü$ØOóð ð �M‰M™' &¨-Õ*:Ó;Ö<à�M‰M™' &›/Ö*ñ -ô  × Ò  Ó.Ð.ùóW%s   ·Fc                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚVmapInfoi"  ÚintÚ
batch_sizeÚstrÚ
randomnessr$   N)rC   rD   rE   rF   Ú__annotations__rG   r$   r)   r&   r£   r£   "  s   ‡ ØƒOØ‡Or)   r£   c               ó    € V ^8„  d   QhRRRR/# )r!   r4   r5   r"   Úboolr$   )r%   s   "r&   r'   r'   '  s    € ÷ Fñ FØ4ðFà	ñFr)   c                ób   € V P                   \        P                  P                  P                   J# r;   )r   r<   r�   ÚFunction)r4   s   &r&   Úhas_overridden_vmap_ruler­   '  s%   € ð ×!Ñ!¬¯©×)@Ñ)@×)EÑ)EÐEÐEr)   c               ó    € V ^8„  d   QhRRRR/# )r!   rx   r   r"   r#   r$   )r%   s   "r&   r'   r'   -  s   € ÷ Rñ R¸ð RÀñ Rr)   c                óÒ   € R p\        V \        4      '       g    \        VR\        V 4       R2,           4      h\	        V 4      ^8X  g    \        VR\	        V 4       R2,           4      hR# )z}Expected the vmap staticmethod to have two returns, an output and out_dims with pytree structure compatible with the output. zGot a z insteadzGot z returns insteadN)r”   Útupler’   r€   Úlen)rx   Úbase_error_msgs   & r&   Ú+validate_vmap_returns_tuple_of_two_elementsr³   -  sh   € ð	Jð ô �fœe×$Ò$Ü˜>¨f´T¸&³\°NÀ(Ð,KÕKÓLÐLÜˆv‹;˜!ÔÜ˜>¨d´3°v³;°-Ð?OÐ,PÕPÓQÐQñ r)   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r!   rK   r   r4   r5   rL   r   r8   r"   r$   )r%   s   "r&   r'   r'   9  s:   € ÷ -ñ -Ø ð-à4ð-ð ð-ð ð	-ð
 	ñ-r)   c                ód  € \         ;QJ dJ    R  \        P                  P                  P	                  V4      ^ ,           4       F  '       g   K   RM?	  RM;! R  \        P                  P                  P	                  V4      ^ ,           4       4      '       d   \        RV 24      hVP                  '       d8   \        V4      '       d   \        RVP                   R24      h\        W.VO5!  # \        V4      '       g   \        RVP                   R24      h\        WP                  V.VO5/ VB # )c              3  óV   "  € T F  p\        V\        P                  4      x € K!  	  R # 5ir;   ©r”   r<   rf   )Ú.0Úvals   & r&   Ú	<genexpr>Ú,custom_function_call_vmap.<locals>.<genexpr>?  s%   é € ð á>ˆCô 	�3œŸ™×%Ð%Û>ùs   ‚')TFz|Run vmap on autograd.Function with kwarg-only Tensor args. Please do not pass kwarg-only Tensors to autograd.Function. Got: zYou tried to vmap over a  , but it has both generate_vmap_rule=True and an overridden vmap staticmethod. Please set generate_vmap_rule=False or delete the overridden vmap staticmethod to avoid ambiguity. For more details, please see https://pytorch.org/docs/main/notes/extending.func.htmlzÍ, but it does not have vmap support. Please override and implement the vmap staticmethod or set generate_vmap_rule=True. For more details, please see https://pytorch.org/docs/main/notes/extending.func.html)Úanyr<   ÚutilsÚ_pytreer�   ÚNotImplementedErrorÚgenerate_vmap_ruler­   r’   rC   Ú'custom_function_call_vmap_generate_ruleÚ custom_function_call_vmap_helperr   )rK   r4   rL   r8   s   &&*,r&   Úcustom_function_call_vmaprÃ   8  sH  € ÷ ƒsñ ä—;‘;×&Ñ&×3Ñ3°FÓ;¸AÖ>ó‡s‡s‚sñ ä—;‘;×&Ñ&×3Ñ3°FÓ;¸AÖ>ó÷ ò ô "ðà�8ðó
ð 	
ð ×+×+Ð+Ü#Ð$5×6Ò6ô Ø)Ð*;×*DÑ*DÐ)Eð FJð Kóð ô 7Øð
Ø-5ó
ð 	
ô $Ð$5×6Ò6ô Ø%Ð&7×&@Ñ&@Ð%Að BFð Gó
ð 	
ô ,Ø×+Ñ+Ð->ðØAIòØMSñð r)   c               ó0   € V ^8„  d   QhRRRRRRRRRRR	R/# )
r!   rK   r   Úvmap_functionrŠ   Úopr   rL   r8   r"   r$   )r%   s   "r&   r'   r'   i  sD   € ÷ 2ñ 2Ø ð2à%ð2ð 	ð2ð ð	2ð
 ð2ð 	ñ2r)   c                ó¤  a aa€ S P                  4       o\        S P                  4       S P                  4       R 7      p\	        V\
        P                  P                  P                  4      oR VV 3R llp\        VS4      w  rx\        P                  ! R V4      '       dB   V! 4       ;_uu_ 4        S'       d   \        V.VO5!  uuRRR4       # V! V/ VB uuRRR4       # V! 4       ;_uu_ 4        V! WX.VO5/ VB p	RRR4       \        X	4       V	w  r«R V3R llp\        W§W<VR7      #   + '       g   i     LZ; i  + '       g   i     LI; i))r¥   r§   c               ó   € V ^8„  d   QhRR/# )r!   r"   r   r$   )r%   s   "r&   r'   Ú6custom_function_call_vmap_helper.<locals>.__annotate__y  s   € ÷ ñ ˜3ñ r)   c                 óð   <€ S '       d   SP                  4       # \        P                  P                  \        P                  P	                  \        P                  P
                  P                  4      4      # r;   )rh   r<   r=   Ú_ExcludeDispatchKeyGuardÚDispatchKeySetÚDispatchKeyÚFuncTorchBatched)Úautograd_function_caserK   s   €€r&   Úlower_to_nextÚ7custom_function_call_vmap_helper.<locals>.lower_to_nexty  sN   ø€ ß!Ø×$Ñ$Ó&Ð&ä—8‘8×4Ñ4Ü—‘×'Ñ'¬¯©×(<Ñ(<×(MÑ(MÓNóð r)   c                ó
   € V R J # r;   r$   )Údims   &r&   r[   Ú2custom_function_call_vmap_helper.<locals>.<lambda>…  s   €  3¨$¡;r)   Nc               ó$   € V ^8„  d   QhRRRRRR/# )r!   r^   r_   Úout_dimú
int | Noner"   r$   )r%   s   "r&   r'   rÉ   ’  s!   € ÷ 
ñ 
˜ð 
¨zð 
¸lñ 
r)   c                ó(   <€ Vf   V # \        WS4      # r;   )r   )r^   rÖ   r   s   &&€r&   rb   Ú1custom_function_call_vmap_helper.<locals>.wrap_fn’  s%   ø€ ð Šð ð	
ô   °Ó?ð	
r)   )r‹   )rZ   r£   r¥   r§   r”   r<   r�   r‚   ÚFunctionMetar   rd   Útree_allr+   r³   ri   )rK   rÅ   rÆ   rL   r8   ÚinforÐ   rj   Úin_dimsrx   rk   r‹   rb   rÏ   r   s   f&&*,        @@r&   rÂ   rÂ   i  s  ú€ ð  ×%Ñ%Ó'€MÜØ×)Ñ)Ó+Ø×)Ñ)Ó+ô€Dô (¨¬E¯N©N×,CÑ,C×,PÑ,PÓQÐ÷ñ ô #1°¸=Ó"IÑÐô ‡‚Ñ.°×8Ò8Ù�_�_ß%Ü+¨BÐ:°Ó:÷ Š_ñ ˜8Ð. vÑ.÷	 Š_ñ 
��Ù˜tÐLÐ/AÒLÀVÑLˆ÷ 
ä/°Ô7Ø!'ÑÐ÷
ð 
ô -Ø¨hÈ(ôð ÷' �_ú÷ 
�ús   Â0D,ÃD,Ã1D?Ä,D<	Ä?E	c               ó    € V ^8„  d   QhRRRR/# )r!   r‡   útuple[Any, ...]r"   ztuple[Any, Any]r$   )r%   s   "r&   r'   r'   ž  s   € ÷ ñ ˜Oð °ñ r)   c                óh   € V R,          p\        V\        4      '       d	   V RR p W3# V ^ ,          p W3# )é   Néÿÿÿÿ)r”   r°   )r‡   r‹   s   & r&   Úunpack_outputsrã   ž  sB   € Ø�r�{€HÜ�(œE×"Ò"Ø˜#˜2�,ˆð ÐÐð ˜!•*ˆØÐÐr)   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r!   rK   r   r4   r5   rL   r   r"   r$   )r%   s   "r&   r'   r'   §  s6   € ÷ @ñ @Ø ð@à4ð@ð ð@ð 	ñ	@r)   c                ó¶  € \        W P                  4       4      w  r4\        VVV P                  4       V P	                  4       4      pV P                  4       ;_uu_ 4        \        V.VO5!  pR R R 4       \        X\        4      '       g   \        R\        V4       24      h\        V4      w  rg\        WgV P                  4       4      #   + '       g   i     Ld; i)Nz$expected outputs to be a tuple, got )r   rZ   Úvmapify_autograd_functionr¥   r§   rh   r+   r”   r°   r–   r€   rã   r   )rK   r4   rL   rj   rÝ   Úvmapped_functionr‡   r‹   s   &&*     r&   rÁ   rÁ   §  s½   € ô
 #1°×;LÑ;LÓ;NÓ"OÑÐÜ0ØØØ×ÑÓ Ø×ÑÓ ó	Ðð 
×	Ñ	×	Õ	Ü&Ð'7ÐMÐ:LÓMˆ÷ 
ô �gœu×%Ò%ÜÐCÄDÈÃMÀ?ÐSÓTÐTÜ& wÓ/Ñ€GÜ˜¨;×+<Ñ+<Ó+>Ó?Ð?÷ 
×	ús   ÁCÃC	c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R/# )
r!   rK   r   r4   r5   rÀ   rª   rL   r   r"   r$   )r%   s   "r&   r'   r'   ½  sA   € ÷ Kñ KØ%ðKà4ðKð ðKð ð	Kð
 	ñKr)   c                ó   € \        R 4      h)z0NYI: Functionalize rule for custom_function_call)r’   )rK   r4   rÀ   rL   s   &&&*r&   Ú"custom_function_call_functionalizerê   ¼  s   € ô ÐIÓ
JÐJr)   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R/# )
r!   r4   r5   rÝ   r   r¥   r¤   r§   r¦   r"   r$   )r%   s   "r&   r'   r'   Æ  sA   € ÷ |ñ |Ø4ð|àð|ð ð|ð ð	|ð
 #ñ|r)   c                ó<  a aaaa	€ R  V VVV3R llpR V	V VVV3R llpR V	V VVV3R llpR V	V VVV3R llpRS P                    2p\        V\        P                  P                  3R	\        V4      R
\        V4      R\        V4      R\        V4      RR/4      o	S	# )c               ó    € V ^8„  d   QhRRRR/# rU   r$   )r%   s   "r&   r'   Ú/vmapify_autograd_function.<locals>.__annotate__Ì  s   € ÷ &ñ &˜3ð & 3ñ &r)   c                 ó”   <€ \        SP                  SSS4      ! V !  w  r\        V\        P                  4      '       d   W3# . VOVN5# r;   )r   rl   r”   r<   rf   )rL   r‡   r‹   r4   r¥   rÝ   r§   s   *  €€€€r&   rl   Ú*vmapify_autograd_function.<locals>.forwardÌ  sS   ø€ Ü(Ø×%Ñ% w°
¸Jô
àñÑˆô �gœuŸ|™|×,Ò,ØÐ$Ð$à%�GÐ%˜XÑ%Ð%r)   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r!   ro   r   rp   r‡   r"   r#   r$   )r%   s   "r&   r'   rî   Õ  s(   € ÷ *1ñ *1˜3ð *1¨ð *1°cð *1¸dñ *1r)   c                óê   <a a€ \        V4      w  r#\        S4      oR  VV V3R llp\        VS	V3SS
4      ! W4       \        S R4      '       g   / S n        S P                  P                  SV/4       R# )c               ó$   € V ^8„  d   QhRRRRRR/# )r!   rp   r   r‡   r"   r#   r$   )r%   s   "r&   r'   ÚFvmapify_autograd_function.<locals>.setup_context.<locals>.__annotate__Ù  s!   € ÷ 	ñ 	˜#ð 	¨ð 	°ñ 	r)   c                ó˜  <€ \        S\        4       4      pSP                  W V4       \        ;QJ d    . R  V  4       F  NK  	  5M! R  V  4       4      p\	        SR4      '       g   / Sn        SP
                  P                  SV/4       \	        SR4      '       g   / Sn        SP                  P                  SVP                  /4       R# )c              3  ó~   "  € T F3  p\        V\        P                  4      '       d   VP                  MR x € K5  	  R # 5ir;   )r”   r<   rf   Úshape)r¸   Úinps   & r&   rº   ÚRvmapify_autograd_function.<locals>.setup_context.<locals>.inner.<locals>.<genexpr>å  s-   é € ð !ÙPVÈœZ¨¬U¯\©\×:Ò:�—	’	ÀÔDÓPVùs   ‚;=Ú_pt_input_shapesÚ_pt_saved_tensors_bdims_stackN)	ÚCtxCustomSaver   rr   r°   Úhasattrrú   Úupdaterû   Ú_pt_saved_tensors_bdims)rp   r‡   Úwrapped_ctxÚinput_shapesr4   ro   Úkeys   &&  €€€r&   ÚinnerÚ?vmapify_autograd_function.<locals>.setup_context.<locals>.innerÙ  s¸   ø€ ô
 (¨¬]«_Ó=ˆKØ×+Ñ+¨KÀÔI÷ !œ5ñ !ÙPVó!Ÿ5™5ñ !ÙPVó!ó ˆLô ˜3Ð 2×3Ò3à')�Ô$Ø× Ñ ×'Ñ'¨¨lÐ(;Ô<ä˜3Ð ?×@Ò@à46�Ô1Ø×-Ñ-×4Ñ4Ø�{×:Ñ:Ð<ör)   Ú_pt_out_dimsN)rã   r�   r   rý   r  rþ   )ro   rp   r‡   r‹   r  r  rO   r4   r¥   rÝ   r§   s   f&&  @€€€€€r&   rr   Ú0vmapify_autograd_function.<locals>.setup_contextÕ  sw   ú€ Ü*¨7Ó3ÑˆÜ�‹mˆ÷	ò 	ô8 	ØØ�hÐØØô		
ð
 ô	ô �s˜N×+Ò+à!ˆCÔØ×Ñ×Ñ  h Ö0r)   c               ó$   € V ^8„  d   QhRRRRRR/# r{   r$   )r%   s   "r&   r'   rî     s!   € ÷ !ñ !�ð ! ð !¨ñ !r)   c                óB  <a € \        S4      pR  V	V 3R llp\        SV4      p\        VS P                  V,          V3S
S4      ! S P                  V4      w  rV\        WVS P                  V,          S
4      p\        V\        P                  4      '       d   VR3# . VORN5# )c               ó$   € V ^8„  d   QhRRRRRR/# )r!   Úsaved_tensorsr   r|   r"   r$   )r%   s   "r&   r'   Ú<vmapify_autograd_function.<locals>.jvp.<locals>.__annotate__  s&   € ÷ 	Añ 	A¨#ð 	A¸ð 	AÀñ 	Ar)   c                óD   <€ \        SV 4      pSP                  ! V.VO5!  # r;   )ÚCtxWithSavedTensorsr~   )r
  r|   r   r4   ro   s   && €€r&   Újvp_no_contextÚ>vmapify_autograd_function.<locals>.jvp.<locals>.jvp_no_context  s%   ø€ Ü-¨c°=ÓAˆKØ$×(Ò(¨Ð@°xÓ@Ð@r)   N)
r�   Úget_tangents_in_dimsr   rû   r
  Ú	reductifyr  r”   r<   rf   )ro   r|   r  r  Útangent_in_dimsÚout_tangentsÚout_tangents_dimsrx   rO   r4   r¥   rÝ   r§   s   f*      €€€€€r&   r~   Ú&vmapify_autograd_function.<locals>.jvp  sª   ù€ Ü�‹mˆ÷	Añ 	Aô /¨w¸ÓAˆÜ*6ØØ×.Ñ.¨sÕ3°_ÐEØØô	+
ð
 ×
Ñ
˜Xó+'Ñ'ˆô Ø¨S×-=Ñ-=¸cÕ-BÀJó
ˆô �fœeŸl™l×+Ò+Ø˜4�<Ðà �F�=˜D‘=Ð r)   c               ó$   € V ^8„  d   QhRRRRRR/# )r!   ro   r   Úgrad_outputsr"   r$   )r%   s   "r&   r'   rî     s!   € ÷ ñ �cð ¨#ð °#ñ r)   c                ó¼  <a € \        S	4      pVR R pS P                  V,          p\        V\        4      '       g   V3p\        ;QJ d    . R \	        W44       4       F  NK  	  5M! R \	        W44       4       4      pR V
V 3R llp\        VS P                  V,          V33SS4      ! S P                  V34      w  rg\        WgSSS P                  V,          4      pV# )Nc              3  ó6   "  € T F  w  rVe   TMR x € K  	  R # 5ir;   r$   )r¸   Úgrad_outputÚin_dims   &  r&   rº   Ú>vmapify_autograd_function.<locals>.backward.<locals>.<genexpr>   s$   é € ð %
á'OÑ#�ð "Ò-‰F°4Ô7Û'Oùs   ‚c               ó    € V ^8„  d   QhRRRR/# )r!   rp   r   r"   r$   )r%   s   "r&   r'   ÚAvmapify_autograd_function.<locals>.backward.<locals>.__annotate__%  s   € ÷ 	Jñ 	J¨ð 	J°ñ 	Jr)   c                óL   <€ V w  r\        SV4      pSP                  ! V.VO5!  # r;   )r  rw   )rp   r
  r  r   r4   ro   s   &   €€r&   Úbackward_no_contextÚHvmapify_autograd_function.<locals>.backward.<locals>.backward_no_context%  s-   ø€ Ø*0Ñ'ˆMÜ-¨c°=ÓAˆKØ$×-Ò-¨kÐI¸LÓIÐIr)   râ   )
r�   r  r”   r°   rŽ   r   rû   r
  r  rú   )ro   r  r  Úgrad_outputs_Úgrad_outputs_in_dimsr   Úgrad_insÚgrad_ins_dimsrx   rO   r4   r¥   rÝ   r§   s   f*       €€€€€r&   rw   Ú+vmapify_autograd_function.<locals>.backward  sì   ù€ Ü�‹mˆØ$ S bÐ)ˆØ"×/Ñ/°Õ4ÐäÐ.´×6Ò6Ø$8Ð#:Ð ç$œuñ %
ä'*¨=Ô'Oó%
Ÿu™uñ %
ä'*¨=Ô'Oó%
ó  
Ð÷
	Jñ 	Jô
 #/ØØ×/Ñ/°Õ4Ð6JÐKÐMØØô	#
ð
 ×Ñ˜mÐ
,ó#.Ñˆô Ø W¨j¸#×:NÑ:NÈsÕ:Só
ˆð ˆr)   ÚVmappedrl   rw   r~   rr   rÀ   T)rC   r€   r<   r�   r¬   r„   )
r4   rÝ   r¥   r§   rl   rr   r~   rw   r…   rO   s
   ffff     @r&   ræ   ræ   Æ  s™   ü€ ÷&ó &÷*1ô *1÷X!ô !÷.ô ð: Ð&×/Ñ/Ð0Ð1€DÜØÜ	�‰×	 Ñ	 Ð"à”| GÓ,Øœ XÓ.Ø”< Ó$Øœ\¨-Ó8Ø  $ð	
ó
€Ið Ðr)   c               ó$   € V ^8„  d   QhRRRRRR/# )r!   Ú
input_dimsr   r|   rß   r"   r$   )r%   s   "r&   r'   r'   G  s!   € ÷ /ñ / Sð /°Oð /Èñ /r)   c                óÚ   € \         P                  ! V 4      w  r#\         P                  ! V!  p\        W$4       UUu. uF  w  rVVf   R MTNK  	  ppp\         P                  ! Ws4      # u uppi r;   )rd   r�   r�   rŽ   r—   )r)  r|   Úflat_in_dimsrž   Úflat_tangentsr  Útangentrx   s   &&      r&   r  r  G  so   € Ü×,Ò,¨ZÓ8Ñ€LÜ×*Ò*¨HÑ5€Mô  # <Ô?ôá?‰OˆFð ’‰ VÒ+Ù?ð ñ ô × Ò  Ó.Ð.ùó	s   »A'c                  óJ   € ] tR tRt$ RtR]R&   R R ltR R ltR R	 ltR
t	R# )Ú
WrappedCtxi†  Ú_pt_reserved_attrsztuple[str, ...]c               ó    € V ^8„  d   QhRRRR/# )r!   ro   r   r"   r#   r$   )r%   s   "r&   r'   ÚWrappedCtx.__annotate__‰  s   € ÷ !ñ !˜Cð ! Dñ !r)   c                	óº   € \        V\        4      '       g?   \        V 4      P                  pV F#  p\	        W4      '       g   K  \        R V R24      h	  Wn        R# )zPyTorch reserves the zU field on ctx. Please name your fields on ctx something else to avoid name collision.N)r”   r/  r€   r0  rý   r’   Ú_pt_inner_ctx)r0   ro   Úreserved_attrsr…   s   &&  r&   r.   ÚWrappedCtx.__init__‰  s]   € Ü˜#œz×*Ò*Ü! $›Z×:Ñ:ˆNÛ&�Ü˜s×)Ò)ÙÜ"Ø+¨NÐ+;ð <!ð !óð ñ 'ð !Ör)   c               ó    € V ^8„  d   QhRRRR/# )r!   r…   r¦   r"   r   r$   )r%   s   "r&   r'   r2  –  s   € ÷ 1ñ 1 ð 1¨ñ 1r)   c                	ó.   € \        V P                  V4      # r;   )Úgetattrr4  )r0   r…   s   &&r&   Ú__getattr__ÚWrappedCtx.__getattr__–  s   € Ü�t×)Ñ)¨4Ó0Ð0r)   c               ó$   € V ^8„  d   QhRRRRRR/# )r!   r…   r¦   Úvaluer   r"   r#   r$   )r%   s   "r&   r'   r2  ™  s!   € ÷ 8ñ 8 ð 8¨Cð 8°Dñ 8r)   c                	ó‚   € V\        V 4      P                  9   d   W P                  V&   R # \        V P                  W4      # r;   )r€   r0  Ú__dict__Úsetattrr4  )r0   r…   r=  s   &&&r&   Ú__setattr__ÚWrappedCtx.__setattr__™  s6   € Ø”4˜“:×0Ñ0Ô0Ø"'�M‰M˜$ÑÙÜ�t×)Ñ)¨4Ó7Ð7r)   )r4  N)r0  r4  )
rC   rD   rE   rF   r0  r¨   r.   r:  rA  rG   r$   r)   r&   r/  r/  †  s!   ‡ Ø*QÐ˜ÓQõ!õ1÷8ñ 8r)   r/  c                  ód   a € ] tR tRtR.]P
                  O5tR V 3R llt]R R l4       tRt	V ;t
# )r  i¡  Ú_pt_new_saved_tensorsc               ó$   € V ^8„  d   QhRRRRRR/# )r!   ro   r   Únew_saved_tensorsúSequence[torch.Tensor]r"   r#   r$   )r%   s   "r&   r'   Ú CtxWithSavedTensors.__annotate__¤  s"   € ÷ 7ñ 7˜Cð 7Ð4Jð 7Ètñ 7r)   c                	ó2   <€ \         SV `  V4       W n        R # r;   )r-   r.   rD  )r0   ro   rF  r1   s   &&&€r&   r.   ÚCtxWithSavedTensors.__init__¤  s   ø€ Ü‰Ñ˜ÔØ%6Ö"r)   c               ó   € V ^8„  d   QhRR/# )r!   r"   rG  r$   )r%   s   "r&   r'   rH  ©  s   € ÷ *ñ *Ð5ñ *r)   c                	ó   € V P                   # r;   ©rD  )r0   s   &r&   r
  Ú!CtxWithSavedTensors.saved_tensors¨  s   € à×)Ñ)Ð)r)   rM  )rC   rD   rE   rF   r/  r0  r.   Úpropertyr
  rG   rH   rI   s   @r&   r  r  ¡  s5   ø† Ø1ÐR°J×4QÑ4QÑRÐ÷7ð 7ð ô*ó ö*r)   r  c                  óh   a € ] tR tRtRR.]P
                  O5tR V 3R lltR R ltR R	 ltR
t	V ;t
# )rü   i­  rÿ   Ú_pt_current_levelc               ó$   € V ^8„  d   QhRRRRRR/# )r!   ro   r   r   r¤   r"   r#   r$   )r%   s   "r&   r'   ÚCtxCustomSave.__annotate__´  s!   € ÷ /ñ /˜Cð /°ð /¸ñ /r)   c                	ó@   <€ \         SV `  V4       RV n        W n        R # )Nr$   )r-   r.   rÿ   rQ  )r0   ro   r   r1   s   &&&€r&   r.   ÚCtxCustomSave.__init__´  s   ø€ Ü‰Ñ˜ÔØ8:ˆÔ$Ø!.Ör)   c               ó    € V ^8„  d   QhRRRR/# ©r!   Útensorsr_   r"   r#   r$   )r%   s   "r&   r'   rS  ¹  s   € ÷ -ñ -¨,ð -¸4ñ -r)   c                	ót   € \        WP                  4      w  r#V P                  P                  ! V!   W0n        R # r;   )r   rQ  r4  Úsave_for_backwardrÿ   ©r0   rX  Úunwrapped_tensorsÚbdimss   &*  r&   rZ  ÚCtxCustomSave.save_for_backward¹  s1   € Ü#1°'×;QÑ;QÓ#RÑ ÐØ×Ñ×,Ò,Ð.?Ò@Ø',Ö$r)   c               ó    € V ^8„  d   QhRRRR/# rW  r$   )r%   s   "r&   r'   rS  ¾  s   € ÷ -ñ -¨ð -¸$ñ -r)   c                	ót   € \        WP                  4      w  r#V P                  P                  ! V!   W0n        R # r;   )r   rQ  r4  Úsave_for_forwardrÿ   r[  s   &*  r&   ra  ÚCtxCustomSave.save_for_forward¾  s1   € Ü#1°'×;QÑ;QÓ#RÑ ÐØ×Ñ×+Ò+Ð->Ò?Ø',Ö$r)   )rQ  rÿ   )rC   rD   rE   rF   r/  r0  r.   rZ  ra  rG   rH   rI   s   @r&   rü   rü   ­  s:   ø† à!Øðð 
×	&Ñ	&ñÐ÷/ð /õ
-÷
-ó -r)   rü   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r!   Ú
grad_inputz'torch.Tensor | tuple[torch.Tensor, ...]Úgrad_input_bdimzint | tuple[int, ...]Ú
input_bdimr¥   r¤   Ú&target_shape_without_bdim_to_reduce_tor   r"   rß   r$   )r%   s   "r&   r'   r'   Ä  sD   € ÷ ñ Ø7ðà*ðð &ðð ð	ð
 -0ðð ñr)   c           	     ób  a€ \        V \        4      '       g   V 3p \        V\        4      '       g   V3p\        V\        4      '       g   V3pVf   \        V 4      R,          p\        ;QJ d%    . V3R l\        V VVV4       4       F  NK  	  5pV# ! V3R l\        V VVV4       4       4      pV# )Nc              3  óF   <"  € T F  w  rr4\        WVSV4      x € K  	  R # 5ir;   )Úreductify_leaf)r¸   ÚgiÚgi_bdimÚi_bdimÚmaybe_ishaper¥   s   &    €r&   rº   Úreductify.<locals>.<genexpr>Ô  s/   øé € ð ñ2
Ñ-ˆB˜ô 	�r F¨J¸×EÐEó2
ùs   ƒ!r;   )r”   r°   r±   rŽ   )rd  re  rf  r¥   rg  rx   s   &&&f& r&   r  r  Ä  s¶   ø€ ô �j¤%×(Ò(Ø �]ˆ
Ü�o¤u×-Ò-Ø*Ð,ˆÜ�j¤%×(Ò(Ø �]ˆ
à-Ò5Ü14°Z³À7Õ1JÐ.ßŒUô ä14ØØØØ2ô	2
ó�U€Fð €Mð ô ä14ØØØØ2ô	2
óó €Fð €Mr)   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r!   rd  ztorch.Tensor | Nonere  r×   rf  r¥   r¤   rg  r   r"   r$   )r%   s   "r&   r'   r'   à  sD   € ÷ 9ñ 9Ø#ð9àð9ð ð9ð ð	9ð
 -0ð9ð ñ9r)   c                óŠ  € V f   R # Vf   Vf   V # Ve   Vf   V P                  V4      # Vf   \        R4      hVf>   V P                  V4      p \        V P                  4      pW5V&   V P                  V4      p TpVe/   \        \        P                  P                  VR 3VR7      ! W4      # W!8w  d   V P                  W4      p V # )Nzinput_bdim must not be None)rÝ   r‹   )Úsumr–   Ú	unsqueezeÚlistr÷   Úexpandr   r<   rf   Úsum_to_sizeÚmovedim)rd  re  rf  r¥   rg  Ú	new_shapes   &&&&& r&   rj  rj  à  sâ   € ð ÒÙàÒ :Ò#5ØÐàÒ" zÒ'9Ø�~‰~˜oÓ.Ð.ð0 ÒÜÐ:Ó;Ð;àÒØ×)Ñ)¨*Ó5ˆ
Ü˜×)Ñ)Ó*ˆ	Ø *�*ÑØ×&Ñ& yÓ1ˆ
Ø$ˆà-Ò9ÜÜ�L‰L×$Ñ$Ø$ dÐ+Øõ
ð ó	>ð 	>ð Ô$Ø×'Ñ'¨ÓDˆ
ØÐr)   c               ó$   € V ^8„  d   QhRRRRRR/# )r!   Úoriginal_forwardzCallable[_P, _R]Úoriginal_setup_contextrŠ   r"   zCallable[..., _R]r$   )r%   s   "r&   r'   r'     s&   € ÷ 	ñ 	Ø&ð	à.ð	ð ñ	r)   c                ó   a a€ R  V V3R llpV# )c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r!   ro   r   r6   r7   r8   r9   r"   r   r$   )r%   s   "r&   r'   Ú9autograd_function_forward_rewritten.<locals>.__annotate__   s(   € ÷ ñ ˜ð  Wð ¸	ð Àbñ r)   c                ó*   <€ S! V/ VB pS! WV4       V# r;   r$   )ro   r6   r8   r^   rz  r{  s   &*, €€r&   Únew_forwardÚ8autograd_function_forward_rewritten.<locals>.new_forward   s!   ø€ Ù! 4Ð2¨6Ñ2ˆÙ˜s¨&Ô1Øˆr)   r$   )rz  r{  r€  s   ff r&   Ú#autograd_function_forward_rewrittenr‚    s   ù€ ÷ñ ð
 Ðr)   c                  ó:   a € ] tR tRtR V 3R lltR R ltRtV ;t# )ÚAutogradFunctionApplyi(  c               ó   € V ^8„  d   QhRR/# r    r$   )r%   s   "r&   r'   Ú"AutogradFunctionApply.__annotate__)  s   € ÷ 4ñ 4˜$ñ 4r)   c                	ó&   <€ \         SV `  R 4       R# )Úautograd_function_applyNr,   r/   s   &€r&   r.   ÚAutogradFunctionApply.__init__)  s   ø€ Ü‰ÑÐ2Ö3r)   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )r!   Úfwdztorch.fx.GraphModuleÚbwdÚfwd_argsr   Ú
fwd_kwargsr"   r$   )r%   s   "r&   r'   r†  ,  sC   € ÷ @.ñ @.à!ð@.ð "ð@.ð ð	@.ð
 ð@.ð 
ñ@.r)   c           	     	óê   aaaaaa	a
€ R o
VP                  R. 4      o\        S4      oVR,          oVR,          o	 ! VVVVVV	V
3R lR\        P                  P                  4      pVP
                  ! V!  # )NÚ	dirty_idxÚnon_differentiable_idxÚsaved_for_backward_idxc                  óv   <€ ] tR tRt]R VVV3R ll4       t]R VVV3R ll4       t]R V V3R ll4       tRtR	# )
Ú5AutogradFunctionApply.__call__.<locals>.ApplyTemplatei9  c               ó$   € V ^8„  d   QhRRRRRR/# )r!   r6   r   r8   r"   r$   )r%   s   "r&   r'   ÚBAutogradFunctionApply.__call__.<locals>.ApplyTemplate.__annotate__;  s!   € ÷ ñ ˜sð ¨cð °cñ r)   c                 	óþ   <€ \         P                  P                  S4      P                  ! V !  w  po	^ RIHp \        S	4       F6  w  rEVS9  g   K  V! V4       F  pRVP                  P                  R&   K  	  K8  	  V# )r   )Ú_get_proxiesTÚsaved_tensor_with_no_vc_check)	r<   ÚfxÚInterpreterÚrunÚ"torch.fx.experimental.proxy_tensorr˜  r“   ÚnodeÚmeta)
r6   r8   r^   r˜  ÚidxÚtÚproxyr‹  r’  Úsaved_valuess
   *,     €€€r&   rl   Ú=AutogradFunctionApply.__call__.<locals>.ApplyTemplate.forward:  sq   ø€ ô (-§x¡x×';Ñ';¸CÓ'@×'DÒ'DÀdÑ'KÑ$�˜õ Lä'¨Ö5‘F�CØÐ"8Ö8Ù%1°!¦_˜EØOS˜EŸJ™JŸO™OÐ,KÓLó &5ñ 6ð
 �r)   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r!   ro   r   rp   rß   r^   r"   r#   r$   )r%   s   "r&   r'   r–  Q  s)   € ÷ ñ  3ð °ð Èð ÐQUñ r)   c                	ó¸   <a€ R  V3R llp\        S4      ^ 8”  d   V P                  ! V! S4      !   \        S4      ^ 8”  d   V P                  ! V! S4      !   R# R# )c               ó    € V ^8„  d   QhRRRR/# )r!   r   zIterable[int]r"   z	list[Any]r$   )r%   s   "r&   r'   ÚYAutogradFunctionApply.__call__.<locals>.ApplyTemplate.setup_context.<locals>.__annotate__R  s   € ÷ <ñ <¨-ð <¸Iñ <r)   c                óÄ   <€ \        V 4      p\        S\        \        34      '       d(   \	        S4       UUu. uF  w  r#W!9   g   K  VNK  	  upp# ^ V9   d   S.# . # u uppi )r   )Úsetr”   r°   rt  r“   )r   Úidx_setr¡   rY   r^   s   &   €r&   Úselected_outputsÚ]AutogradFunctionApply.__call__.<locals>.ApplyTemplate.setup_context.<locals>.selected_outputsR  sZ   ø€ Ü! #›h�GÜ! &¬5´$¨-×8Ò8Ü.7¸Ô.?ÔPÑ.?¡d aÀ1Á<§ Ñ.?ÒPÐPØ'(¨G¤|˜F˜8Ð;¸Ð;ùó  Qs   ·
AÁAN)r±   Ú
mark_dirtyÚmark_non_differentiable)ro   rp   r^   r¬  r�  Údirty_idx_setr‘  s   &&f €€€r&   rr   ÚCAutogradFunctionApply.__call__.<locals>.ApplyTemplate.setup_contextP  sY   ù€ ÷<ð <ô �y“> AÔ%Ø—N’NÑ$4°]Ó$CÒDô Ð-Ó.°Ô2Ø×/Ò/Ù)Ð*@ÓAôñ 3r)   c               ó$   € V ^8„  d   QhRRRRRR/# )r!   ro   r   Úgradr"   r$   )r%   s   "r&   r'   r–  c  s&   € ÷ Kñ K˜cð K¨#ð K°#ñ Kr)   c                	ó†   <€ Sf   \        R4      h\        P                  P                  S4      P                  ! . VOSO5!  # )Nzsaved_values must not be None)r–   r<   rš  r›  rœ  )ro   r³  rŒ  r£  s   &*€€r&   rw   Ú>AutogradFunctionApply.__call__.<locals>.ApplyTemplate.backwardb  s?   ø€ ð  Ò'Ü(Ð)HÓIÐIÜ—x‘x×+Ñ+¨CÓ0×4Ò4ÐJ°dÐJ¸\ÓJÐJr)   r$   N)	rC   rD   rE   rF   r„   rl   rr   rw   rG   )rŒ  r�  r°  r‹  r‘  r’  r£  s   €€€€€€€r&   ÚApplyTemplater”  9  sO   ø† Ø÷ñ ó ðð* ÷ñ ó ðð" ÷Kð Kó ôKr)   r¶  )Úgetrª  r<   r�   r¬   r@   )r0   r‹  rŒ  r�  rŽ  r¶  r�  r°  r‘  r’  r£  s   &ff*, @@@@@r&   r?   ÚAutogradFunctionApply.__call__,  sm   þ€ ð .2ˆØ—N‘N ;°Ó3ˆ	Ü˜I›ˆØ!+Ð,DÕ!EÐØ!+Ð,DÕ!EÐ÷1	Kõ 1	KœEŸN™N×3Ñ3ô 1	Kðf ×"Ò" HÑ-Ð-r)   r$   rB   rI   s   @r&   r„  r„  (  s   ø† ÷4ð 4÷@.ó @.r)   r„  c                  ó,   € ] tR tRt]R R l4       tRtR# )Ú!DynamoAutogradFunctionTraceHelperir  c               ó    € V ^8„  d   QhRRRR/# )r!   Úorig_fwdzCallable[_P, Any]r"   r$   )r%   s   "r&   r'   Ú.DynamoAutogradFunctionTraceHelper.__annotate__t  s   € ÷ 3ñ 3Ð#4ð 3Ð9Jñ 3r)   c                	ó   a € R  V 3R llpV# )c               ó$   € V ^8„  d   QhRRRRRR/# )r!   r6   r7   r8   r9   r"   r   r$   )r%   s   "r&   r'   ÚHDynamoAutogradFunctionTraceHelper.fwd_trace_helper.<locals>.__annotate__x  s!   € ÷ &	#ñ &	#˜ð &	#¨Ið &	#¸#ñ &	#r)   c                 óª  <a a€ \         P                  ! 4       ;_uu_ 4        S	! S / VB pR R R 4       S ^ ,          p\        VRR 4      oR V3R llpR V 3R llp\        X\         P                  4      '       d0   V! V4      '       d    V! V4      '       g   VP                  V4      # V# . pV F…  p\        V\         P                  4      '       dR   V! V4      '       d1   V! V4      '       g#   VP                  VP                  V4      4       Ka  VP                  V4       Kt  VP                  V4       K‡  	  \        V4      #   + '       g   i     EL ; i)NÚdirty_tensorsc               ó    € V ^8„  d   QhRRRR/# ©r!   Útensorr_   r"   rª   r$   )r%   s   "r&   r'   ÚWDynamoAutogradFunctionTraceHelper.fwd_trace_helper.<locals>.inner.<locals>.__annotate__  s   € ÷ ñ ¨ð ¸ñ r)   c                ó†   <a € Sf   R# \         ;QJ d    V 3R lS 4       F  '       g   K   R# 	  R# ! V 3R lS 4       4      # )NFc              3  óp   <"  € T F+  p\        V\        P                  4      '       g   K%  SVJ x € K-  	  R # 5ir;   r·   )r¸   Údirty_tensorrÅ  s   & €r&   rº   ÚmDynamoAutogradFunctionTraceHelper.fwd_trace_helper.<locals>.inner.<locals>.is_dirty_tensor.<locals>.<genexpr>‚  s-   øé € ð á(5˜Ü! ,´·±×=ô +�F˜lÕ*Û(5ùó   ƒ"6ª6T©r¼   )rÅ  rÂ  s   f€r&   Úis_dirty_tensorÚZDynamoAutogradFunctionTraceHelper.fwd_trace_helper.<locals>.inner.<locals>.is_dirty_tensor  sG   ù€ Ø Ò(Ù ß“sô á(5ó—s”sð ’sð �sô á(5óó ð r)   c               ó    € V ^8„  d   QhRRRR/# rÄ  r$   )r%   s   "r&   r'   rÆ  ˆ  s   € ÷ ñ  lð °tñ r)   c                óz   <a € \         ;QJ d    V 3R  lS 4       F  '       g   K   R# 	  R# ! V 3R  lS 4       4      # )c              3  óp   <"  € T F+  p\        V\        P                  4      '       g   K%  VSJ x € K-  	  R # 5ir;   r·   )r¸   ÚargrÅ  s   & €r&   rº   ÚkDynamoAutogradFunctionTraceHelper.fwd_trace_helper.<locals>.inner.<locals>.is_tensor_arg.<locals>.<genexpr>‰  s'   øé € ð Ù-1 c´ZÀÄUÇ\Á\×5R”M�C˜6•M«TùrË  TFrÌ  )rÅ  r6   s   f€r&   Úis_tensor_argÚXDynamoAutogradFunctionTraceHelper.fwd_trace_helper.<locals>.inner.<locals>.is_tensor_argˆ  s>   ù€ ß“sô Ù-1ó—s”sð ’sð �sô Ù-1óó ð r)   )r<   Úno_gradr9  r”   rf   Úview_asr•   r°   )
r6   r8   Úoutsro   rÍ  rÔ  Únew_outsÚoutrÂ  r¼  s
   j,      @€r&   r  ÚADynamoAutogradFunctionTraceHelper.fwd_trace_helper.<locals>.innerx  s  ú€ Ü—’—•Ù Ð0¨Ñ0�÷ !ð �q•'ˆCÜ# C¨¸$Ó?ˆM÷ð ÷ð ô ˜$¤§¡×-Ò-Ù  ×&Ò&©¸t×/DÒ/DØŸ<™<¨Ó-Ð-à�KàˆHÛ�Ü˜c¤5§<¡<×0Ò0Ù$ S×)Ò)±/À#×2FÒ2FØ Ÿ™¨¯©°CÓ(8Ö9à Ÿ™¨Ö,à—O‘O CÖ(ñ ô ˜“?Ð"÷K !—�ús   ¡	EÅE	r$   )r¼  r  s   f r&   Úfwd_trace_helperÚ2DynamoAutogradFunctionTraceHelper.fwd_trace_helpers  s   ø€ ÷
&	#ð &	#ð^ ˆr)   r$   N)rC   rD   rE   rF   r„   rÜ  rG   r$   r)   r&   rº  rº  r  s   † Øô3ó ô3r)   rº  r;   )HÚ
__future__r   Útypingr   r   r   Útyping_extensionsr   r   r<   Útorch.utils._pytreer½   r¾   rd   Útorch._C._functorchr	   r
   r   r   Útorch._functorch.apisr   Útorch._functorch.utilsr   Útorch._functorch.vmapr   r   r   r   r   Ú
torch._opsr   Útorch.autograd.forward_adr   Úcollections.abcr   r   r   Útorch._functorch.pyfunctorchr   r   r   r   r   r+   Úpy_implÚGradÚJvprQ   rN   r‘   ri   r£   r­   r³   ÚVmaprÃ   rÂ   rã   rÁ   ÚFunctionalizerê   ræ   r  r/  r  rü   r  rj  r‚  r„  rˆ  rº  r$   r)   r&   Ú<module>rï     s§  ðÝ "ç 1Ñ 1ß 0ã ß $Ð $÷ó õ 'Ý H÷õ õ +Ý ;÷ ß<Ñ<çRáˆtƒ_€ÙˆTƒ]€ô8Ð(;ô 8ñ@ 9Ó:Ð ð< ×Ñ˜m×0Ñ0Ó1Ø×Ñ˜m×/Ñ/Ó0ô	ó 1ó 2ð	õ6ðD €ð  ÷5/ôDˆzô õ
FõRð ×Ñ˜m×0Ñ0Ó1ô-ó 2ð-õ`2õjõ@ð* ×Ñ˜m×9Ñ9Ó:ôKó ;ðKõ|õB/÷~8ñ 8ô6	*˜*ô 	*ô-�Jô -÷.÷89õx	ôD.Ð/ô D.ñN 0Ó1Ð ÷5ó 5r)   