Ë
    ÜÓ^jâÙ  ã                   ó‚  — d dl Z d dlmZ d dlmZmZ d dlZd dlmZ d dl	m
Z
 ddlmZ ddlmZmZmZ ddlmZ dd	lmZmZmZ dd
lmZ ddlmZ ddlmZmZmZm Z m!Z!m"Z"m#Z# ddl$m%Z% ddl&m'Z'm(Z( ddl)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF ddlGmHZH ddlImJZJmKZKmLZL  e/jš                  eN«      ZO e-d¬«      e
 G d„ de:e«      «       «       ZP e-d¬«      e
 G d„ de9«      «       «       ZQ e-d¬«      e
 G d„ d e:e«      «       «       ZR e-d¬«      e
 G d!„ d"e«      «       «       ZS G d#„ d$e@«      ZT G d%„ d&e=«      ZU G d'„ d(eA«      ZV G d)„ d*e<«      ZW G d+„ d,e<«      ZXdMd-eYd.efd/„ZZ G d0„ d1eK«      Z[ G d2„ d3eK«      Z\ G d4„ d5eL«      Z] G d6„ d7eJ«      Z^ G d8„ d9e>«      Z_ G d:„ d;eB«      Z`e- G d<„ d=e?«      «       Za G d>„ d?ea«      Zb G d@„ dAea«      Zc G dB„ dCea«      Zde- G dD„ dEea«      «       Ze G dF„ dGeae«      Zfe- G dH„ dIea«      «       Zge- G dJ„ dKea«      «       Zhg dL¢Ziy)Né    N)ÚCallable)ÚAnyÚOptional)Ústricté   )Úinitialization)ÚDynamicCacheÚEncoderDecoderCacheÚStaticCache)ÚPreTrainedConfig)ÚGenerationConfigÚGenerationMixinÚGenerationMode)Úcreate_bidirectional_mask)ÚFlashAttentionKwargs)ÚBaseModelOutputÚ)BaseModelOutputWithPastAndCrossAttentionsÚBaseModelOutputWithPoolingÚSeq2SeqLMOutputÚSeq2SeqModelOutputÚSequenceClassifierOutputÚTokenClassifierOutput)ÚROPE_INIT_FUNCTIONS)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚloggingÚtorch_compilable_check)Úmerge_with_config_defaults)ÚOutputRecorderÚcapture_outputsé   )Ú	AutoModel)ÚGemma3ConfigÚGemma3TextConfig)ÚGemma3AttentionÚ	Gemma3MLPÚGemma3MultiModalProjectorÚGemma3PreTrainedModelÚGemma3RMSNormÚGemma3RotaryEmbeddingÚGemma3TextScaledWordEmbeddingÚapply_rotary_pos_embÚcreate_causal_maskÚ!create_sliding_window_causal_maskÚeager_attention_forward)ÚSiglipVisionConfig)ÚT5GemmaClassificationHeadÚT5GemmaEncoderLayerÚT5GemmaLMHeadzgoogle/t5gemma-2-270m-270m)Ú
