+
    UV-j/{  ã                   óž  € ^ RI Ht ^ RIHtHtHt ^ RIHt ^ RI	H
t
 ^ RI	Ht ^ RIHt ^RIHtHtHt ^RIHtHt ^RIHt ^R	IHt ]! ]P2                  R
R7      R 4       t ! R R]
P6                  4      t ! R R]
P6                  4      t]! ]P2                  R
R7      R 4       t ! R R]
P6                  4      t ! R R]
P6                  4      t  ! R R]
P6                  4      t! ! R R]
P6                  4      t" ! R R]
P6                  4      t# ! R R]
P6                  4      t$ ! R R]
P6                  4      t% ! R  R!]
P6                  4      t&R# )"é    )Úpartial)ÚAnyÚListÚOptionalN)ÚRMSNorm)Úcreate_causal_mask)ÚLanguageModelOutputÚcreate_attention_maskÚscaled_dot_product_attention)ÚKVCacheÚRotatingKVCache©Ú
TextConfig)Úinitialize_ropeT)Ú	shapelessc                 ó<   € \         P                  ! V 4      V,          # ©N)ÚnnÚgelu_approx)ÚgateÚxs   &&Úo/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/gemma4/language.pyÚgeglur      s   € ä�>Š>˜$Ó !Õ#Ð#ó    c                   óX   a a€ ] tR t^t oRtRV3R lV 3R llltV3R lR ltRtVtV ;t	# )ÚRMSNormNoScalezDRMSNorm without learnable scale (with_scale=False, scale_shift=0.0).c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©é   ÚdimÚeps©ÚintÚfloat)ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚRMSNormNoScale.__annotate__   s   ø€ ÷ ñ ™Cð ¡eñ r   c                ó0   <€ \         SV `  4        W n        R # r   )ÚsuperÚ__init__r!   ©Úselfr    r!   Ú	__class__s   &&&€r   r+   ÚRMSNormNoScale.__init__   s   ø€ Ü‰ÑÔØŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   r   Úreturn©ÚmxÚarray)r%   r&   s   "€r   r'   r(      s#   ø€ ÷ 3ñ 3™"Ÿ(™(ð 3¡r§x¡xñ 3r   c                óX   € \         P                  P                  VR V P                  4      # r   )r4   ÚfastÚrms_normr!   ©r-   r   s   &&r   Ú__call__ÚRMSNormNoScale.__call__   s   € Ü�w‰w×Ñ  4¨¯©Ó2Ð2r   ©r!   ©g�íµ ÷Æ°>©
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r+   r:   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r.   r&   s   @@r   r   r      s!   ù‡ € ÙN÷õ ÷3÷ 3ð 3r   r   c                   óX   a a€ ] tR t^#t oRtRV3R lV 3R llltV3R lR ltRtVtV ;t	# )ÚRMSNormZeroShiftzIGemma4 RMSNorm with scale_shift=0.0 (weight used directly, no +1 offset).c                ó&   <€ V ^8„  d   QhRS[ RS[/# r   r"   )r%   r&   s   "€r   r'   ÚRMSNormZeroShift.__annotate__&   s   ø€ ÷ ñ ™Cð ¡eñ r   c                óh   <€ \         SV `  4        \        P                  ! V34      V n        W n        R # r   )r*   r+   r4   ÚonesÚweightr!   r,   s   &&&€r   r+   ÚRMSNormZeroShift.__init__&   s$   ø€ Ü‰ÑÔÜ—g’g˜s˜f“oˆŒØŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r1   r3   )r%   r&   s   "€r   r'   rK   +   s#   ø€ ÷ :ñ :™"Ÿ(™(ð :¡r§x¡xñ :r   c                ój   € \         P                  P                  WP                  V P                  4      # r   )r4   r7   r8   rN   r!   r9   s   &&r   r:   ÚRMSNormZeroShift.__call__+   s!   € Ü�w‰w×Ñ §;¡;°·±Ó9Ð9r   )r!   rN   r=   r>   rG   s   @@r   rI   rI   #   s!   ù‡ € ÙS÷õ ÷
:÷ :ð :r   rI   c                 óH   € \         P                  ! W,          4      V ,          # r   )r4   Útanh)Úsoftcapr   s   &&r   Úlogit_softcaprV   /   s   € ä�7Š7�1•;Ó 'Õ)Ð)r   c                   óT   a a€ ] tR t^4t oRV3R lV 3R llltV3R lR ltRtVtV ;t# )ÚMLPc                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   ÚconfigÚ	layer_idx)r   r#   )r%   r&   s   "€r   r'   ÚMLP.__annotate__5   s   ø€ ÷ Tñ T™zð T±cñ Tr   c                óà  <€ \         SV `  4        VP                  \        VR ^ 4      ,
          pY#u;8¬  ;'       d    ^ 8„  Mu p\        VRR4      ;'       d    TpVP                  V'       d   ^M^,          p\
        P                  ! VP                  VRR7      V n        \
        P                  ! WaP                  RR7      V n	        \
        P                  ! VP                  VRR7      V n
        R# )Únum_kv_shared_layersÚuse_double_wide_mlpF©ÚbiasN)r*   r+   Únum_hidden_layersÚgetattrÚintermediate_sizer   ÚLinearÚhidden_sizeÚ	gate_projÚ	down_projÚup_proj)r-   rZ   r[   Úfirst_kv_shared_layer_idxÚis_kv_shared_layerÚuse_double_widerd   r.   s   &&&    €r   r+   ÚMLP.__init__5   sÄ   ø€ Ü‰ÑÔØ$*×$<Ñ$<¼wØÐ*¨Aó@
õ %
Ð!ð '×GÔGÀaÔGÐä�FÐ1°5Ó9×PÐPÐ>Pð 	ð #×4Ñ4¿_¹ÐRSÕTÐäŸš 6×#5Ñ#5Ð7HÈuÔUˆŒÜŸšÐ#4×6HÑ6HÈuÔUˆŒÜ—y’y ×!3Ñ!3Ð5FÈUÔSˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r1   r3   )r%   r&   s   "€r   r'   r\   D   s'   ø€ ÷ Iñ I™"Ÿ(™(ð I¡r§x¡xñ Ir   c                ót   € V P                  \        V P                  V4      V P                  V4      4      4      # r   )rh   r   rg   ri   r9   s   &&r   r:   ÚMLP.__call__D   s)   € Ø�~‰~œe D§N¡N°1Ó$5°t·|±|ÀA³ÓGÓHÐHr   )rh   rg   ri   )r   ©	r?   r@   rA   rB   r+   r:   rD   rE   rF   rG   s   @@r   rX   rX   4   s#   ù‡ € ÷Tõ T÷I÷ Ið Ir   rX   c                   óT   a a€ ] tR t^Ht oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚRouterz@Expert router: norm -> scale -> project -> top-k -> renormalize.c                ó    <€ V ^8„  d   QhRS[ /# ©r   rZ   r   )r%   r&   s   "€r   r'   ÚRouter.__annotate__K   s   ø€ ÷ 3ñ 3™zñ 3r   c                ó~  <€ \         SV `  4        Wn        VP                  V n        \
        P                  ! VP                  VP                  R R7      V n	        \        P                  ! VP                  34      V n        \        P                  ! VP                  34      V n        VP                  R,          V n        R# )Fr`   Nç      à¿)r*   r+   rZ   Úrms_norm_epsr!   r   re   rf   Únum_expertsÚprojr4   rM   ÚscaleÚper_expert_scaleÚ