checkpointc                   ó(   — e Zd ZdZdZ e«       Zd„ Zy)ÚT5Gemma2TextConfigát  
    query_pre_attn_scalar (`float`, *optional*, defaults to 256):
        Scaling factor used on the attention scores
    final_logit_softcapping (`float`, *optional*):
        Scaling factor when applying tanh softcapping on the logits.
    attn_logit_softcapping (`float`, *optional*):
        Scaling factor when applying tanh softcapping on the attention scores.
    Út5gemma2_textc                 óê   — |j                  dd«      }| j                  €;t        | j                  «      D �cg c]  }t	        |dz   |z  «      rdnd‘Œ c}| _        t        j                  di |¤Ž y c c}w ©NÚsliding_window_patterné   é   Úsliding_attentionÚfull_attention© ©ÚpopÚlayer_typesÚrangeÚnum_hidden_layersÚboolr   Ú__post_init__©ÚselfÚkwargsÚ_sliding_window_patternÚis       úx/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/t5gemma2/modular_t5gemma2.pyrK   z T5Gemma2TextConfig.__post_init__[   óx   € à"(§*¡*Ð-EÀqÓ"IÐØ×ÑÐ#ô ˜t×5Ñ5Ó6ö àô (,¨Q°©UÐ6MÑ,MÔ'NÑ#ÐTdÑdò ˆDÔô
 	×&Ñ&Ñ0¨Ó0ùò ó   ¶A0N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
model_typeÚAttributeErrorÚuse_bidirectional_attentionrK   rD   ó    rQ   r:   r:   L   s   „ ñð !€JÙ"0Ó"2Ðó	1r\   r:   c                   ó   — e Zd ZdZeedœZy)ÚT5Gemma2EncoderConfigÚt5gemma2_encoder)Útext_configÚvision_configN)rU   rV   rW   rY   r:   r4   Úsub_configsrD   r\   rQ   r^   r^   g   s   „ ð $€Jð *Ø+ñ�Kr\   r^   c                   ó(   — e Zd ZdZdZ e«       Zd„ Zy)ÚT5Gemma2DecoderConfigr;   Út5gemma2_decoderc                 óê   — |j                  dd«      }| j                  €;t        | j                  «      D �cg c]  }t	        |dz   |z  «      rdnd‘Œ c}| _        t        j                  di |¤Ž y c c}w r>   rE   rL   s       rQ   rK   z#T5Gemma2DecoderConfig.__post_init__�   rR   rS   NrT   rD   r\   rQ   rd   rd   r   s   „ ñð $€JÙ"0Ó"2Ðó	1r\   rd   c                   ó  ‡ — e Zd ZU dZdZdgZeedœZdddœZ	dZ
eeeef   z  dz  ed	<   dZeeeef   z  dz  ed
<   dZeed<   dZeez  ed<   dZeez  ed<   dZeez  ed<   dZeed<   dZeed<   dZedz  ed<   dZeed<   ˆ fd„Zd„ Zˆ xZS )ÚT5Gemma2Configa`  
    encoder (`Union[T5Gemma2EncoderConfig, dict]`, optional, *optional*):
        Configuration for the encoder.
    decoder (`Union[T5Gemma2DecoderConfig, dict]`, optional, *optional*):
        Configuration for the decoder.
    eoi_token_index (`int`, *optional*):
        The end-of-image token index to wrap the image prompt. Will be same as
        `self.encoder.eoi_token_index`

    ```python
    >>> from transformers import T5Gemma2Config, T5Gemma2Model
    >>> t5gemma2_config = T5Gemma2Config.from_pretrained("google/t5gemma-270m-270m")
    >>> model = T5Gemma2Model(t5gemma2_config)
    ```
    Út5gemma2Úpast_key_values)ÚencoderÚdecoderÚimage_token_indexÚeoi_token_index)Úimage_token_idÚeoi_token_idNrk   rl   TÚis_encoder_decoderç        Údropout_rateÚattention_dropoutÚclassifier_dropout_rateg{®Gáz”?Úinitializer_rangeiè Útie_word_embeddingsc                 ó¸  •— t        | j                  t        «      rt        di | j                  ¤Ž| _        n0| j                  €$t        «       | _        t        j                  d«       t        | j                  t        «      rt        di | j                  ¤Ž| _        n0| j                  €$t        «       | _        t        j                  d«       | j                  | j                  j                  _        | j                  | j                  j                  _
        | j                  | j                  j                  _
        | j                  | j                  _        | j                  | j                  _        | j                  | j                  _
        | j                  j                  | _        dD ]   }||vsŒt        | j                  |«      ||<   Œ" t        ‰| �@  di |¤Ž y )NzDencoder is None, using default T5Gemma2EncoderConfig encoder config.zDdecoder is None, using default T5Gemma2DecoderConfig decoder config.)Úbos_token_idÚpad_token_idÚeos_token_idÚ
vocab_sizerD   )Ú
isinstancerk   Údictr^   ÚloggerÚinforl   rd   rs   r`   rt   ra   rm   rn   ÚgetattrÚsuperrK   )rM   rN   Úspecial_token_keyÚ	__class__s      €rQ   rK   zT5Gemma2Config.__post_init__¸   sZ  ø€ Ü�d—l‘l¤DÔ)Ü0Ñ@°4·<±<Ñ@ˆD�LØ�\‰\Ð!Ü0Ó2ˆDŒLÜ�K‰KÐ^Ô_ä�d—l‘l¤DÔ)Ü0Ñ@°4·<±<Ñ@ˆD�LØ�\‰\Ð!Ü0Ó2ˆDŒLÜ�K‰KÐ^Ô_à04×0AÑ0Aˆ�‰× Ñ Ô-Ø59×5KÑ5Kˆ�‰× Ñ Ô2Ø7;×7MÑ7Mˆ�‰×"Ñ"Ô4Ø)-×)?Ñ)?ˆ�‰Ô&à$(×$5Ñ$5ˆ�‰Ô!Ø)-×)?Ñ)?ˆ�‰Ô&Ø#Ÿ|™|×;Ñ;ˆÔà!_ò 	UÐØ ¨Ò.Ü,3°D·L±LÐBSÓ,T�Ð(Ò)ð	Uô 	‰ÑÑ' Ó'r\   c                 ó  — | j                   j                  j                  | j                  j                  k7  rDt	        d| j                   j                  j                  › d| j                  j                  › d�«      ‚| j
                  st	        d«      ‚| j                   j                  j                  | j                  j                  k7  rDt	        d| j                   j                  j                  › d| j                  j                  › d�«      ‚y)zOPart of `@strict`-powered validation. Validates the architecture of the config.zBImbalanced encoder-decoder is not supported in T5Gemma2: encoder (z) vs decoder (z).z4T5Gemma2Model only support encoder-decoder modeling.zRImbalanced encoder-decoder vocabulary size is not supported in T5Gemma2: encoder (N)rk   r`   Úhidden_sizerl   Ú
ValueErrorrq   r|   ©rM   s    rQ   Úvalidate_architecturez$T5Gemma2Config.validate_architectureÔ   sê   € à�<‰<×#Ñ#×/Ñ/°4·<±<×3KÑ3KÒKÜðØ ŸL™L×4Ñ4×@Ñ@ÐAÀÐPT×P\ÑP\×PhÑPhÐOiÐikðmóð ð
 ×&Ò&ÜÐSÓTÐTà�<‰<×#Ñ#×.Ñ.°$·,±,×2IÑ2IÒIÜðØ ŸL™L×4Ñ4×?Ñ?Ð@ÀÈtÏ|É|×OfÑOfÐNgÐgiðkóð ð Jr\   )rU   rV   rW   rX   rY   Úkeys_to_ignore_at_inferencer^   rd   rb   Úattribute_maprk   r~   Ústrr   Ú__annotations__rl   rq   rJ   rs   ÚfloatÚintrt   ru   rv   rm   rn   rw   rK   r‰   Ú__classcell__©r„   s   @rQ   rh   rh   �   sã   ø… ñð  €JØ#4Ð"5Ðð )Ø(ñ€Kð .Ø)ñ€Mð
 >B€GÐ" T¨#¨s¨(¡^Ñ3°dÑ:ÓAØ=A€GÐ" T¨#¨s¨(¡^Ñ3°dÑ:ÓAØ#Ð˜Ó#Ø #€L�%˜#‘+Ó#Ø%(Ð�u˜s‘{Ó(Ø+.Ð˜U S™[Ó.Ø#Ð�uÓ#Ø$Ð�sÓ$Ø"&€O�S˜4‘ZÓ&Ø $Ð˜Ó$ô(ö8r\   rh   c                   ó   — e Zd Zy)ÚT5Gemma2RMSNormN©rU   rV   rW   rD   r\   rQ   r“   r“   æ   ó   „ Ør\   r“   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚT5Gemma2MLPÚconfigc                 ól   •— t         ‰| �  |«       t        j                  |j                  «      | _        y ©N)r‚   Ú__init__ÚnnÚDropoutrs   Údropout©rM   r˜   r„   s     €rQ   r›   zT5Gemma2MLP.__init__ë   s&   ø€ Ü‰Ñ˜Ô Ü—z‘z &×"5Ñ"5Ó6ˆ�r\   c                 ó®   — | j                  | j                  |«      «      | j                  |«      z  }| j                  |«      }| j	                  |«      }|S rš   )Úact_fnÚ	gate_projÚup_projrž   Ú	down_proj)rM   ÚxÚhidden_statesr¤   s       rQ   ÚforwardzT5Gemma2MLP.forwardï   sH   € ØŸ™ D§N¡N°1Ó$5Ó6¸¿¹Àa»ÑHˆØŸ™ ]Ó3ˆØ—N‘N =Ó1ˆ	ØÐr\   )rU   rV   rW   r:   r›   r§   r�   r‘   s   @rQ   r—   r—   ê   s   ø„ ð7Ð1õ 7ör\   r—   c                   ó|   ‡ — e Zd Zddefˆ fd„Ze	 	 	 	 ddedz  ded   dedz  dedz  de	d	e
f   f
ˆ fd
„«       Zˆ xZS )ÚT5Gemma2RotaryEmbeddingNr˜   c                 ó&   •— t         ‰| �  ||«       y rš   ©r‚   r›   )rM   r˜   Údevicer„   s      €rQ   r›   z T5Gemma2RotaryEmbedding.__init__÷   s   ø€ Ü‰Ñ˜ Õ(r\   r¬   ztorch.deviceÚseq_lenÚ
layer_typeÚreturnztorch.Tensorc                 ó(   •— t         ‰| �  | |||«      S rš   )r‚   Úcompute_default_rope_parameters)r˜   r¬   r­   r®   r„   s       €rQ   r±   z7T5Gemma2RotaryEmbedding.compute_default_rope_parametersú   s   ø€ ô ‰wÑ6°v¸vÀwÐPZÓ[Ð[r\   rš   )NNNN)rU   rV   rW   r:   r›   Ústaticmethodr   r�   rŒ   ÚtuplerŽ   r±   r�   r‘   s   @rQ   r©   r©   ö   s�   ø„ ñ)Ð1õ )ð à,0Ø+/Ø"Ø!%ñ	\Ø" TÑ)ð\à˜Ñ(ð\ð �t‘ð\ð ˜$‘Jð	\ð
 
ˆ~˜uÐ$Ñ	%ô\ó ô\r\   r©   c                   ó(   ‡ — e Zd Zdedefˆ fd„Zˆ xZS )ÚT5Gemma2SelfAttentionr˜   Ú	layer_idxc                 ó4   •— t         ‰| �  ||«       d| _        y ©NF©r‚   r›   Ú	is_causal©rM   r˜   r¶   r„   s      €rQ   r›   zT5Gemma2SelfAttention.__init__  ó   ø€ Ü‰Ñ˜ Ô+Øˆ�r\   )rU   rV   rW   r:   r�   r›   r�   r‘   s   @rQ   rµ   rµ     s   ø„ ðÐ1ð ¸c÷ ñ r\   rµ   c                   ó.  ‡ — e Zd ZdZdedefˆ fd„Z	 ddej                  de	ej                  ej                  f   dej                  dz  d	ej                  d
e
dz  dee   de	ej                  ej                  dz  e	ej                     dz  f   fd„Zˆ xZS )ÚT5Gemma2MergedAttentionz6Merged self-attention and cross-attention for decoder.r˜   r¶   c                 ó4   •— t         ‰| �  ||«       d| _        y r¸   r¹   r»   s      €rQ   r›   z T5Gemma2MergedAttention.__init__  r¼   r\   Nr¦   Úposition_embeddingsÚmerged_attention_maskÚencoder_hidden_statesrj   rN   r¯   c                 ó¦  — |j                   d d }g |¢d‘| j                  ‘­}|j                   d d }	g |	¢d‘| j                  ‘­}
| j                  |«      j                  |«      j	                  dd«      }| j                  |«      j                  |«      j	                  dd«      }| j                  |«      j                  |«      j	                  dd«      }| j                  |«      }| j                  |«      }|\  }}t        ||||«      \  }}|�]|j                  }|j                  ||| j                  «      \  }}|j                  j                  | j                  «      }|j                  }|�s­| j                  |«      j                  |
«      j	                  dd«      }| j                  |«      j                  |
«      j	                  dd«      }| j                  |«      }|�€j                  ||| j                  «      \  }}d|j                  | j                  <   nFj                   | j                     j"                  }|j                   | j                     j$                  }|}|	d   }t'        j(                  ||gd¬«      }t'        j(                  ||gd¬«      }t+        j,                  | j.                  j0                  t2        «      } || ||||f| j4                  r| j6                  nd| j8                  dœ|¤Ž\  }} |j:                  g |¢d‘­Ž j=                  «       }| j?                  |«      }|�|dd | …f   }|d| d …f   }nd	\  }}|||fS )
NéÿÿÿÿrA   r%   T©Údimrr   )rž   Úscaling.)NN) ÚshapeÚhead_dimÚq_projÚviewÚ	transposeÚk_projÚv_projÚq_normÚk_normr0   Úself_attention_cacheÚupdater¶   Ú
is_updatedÚgetÚcross_attention_cacheÚlayersÚkeysÚvaluesÚtorchÚcatr   Úget_interfacer˜   Ú_attn_implementationr3   Útrainingrt   rÇ   ÚreshapeÚ
contiguousÚo_proj)rM   r¦   rÀ   rÁ   rÂ   rj   rN   Úinput_shapeÚhidden_shapeÚcross_input_shapeÚcross_hidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚcosÚsinrÑ   rÓ   rÕ   Úcross_key_statesÚcross_value_statesÚcross_key_sizeÚattention_interfaceÚattn_outputÚattn_weightsÚself_attn_weightsÚcross_attn_weightss                              rQ   r§   zT5Gemma2MergedAttention.forward  sv  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆØ1×7Ñ7¸¸Ð<ÐØDÐ0ÐD°"ÐD°d·m±mÑDÐð —{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆØ—[‘[ Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆ
Ø—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆà—{‘{ <Ó0ˆØ—[‘[ Ó,ˆ
à&‰ˆˆSÜ#7¸ÀjÐRUÐWZÓ#[Ñ ˆ�jàÐ&à#2×#GÑ#GÐ Ø';×'BÑ'BÀ:È|Ð]a×]kÑ]kÓ'lÑ$ˆJ˜ð )×3Ñ3×7Ñ7¸¿¹ÓGˆJØ$3×$IÑ$IÐ!àÐ"©*Ø#Ÿ{™{Ð+@ÓA×FÑFÐGYÓZ×dÑdÐefÐhiÓjÐØ!%§¡Ð-BÓ!C×!HÑ!HÐI[Ó!\×!fÑ!fÐghÐjkÓ!lÐà#Ÿ{™{Ð+;Ó<ÐàÐ*Ø7L×7SÑ7SØ$Ð&8¸$¿.¹.ó8Ñ4Ð Ð"4ð >B�×*Ñ*¨4¯>©>Ò:à4×;Ñ;¸D¿N¹NÑK×PÑPÐØ!6×!=Ñ!=¸d¿n¹nÑ!M×!TÑ!TÐð $ˆØ*¨1Ñ-ˆÜ—Y‘Y 
Ð,<Ð=À1ÔEˆ
Ü—y‘y ,Ð0BÐ!CÈÔKˆä(?×(MÑ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØ!ð	%
ð /3¯mªm�D×*Ò*ÀØ—L‘Lñ	%
ð ñ	%
Ñ!ˆ�\ð *�k×)Ñ)Ð;¨;Ð;¸Ò;×FÑFÓHˆØ—k‘k +Ó.ˆð Ð#Ø ,¨SÐ2B°N°?Ð2BÐ-BÑ CÐØ!-¨c°N°?Ñ3CÐ.CÑ!DÑà4>Ñ1ÐÐ1ØÐ-Ð/AÐAÐAr\   rš   )rU   rV   rW   rX   r:   r�   r›   rÙ   ÚTensorr³   r
   r   r   r§   r�   r‘   s   @rQ   r¾   r¾   
  sÏ   ø„ Ù@ðÐ1ð ¸cõ ð 7;ñTBð —|‘|ðTBð # 5§<¡<°·±Ð#=Ñ>ð	TBð
  %Ÿ|™|¨dÑ2ðTBð  %Ÿ|™|ðTBð -¨tÑ3ðTBð Ð-Ñ.ðTBð 
ˆu�|‰|˜UŸ\™\¨DÑ0°%¸¿¹Ñ2EÈÑ2LÐLÑ	M÷TBr\   r¾   Úsliding_windowr¯   c           
      óT   ‡ ‡— dt         dt         dt         dt         dt        f
ˆˆ fd„}|S )zL
    This creates uni/bidirectional attention mask with sliding window.
    Ú	batch_idxÚhead_idxÚq_idxÚkv_idxr¯   c                 ót   •— ‰	r‰
d}}n‰
dz   dz  ‰
dz  dz   }}||z
  }|dk\  ||k  z  }|dk  | |k  z  }||z  S )Nr   rA   r%   rD   )rõ   rö   r÷   rø   Úleft_window_sizeÚright_window_sizeÚdistÚ	left_maskÚ
right_maskrº   ró   s            €€rQ   Ú
inner_maskz0sliding_window_mask_function.<locals>.inner_maskm  sp   ø€ ÙØ2@À!Ð/Ñà4BÀQÑ4FÈ1Ñ3LÈ~ÐbcÑNcÐfgÑNgÐ/Ðà�v‰~ˆØ˜Q‘Y 4Ð*:Ñ#:Ñ;ˆ	Ø˜Q‘h D 5Ð+<Ñ#<Ñ=ˆ
Ø˜:Ñ%Ð%r\   )r�   rJ   )ró   rº   rÿ   s   `` rQ   Úsliding_window_mask_functionr   h  s3   ù€ ð
	&œcð 	&¬Sð 	&¼ð 	&Äcð 	&Ìdö 	&ð Ðr\   c                   ó   — e Zd Zy)ÚT5Gemma2EncoderLayerNr”   rD   r\   rQ   r  r  {  r•   r\   r  c                   ó  ‡ — e Zd ZdZdefˆ fd„Z	 	 	 	 	 ddej                  deej                  ej                  f   dej                  dz  dej                  dz  d	e
dz  d
edz  dej                  dz  dej                  fd„Zˆ xZS )ÚT5Gemma2DecoderLayerzFDecoder sub-layer: merged attention instead of vanilla self-attention.r¶   c                 óJ   •— t         ‰| �  ||«       t        ||¬«      | _        y )N)r˜   r¶   )r‚   r›   r¾   Ú	self_attnr»   s      €rQ   r›   zT5Gemma2DecoderLayer.__init__‚  s&   ø€ Ü‰Ñ˜ Ô+ô 1ØØô
ˆ�r\   Nr¦   rÀ   rÁ   Úposition_idsrj   Ú	use_cacherÂ   r¯   c                 óD  — |}	| j                  |«      } | j                  d|||||||dœ|¤Ž\  }}
}
| j                  |«      }|	| j                  |«      z   }|}	| j	                  |«      }| j                  |«      }| j                  |«      }|	| j                  |«      z   }|S )N)r¦   rÀ   rÁ   r  rj   r  rÂ   rD   )Úpre_self_attn_layernormr  Úpost_self_attn_layernormrž   Úpre_feedforward_layernormÚmlpÚpost_feedforward_layernorm)rM   r¦   rÀ   rÁ   r  rj   r  rÂ   rN   ÚresidualÚ_s              rQ   r§   zT5Gemma2DecoderLayer.forward‹  sÅ   € ð !ˆØ×4Ñ4°]ÓCˆà,˜dŸn™nð 	
Ø'Ø 3Ø"7Ø%Ø+ØØ"7ñ	
ð ñ	
Ñˆ�q˜!ð ×5Ñ5°mÓDˆØ  4§<¡<°Ó#>Ñ>ˆà ˆØ×6Ñ6°}ÓEˆØŸ™ Ó/ˆØ×7Ñ7¸ÓFˆØ  4§<¡<°Ó#>Ñ>ˆØÐr\   )NNNFN)rU   rV   rW   rX   r�   r›   rÙ   rò   r³   Ú
LongTensorr
   rJ   ÚFloatTensorr§   r�   r‘   s   @rQ   r  r    s¸   ø„ ÙPð
¨#õ 
ð 6:Ø04Ø6:Ø!&Ø59ñ à—|‘|ð ð # 5§<¡<°·±Ð#=Ñ>ð ð  %Ÿ|™|¨dÑ2ð	 ð
 ×&Ñ&¨Ñ-ð ð -¨tÑ3ð ð ˜$‘;ð ð  %Ÿ|™|¨dÑ2ð ð 
×	Ñ	÷ r\   r  c                   ó   — e Zd Zy)ÚT5Gemma2LMHeadNr”   rD   r\   rQ   r  r  ®  r•   r\   r  c                   ó   — e Zd Zy)ÚT5Gemma2ClassificationHeadNr”   rD   r\   rQ   r  r  ²  r•   r\   r  c                   ó$   ‡ — e Zd Zdefˆ fd„Zˆ xZS )ÚT5Gemma2MultiModalProjectorr˜   c                 ó$   •— t         ‰| �  |«       y rš   r«   rŸ   s     €rQ   r›   z$T5Gemma2MultiModalProjector.__init__·  s   ø€ Ü‰Ñ˜Õ r\   )rU   rV   rW   r^   r›   r�   r‘   s   @rQ   r  r  ¶  s   ø„ ð!Ð4÷ !ñ !r\   r  c                   ób   ‡ — e Zd ZdZ	 	 d
dededededef
ˆ fd„Zdej                  fˆ fd	„Z	ˆ xZ
S )ÚT5Gemma2TextScaledWordEmbeddingzCT5Gemma2 Embedding: override to add eoi token embedding separately.Únum_embeddingsÚembedding_dimÚpadding_idxÚembed_scalern   c                 ó¦   •— t         ‰| �  ||||«       || _        t        j                  t        j                  | j                  «      «      | _        y rš   )	r‚   r›   rn   rœ   Ú	ParameterrÙ   Úzerosr  Úeoi_embedding)rM   r  r  r  r  rn   r„   s         €rQ   r›   z(T5Gemma2TextScaledWordEmbedding.__init__¾  s@   ø€ ô 	‰Ñ˜¨¸À[ÔQØ.ˆÔÜŸ\™\¬%¯+©+°d×6HÑ6HÓ*IÓJˆÕr\   Ú	input_idsc                 óð   •— t         ‰| �  |«      | j                  j                  | j                  j
                  «      z  }| j                  j                  |j
                  «      ||| j                  k(  <   |S rš   )r‚   r§   r  ÚtoÚweightÚdtyper#  rn   )rM   r$  Úinput_embeddingsr„   s      €rQ   r§   z'T5Gemma2TextScaledWordEmbedding.forwardÊ  sf   ø€ Ü ™7™?¨9Ó5¸×8HÑ8H×8KÑ8KÈDÏKÉK×L]ÑL]Ó8^Ñ^ÐØ>B×>PÑ>P×>SÑ>SÐTd×TjÑTjÓ>kÐ˜ d×&:Ñ&:Ñ:Ñ;ØÐr\   )g      ð?é è )rU   rV   rW   rX   r�   rŽ   r›   rÙ   rò   r§   r�   r‘   s   @rQ   r  r  »  s^   ø„ ÙMð !Ø&ñ
Kàð
Kð ð
Kð ð	
Kð
 ð
Kð õ
Kð  §¡÷  ñ  r\   r  c                   óZ   — e Zd ZU eed<   dZdZdZdZg d¢Z	dZ
d„ Zdej                  fd	„Zy)
ÚT5Gemma2PreTrainedModelr˜   ÚmodelTF)r  r  ÚSiglipVisionEmbeddingsÚSiglipEncoderLayerÚ#SiglipMultiheadAttentionPoolingHeadNc                 ó¼  — t        j                  | |«       t        |t        «      r t	        j
                  |j                  «       y t        |t        «      rJt	        j
                  |j                  «       t	        j                  |j                  |j                  «       y t        |t        «      rÁ|j                  j                  j                  d   dz  }t	        j                   |j                  j                  d| j"                  j$                  |z  ¬«       t'        |j                  d«      rA|j                  j(                  �*t	        j
                  |j                  j(                  «       y y y d|j*                  j,                  v r t	        j
                  |j                  «       y t        |t.        «      r£|j0                  D ]“  }|j2                  }|j4                  |   dk7  rt6        |j4                  |      } ||j"                  |¬«      \  }}t	        j8                  t;        ||› d	�«      |«       t	        j8                  t;        ||› d
�«      |«       Œ• y y )Nr   g      à¿rr   )ÚmeanÚstdÚbiasÚRMSNormÚdefault)r®   Ú	_inv_freqÚ_original_inv_freq)r   Ú_init_weightsr}   r  ÚinitÚzeros_Úmm_input_projection_weightr  r#  Ú	constant_r  Úscalar_embed_scaler  Úout_projr'  rÈ   Únormal_r˜   rv   Úhasattrr4  r„   rU   r©   rG   r±   Ú	rope_typer   Úcopy_r�   )rM   ÚmoduleÚscaler®   Úrope_init_fnÚcurr_inv_freqr  s          rQ   r9  z%T5Gemma2PreTrainedModel._init_weightsæ  sÄ  € Ü×%Ñ% d¨FÔ3Ü�fÔ9Ô:Ü�K‰K˜×9Ñ9Õ:Ü˜Ô ?Ô@Ü�K‰K˜×,Ñ,Ô-Ü�N‰N˜6×-Ñ-¨v×/HÑ/HÕIÜ˜Ô :Ô;Ø—O‘O×*Ñ*×0Ñ0°Ñ3°tÑ;ˆEÜ�L‰L˜Ÿ™×/Ñ/°c¸t¿{¹{×?\Ñ?\Ð_dÑ?dÕeÜ�v—‘¨Ô/°F·O±O×4HÑ4HÐ4TÜ—‘˜FŸO™O×0Ñ0Õ1ð 5UÐ/ð ˜&×*Ñ*×3Ñ3Ñ3Ü�K‰K˜Ÿ™Õ&Ü˜Ô 7Ô8Ø$×0Ñ0ò ^�
Ø%×EÑE�Ø×#Ñ# JÑ/°9Ò<Ü#6°v×7GÑ7GÈ
Ñ7SÑ#T�LÙ#/°·±È*Ô#UÑ �˜qÜ—
‘
œ7 6¨j¨\¸Ð+CÓDÀmÔTÜ—
‘
œ7 6¨j¨\Ð9KÐ+LÓMÈ}Õ]ñ^ð 9r\   Úlabelsc                 ó<  — | j                   j                  }|j                  }|j                  }|€t	        d«      ‚|j                  |j                  «      }|ddd…f   j                  «       |ddd…f<   ||d<   |€t	        d«      ‚|j                  |dk(  |«       |S )	zú
        Shifts input_ids to the right, prepends the decoder_start_token_id, and handles
        pad_token_id replacement for labels that were -100.
        This is a common preparation step for decoder inputs in sequence-to-sequence models.
        Nz:self.model.config.decoder.bos_token_id has to be defined. .rÄ   rA   ).r   z9self.model.config.decoder.pad_token_id has to be defined.iœÿÿÿ)	r˜   rl   ry   rz   r‡   Ú	new_zerosrÈ   ÚcloneÚmasked_fill_)rM   rH  Údecoder_configÚdecoder_start_token_idrz   Úshifted_input_idss         rQ   Ú%prepare_decoder_input_ids_from_labelsz=T5Gemma2PreTrainedModel.prepare_decoder_input_ids_from_labelsþ  sµ   € ð Ÿ™×,Ñ,ˆØ!/×!<Ñ!<ÐØ%×2Ñ2ˆà!Ð)ÜÐYÓZÐZð #×,Ñ,¨V¯\©\Ó:ÐØ%+¨C°°"°¨HÑ%5×%;Ñ%;Ó%=Ð˜#˜q™r˜'Ñ"Ø$:Ð˜&Ñ!àÐÜÐXÓYÐYð 	×&Ñ&Ð'8¸DÑ'@À,ÔOà Ð r\   )rU   rV   rW   rh   r�   Úbase_model_prefixÚsupports_gradient_checkpointingÚ_supports_flash_attnÚ_supports_flex_attnÚ_no_split_modulesÚ_can_record_outputsr9  rÙ   rò   rP  rD   r\   rQ   r,  r,  Ð  sH   … àÓØÐØ&*Ð#ð !ÐàÐòÐð Ðò^ð0!¸E¿L¹Lô !r\   r,  c                   ó  ‡ — e Zd ZU eed<   eedœZ	 ddedefˆ fd„Z	e
ee	 	 	 	 	 ddej                  dz  dej                  dz  dej                  dz  d	ej                   dz  d
ej                  dz  dee   defd„«       «       «       Zˆ xZS )ÚT5Gemma2TextEncoderr˜   )Ú
attentionsr¦   rn   c           	      ó^  •— t         ‰| �  |«       |j                  | _        |j                  | _        t        |j                  |j                  | j                  |j                  dz  |¬«      | _        t        |j                  |j                  ¬«      | _
        d| _        t        j                  t        |j                  «      D �cg c]  }t!        ||«      ‘Œ c}«      | _        t        j$                  |j&                  «      | _        t+        |«      | _        | j/                  «        y c c}w ©Ng      à?)r  rn   )ÚepsF)r‚   r›   rz   r  r|   r  r†   Úembed_tokensr“   Úrms_norm_epsÚnormÚgradient_checkpointingrœ   Ú
ModuleListrH   rI   r  rÖ   r�   rs   rž   r©   Ú
rotary_embÚ	post_init©rM   r˜   rn   r¶   r„   s       €rQ   r›   zT5Gemma2TextEncoder.__init__!  sñ   ø€ ô
 	‰Ñ˜Ô Ø!×.Ñ.ˆÔØ ×+Ñ+ˆŒä;Ø×ÑØ×ÑØ×ÑØ×*Ñ*¨CÑ/Ø+ô
ˆÔô $ F×$6Ñ$6¸F×<OÑ<OÔPˆŒ	Ø&+ˆÔ#ä—m‘mÜFKÈF×LdÑLdÓFeÖf¸Ô! &¨)Õ4Òfó
ˆŒô —z‘z &×"5Ñ"5Ó6ˆŒÜ1°&Ó9ˆŒð 	�‰Õùò gó   ÃD*Nr$  Úattention_maskr  Úinputs_embedsÚtoken_type_idsrN   r¯   c           
      óŽ  — |d u |d uz  rt        d«      ‚|j                  dd «       |€| j                  |«      }|€>t        j                  d|j
                  d   |j                  ¬«      j                  d«      }t        |x}t        «      sJ| j                  ||dœ}t        di |¤Žt        di |¤dt        | j                  j                  d¬	«      i¤Žd
œ}|}	i }
t        | j                  j                  «      D ]  }| j!                  |	||«      |
|<   Œ | j#                  |	«      }	t%        | j&                  d | j                  j(                   «      D ]E  \  }} ||	|
| j                  j                  |      || j                  j                  |      |fi |¤Ž}	ŒG | j+                  |	«      }	| j#                  |	«      }	t-        |	¬«      S )Nú:You must specify exactly one of input_ids or inputs_embedsrj   r   rA   ©r¬   )r˜   rg  rf  Úand_mask_functionF)rº   ©rC   rB   )Úlast_hidden_staterD   )r‡   rF   r]  rÙ   ÚarangerÈ   r¬   Ú	unsqueezer}   r~   r˜   r   r   ró   ÚsetrG   rb  rž   Ú	enumeraterÖ   rI   r_  r   )rM   r$  rf  r  rg  rh  rN   Úself_attn_mask_mappingÚmask_kwargsr¦   rÀ   r®   rP   Úlayer_modules                 rQ   r§   zT5Gemma2TextEncoder.forward=  sÝ  € ð ˜Ð -°tÐ";Ò<ÜÐYÓZÐZð 	�
‰
Ð$ dÔ+àÐ Ø ×-Ñ-¨iÓ8ˆMàÐÜ Ÿ<™<¨¨=×+>Ñ+>¸qÑ+AÈ-×J^ÑJ^Ô_×iÑiÐjkÓlˆLä°NÐBÐ0ÄDÔIàŸ+™+Ø!.Ø"0ñˆKô #<Ñ"J¸kÑ"JÜ%>ñ &Ø!ñ&ä&BÀ4Ç;Á;×C]ÑC]ÐinÔ&oò&ñ&Ð"ð &ˆð !ÐÜ˜dŸk™k×5Ñ5Ó6ò 	gˆJØ.2¯o©o¸mÈ\Ð[eÓ.fÐ 
Ò+ð	gð Ÿ™ ]Ó3ˆä(¨¯©Ð5T°t·{±{×7TÑ7TÐ)UÓVò 	‰OˆAˆ|Ù(ØØ# D§K¡K×$;Ñ$;¸AÑ$>Ñ?Ø& t§{¡{×'>Ñ'>¸qÑ'AÑBØñ	ð
 ñ‰Mð	ð Ÿ	™	 -Ó0ˆØŸ™ ]Ó3ˆÜØ+ô
ð 	
r\   ©r*  )NNNNN)rU   rV   rW   r:   r�   rµ   r  rV  r�   r›   r"   r$   r   rÙ   r  rò   r  r   r   r   r§   r�   r‘   s   @rQ   rX  rX    så   ø… ØÓà+Ø-ñÐð  'ñà"ðð õð8  ØØð .2Ø.2Ø04Ø26à.2ñ<
à×#Ñ# dÑ*ð<
ð Ÿ™ tÑ+ð<
ð ×&Ñ&¨Ñ-ð	<
ð
 ×(Ñ(¨4Ñ/ð<
ð Ÿ™ tÑ+ð<
ð Ð+Ñ,ð<
ð 
ò<
ó ó ó  ô<
r\   rX  c                   óÊ  ‡ — e Zd ZU eed<   	 ddedefˆ fd„Zd„ Zd„ Ze	e
dej                  dee   deez  fd	„«       «       Zd
ej$                  dz  dej&                  dz  dej&                  fd„Ze
	 	 	 	 	 	 dd
ej$                  dz  dej                  dz  dej$                  dz  dej&                  dz  dej&                  dz  dej                  dz  dee   defd„«       Zˆ xZS )ÚT5Gemma2Encoderr˜   rn   c                 óú   •— t         ‰| �  |«       t        j                  |j                  |¬«      | _        t        j                  |j                  ¬«      | _	        t        |«      | _        | j                  «        y )N)rn   ©r˜   )r‚   r›   rX  Ú_from_configr`   Ú
text_modelr&   Úfrom_configra   Úvision_towerr  Úmulti_modal_projectorrc  )rM   r˜   rn   r„   s      €rQ   r›   zT5Gemma2Encoder.__init__‚  sb   ø€ ô
 	‰Ñ˜Ô ä-×:Ñ:¸6×;MÑ;MÐ_nÐ:ÓoˆŒÜ%×1Ñ1¸×9MÑ9MÔNˆÔÜ%@ÀÓ%HˆÔ"ð 	�‰Õr\   c                 ó6   — | j                   j                  «       S rš   )r|  Úget_input_embeddingsrˆ   s    rQ   r�  z$T5Gemma2Encoder.get_input_embeddings�  s   € Ø�‰×3Ñ3Ó5Ð5r\   c                 ó8   — | j                   j                  |«      S rš   )r|  Úset_input_embeddings©rM   Únew_embeddingss     rQ   rƒ  z$T5Gemma2Encoder.set_input_embeddings“  s   € Ø�‰×3Ñ3°NÓCÐCr\   Úpixel_valuesrN   r¯   c                 óx   —  | j                   d|ddœ|¤Ž}|j                  }| j                  |«      }||_        |S )NT)r†  Úreturn_dictrD   )r~  rn  r  Úpooler_output)rM   r†  rN   Úvision_outputsrn  Úimage_featuress         rQ   Úget_image_featuresz"T5Gemma2Encoder.get_image_features–  sM   € ð +˜×*Ñ*Ða¸ÐRVÑaÐZ`ÑaˆØ*×<Ñ<ÐØ×3Ñ3Ð4EÓFˆØ'5ˆÔ$àÐr\   r$  Nrg  r‹  c                 ó$  — | j                   j                  }|€f|€t        d«      ‚| | j                  «       t	        j
                  |t        j                  |j                  ¬«      «      k(  }|j                  d«      }n||k(  }|j                  «       }|j                  d«      j                  |j                  «      }|j                  d   |j                  d   z  }t        ||j                  d   z  |j                  «       k(  d|› d|› �«       |S )zï
        Obtains multimodal placeholder mask from `input_ids` or `inputs_embeds`, and checks that the placeholder token count is
        equal to the length of multimodal features. If the lengths are different, an error is raised.
        z9Either `input_ids` or `inputs_embeds` has to be provided.)r(  r¬   rÄ   r   rA   z6Image features and image tokens do not match: tokens: z, features )r˜   ro   r‡   r�  rÙ   ÚtensorÚlongr¬   ÚallÚsumrp  r&  rÈ   r!   Únumel)rM   r$  rg  r‹  ro   Úspecial_image_maskÚn_image_tokensÚn_image_featuress           rQ   Úget_image_placeholder_maskz*T5Gemma2Encoder.get_image_placeholder_mask¤  s  € ð Ÿ™×3Ñ3ˆØÐØÐ$Ü Ð!\Ó]Ð]Ø!.Ð2M°$×2KÑ2KÓ2MÜ—‘˜^´5·:±:Àm×FZÑFZÔ[ó3ñ "Ðð "4×!7Ñ!7¸Ó!;Ñà!*¨nÑ!<Ðà+×/Ñ/Ó1ˆØ/×9Ñ9¸"Ó=×@Ñ@À×AUÑAUÓVÐØ)×/Ñ/°Ñ2°^×5IÑ5IÈ!Ñ5LÑLÐÜØ˜]×0Ñ0°Ñ4Ñ4¸×8LÑ8LÓ8NÑNØDÀ^ÐDTÐT_Ð`pÐ_qÐrô	
ð "Ð!r\   rf  r  rh  c                 ój  — |d u |d uz  rt        d«      ‚|€| j                  j                  |«      }|�i| j                  |d¬«      j                  }|j                  |j                  |j                  «      }| j                  |||¬«      }	|j                  |	|«      } | j                  d|||dœ|¤Ž}
|
S )Nrj  T)rˆ  )rg  r‹  )rg  rf  r  rD   )
r‡   r|  r]  rŒ  r‰  r&  r¬   r(  r–  Úmasked_scatter)rM   r$  rf  r  rg  r†  rh  rN   r‹  Ú
image_maskÚoutputss              rQ   r§   zT5Gemma2Encoder.forwardÂ  sÚ   € ð ˜Ð -°tÐ";Ò<ÜÐYÓZÐZàÐ Ø ŸO™O×8Ñ8¸ÓCˆMàÐ#Ø!×4Ñ4°\ÈtÐ4ÓT×bÑbˆNØ+×.Ñ.¨}×/CÑ/CÀ]×EXÑEXÓYˆNà×8Ñ8Ø¨À~ð 9ó ˆJð *×8Ñ8¸À^ÓTˆMà!�$—/‘/ð 
Ø'Ø)Ø%ñ
ð ñ	
ˆð ˆr\   rv  )NNNNNN)rU   rV   rW   r^   r�   r�   r›   r�  rƒ  r   r   rÙ   rò   r   r   r³   r   rŒ  r  r  r–  r   r§   r�   r‘   s   @rQ   rx  rx    sk  ø… Ø!Ó!ð
  'ñà%ðð õò6òDð Øð