_root_size©r-   rZ   r.   s   &&€r   r+   ÚRouter.__init__K   s…   ø€ Ü‰ÑÔØŒØ×&Ñ&ˆŒÜ—I’I˜f×0Ñ0°&×2DÑ2DÈ5ÔQˆŒ	Ü—W’W˜f×0Ñ0Ð2Ó3ˆŒ
Ü "§¢¨×);Ñ);Ð(=Ó >ˆÔØ ×,Ñ,¨dÕ2ˆŽr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   r   r3   )r%   r&   s   "€r   r'   rv   T   s   ø€ ÷ ,ñ ,™"Ÿ(™(ñ ,r   c                óä  € \         P                  P                  WP                  V P                  ,          V P
                  4      pV P                  V4      p\         P                  ! W P                  P                  ) RR7      pVRV P                  P                  ) R13,          p\         P                  ! W#RR7      p\         P                  ! VRR7      pW@P                  V,          ,          pW43# )é   )ÚkthÚaxis.N©r…   éÿÿÿÿ)r4   r7   r8   r|   r~   r!   r{   ÚargpartitionrZ   Útop_k_expertsÚtake_along_axisÚsoftmaxr}   )r-   r   Úexpert_scoresÚtop_k_indicesÚtop_k_weightss   &&   r   r:   ÚRouter.__call__T   sµ   € Ü�G‰G×Ñ˜Q§