Ø!ŸL™Lð
Ø4:Ð;MÑ4Nð
à	Ð+Ñ	+ò
ó ó ð
ð"à×#Ñ# dÑ*ð"ð ×(Ñ(¨4Ñ/ð"ð ×)Ñ)ó	"ð< ð .2Ø.2Ø04Ø26Ø15à.2ñ!à×#Ñ# dÑ*ð!ð Ÿ™ tÑ+ð!ð ×&Ñ&¨Ñ-ð	!ð
 ×(Ñ(¨4Ñ/ð!ð ×'Ñ'¨$Ñ.ð!ð Ÿ™ tÑ+ð!ð Ð+Ñ,ð!ð 
ò!ó ô!r\   rx  c                   óp  ‡ — e Zd ZU eed<    eed¬«       eed¬«      edœZddede	fˆ fd„Z
eee	 	 	 	 	 	 	 	 dd	ej                  dz  d
ej                   dz  dej                  dz  dedz  dej$                  dz  dedz  dej                   dz  dej                   dz  dee   defd„«       «       «       Zˆ xZS )ÚT5Gemma2Decoderr˜   rA   )Úindexr%   )rY  Úcross_attentionsr¦   rn   c           	      ó^  •— t         ‰| �  |«       |j                  | _        |j                  | _        t        |j                  |j                  |j                  |j                  dz  |¬«      | _        t        |j                  |j                  ¬«      | _
        d| _        t        j                  t        |j                  «      D �cg c]  }t!        ||«      ‘Œ c}«      | _        t        j$                  |j&                  «      | _        t+        |«      | _        | j/                  «        y c c}w r[  )r‚   r›   rz   r  r|   r  r†   r]  r“   r^  r_  r`  rœ   ra  rH   rI   r  rÖ   r�   rs   rž   r©   rb  rc  rd  s       €rQ   r›   zT5Gemma2Decoder.__init__ï  sí   ø€ Ü‰Ñ˜Ô Ø!×.Ñ.ˆÔØ ×+Ñ+ˆŒä;Ø×ÑØ×ÑØ×ÑØ×*Ñ*¨CÑ/Ø+ô
ˆÔô $ F×$6Ñ$6¸F×<OÑ<OÔPˆŒ	Ø&+ˆÔ#ä—m‘mÜFKÈF×LdÑLdÓFeÖf¸Ô! &¨)Õ4Òfó
ˆŒô —z‘z &×"5Ñ"5Ó6ˆŒÜ1°&Ó9ˆŒØ�‰Õùò	 gre  Nr$  rf  r  rj   rg  r  rÂ   Úencoder_attention_maskrN   r¯   c	           
      óè  — |d u |d uz  rt        d«      ‚|€t        d«      ‚|€| j                  |«      }| j                  s,|r*|€(t        t	        | j
                  ¬«      t	        «       «      }|€V|�|j                  «       nd}
t        j                  |j                  d   |j                  ¬«      |
z   }|j                  d«      }t        |x}t        «      s;d„ }| j
                  |||�|j                  nd ||dœ}t        di |¤Žt!        di |¤Žd	œ}t        |x}t        «      sd
t#        | j
                  |||¬«      i}t        j$                  |d
   |d
   gd¬«      t        j$                  |d   |d
   gd¬«      d	œ}|}i }t'        | j
                  j(                  «      D ]  }| j+                  |||«      ||<   Œ | j-                  |«      }t/        | j0                  d | j
                  j2                   «      D ]H  \  }} |||| j
                  j(                  |      || j
                  j(                  |      ||||fi |	¤Ž}ŒJ | j5                  |«      }| j-                  |«      }t7        ||¬«      S )Nrj  z0`encoder_hidden_states` must be given in decoderrz  r   rA   rk  c                  óL   — t        j                  dt         j                  ¬«      S )NT)r(  )rÙ   rŽ  rJ   )Úargss    rQ   ú<lambda>z)T5Gemma2Decoder.forward.<locals>.<lambda>'  s   € ´E·L±LÀÌUÏZÉZÔ4X€ r\   )r˜   rg  rf  rj   r  rl  rm  rC   )r˜   rg  rf  rÂ   rl  rÄ   rÅ   rB   )rn  rj   rD   )r‡   r]  rÝ   r
   r	   r˜   Úget_seq_lengthrÙ   ro  rÈ   r¬   rp  r}   r~   rÑ   r1   r2   r   rÚ   rq  rG   rb  rž   rr  rÖ   rI   r_  r   )rM   r$  rf  r  rj   rg  r  rÂ   r   rN   Úpast_seen_tokensrs  Údummy_and_mask_functionrt  Úcross_attn_mask_mappingÚmerged_attn_mask_mappingr¦   rÀ   r®   rP   ru  s                        rQ   r§   zT5Gemma2Decoder.forward  s¾  € ð ˜Ð -°tÐ";Ò<ÜÐYÓZÐZØ Ð(ÜÐOÓPÐPàÐ Ø ×-Ñ-¨iÓ8ˆMà�}Š}¡¨Ð/FÜ1´,ÀdÇkÁkÔ2RÔT`ÓTbÓcˆOàÐØCRÐC^˜×=Ñ=Ô?ÐdeÐÜ Ÿ<™<¨×(;Ñ(;¸AÑ(>À}×G[ÑG[Ô\Ð_oÑoˆLØ'×1Ñ1°!Ó4ˆLä°NÐBÐ0ÄDÔIñ 'YÐ#àŸ+™+Ø!.Ø"0ØKZÐKf ?×#GÒ#GÐlpØ ,Ø%<ñˆKô #5Ñ"C°{Ñ"CÜ%FÑ%UÈÑ%Uñ&Ð"ô
 Ð5KÐKÐ1ÌTÔRà Ô";ØŸ;™;Ø"/Ø#9Ø*?Ø&=ô#ð'Ð#ô $Ÿi™iØ'Ð(8Ñ9Ð;RÐScÑ;dÐeÐkmôô "'§¡Ø'Ð(;Ñ<Ð>UÐVfÑ>gÐhÐnpô"ñ	$
Ð ð &ˆð !ÐÜ˜dŸk™k×5Ñ5Ó6ò 	gˆJØ.2¯o©o¸mÈ\Ð[eÓ.fÐ 
Ò+ð	gð Ÿ™ ]Ó3ˆä(¨¯©Ð5T°t·{±{×7TÑ7TÐ)UÓVò 
	‰OˆAˆ|Ù(ØØ# D§K¡K×$;Ñ$;¸AÑ$>Ñ?Ø(¨¯©×)@Ñ)@ÀÑ)CÑDØØØØ%ñ	ð ñ	‰Mð
	ð Ÿ	™	 -Ó0ˆØŸ™ ]Ó3ˆÜ8Ø+Ø+ô
ð 	
r\   rv  )NNNNNNNN)rU   rV   rW   rd   r�   r#   r¾   r  rV  r�   r›   r"   r$   r   rÙ   r  rò   r
   r  rJ   r   r   r   r§   r�   r‘   s   @rQ   rœ  rœ  ç  s5  ø… Ø!Ó!á$Ð%<ÀAÔFÙ*Ð+BÈ!ÔLØ-ñÐñÐ4ð Àsõ ð,  ØØð .2Ø.2Ø04Ø6:Ø26Ø!%Ø59Ø6:ñ]
à×#Ñ# dÑ*ð]
ð Ÿ™ tÑ+ð]
ð ×&Ñ&¨Ñ-ð	]
ð
 -¨tÑ3ð]
ð ×(Ñ(¨4Ñ/ð]
ð ˜$‘;ð]
ð  %Ÿ|™|¨dÑ2ð]
ð !&§¡¨tÑ 3ð]
ð Ð+Ñ,ð]
ð 
3ò]
ó ó ó  ô]
r\   rœ  c                   óÄ  ‡ — e Zd ZdddœZdefˆ fd„Zddedz  fd„Zd	„ Zd
„ Z	d„ Z
ee	 	 	 	 	 	 	 	 	 	 	 	 ddej                  dz  dej                  dz  dej                  dz  dej                  dz  dej                  dz  dej                   dz  dej                  dz  dedz  dedz  dej&                  dz  dej&                  dz  dedz  dee   defd„«       «       Zˆ xZS )ÚT5Gemma2Modelz&encoder.text_model.embed_tokens.weightz-encoder.text_model.embed_tokens.eoi_embedding)zdecoder.embed_tokens.weightz"decoder.embed_tokens.eoi_embeddingr˜   c                 óØ   •— t         ‰| �  |«       t        |j                  |j                  «      | _        t        |j                  |j                  «      | _        | j                  «        y rš   )r‚   r›   rx  rk   rn   rœ  rl   rc  rŸ   s     €rQ   r›   zT5Gemma2Model.__init__o  sL   ø€ Ü‰Ñ˜Ô ô ' v§~¡~°v×7MÑ7MÓNˆŒÜ& v§~¡~°v×7MÑ7MÓNˆŒà�‰Õr\   NÚmodalityc                 ó   — | j                   S rš   )rk   ©rM   r­  s     rQ   Úget_encoderzT5Gemma2Model.get_encoderx  ó   € Ø�|‰|Ðr\   c                 ó   — | j                   S rš   ©rl   rˆ   s    rQ   Úget_decoderzT5Gemma2Model.get_decoder{  r±  r\   c                 ó6   — | j                   j                  «       S rš   )rk   r�  rˆ   s    rQ   r�  z"T5Gemma2Model.get_input_embeddings~  s   € Ø�|‰|×0Ñ0Ó2Ð2r\   c                 ó8   — | j                   j                  |«      S rš   )rk   rƒ  r„  s     rQ   rƒ  z"T5Gemma2Model.set_input_embeddings�  s   € Ø�|‰|×0Ñ0°Ó@Ð@r\   r$  r†  rf  r  Údecoder_input_idsÚdecoder_attention_maskÚdecoder_position_idsÚencoder_outputsrj   rg  Údecoder_inputs_embedsr  rN   r¯   c                 óN  — |€ | j                   d||||
|ddœ|¤Ž}|j                  } | j                  d|||||	|||ddœ	|¤Ž}t        |j                  |j                  |j
                  |j                  |j                  |j                  |j
                  |j                  ¬«      S )aX  
        decoder_position_ids (`torch.LongTensor` of shape `(batch_size, decoder_sequence_length)`, *optional*):
            Indices of positions of each decoder input sequence tokens in the position embeddings. Selected in the range `[0,
            config.decoder.n_positions - 1]`. [What are position IDs?](../glossary#position-ids)
        T)r$  rf  r  rg  r†  rˆ  )	r$  rf  r  rg  rj   rÂ   r   r  rˆ  )rn  rj   Údecoder_hidden_statesÚdecoder_attentionsrž  Úencoder_last_hidden_staterÂ   Úencoder_attentionsrD   )rk   rn  rl   r   rj   r¦   rY  rž  )rM   r$  r†  rf  r  r·  r¸  r¹  rº  rj   rg  r»  r  rN   rÂ   Údecoder_outputss                   rQ   r§   zT5Gemma2Model.forward„  sÜ   € ð6 Ð"Ø*˜dŸl™lð Ø#Ø-Ø)Ø+Ø)Ø ñð ñˆOð !0× AÑ AÐð '˜$Ÿ,™,ð 