¡
¨T¯_©_Õ <¸d¿h¹hÓGˆàŸ	™	 !›ˆäŸšØ§¡× 9Ñ 9Ð9Àô
ˆð & c¨D¯K©K×,EÑ,EÐ+EÑ+GÐ&GÕHˆä×*Ò*¨=ÈbÔQˆÜŸ
š
 =°rÔ:ˆØ%×(=Ñ(=¸mÕ(LÕLˆàÐ+Ð+r   )r~   rZ   r!   r}   r{   r|   r>   rG   s   @@r   rs   rs   H   s!   ù‡ € ÙJ÷3ó 3÷,÷ ,ð ,r   rs   c                   ó*   a € ] tR t^et o RtR tRtV tR# )ÚGeGLUz0GELU-gated linear unit activation for SwitchGLU.c                ó   € \        W!4      # r   )r   )r-   r   r   s   &&&r   r:   ÚGeGLU.__call__h   s   € Ü�T‹~Ðr   © N)r?   r@   rA   rB   rC   r:   rD   rE   )r&   s   @r   r‘   r‘   e   s   ø‡ € Ù:÷ð r   r‘   c                   óT   a a€ ] tR t^lt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚExpertsz1Sparse MoE using mlx_lm SwitchGLU with gather_mm.c                ó    <€ V ^8„  d   QhRS[ /# ru   r   )r%   r&   s   "€r   r'   ÚExperts.__annotate__o   s   ø€ ÷ 

ñ 

™zñ 

r   c                ó    <€ \         SV `  4        ^ RIHp V! VP                  VP
                  VP                  \        4       RR7      V n        R# )r   )Ú	SwitchGLUF)Ú
input_dimsÚhidden_dimsrz   Ú
activationra   N)	r*   r+   Úmlx_lm.models.switch_layersrš   rf   Úmoe_intermediate_sizerz   r‘   Ú
switch_glu)r-   rZ   rš   r.   s   && €r   r+   ÚExperts.__init__o   s@   ø€ Ü‰ÑÔÝ9á#Ø×)Ñ)Ø×4Ñ4Ø×*Ñ*Ü“wØô
ˆŽr   c                ó‚   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[ P                  /# )r   r   r�   rŽ   r2   r3   )r%   r&   s   "€r   r'   r˜   {   s=   ø€ ÷ ñ Ù—‘ðÙ*,¯(©(ðÙCEÇ8Á8ðá	�‰ñr   c                ó€   € \         P                  ! VR4      pV P                  W4      pWE,          P                  R4      # )rƒ   r‡   éþÿÿÿ)r4   Úexpand_dimsr    Úsum)r-   r   r�   rŽ   ÚwÚys   &&&&  r   r:   ÚExperts.__call__{   s2   € ô �NŠN˜=¨"Ó-ˆØ�O‰O˜AÓ-ˆØ•�{‰{˜2‹Ðr   )r    r>   rG   s   @@r   r–   r–   l   s!   ù‡ € Ù;÷

ó 

÷÷ ð r   r–   c                   óX   a a€ ] tR t^ƒt oRV3R lV 3R llltRV3R lR lltRtVtV ;t# )Ú	Attentionc                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# ©r   rZ   r[   Úkv_shared_only©r   r#   Úbool)r%   r&   s   "€r   r'   ÚAttention.__annotate__„   s3   ø€ ÷ BMñ BMáðBMñ ðBMñ ñ	BMr   c                ó¾  <€ \         S	V `  4        Wn        W n        VP                  V,          V n        V P
                  R 8H  V n        W0n        V P
                  R8X  d1   \        VR4      '       d   VP                  '       d   VP                  MVP                  V n
        VP                  pVP                  V n        \        VRR4      ;'       d    V P                  '       * V n        V P                  '       d!   VP                   e   VP                   V n        MVP$                  V n        RV n        \(        P*                  ! W@P                  V P                  ,          RR7      V n        V'       gƒ   \(        P*                  ! W@P"                  V P                  ,          RR7      V n        V P                  '       g9   \(        P*                  ! W@P"                  V P                  ,          RR7      V n        \(        P*                  ! V P                  V P                  ,          VRR7      V n        \5        V P                  VP6                  R7      V n        V'       gM   \5        V P                  VP6                  R7      V n        \=        V P                  VP6                  R7      V n        V P                  '       d   R MRpVP@                  PC                  V/ 4      pVPC                  R	R
4      p\E        V P                  VPF                  VVVPH                  R7      V n%        VPL                  \        VR^ 4      ,
          pY(u;8¬  ;'       d    ^ 8„  V n'        R# u V n'        R# )Úsliding_attentionÚfull_attentionÚglobal_head_dimÚattention_k_eq_vFNg      ð?r`   r<   Ú
rope_thetag     ˆÃ@)ÚdimsÚtraditionalÚbaseÚscaling_configÚmax_position_embeddingsr^   )(r*   r+   rZ   r[   Úlayer_typesÚ
layer_typeÚ
is_slidingr®   Úhasattrrµ   Úhead_dimrf   Únum_attention_headsÚn_headsrc   Ú
use_k_eq_vÚnum_global_key_value_headsÚ
n_kv_headsÚnum_key_value_headsr|   r   re   Úq_projÚk_projÚv_projÚo_projr   ry   Úq_normÚk_normr   Úv_normÚrope_parametersÚgetr   Úrope_traditionalr¼   Úroperb   rk   )
r-   rZ   r[   r®   r    Ú	layer_keyÚrope_paramsr·   rj   r.   s
   &&&&     €r   r+   ÚAttention.__init__„   s}  ø€ ô 	‰ÑÔØŒØ"ŒØ ×,Ñ,¨YÕ7ˆŒØŸ/™/Ð-@Ñ@ˆŒØ,Ôð �‰Ð"2Ô2Ü˜Ð 1×2Ò2Ø×&×&Ð&ð ×"Ò"ð —‘ð 	Œð × Ñ ˆØ×1Ñ1ˆŒô �FÐ.°Ó6×NÐN¸t¿¹Ô;Nð 	Œð �?�?ˆ?˜v×@Ñ@ÒLØ$×?Ñ?ˆD�Oà$×8Ñ8ˆDŒOàˆŒ
ä—i’i §\¡\°D·M±MÕ%AÈÔNˆŒßÜŸ)š) C¯©¸4¿=¹=Õ)HÈuÔUˆDŒKØ—?—?�?Ü ŸišiØŸ™¨4¯=©=Õ8¸uô�”ô —i’i §¡¨t¯}©}Õ <¸cÈÔNˆŒä˜dŸm™m°×1DÑ1DÔEˆŒßÜ! $§-¡-°V×5HÑ5HÔIˆDŒKÜ(¨¯©¸F×<OÑ<OÔPˆDŒKð ,0¯?¯?¨?Ñ'Ð@Pˆ	Ø×,Ñ,×0Ñ0°¸BÓ?ˆØ —_‘_ \°7Ó;ˆ
ä#Ø—‘Ø×/Ñ/ØØ&Ø$*×$BÑ$Bô
ˆŒ	ð %+×$<Ñ$<¼wØÐ*¨Aó@
õ %
Ð!ð #,×"LÔ"LÈ1Ñ"LˆÖÑ"LˆÖr   c                óº   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[,          RS[S[,          RS[S[,          RS[ P                  /# )r   r   ÚmaskÚcacheÚ	shared_kvÚoffsetr2   ©r4   r5   r   r   Útuple)r%   r&   s   "€r   r'   r±   È   sd   ø€ ÷ ,;ñ ,;á�8‰8ð,;ñ ‘r—x‘xÕ ð,;ñ ™�}ð	,;ñ
 ™E•?ð,;ñ ™•ð,;ñ 
�‰ñ,;r   c           	     óæ  € VP                   w  rgpV P                  V4      P                  WgV P                  V P                  4      p	V P                  V	4      p	Ve   Vw  r«EMV P                  V4      P                  WgV P                  V P                  4      p
V P                  '       d   T
pM6V P                  V4      P                  WgV P                  V P                  4      pVe!   \        P                  ! VP                  4      M^ pV P                  V
4      p
V
P                  ^ ^^^4      p
V P                  W¥R7      p
V P!                  V4      pVP                  ^ ^^^4      pVe   VP#                  W«4      w  r«V	P                  ^ ^^^4      p	V P                  W•R7      p	\%        WšW³V P&                  VR7      pVP                  ^ ^^^4      P                  WgR4      pV P)                  V4      W«3V3# )N)rÚ   )rØ   r|   r×   r‡   )ÚshaperÈ   ÚreshaperÃ   rÁ   rÌ   rÉ   rÆ   rÄ   rÊ   r4   r5   rÚ   rÍ   Ú	transposerÒ   rÎ   Úupdate_and_fetchr   r|   rË   )r-   r   r×   rØ   rÙ   rÚ   ÚBÚLÚ_ÚqueriesÚkeysÚvaluesÚoutputs   &&&&&&       r   r:   ÚAttention.__call__È   s«  € ð —'‘'‰ˆˆaà—+‘+˜a“.×(Ñ(¨¨t¯|©|¸T¿]¹]ÓKˆØ—+‘+˜gÓ&ˆàÒ Ø$‰LˆD‘&à—;‘;˜q“>×)Ñ)¨!°·±ÀÇÁÓOˆDð ��ˆØ‘àŸ™ Q›×/Ñ/°°d·o±oÀtÇ}Á}ÓU�à/4Ò/@”R—X’X˜eŸl™lÔ+ÀaˆFà—;‘;˜tÓ$ˆDØ—>‘> ! Q¨¨1Ó-ˆDØ—9‘9˜T�9Ó1ˆDà—[‘[ Ó(ˆFØ×%Ñ% a¨¨A¨qÓ1ˆFàÒ Ø$×5Ñ5°dÓC‘�à×#Ñ# A q¨!¨QÓ/ˆØ—)‘)˜G�)Ó3ˆä-Ø˜6°d·j±jÀtô
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸BÓ?ˆà�{‰{˜6Ó" T N°FÐ:Ð:r   )rZ   rÁ   rk   r¿   rÍ   rÉ   r®   r[   r¾   rÃ   rÆ   rË   rÌ   rÈ   rÒ   r|   rÄ   rÎ   rÊ   ©F)NNNNrq   rG   s   @@r   r«   r«   ƒ   s#   ù‡ € ÷BMõ BM÷H,;÷ ,;ò ,;r   r«   c                   óX   a a€ ] tR t^÷t oRV3R lV 3R llltRV3R lR lltRtVtV ;t# )ÚDecoderLayerc                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# r­   r¯   )r%   r&   s   "€r   r'   ÚDecoderLayer.__annotate__ø   s)   ø€ ÷ :*ñ :*áð:*ñ ð:*ñ ñ	:*r   c                ó
  <€ \         SV `  4        Wn        W n        VP                  V,          V n        \        WVR 7      V n        \        W4      V n	        \        VP                  VP                  R7      V n        \        VP                  VP                  R7      V n        \        VP                  VP                  R7      V n        \        VP                  VP                  R7      V n        \#        VRR4      V n        V P$                  '       d“   \'        V4      V n        \+        V4      V n        \        VP                  VP                  R7      V n        \        VP                  VP                  R7      V n        \        VP                  VP                  R7      V n        \#        VR^ 4      V n        V P4                  '       dŒ   \6        P8                  ! VP                  V P4                  RR7      V n        \6        P8                  ! V P4                  VP                  RR7      V n        \        VP                  VP                  R7      V n        MRV n        RV n        RV n        \@        PB                  ! R4      V n"        R# ))r®   r<   Úenable_moe_blockFÚhidden_size_per_layer_inputr`   N)rƒ   )#r*   r+   rZ   r[   r½   r¾   r«   Ú	self_attnrX   Úmlpr   rf   ry   Úinput_layernormÚpost_attention_layernormÚpre_feedforward_layernormÚpost_feedforward_layernormrc   Ú
enable_moers   Úrouterr–   ÚexpertsÚpost_feedforward_layernorm_1Úpost_feedforward_layernorm_2Úpre_feedforward_layernorm_2rñ   r   re   Úper_layer_input_gateÚper_layer_projectionÚpost_per_layer_input_normr4   rM   Úlayer_scalar)r-   rZ   r[   r®   r.   s   &&&&€r   r+   ÚDecoderLayer.__init__ø   s
  ø€ ô 	‰ÑÔØŒØ"ŒØ ×,Ñ,¨YÕ7ˆŒÜ" 6À^ÔTˆŒÜ�vÓ)ˆŒÜ& v×'9Ñ'9¸v×?RÑ?RÔSˆÔÜ(/Ø×Ñ F×$7Ñ$7ô)