Ø'Ø1Ø-Ø/Ø+Ø"7Ø#1ØØñ
ð ñ
ˆô "Ø-×?Ñ?Ø+×;Ñ;Ø"1×"?Ñ"?Ø.×9Ñ9Ø,×=Ñ=Ø&5×&GÑ&GØ"1×"?Ñ"?Ø.×9Ñ9ô	
ð 		
r\   rš   )NNNNNNNNNNNN)rU   rV   rW   Ú_tied_weights_keysrh   r›   rŒ   r°  r´  r�  rƒ  r   r   rÙ   r  r  Ú
BoolTensorr   r
   rò   rJ   r   r   r   r§   r�   r‘   s   @rQ   r«  r«  h  s�  ø„ ð (PØ.]ñÐð
˜~õ ñ C¨$¡Jó òò3òAð Øð .2Ø15Ø37Ø04à59Ø:>Ø8<à26Ø6:Ø-1Ø59Ø!%ñ!=
ð ×#Ñ# dÑ*ð=
ð ×'Ñ'¨$Ñ.ð	=
ð
 ×)Ñ)¨DÑ0ð=
ð ×&Ñ&¨Ñ-ð=
ð !×+Ñ+¨dÑ2ð=
ð !&× 0Ñ 0°4Ñ 7ð=
ð $×.Ñ.°Ñ5ð=
ð )¨4Ñ/ð=
ð -¨tÑ3ð=
ð —|‘| dÑ*ð=
ð  %Ÿ|™|¨dÑ2ð=
ð  ˜$‘;ð!=
ð" Ð+Ñ,ð#=
ð$ 
ò%=
ó ó ô=
r\   r«  c            $       óÂ  ‡ — e Zd ZddiZddiZddgdgfiZdefˆ fd„Zd	„ Zd
„ Z	d„ Z
d„ Zd*dedz  fd„Zd„ Zeedej$                  dee   deez  fd„«       «       Zed„ «       Zee	 	 	 	 	 	 	 	 	 	 	 	 	 	 d+dej4                  dz  dej6                  dz  dej6                  dz  dej4                  dz  dej4                  dz  dej8                  dz  dej4                  dz  dedz  dedz  dej6                  dz  dej6                  dz  d ej4                  dz  d!edz  d"e ej$                  z  dee   deej6                     e!z  f d#„«       «       Z"d$e#d%e$d&e%d'e d(e defˆ fd)„Z&ˆ xZ'S ),Ú T5Gemma2ForConditionalGenerationzlm_head.out_proj.weightz,model.encoder.text_model.embed_tokens.weightzlm_head.out_projÚcolwise_gather_outputr¦   Úlogitsr˜   c                 ó  •— t         ‰| �  |«       t        |«      | _        |j                  j
                  | _        t        |j                  j                  | j
                  «      | _        d| _	        | j                  «        y )NÚForMaskedLM)r‚   r›   r«  r-  rl   r|   r  r†   Úlm_headÚ	loss_typerc  rŸ   s     €rQ   r›   z)T5Gemma2ForConditionalGeneration.__init__Í  sZ   ø€ Ü‰Ñ˜Ô ä" 6Ó*ˆŒ
Ø Ÿ.™.×3Ñ3ˆŒÜ% f§n¡n×&@Ñ&@À$Ç/Á/ÓRˆŒØ&ˆŒà�‰Õr\   c                 ó&   — || j                   _        y rš   ©rÊ  r?  r„  s     rQ   Úset_output_embeddingsz6T5Gemma2ForConditionalGeneration.set_output_embeddings×  s   € Ø .ˆ�‰Õr\   c                 ó.   — | j                   j                  S rš   rÍ  rˆ   s    rQ   Úget_output_embeddingsz6T5Gemma2ForConditionalGeneration.get_output_embeddingsÚ  s   € Ø�|‰|×$Ñ$Ð$r\   c                 ó6   — | j                   j                  «       S rš   ©r-  r�  rˆ   s    rQ   r�  z5T5Gemma2ForConditionalGeneration.get_input_embeddingsÝ  ó   € Ø�z‰z×.Ñ.Ó0Ð0r\   c                 ó:   — | j                   j                  |«       y rš   ©r-  rƒ  ©rM   Úvalues     rQ   rƒ  z5T5Gemma2ForConditionalGeneration.set_input_embeddingsà  ó   € Ø�
‰
×'Ñ'¨Õ.r\   Nr­  c                 ó:   — | j                   j                  |¬«      S )N)r­  )r-  r°  r¯  s     rQ   r°  z,T5Gemma2ForConditionalGeneration.get_encoderã  s   € Ø�z‰z×%Ñ%¨xÐ%Ó8Ð8r\   c                 ó6   — | j                   j                  «       S rš   )r-  r´  rˆ   s    rQ   r´  z,T5Gemma2ForConditionalGeneration.get_decoderæ  s   € Ø�z‰z×%Ñ%Ó'Ð'r\   r†  rN   r¯   c                 óD   —  | j                  «       j                  |fi |¤ŽS rš   )r°  rŒ  )rM   r†  rN   s      rQ   rŒ  z3T5Gemma2ForConditionalGeneration.get_image_featuresé  s%   € ð
 5ˆt×ÑÓ!×4Ñ4°\ÑLÀVÑLÐLr\   c                 ó6   — | j                  «       j                  S rš   )r°  r~  rˆ   s    rQ   r~  z-T5Gemma2ForConditionalGeneration.vision_towerð  s   € à×ÑÓ!×.Ñ.Ð.r\   r$  rf  r  r·  r¸  r¹  rº  rj   rg  r»  rH  r  Úlogits_to_keepc                 óž  — |�|€|€| j                  |«      } | j                  d|||||||||	|
||dœ|¤Ž}|j                  }t        |t        «      rt        | d«      n|}| j                  |dd…|dd…f   «      }| j                  j                  }|j                  �3||j                  z  }t        j                  |«      }||j                  z  }d}|� | j                  ||| j                  fi |¤Ž}t        |||j                  |j                   |j"                  |j$                  |j&                  |j(                  |j*                  ¬«	      S )aü  
        decoder_position_ids (`torch.LongTensor` of shape `(batch_size, decoder_sequence_length)`, *optional*):
            Indices of positions of each decoder input sequence tokens in the position embeddings. Selected in the range `[0,
            config.decoder.n_positions - 1]`. [What are position IDs?](../glossary#position-ids)
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
            config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
            (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.
        N)r$  r†  rf  r  r·  r¸  r¹  rº  rj   rg  r»  r  )	ÚlossrÇ  rj   r½  r¾  rž  r¿  rÂ   rÀ  rD   )rP  r-  rn  r}   r�   ÚslicerÊ  r˜   rl   Úfinal_logit_softcappingrÙ   ÚtanhÚloss_functionr|   r   rj   r½  r¾  rž  r¿  rÂ   rÀ  )rM   r$  r†  rf  r  r·  r¸  r¹  rº  rj   rg  r»  rH  r  rÝ  rN   rÁ  r¦   Úslice_indicesrÇ  rM  rß  s                         rQ   r§   z(T5Gemma2ForConditionalGeneration.forwardô  sr  € ðB ÐÐ"3Ð";Ð@UÐ@]à $× JÑ JÈ6Ó RÐà.8¨d¯j©jð /
ØØ%Ø)Ø%Ø/Ø#9Ø!5Ø+Ø+Ø'Ø"7Øñ/
ð ñ/
ˆð  (×9Ñ9ˆä8BÀ>ÔSVÔ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜mªA¨}ºaÐ,?Ñ@ÓAˆàŸ™×,Ñ,ˆØ×1Ñ1Ð=Ø˜n×DÑDÑDˆFÜ—Z‘Z Ó'ˆFØ˜n×DÑDÑDˆFàˆØÐà%�4×%Ñ% f¨f°d·o±oÑPÈÑPˆDäØØØ+×;Ñ;Ø"1×"GÑ"GØ.×AÑAØ,×=Ñ=Ø&5×&OÑ&OØ"1×"GÑ"GØ.×AÑAô

ð 
	
r\   Úgeneration_configÚmodel_kwargsÚgeneration_modeÚ
batch_sizeÚmax_cache_lengthc           	      ó€  •— t         ‰| �  |||||«       |j                  du ry|j                  }|€d}nd|j                  v }t	        j
                  | j                  j                  d¬«      «      }d|_        dg|j                  z  |_
        ||dœ}	|j                  d«      }
|
�“t        |
t        «      st        d	«      ‚t        |
j                   «      d
kD  r|
j                   j                  d
«      ryt#        |
j$                  «      }|t&        k(  r|d   d
   j(                  d   |	d<    |di |	¤Ž|
_        n=t        t+        di | j                  j                  d¬«      |dœ¤Žt+        «       «      |d<   t-        | d«      r=| j.                  �0t        | j.                  t        «      st        d«      ‚|d   | _        yyy)zMOverride cache preparation to support T5Gemma2-specific EncoderDecoder Cache.FNÚ	offloadedTr³  rC   )r˜   Ú
offloadingrj   zaThe `past_key_values` in `model_kwargs` must be of type `EncoderDecoderCache` for T5Gemma2 model.r   rº  rA   Úmax_cache_lenÚ_cachezLThe internal cache must be of type `EncoderDecoderCache` for T5Gemma2 model.rD   )r‚   Ú_prepare_cache_for_generationr  Úcache_implementationÚcopyÚdeepcopyr˜   Úget_text_configró   rI   rG   rÔ   r}   r
   r‡   ÚlenrÓ   ÚtyperÕ   r   rÈ   r	   rA  rî  )rM   rå  ræ  rç  rè  ré  rð  Úoffload_cacheÚcross_attn_configÚcross_attn_cache_kwargsrj   Úcross_attn_clsr„   s               €rQ   rï  z>T5Gemma2ForConditionalGeneration._prepare_cache_for_generationE  sç  ø€ ô 	‰Ñ-ØØØØØô	