ˆÔ%ô *1Ø×Ñ F×$7Ñ$7ô*
ˆÔ&ô +2Ø×Ñ F×$7Ñ$7ô+
ˆÔ'ô
 " &Ð*<¸eÓDˆŒØ�?�?ˆ?Ü  ›.ˆDŒKÜ" 6›?ˆDŒLÜ07Ø×"Ñ"¨×(;Ñ(;ô1ˆDÔ-ô 18Ø×"Ñ"¨×(;Ñ(;ô1ˆDÔ-ô 07Ø×"Ñ"¨×(;Ñ(;ô0ˆDÔ,ô
 ,3ØÐ1°1ó,
ˆÔ(ð ×+×+Ð+Ü(*¯	ª	Ø×"Ñ" D×$DÑ$DÈ5ô)ˆDÔ%ô )+¯	ª	Ø×0Ñ0°&×2DÑ2DÈ5ô)ˆDÔ%ô .5Ø×"Ñ"¨×(;Ñ(;ô.ˆDÕ*ð )-ˆDÔ%Ø(,ˆDÔ%Ø-1ˆDÔ*ô ŸGšG D›MˆÖr   c                óä   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[,          RS[S[ P                  ,          RS[S[,          RS[S[,          RS[ P                  /# )r   r   r×   rØ   Úper_layer_inputrÙ   rÚ   r2   rÛ   )r%   r&   s   "€r   r'   rî   4  sw   ø€ ÷ 8$ñ 8$á�8‰8ð8$ñ ‘r—x‘xÕ ð8$ñ ™�}ð	8$ñ
 "¡"§(¡(Õ+ð8$ñ ™E•?ð8$ñ ™•ð8$ñ 
�‰ñ8$r   c                ó¢  € TpV P                  V4      pV P                  W‚W5VR 7      w  r…pV P                  V4      pWx,           pTpV P                  '       d„   V P	                  V4      p	V P                  V	4      p	V P                  V	4      p	V P                  V4      w  r«V P                  V4      pV P                  WÊV4      pV P                  V4      pWœ,           pM"V P	                  V4      pV P                  V4      pV P                  V4      pWx,           pV P                  eŠ   V P                  e|   V P                  en   Vej   TpV P                  V4      p\        P                   ! V4      p\"        P$                  ! WÔ4      pV P                  V4      pV P                  V4      pW},           pV P&                  e   W€P&                  ,          pW…V3# ))rÙ   rÚ   )rô   rò   rõ   rø   rö   ró   rû   rù   rý   rú   rü   r÷   rþ   rÿ   r   r   r   r4   Úmultiplyr  )r-   r   r×   rØ   r  rÙ   rÚ   ÚresidualÚhÚh1r�   rŽ   Úh2r   s   &&&&&&&       r   r:   ÚDecoderLayer.__call__4  s°  € ð ˆà× Ñ  Ó#ˆØ#Ÿ~™~Ø�U¸ð  .ó  
Ñˆ�fð ×)Ñ)¨!Ó,ˆØ�Lˆàˆà�?�?ˆ?Ø×/Ñ/°Ó2ˆBØ—‘˜"“ˆBØ×2Ñ2°2Ó6ˆBà+/¯;©;°q«>Ñ(ˆMØ×1Ñ1°!Ó4ˆBØ—‘˜b°Ó?ˆBØ×2Ñ2°2Ó6ˆBà•‰Aà×.Ñ.¨qÓ1ˆAØ—‘˜“ˆAà×+Ñ+¨AÓ.ˆØ�Lˆð ×%Ñ%Ò1Ø×)Ñ)Ò5Ø×.Ñ.Ò:ØÒ+àˆHØ×,Ñ,¨QÓ/ˆDÜ—>’> $Ó'ˆDÜ—;’;˜tÓ5ˆDØ×,Ñ,¨TÓ2ˆDØ×1Ñ1°$Ó7ˆDØ•ˆAà×ÑÒ(Ø×%Ñ%Õ%ˆAà˜VÐ#Ð#r   )rZ   rø   rú   rñ   rô   r[   r  r¾   ró   rþ   rÿ   rõ   r÷   rû   rü   r   rö   rý   rù   rò   rê   )NNNNNrq   rG   s   @@r   rì   rì   ÷   s   ù‡ € ÷:*õ :*÷x8$÷ 8$ò 8$r   rì   c                   óº   a a€ ] tR tRt oRV3R lV 3R llltV3R lR ltRV3R lR lltV3R lR	 ltV3R
 lR ltRV3R lR llt	RV3R lR llt
RtVtV ;t# )ÚGemma4TextModelio  c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   rZ   r®   )r   r°   )r%   r&   s   "€r   r'   ÚGemma4TextModel.__annotate__p  s   ø€ ÷ 92ñ 92™zð 92¹4ñ 92r   c           	     ód  <€ \         S
V `  4        Wn        VP                  V n        VP                  V n        VP                  V n        VP                  V n        \        P                  ! VP                  VP                  4      V n        VP                  R ,          V n        \        VR^ 4      pVP                  V,
          p\        VP                  4       Uu. uF*  p\        TTT;'       g    V^ 8„  ;'       d    WT8¬  R7      NK,  	  upV n        \#        VP                  VP$                  R7      V n        W@n        \+        \        \-        V P                   4      4      4      V n        V^ 8”  d“   \-        V P                   4      pWc,
          p/ p\        V4       F"  pWXV P                   V,          P0                  &   K$  	  \        Wv4       F3  p	W€P                   V	,          P0                  ,          V P.                  V	&   K5  	  VP2                  V n        V P2                  '       dä   \        P                  ! VP4                  VP                  VP2                  ,          4      V n        VP2                  R ,          V n        RV n        VP                  R,          V n        \        P>                  ! VP                  VP                  VP2                  ,          RR7      V n         \C        VP2                  VP$                  R7      V n"        R# RV n        RV n        RV n        RV n         RV n"        R# u upi )	g      à?r^   )r[   r®   r<   Fr`   Nrx   gÍ;fž æ?)#r*   r+   rZ   Ú
vocab_sizeÚsliding_windowÚwindow_sizeÚsliding_window_patternrb   r   Ú	Embeddingrf   Úembed_tokensÚembed_scalerc   Úrangerì   Úlayersr   ry   Únormrj   ÚlistÚlenÚprevious_kvsr¾   rñ   Úvocab_size_per_layer_inputÚembed_tokens_per_layerÚembed_tokens_per_layer_scaleÚper_layer_input_scaleÚper_layer_projection_scalere   Úper_layer_model_projectionrI   Úper_layer_projection_norm)r-   rZ   r®   Únum_kv_sharedÚfirst_kv_sharedÚiÚNÚMÚkvs_by_typeÚjr.   s   &&&       €r   r+   ÚGemma4TextModel.__init__p  s§  ø€ Ü‰ÑÔØŒØ ×+Ñ+ˆŒØ!×0Ñ0ˆÔØ&,×&CÑ&CˆÔ#Ø!'×!9Ñ!9ˆÔäŸLšL¨×):Ñ):¸F×<NÑ<NÓOˆÔØ!×-Ñ-¨sÕ2ˆÔÜ Ð(>ÀÓBˆØ ×2Ñ2°]ÕBˆô ˜6×3Ñ3Ô4ó
ñ 5�ô ØØØ-÷  @ð  @Ø! AÑ%×>Ð>¨!Ñ*>÷	ñ 5ñ
ˆŒô ˜F×.Ñ.°F×4GÑ4GÔHˆŒ	à)8Ô&Ü ¤¤s¨4¯;©;Ó'7Ó!8Ó9ˆÔØ˜1ÔÜ�D—K‘KÓ ˆAØÕ!ˆAØˆKÜ˜1–X�Ø9:˜DŸK™K¨�N×5Ñ5Ó6ñ ä˜1–[�Ø'2·;±;¸qµ>×3LÑ3LÕ'M�×!Ñ! !Ó$ñ !ð ,2×+MÑ+MˆÔ(Ø×+×+Ð+Ü*,¯,ª,Ø×1Ñ1Ø×(Ñ(¨6×+MÑ+MÕMó+ˆDÔ'ð 17×0RÑ0RÐTWÕ0WˆDÔ-Ø)2ˆDÔ&Ø.4×.@Ñ.@À$Õ.FˆDÔ+Ü.0¯iªiØ×"Ñ"Ø×(Ñ(¨6×+MÑ+MÕMØô/ˆDÔ+ô
 .>Ø×2Ñ2¸×8KÑ8Kô.ˆDÖ*ð +/ˆDÔ'Ø)-ˆDÔ&Ø.2ˆDÔ+Ø.2ˆDÔ+Ø-1ˆDÖ*ùò[
s   ÃL-Ã.L-Ã;L-c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Ú	input_idsr2   r3   )r%   r&   s   "€r   r'   r  «  s#   ø€ ÷ 
ñ 
©b¯h©hð 
¹2¿8¹8ñ 
r   c                óÆ   € V P                  V4      pW P                  ,          pVP                  ! . VP                  OV P                  P
                  NV P                  N5!  # r   )r  r   rß   rÞ   rZ   rb   rñ   )r-   r.  Úresults   && r   Úget_per_layer_inputsÚ$Gemma4TextModel.get_per_layer_inputs«  s_   € Ø×,Ñ,¨YÓ7ˆØ×;Ñ;Õ;ˆØ�~Š~ð 
Ø�_‰_ð
à�K‰K×)Ñ)ð
ð ×,Ñ,ó
ð 	
r   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[ P                  /# )r   Úinputs_embedsÚper_layer_inputsr2   )r4   r5   r   )r%   r&   s   "€r   r'   r  ´  s?   ø€ ÷ Vñ Vá—x‘xðVñ #¡2§8¡8Õ,ðVñ 
�‰ñ	Vr   c                ó,  € V P                  V4      pW0P                  ,          pVP                  ! . VP                  R R OV P                  P
                  NV P                  N5!  pV P                  V4      pVf   V# W2,           V P                  ,          # )Nr‡   )	r#  r"  rß   rÞ   rZ   rb   rñ   r$  r!  )r-   r4  r5  rÿ   s   &&& r   Úproject_per_layer_inputsÚ(Gemma4TextModel.project_per_layer_inputs´  s    € ð
  $×>Ñ>¸}ÓMÐØ3×6UÑ6UÕUÐØ3×;Ò;ð  
Ø× Ñ   "Ð%ð 
à�K‰K×)Ñ)ð 
ð ×,Ñ,ó 
Ðð
  $×=Ñ=Ð>RÓSÐàÒ#Ø'Ð'à$Õ7¸4×;UÑ;UÕUÐUr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Úmm_token_type_idsr2   r3   )r%   r&   s   "€r   r'   r  Ç  s'   ø€ ÷ Lñ L¹b¿h¹hð LÉ2Ï8É8ñ Lr   c                óŽ  € V^8H  V^8H  ,          p\         P                  ! \         P                  ! VR,          4      VRRR13,          .^R7      pW#( ,          p\         P                  ! VP	                  \         P
                  4      ^R7      ^,
          p\         P                  ! W%\         P                  ! V4      ^,
          4      # )rƒ   ºNNNNr†   )r<  :Nrƒ   Nr‡   )r4   ÚconcatenateÚ
zeros_likeÚcumsumÚastypeÚint32Úwhere)r-   r:  Ú	is_visionÚprevÚstartsÚ	group_idss   &&    r   Ú_block_sequence_ids_for_maskÚ,Gemma4TextModel._block_sequence_ids_for_maskÇ  s�   € Ø&¨!Ñ+Ð0AÀQÑ0FÕGˆ	Ü�~Š~ä—’˜i¨Õ.Ó/Ø˜!˜S˜b˜S˜&Õ!ðð ô
ˆð ˜UÕ"ˆÜ—I’I˜fŸm™m¬B¯H©HÓ5¸AÔ>ÀÕBˆ	Ü�xŠx˜	¬b¯mªm¸IÓ.FÈÕ.JÓKÐKr   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   Ú	base_maskr:  r2   r3   )r%   r&   s   "€r   r'   r  Ô  s5   ø€ ÷ 9ñ 9á—8‘8ð9ñ Ÿ8™8ð9ñ 
�‰ñ	9r   c                ó:  € Vf   V# VP                   ^,          VP                   R,          8w  d   V# V P                  V4      p\        P                  ! VR4      p\        P                  ! VR4      pVR8g  WE8H  ,          pV\        P                  ! V^4      ,          # )Nr‡   r¤   )rÞ   rG  r4   r¥   )r-   rJ  r:  Úblock_sequence_idsÚq_blocksÚk_blocksÚ
same_blocks   &&&    r   Ú&_apply_blockwise_bidirectional_overlayÚ6Gemma4TextModel._apply_blockwise_bidirectional_overlayÔ  s�   € ð
 Ò$ØÐØ×"Ñ" 1Õ%¨¯©¸Õ)<Ô<ØÐà!×>Ñ>Ð?PÓQÐÜ—>’>Ð"4°bÓ9ˆÜ—>’>Ð"4°bÓ9ˆØ "‘n¨Ñ)=Õ>ˆ
Øœ2Ÿ>š>¨*°aÓ8Õ8Ð8r   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# )r   r:  )r   r4   r5   )r%   r&   s   "€r   r'   r  ä  s    ø€ ÷ Bñ B±xÁÇÁÕ7Iñ Br   c                ó:  € / p. pVRJ;'       d4    \        \        P                  ! V^8H  4      P                  4       4      ^ 8„  pVRJ;'       d>    \        \        P                  ! V^8H  V^8H  ,          4      P                  4       4      ^ 8„  p\	        V P
                  RR4      R8H  ;'       d<    VRJ;'       d0    T;'       d&    V'       * ;'       d    VP                  ^,          ^8„  p\        V P                  V4       EF  w  ršV	P                  V9  EdÞ   V	P                  R8X  d+   T;'       g    \	        V
RR4      RJp\        WVR7      VR&   M®V	P                  R8X  dž   VP                  ^,          ^8„  ;'       dc    V
RJ;'       dW    \        \        P                  ! \        P                  ! V
P                  4      4      P                  4       4      ^ 8„  ;'       g    Tp\        WV P                  VR7      VR&   V'       d‡   \        WIP                  ,          \         4      '       da   WIP                  ,          R	8X  dJ   V	P                  R8X  d   V P                  MRp\#        VP                  ^,          VR
7      WIP                  &   V'       d_   \        WIP                  ,          \        P                  4      '       d/   V P%                  WIP                  ,          V4      WIP                  &   VP'                  WIP                  ,          4       EK  	  V# )z3Create attention masks, deduplicated by layer type.NÚuse_bidirectional_attentionÚvisionr´   Úleft_padding)Úreturn_arrayr³   )r  rW  Úcausal)r  )r#   r4   r¦   Úitemrc   rZ   rÞ   Úzipr  r¾   r
   Úmaxr5   rÚ   r  Ú
isinstanceÚstrr   rP  Úappend)r-   r  rØ   r:  r×   ÚmasksÚhas_audio_tokensÚhas_visual_tokensÚuse_bidirectional_visionÚlÚcrW  Úwindows   &&&&         r   Ú_make_masksÚGemma4TextModel._make_masksä  sÚ  € àˆØˆà TÐ)÷ ?ð ?Ü”B—F’FÐ,°Ñ1Ó2×7Ñ7Ó9Ó:¸QÑ>ð 	ð
  TÐ)÷ ð Ü”B—F’FÐ-°Ñ2Ð7HÈAÑ7MÕNÓO×TÑTÓVÓWØñð 	ô �D—K‘KÐ!>ÀÓEÈÑQ÷ ð Ø!¨Ð-÷ð à!÷ð ð %Ô$÷ð ð —‘˜•
˜Q‘ð 	!ô ˜Ÿ™ U×+‰DˆAØ�|‰| 4Õ'Ø—<‘<Ð#3Ô3ð 1÷ Hð HÜ" 1 n°dÓ;À4ÐGð !ô .CØ¨<ô.�DÐ)Ò*ð —\‘\Ð%8Ô8àŸ™ �
 Q™÷ Gð GØ T˜M÷Gð Gä¤§¢¤r§x¢x°·±Ó'9Ó :× ?Ñ ?Ó AÓBÀQÑF÷$2ð $2ð 2ð	 !ô
 1FØ¨$×*:Ñ*:Èô1�DÐ,Ñ-÷ -Ü" 4¯©Õ#5´s×;Ò;ØŸ\™\Õ*¨hÔ6ð Ÿ<™<Ð+>Ô>ð ×(Ò(à!ð ô
 *<ØŸ™ �
°ô*�DŸ™Ñ&÷ ,´
ØŸ™Õ&¬¯©÷1ò 1ð *.×)TÑ)TØŸ\™\Õ*Ø)ó*�DŸ™Ñ&ð �L‰L˜Ÿl™lÕ+×,ñW ,ðX ˆr   c                óX  <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[ P                  ,          RS[S[ P                  ,          RS[S[ P                  ,          RS[S[ P                  ,          RS[S[S[,          ,          RS[S[,          R	S[S[,          /	# )
r   Úinputsr4  r×   r5  r:  Útoken_type_idsÚcapture_layer_idsÚhidden_sinkÚshared_kv_sink)r4   r5   r   r   r#   r  Údict)r%   r&   s   "€r   r'   r  (  s²   ø€ ÷ dñ dá—‘ðdñ  ¡§¡Õ)ðdñ ‘r—x‘xÕ ð	dñ #¡2§8¡8Õ,ðdñ $¡B§H¡HÕ-ðdñ !¡§¡Õ*ðdñ $¡D©¥IÕ.ðdñ ™d•^ðdñ !¡�ñdr   c           
     óh  € Vf%   V P                  V4      pWÀP                  ,          pMTpV P                  '       dÃ   Ve   Vf   V P                  V4      pM�VeŒ   VP                  ^,          pVP                  ^,          V8w  da   \        R T;'       g    .  4       ^ 4      p\        VP                  ^,          V,
          ^ 4      p\        Wï4      pVRVVV,           13,          pVf   Ve   V P                  WÅ4      pVf   R .\        V P                  4      ,          pM4VR .\        V P                  4      \        V4      ,
          ,          ,           pVf   Vf   TpV P                  WÄV4      pMV.\        V P                  4      ,          pVe6   \        V P                  4       UUu. uF  w  ppVRRVR3,          NK  	  pppMR .\        V P                  4      ,          pV'       d   \        V4      M	\        4       pR.\        V P                  4      ,          p\        \        V P                  VVV P                  V4      4       FQ  w  pw  pppppVV,          w  ppV! VVVVVVR7      w  pppVV3VV&   V	f   K7  VV9   g   K@  V	P!                  V4       KS  	  V
eA   \        V P                  4       F'  w  ppVV,          w  ppVf   K  VV
VP"                  &   K)  	  V	e   V'       g   V	P!                  V4       VP%                  RR4      '       d   V# V P'                  V4      pV# u uppi )Nc              3   ó€   "  € T F4  pVf   K	  \        VR4      '       g   K  \        VP                  4      x € K6  	  R # 5i)NrÚ   )rÀ   r#   rÚ   )Ú.0rd  s   & r   Ú	<genexpr>Ú+Gemma4TextModel.__call__.<locals>.<genexpr>D  s5   é € ð á&1 Ø ô *ä18¸¸H×1Eô *œC §¡ŸM˜MÛ&1ùs   ‚>�>¡>r<  )r  rÙ   rÚ   Úskip_final_normF)NN)r  r  rñ   r1  rÞ   Únextr[  Úminr7  r  r  rf  Ú	enumerateÚsetrZ  r  r^  r¾   Úpopr  )r-   ri  r4  r×   rØ   r5  r:  rj  rk  rl  rm  Úkwargsr  Ú
target_lenÚcache_offsetÚ	max_startÚstartr_  r'  rä   Úcapture_setÚintermediatesÚidxÚlayerrd  ÚmÚprev_idxÚpliÚkvsrÚ   s   &&&&&&&&&&&,                  r   r:   ÚGemma4TextModel.__call__(  s  € ð Ò Ø×!Ñ! &Ó)ˆAØ×$Ñ$Õ$‰AàˆAð ×+×+Ð+ØÒ!Ð&6Ò&>Ø#'×#<Ñ#<¸VÓ#DÑ Ø!Ò-ØŸW™W Q�Z�
Ø#×)Ñ)¨!Õ,°
Ô:Ü#'ñà&+§k k¨r kóð
 ó$�Lô !$Ð$4×$:Ñ$:¸1Õ$=À
Õ$JÈAÓ N�IÜ Ó8�EØ'7¸¸5À5È:ÕCUÐ;UÐ8UÕ'VÐ$ØÒ+¨vÒ/AØ#'×#@Ñ#@ÀÓ#UÐ ð Š=Ø�FœS §¡Ó-Õ-‰Eà˜T˜F¤c¨$¯+©+Ó&6¼¸U»Õ&CÕDÕDˆEàŠ<Ø Ò(Ø$2Ð!Ø×$Ñ$ QÐ/@ÓA‰Eà�FœS §¡Ó-Õ-ˆEð Ò'ä9BÀ4Ç;Á;Ô9Oô Ù9O±°°AÐ   A q¨! ×,Ð,Ñ9Oð ñ  Ðð !%˜v¬¨D¯K©KÓ(8Õ8Ðç0A”cÐ+Ô,ÄsÃuˆØ%˜¬¨T¯[©[Ó)9Õ9ˆÜ1:ÜØ—‘ØØØ×!Ñ!Ø óö2
Ñ-ˆCÑ-�%˜˜A˜x¨ð (¨Õ1‰KˆC�Ù"Ø�1�a¨¸ÀFô‰NˆAˆs�Fð #& v ˆM˜#ÑØÔ&¨3°+Ö+=Ø×"Ñ" 1Ö%ñ2
ð" Ò%Ü'¨¯©Ö4‘
��UØ& sÕ+‘��QØ”?Ø7:�N 5×#3Ñ#3Ó4ñ 5ð Ò"¯;Ø×Ñ˜qÔ!à�:‰:Ð'¨×/Ò/ØˆHà�I‰I�a‹LˆàˆùóY s   Æ+L.)rZ   r  r  r  r   rj   rñ   r  r  rb   r!  r#  r$  r"  r  r  r  r  rê   r   )
NNNNNNNNNN)r?   r@   rA   rB   r+   r1  r7  rG  rP  rf  r:   rD   rE   rF   rG   s   @@r   r  r  o  s[   ù‡ € ÷92õ 92÷v
ð 
÷Vò V÷&Lð L÷9ð 9÷ Bò B÷Hd÷ dò dr   r  c                   ó(  a a€ ] tR tRt oV3R lV 3R lltV3R lR ltV3R lR ltV3R lR	 ltR
RRRRRRRRRRR/V3R lR lltR V3R lR llt	V3R lR lt
R tV3R lR lt]R 4       t]R 4       t]R 4       t]R 4       tR tRtVtV ;t# )!ÚLanguageModeli�  c                ó    <€ V ^8„  d   QhRS[ /# ru   r   )r%   r&   s   "€r   r'   ÚLanguageModel.__annotate__�  s   ø€ ÷ Xñ X™zñ Xr   c                ó–   <€ \         SV `  4        Wn        VP                  V n        \	        V4      V n        \        VR R4      V n        R# )Úfinal_logit_softcappingN)r*   r+   rZ   Ú
model_typer  Úmodelrc   r�  r   s   &&€r   r+   ÚLanguageModel.__init__�  s?   ø€ Ü‰ÑÔØŒØ ×+Ñ+ˆŒÜ$ VÓ,ˆŒ
Ü'.¨vÐ7PÐRVÓ'WˆÖ$r   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   Úhiddenr2   r3   )r%   r&   s   "€r   r'   r‹  —  s#   ø€ ÷ ñ ©¯©ð ±b·h±hñ r   c                ó˜   € V P                   P                  P                  V4      pV P                  e   \	        V P                  V4      pV# r   )r�  r  Ú	as_linearr�  rV   )r-   r“  Úlogitss   && r   Úlogits_from_hiddenÚ LanguageModel.logits_from_hidden—  s?   € Ø—‘×(Ñ(×2Ñ2°6Ó:ˆØ×'Ñ'Ò3Ü" 4×#?Ñ#?ÀÓHˆFØˆr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r’  r3   )r%   r&   s   "€r   r'   r‹  �  s'   ø€ ÷ @ñ @±R·X±Xð @Á"Ç(Á(ñ @r   c                óV   € V P                  V P                  P                  V4      4      # r   )r—  r�  r  ©r-   r“  s   &&r   Úspeculative_logits_from_hiddenÚ,LanguageModel.speculative_logits_from_hidden�  s    € Ø×&Ñ& t§z¡z§¡°vÓ'>Ó?Ð?r   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r’  r3   )r%   r&   s   "€r   r'   r‹     s#   ø€ ÷ 'ñ '©r¯x©xð '¹B¿H¹Hñ 'r   c                ó8   € V P                   P                  V4      # r   )r�  r  r›  s   &&r   Úspeculative_draft_hiddenÚ&LanguageModel.speculative_draft_hidden   s   € Ø�z‰z�‰˜vÓ&Ð&r   r.  Nr4  Úprompt_cacheÚdraft_modelÚ
draft_kindÚprefill_kwargsc                ó    <€ V ^8„  d   QhRS[ /# )r   r2   )r°   )r%   r&   s   "€r   r'   r‹  £  s   ø€ ÷ "ñ "ñ 
ñ"r   c               ó€  € ???T;'       g    / p\        V R R4      '       d   R# VP                  RR4      pVf   VP                  RR4      p\        V P                  RR4      R8X  d‡   Veƒ   \        \        P
                  ! V^8H  V^8H  ,          4      P                  4       4      ^ 8„  p\        \        P
                  ! V^8H  4      P                  4       4      ^ 8„  p	V'       d   V	'       g   R# VeL   VR8H  ;'       d?    \        VP                  RR4      4      ;'       d    \        VP                  R	R4      4      # R
# )Úno_chunked_prefillFr:  Nrj  rT  rU  ÚmtpÚreturn_hiddenÚreturn_shared_kvT)rc   rÐ   rZ   r#   r4   r¦   rY  r°   )
r-   r.  r4  r¢  r£  r¤  r¥  Útoken_typesÚ
has_visualÚ	has_audios
   &$$$$$$   r   Úchunked_prefill_policyÚ$LanguageModel.chunked_prefill_policy£  s-  € ð �} lØ'×-Ð-¨2ˆÜ�4Ð-¨u×5Ò5Ùà$×(Ñ(Ð)<¸dÓCˆØÒØ(×,Ñ,Ð-=¸tÓDˆKä�D—K‘KÐ!>ÀÓEÈÔQØÒ'äœRŸVšV [°AÑ%5¸+ÈÑ:JÕ$KÓL×QÑQÓSÓTÐWXÑXˆJÜœBŸFšF ;°!Ñ#3Ó4×9Ñ9Ó;Ó<¸qÑ@ˆIß§)ÙàÒ"à˜eÑ#÷ Hð HÜ˜×+Ñ+¨O¸UÓCÓD÷Hð Hä˜×+Ñ+Ð,>ÀÓFÓGðñ r   c                óØ   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[ P                  ,          RS[S[ P                  ,          RS[S[S[,          ,          /# )r   ri  r4  r×   r5  rk  )r4   r5   r   r   r#   )r%   r&   s   "€r   r'   r‹  Ç  se   ø€ ÷ &
ñ &
á—‘ð&
ñ  ¡§¡Õ)ð&
ñ ‘r—x‘xÕ ð	&
ñ #¡2§8¡8Õ,ð&
ñ $¡D©¥IÕ.ñ&
r   c                óB  € Vf   VP                  RR4      '       d   . MR pVP                  RR4      '       d   / MR p	VP                  RV4      pVP                  RV	4      p	V P                  ! V3RVRVRVR	VR
VRVRV	/VB p
V P                  V
4      p
\        V
VV	R7      # )Nrª  Fr«  rl  rm  r4  r×   rØ   r5  rk  )r–  Úhidden_statesÚshared_kv_states)ry  r�  r—  r	   )r-   ri  r4  r×   rØ   r5  rk  rz  rl  rm  Úouts   &&&&&&&,   r   r:   ÚLanguageModel.__call__Ç  sî   € ð !Ò,°·
±
¸?ÈE×0RÒ0Rñ àð 	ð —*‘*Ð/°×7Ò7‰B¸Tð 	ð —j‘j °Ó<ˆØŸ™Ð$4°nÓEˆà�jŠjØñ

à'ð

ð ð

ð ð	

ð
 .ð

ð 0ð

ð $ð

ð *ð

ð ñ

ˆð ×%Ñ% cÓ*ˆÜ"ØØ%Ø+ô
ð 	
r   c          
      óH   <€ V ^8„  d   QhRS[ S[,          RS[RS[RS[RS[/# )r   ÚcachesÚ
gdn_statesÚacceptedÚ
block_sizer2   )r   r   r#   )r%   r&   s   "€r   r'   r‹  ï  sA   ø€ ÷ (ñ (á‘S•	ð(ñ ð(ñ ð	(ñ
 ð(ñ 
ñ(r   c                ó„  € ?\        V\        4      '       d   \        P                  ! V.4      p\        V\        \
        34      '       d'   \        P                  ! V\        P                  R7      p\        VP                  4       P                  4       4      pV^,           pWF,
          pVP                  ^8„  pV^,           p	V Fù  p
V
f   K	  V^ 8”  d$   \        V
R4      '       d   V
P                  V4       V'       g   K=  \        V
R4      '       g   KQ  V
P                  f   Ka  V^ 8”  g   Kj  V
P                  pV	P                  4       pW¶,
          p\        VP                   ^ ,          4       FK  pV\        WÎ,          4      ,           pWû8  g   K#  ^ V
P                  VRWû1R3&   ^ V
P"                  VRWû1R3&   KM  	  Kû  	  V# )zìRewind target KV caches after a speculative-decoding round.

Gemma 4 has only KV/RotatingKV caches (no SSM/GDN), so this is a
simple trim + per-row tail-zero. ``gdn_states`` is accepted (and
ignored) for API parity with qwen3_5's hook.
)ÚdtypeÚtrimÚ_idxr<  )r\  r#   r4   r5   r  rÜ   rA  r[  rY  ÚsizerÀ   r¾  ræ   r¿  Útolistr  rÞ   rç   )r-   r¸  r¹  rº  r»  Úmax_aÚnr¾  Úis_batchÚ
valid_endsrd  Úkv_lenÚveÚverify_startÚbir~  s   &&&&&           r   Úrollback_speculative_cacheÚ(LanguageModel.rollback_speculative_cacheï  s^  € ð Ü�h¤×$Ò$Ü—x’x  
Ó+ˆHÜ�h¤¤u ×.Ò.Ü—x’x ´·±Ô9ˆHä�H—L‘L“N×'Ñ'Ó)Ó*ˆØ�A�IˆØ�~ˆØ—=‘= 1Ñ$ˆØ •\ˆ
ãˆAØŠyÙà�aŒxœG A v×.Ò.Ø—‘�t”ß‰xœG A v×.Ô.°1·6±6Ô3EÈ%ÐRSÎ)ØŸ™�Ø×&Ñ&Ó(�Ø%�z�Ü §¡¨qÕ 1Ö2�BØ(¬3¨r­v«;Õ6�EØ–~Ø9:˜Ÿ™˜r 1 e l°AÐ5Ñ6Ø;<˜Ÿ™  Q¨¨°aÐ!7Ó8ó	 3ñ ð ˆr   c                ó,  a€ / pVP                  4        F|  w  opR S9   d   K  V P                  S4      '       d   K(  \        ;QJ d    V3R lR 4       F  '       g   K   RM	  RM! V3R lR 4       4      '       d   RS9  d
   RS9  d   Kx  W2S&   K~  	  V# )zself_attn.rotary_embc              3   ó,   <"  € T F	  qS9   x € K  	  R # 5ir   r”   )rq  ÚsÚks   & €r   rr  Ú)LanguageModel.sanitize.<locals>.<genexpr>   s   øé € ð Ù V˜1�Q–Ó Vùs   ƒTFÚvision_towerÚaudio_tower)Ú	input_maxÚ	input_minÚ
output_maxÚ
output_min)ÚitemsÚ_is_unused_shared_kv_weightÚany)r-   ÚweightsÚ	sanitizedÚvrÏ  s   &&  @r   ÚsanitizeÚLanguageModel.sanitize  s�   ø€ Øˆ	Ø—M‘M–O‰DˆAˆqØ%¨Ô*ÙØ×/Ñ/°×2Ò2Ùß‹sô Ù Vó�s�sŠsô Ù Vó÷ ò ð "¨Ô*¨}ÀAÔ/EÙØ�a‹Lñ $ð Ðr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   Úkeyr2   )r]  r°   )r%   r&   s   "€r   r'   r‹  (  s   ø€ ÷ Dñ D©sð D±tñ Dr   c                óØ  € R pVP                  V4      '       g   R# V\        V4      R P                  R4      p\        V4      ^8  g   V^,          R8w  d   R#  \        V^ ,          4      pT\        T P
                  P                  4      8¼  d   R# T P
                  P                  T,          P                  p\        TRR4      '       g   R# T^,          R9   #   \         d     R# i ; i)zlanguage_model.model.layers.FNÚ.rò   rk   >   rÍ   rÉ   rÎ   rÊ   )	Ú
startswithr  Úsplitr#   Ú
ValueErrorr�  r  rò   rc   )r-   rà  ÚprefixÚpartsr[   Úattns   &&    r   rØ  Ú)LanguageModel._is_unused_shared_kv_weight(  sÌ   € Ø/ˆØ�~‰~˜f×%Ò%Ùà”C˜“K�MÐ"×(Ñ(¨Ó-ˆÜˆu‹:˜Œ>˜U 1�X¨Ô4Ùð	Ü˜E !�H›ˆIð œ˜DŸJ™J×-Ñ-Ó.Ô.Ùà�z‰z× Ñ  Õ+×5Ñ5ˆÜ�tÐ1°5×9Ò9Ùà�Q�xÐCÑCÐCøô ô 	Úð	ús   ÁC ÃC)Ã(C)c                ó.   € V P                   P                  # r   )r�  r  ©r-   s   &r   r  ÚLanguageModel.layers>  s   € à�z‰z× Ñ Ð r   c                ó.   € V P                   P                  # r   )rZ   rÁ   rë  s   &r   rÁ   ÚLanguageModel.head_dimB  s   € à�{‰{×#Ñ#Ð#r   c                ó.   € V P                   P                  # r   )rZ   rÇ   rë  s   &r   rÆ   ÚLanguageModel.n_kv_headsF  s   € à�{‰{×.Ñ.Ð.r   c                ó   € R  pV# )c                 óH   € \        VR 4      '       g   R# RV 9   d   R^@R^/# R# )Úto_quantizedFrù   Ú
group_sizeÚbitsT)rÀ   )Úpathrƒ  s   &&r   Ú	predicateÚ0LanguageModel.quant_predicate.<locals>.predicateL  s,   € Ü˜1˜n×-Ò-ÙØ˜4ÔØ$ b¨&°!Ð4Ð4Ùr   r”   )r-   r÷  s   & r   Úquant_predicateÚLanguageModel.quant_predicateJ  s   € ò	ð Ðr   c                ó  € . pV P                   P                  R V P                  P                    FU  pVR8X  d   VP	                  \        4       4       K%  VP	                  \        V P                   P                  ^ R7      4       KW  	  V# )Nr´   )Úmax_sizeÚkeep)rZ   r½   r�  rj   r^  r   r   r  )r-   r¸  r¾   s   &  r   Ú
make_cacheÚLanguageModel.make_cacheU  ss   € ØˆØŸ+™+×1Ñ1Ø2ˆd�j‰j×2Ñ2ó
ˆJð Ð-Ô-Ø—‘œg›iÖ(à—‘Ü#Ø!%§¡×!;Ñ!;Øôöñ
ð ˆr   )rZ   r�  r�  rŽ  )NNNNNN)r?   r@   rA   rB   r+   r—  rœ  r   r¯  r:   rÊ  rÝ  rØ  Úpropertyr  rÁ   rÆ   rù  rþ  rD   rE   rF   rG   s   @@r   r‰  r‰  �  sù   ù‡ € ÷Xó X÷ð ÷@ð @÷'ð 'ð"ð ð"ð ð	"ð
 ð"ð ð"ð ð"ð ÷"ò "÷H&
ò &
÷P(ð (òT÷Dð Dð, ñ!ó ð!ð ñ$ó ð$ð ñ/ó ð/ð ñó ð÷ò r   r‰  )'Ú	functoolsr   Útypingr   r   r   Úmlx.coreÚcorer4   Úmlx.nnr   r   Úmlx_lm.models.baser   rº   r	   r
   r   rØ   r   r   rZ   r   Ú
rope_utilsr   Úcompiler   ÚModuler   rI   rV   rX   rs   r‘   r–   r«   rì   r  r‰  r”   r   r   Ú<module>r
     s  ðÝ ß &Ñ &å Ý Ý Ý 1÷ñ ÷
 -Ý Ý 'ñ 	ˆ�‰˜tÔ$ñ$ó %ð$ô3�R—Y‘Yô 3ô	:�r—y‘yô 	:ñ 	ˆ�‰˜tÔ$ñ*ó %ð*ôIˆ"�)‰)ô Iô(,ˆR�Y‰Yô ,ô:ˆB�I‰Iô ôˆb�i‰iô ô.q;�—	‘	ô q;ôhu$�2—9‘9ô u$ôp]�b—i‘iô ]ô@	T�B—I‘Iö Tr   