ð ×&Ñ&¨%Ñ/Øà0×EÑEÐØÐ'Ø!‰Mà'Ð+<×+QÑ+QÐQˆMô !ŸM™M¨$¯+©+×*EÑ*EÈdÐ*EÓ*SÓTÐð ,0ÐÔ(Ø)9Ð(:Ð=N×=`Ñ=`Ñ(`ÐÔ%ð (Ø'ñ#
Ðð
 '×*Ñ*Ð+<Ó=ˆØÐ&Ü˜oÔ/BÔCÜ Øwóð ô
 �?×-Ñ-Ó.°Ò2°×7QÑ7Q×7UÑ7UÐVWÔ7XØä! /×"GÑ"GÓHˆNØ¤Ò,Ø;GÐHYÑ;ZÐ[\Ñ;]×;cÑ;cÐdeÑ;fÐ'¨Ñ8á4BÑ4]ÐE\Ñ4]ˆOÕ1ô /BÜñ à"&§+¡+×"=Ñ"=ÀdÐ"=Ó"KØ&3ññô “ó/ˆLÐ*Ñ+ô �4˜Ô" t§{¡{Ð'>Ü˜dŸk™kÔ+>Ô?Ü Ð!oÓpÐpà&Ð'8Ñ9ˆD�Kð	 (?Ð"r\   rš   )NNNNNNNNNNNNNr   )(rU   rV   rW   rÂ  Ú_tp_planÚ_pp_planrh   r›   rÎ  rÐ  r�  rƒ  rŒ   r°  r´  r   r   rÙ   rò   r   r   r³   r   rŒ  Úpropertyr~  r  r  rÃ  r   r
   rJ   r�   r   r§   r   r~   r   rï  r�   r‘   s   @rQ   rÅ  rÅ  Æ  s¦  ø„ à!Ð#QðÐð #Ð$;Ð<€HØ" oÐ%6¸¸
Ð$CÐD€Hð˜~õ ò/ò%ò1ò/ñ9 C¨$¡Jó 9ò(ð ØðMØ!ŸL™LðMØ4:Ð;MÑ4NðMà	Ð+Ñ	+òMó ó ðMð
 ñ/ó ð/ð Øð .2Ø15Ø37Ø04à59Ø:>Ø8<à26Ø6:Ø26Ø:>Ø*.Ø!%Ø-.ñ%M
ð ×#Ñ# dÑ*ðM
ð ×'Ñ'¨$Ñ.ð	M
ð
 ×)Ñ)¨DÑ0ðM
ð ×&Ñ&¨Ñ-ðM
ð !×+Ñ+¨dÑ2ðM
ð !&× 0Ñ 0°4Ñ 7ðM
ð $×.Ñ.°Ñ5ðM
ð )¨4Ñ/ðM
ð -¨tÑ3ðM
ð ×(Ñ(¨4Ñ/ðM
ð  %×0Ñ0°4Ñ7ðM
ð  × Ñ  4Ñ'ð!M
ð" ˜$‘;ð#M
ð$ ˜eŸl™lÑ*ð%M
ð& Ð+Ñ,ð'M
ð( 
ˆu× Ñ Ñ	! OÑ	3ò)M
ó ó ðM
ð^I:à+ðI:ð ðI:ð (ð	I:ð
 ðI:ð ðI:ð 
÷I:ñ I:r\   rÅ  c                   ó¨  ‡ — e Zd Zdefˆ fd„Zd„ Zd„ Zee	 	 	 	 	 	 	 	 	 	 	 dde	j                  dz  de	j                  dz  de	j                  dz  d	e	j                  dz  d
e	j                  dz  de	j                  dz  de	j                  dz  dedz  de	j                  dz  de	j                  dz  de	j                  dz  dee   defd„«       «       Zˆ xZS )Ú!T5Gemma2ForSequenceClassificationr˜   c                 ó"  •— t         ‰| �  |«       |j                  | _        |j                  j                  | _        t        |«      | _        t        |dd«      }t        | j                  | j                  |«      | _	        | j                  «        y ©Nru   gš™™™™™¹?©r‚   r›   Ú
num_labelsrl   r†   r«  r-  r�   r  Úscorerc  ©rM   r˜   Úclassifier_dropoutr„   s      €rQ   r›   z*T5Gemma2ForSequenceClassification.__init__“  sp   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒØ!Ÿ>™>×5Ñ5ˆÔä" 6Ó*ˆŒ
ä$ VÐ-FÈÓLÐÜ/°×0@Ñ0@À$Ç/Á/ÐSeÓfˆŒ
Ø�‰Õr\   c                 ó6   — | j                   j                  «       S rš   rÒ  rˆ   s    rQ   r�  z6T5Gemma2ForSequenceClassification.get_input_embeddingsž  rÓ  r\   c                 ó:   — | j                   j                  |«       y rš   rÕ  rÖ  s     rQ   rƒ  z6T5Gemma2ForSequenceClassification.set_input_embeddings¡  rØ  r\   Nr$  r†  rf  r  r·  r¸  r¹  rº  rg  r»  rH  rN   r¯   c                 óv  — |	€|
�#t        d| j                  j                  › d�«      ‚|€t        d«      ‚|€| j	                  |«      } | j
                  |f||||||||	|
ddœ
|¤Ž}|j                  }|j                  }|j                  }| j                  |«      }|j                  d   }|| j                  j                  k7  j                  |j                  t        j                   «      }t        j"                  |j                  d   |j                  t        j                   ¬	«      }||z  j%                  d«      }t        j&                  ||j                  d   d
z
  ¬«      }|t        j"                  ||j                  ¬«      |f   }d}|�| j)                  |||| j                  ¬«      }t+        ||||¬«      S )áÜ  
        decoder_position_ids (`torch.LongTensor` of shape `(batch_size, decoder_sequence_length)`, *optional*):
            Indices of positions of each decoder input sequence tokens in the position embeddings. Selected in the range `[0,
            config.decoder.n_positions - 1]`. [What are position IDs?](../glossary#position-ids)
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the sequence classification/regression loss. Indices should be in `[0, ...,
            config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
            `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
        Nú8Passing input embeddings is currently not supported for ú.úYou have to specify input_idsF©
r†  rf  r  r·  r¸  r¹  rº  rg  r»  r  r   rÄ   )r¬   r(  rA   )Úmaxrk  )rÇ  rH  Úpooled_logitsr˜   ©rß  rÇ  r¦   rY  )ÚNotImplementedErrorr„   rU   r‡   rP  r-  rn  r½  r¾  r  rÈ   r˜   rz   r&  r¬   rÙ   Úint32ro  ÚargmaxÚclamprã  r   )rM   r$  r†  rf  r  r·  r¸  r¹  rº  rg  r»  rH  rN   rš  rn  r¦   rY  rÇ  rè  Únon_pad_maskÚtoken_indicesÚlast_non_pad_tokenr  rß  s                           rQ   r§   z)T5Gemma2ForSequenceClassification.forward¤  sÕ  € ð4 Ð$Ð(=Ð(IÜ%ØJÈ4Ï>É>×KbÑKbÐJcÐcdÐeóð ð ÐÜÐ<Ó=Ð=àÐ$Ø $× JÑ JÈ9Ó UÐà&0 d§j¡jØð'
à%Ø)Ø%Ø/Ø#9Ø!5Ø+Ø'Ø"7Øñ'
ð ñ'
ˆð $×5Ñ5ÐØ×5Ñ5ˆØ×/Ñ/ˆ
à—‘Ð-Ó.ˆà—_‘_ QÑ'ˆ
à)¨T¯[©[×-EÑ-EÑE×IÑIÈ&Ï-É-ÔY^×YdÑYdÓeˆÜŸ™Ð%6×%<Ñ%<¸RÑ%@ÈÏÉÔ^c×^iÑ^iÔjˆØ+¨lÑ:×BÑBÀ2ÓFÐÜ"Ÿ[™[Ð);ÐAR×AXÑAXÐY[ÑA\Ð_`ÑA`ÔaÐàœuŸ|™|¨J¸v¿}¹}ÔMÐOaÐaÑbˆàˆØÐØ×%Ñ%¨V¸FÐR_Ðhl×hsÑhsÐ%ÓtˆDä'ØØ Ø'Ø!ô	
ð 	
r\   ©NNNNNNNNNNN)rU   rV   rW   rh   r›   r�  rƒ  r   r   rÙ   r  r  rò   r   r   r   r   r§   r�   r‘   s   @rQ   rþ  rþ  ‘  s\  ø„ ð	˜~õ 	ò1ò/ð Øð .2Ø15Ø.2Ø04Ø59Ø6:Ø8<Ø26Ø26Ø:>Ø*.ñJ
à×#Ñ# dÑ*ðJ
ð ×'Ñ'¨$Ñ.ðJ
ð Ÿ™ tÑ+ð	J
ð
 ×&Ñ&¨Ñ-ðJ
ð !×+Ñ+¨dÑ2ðJ
ð !&§¡¨tÑ 3ðJ
ð $×.Ñ.°Ñ5ðJ
ð )¨4Ñ/ðJ
ð ×(Ñ(¨4Ñ/ðJ
ð  %×0Ñ0°4Ñ7ðJ
ð × Ñ  4Ñ'ðJ
ð Ð+Ñ,ðJ
ð 
"òJ
ó ó ôJ
r\   rþ  c                   ó¨  ‡ — e Zd Zdefˆ fd„Zd„ Zd„ Zee	 	 	 	 	 	 	 	 	 	 	 dde	j                  dz  de	j                  dz  de	j                  dz  d	e	j                  dz  d
e	j                  dz  de	j                  dz  de	j                  dz  dedz  de	j                  dz  de	j                  dz  de	j                  dz  dee   defd„«       «       Zˆ xZS )ÚT5Gemma2ForTokenClassificationr˜   c                 ó"  •— t         ‰| �  |«       |j                  | _        |j                  j                  | _        t        |«      | _        t        |dd«      }t        | j                  | j                  |«      | _	        | j                  «        y r   r  r  s      €rQ   r›   z'T5Gemma2ForTokenClassification.__init__õ  sp   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒØ!Ÿ>™>×5Ñ5ˆÔä" 6Ó*ˆŒ
ä$ VÐ-FÈÓLÐÜ/°×0@Ñ0@À$Ç/Á/ÐSeÓfˆŒ
à�‰Õr\   c                 ó6   — | j                   j                  «       S rš   rÒ  rˆ   s    rQ   r�  z3T5Gemma2ForTokenClassification.get_input_embeddings  rÓ  r\   c                 ó:   — | j                   j                  |«       y rš   rÕ  rÖ  s     rQ   rƒ  z3T5Gemma2ForTokenClassification.set_input_embeddings  rØ  r\   Nr$  r†  rf  r  r·  r¸  r¹  rº  rg  r»  rH  rN   r¯   c                 ó–  — |	€|
�#t        d| j                  j                  › d�«      ‚|€t        d«      ‚|€| j	                  |«      } | j
                  |f||||||||	|
ddœ
|¤Ž}|j                  }|j                  }|j                  }| j                  |«      }d}|�| j                  ||| j                  «      }t        ||||¬«      S )r	  Nr
  r  r  Fr  r  )r  r„   rU   r‡   rP  r-  rn  r½  r¾  r  rã  r˜   r   )rM   r$  r†  rf  r  r·  r¸  r¹  rº  rg  r»  rH  rN   rš  rn  r¦   rY  rÇ  rß  s                      rQ   r§   z&T5Gemma2ForTokenClassification.forward  s  € ð4 Ð$Ð(=Ð(IÜ%ØJÈ4Ï>É>×KbÑKbÐJcÐcdÐeóð ð ÐÜÐ<Ó=Ð=àÐ$Ø $× JÑ JÈ9Ó UÐà&0 d§j¡jØð'
à%Ø)Ø%Ø/Ø#9Ø!5Ø+Ø'Ø"7Øñ'
ð ñ'
ˆð $×5Ñ5ÐØ×5Ñ5ˆØ×/Ñ/ˆ
à—‘Ð-Ó.ˆàˆØÐØ×%Ñ% f¨f°d·k±kÓBˆDä$ØØØ'Ø!ô	
ð 	
r\   r  )rU   rV   rW   rh   r›   r�  rƒ  r   r   rÙ   r  r  rò   r   r   r   r   r§   r�   r‘   s   @rQ   r  r  ó  s\  ø„ ð
˜~õ 
ò1ò/ð Øð .2Ø15Ø.2Ø04Ø59Ø6:Ø8<Ø26Ø26Ø:>Ø*.ñ@
à×#Ñ# dÑ*ð@
ð ×'Ñ'¨$Ñ.ð@
ð Ÿ™ tÑ+ð	@
ð
 ×&Ñ&¨Ñ-ð@
ð !×+Ñ+¨dÑ2ð@
ð !&§¡¨tÑ 3ð@
ð $×.Ñ.°Ñ5ð@
ð )¨4Ñ/ð@
ð ×(Ñ(¨4Ñ/ð@
ð  %×0Ñ0°4Ñ7ð@
ð × Ñ  4Ñ'ð@
ð Ð+Ñ,ð@
ð 
ò@
ó ó ô@
r\   r  )
rh   r:   r^   rd   rÅ  r«  rx  r,  rþ  r  )T)jrñ  Úcollections.abcr   Útypingr   r   rÙ   Útorch.nnrœ   Úhuggingface_hub.dataclassesr   Ú r   r:  Úcache_utilsr	   r
   r   Úconfiguration_utilsr   Ú
generationr   r   r   Úmasking_utilsr   Úmodeling_flash_attention_utilsr   Úmodeling_outputsr   r   r   r   r   r   r   Úmodeling_rope_utilsr   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r    r!   Úutils.genericr"   Úutils.output_capturingr#   r$   Úautor&   Úgemma3.configuration_gemma3r'   r(   Úgemma3.modeling_gemma3r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   Úsiglipr4   Út5gemma.modeling_t5gemmar5   r6   r7   Ú
get_loggerrU   r   r:   r^   rd   rh   r“   r—   r©   rµ   r¾   r�   r   r  r  r  r  r  r  r,  rX  rx  rœ  r«  rÅ  rþ  r  Ú__all__rD   r\   rQ   ú<module>r7     s¹  ðó Ý $ß  ã Ý Ý .å &ß IÑ IÝ 3ß KÑ KÝ 6Ý B÷÷ ñ õ 7ß FÝ &÷õ õ 8ß EÝ ß H÷÷ ÷ ñ õ (÷ñ ð 
ˆ×	Ñ	˜HÓ	%€ñ Ð7Ô8Øô1Ð)Ð+;ó 1ó ó 9ð1ñ2 Ð7Ô8Øô˜Ló ó ó 9ðñ Ð7Ô8Øô1Ð,Ð.>ó 1ó ó 9ð1ñ2 Ð7Ô8ØôTÐ%ó Tó ó 9ðTôn	�mô 	ô	�)ô 	ô\Ð3ô \ô˜Oô ô[B˜oô [Bñ|°ð Èó ô&	Ð.ô 	ô,Ð.ô ,ô^	�]ô 	ô	Ð!:ô 	ô!Ð";ô !ô
 Ð&Cô  ð* ôF!Ð3ó F!ó ðF!ôRb
Ð1ô b
ôJeÐ-ô eôP~
Ð-ô ~
ðB ôZ
Ð+ó Z
ó ðZ
ôzH:Ð'>Àô H:ðV ô^
Ð(?ó ^
ó ð^
ðB ôU
Ð%<ó U
ó ðU
òp�r\   