§
    ‚Štj0k  ã                   óì  — d dl mZ d dlmZ d dlZd dlmc 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 dd	lmZ dd
lmZmZ ddlmZ ddlmZmZ ddlmZmZ ddlm Z m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z' ddl(m)Z)m*Z* ddl+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1  e,¦   «         r	d dl2m3Z3m4Z4 nd\  Z3Z4 ed¦  «         G d„ dej5        ¦  «        ¦   «         Z6 G d„ dej5        ¦  «        Z7 G d„ dej5        ¦  «        Z8d„ Z9 ed ¦  «        d>d!„¦   «         Z:d"ej;        d#e<d$ej;        fd%„Z=	 d?d'ej5        d(ej;        d)ej;        d*ej;        d+ej;        dz  d,e>d-e>d.e#e%         fd/„Z? ee:¦  «         G d0„ d1ej5        ¦  «        ¦   «         Z@d2„ ZAe3e4fZB eCeB¦  «        ZD G d3„ d4ej5        ¦  «        ZE G d5„ d6e¦  «        ZFe& G d7„ d8e!¦  «        ¦   «         ZGe& G d9„ d:eG¦  «        ¦   «         ZHe& G d;„ d<eGe¦  «        ¦   «         ZIg d=¢ZJdS )@é    )ÚCallable)ÚOptionalN)Únné   )ÚCacheÚDynamicCache)ÚGenerationMixin)Úuse_kernel_forward_from_hubÚuse_kernel_func_from_hubÚuse_kernelized_func)Úforce_accelerate_hooks)Úcreate_causal_maskÚcreate_recurrent_attention_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputWithPastÚCausalLMOutputWithPast)ÚROPE_INIT_FUNCTIONSÚdynamic_rope_update)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tuple)Úmaybe_autocastÚmerge_with_config_defaults)Úis_causal_conv1d_availableÚis_torchdynamo_compiling)Úcapture_outputsé   )Ú
Lfm2Config)Úcausal_conv1d_fnÚcausal_conv1d_update)NNÚRMSNormc                   óT   ‡ — e Zd Zd	deddfˆ fd„Zdej        dej        fd„Zd„ Zˆ xZ	S )
ÚLfm2RMSNormç�íµ ÷Æ°>ÚepsÚreturnNc                 ó¬   •— t          ¦   «                              ¦   «          t          j        t	          j        |¦  «        ¦  «        | _        || _        dS )z:
        Lfm2RMSNorm is equivalent to T5LayerNorm
        N)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizer(   Ú	__class__s      €úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/lfm2/modeling_lfm2.pyr,   zLfm2RMSNorm.__init__4   sD   ø€ õ 	‰Œ×ÒÑÔÐÝ”l¥5¤:¨kÑ#:Ô#:Ñ;Ô;ˆŒØ #ˆÔÐÐó    Úhidden_statesc                 ó  — |j         }|                     t          j        ¦  «        }|                     d¦  «                             dd¬¦  «        }|t          j        || j        z   ¦  «        z  }| j        |                     |¦  «        z  S )Né   éÿÿÿÿT)Úkeepdim)	ÚdtypeÚtor.   Úfloat32ÚpowÚmeanÚrsqrtr1   r0   )r2   r7   Úinput_dtypeÚvariances       r5   ÚforwardzLfm2RMSNorm.forward<   s|   € Ø#Ô)ˆØ%×(Ò(­¬Ñ7Ô7ˆØ ×$Ò$ QÑ'Ô'×,Ò,¨R¸Ð,Ñ>Ô>ˆØ%­¬°H¸tÔ?TÑ4TÑ(UÔ(UÑUˆØŒ{˜]×-Ò-¨kÑ:Ô:Ñ:Ð:r6   c                 óH   — t          | j        j        ¦  «        › d| j        › �S )Nz, eps=)Útupler0   Úshaper1   )r2   s    r5   Ú
extra_reprzLfm2RMSNorm.extra_reprC   s&   € Ý˜œÔ)Ñ*Ô*ÐIÐI°$Ô2GÐIÐIÐIr6   )r'   )
Ú__name__Ú
__module__Ú__qualname__Úfloatr,   r.   ÚTensorrD   rH   Ú__classcell__©r4   s   @r5   r&   r&   2   sŒ   ø€ € € € € ð$ð $¨ð $¸$ð $ð $ð $ð $ð $ð $ð; U¤\ð ;°e´lð ;ð ;ð ;ð ;ðJð Jð Jð Jð Jð Jð Jr6   r&   c                   óÔ   ‡ — e Zd ZU ej        ed<   ddefˆ fd„Ze	 	 	 ddedz  de	d         de
dz  ded	ef         fd
„¦   «         Z ej        ¦   «         ed„ ¦   «         ¦   «         Zˆ xZS )ÚLfm2RotaryEmbeddingÚinv_freqNÚconfigc                 ó²  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        || _        | j        j        d         | _        | j        }| j        dk    rt          | j                 } || j        |¦  «        \  }| _
        |                      d|d¬¦  «         |                      d|                     ¦   «         d¬¦  «         d S )NÚ	rope_typeÚdefaultrR   F)Ú
persistentÚoriginal_inv_freq)r+   r,   Úmax_position_embeddingsÚmax_seq_len_cachedÚoriginal_max_seq_lenrS   Úrope_parametersrU   Úcompute_default_rope_parametersr   Úattention_scalingÚregister_bufferÚclone)r2   rS   ÚdeviceÚrope_init_fnrR   r4   s        €r5   r,   zLfm2RotaryEmbedding.__init__J   sÊ   ø€ Ý‰Œ×ÒÑÔÐØ"(Ô"@ˆÔØ$*Ô$BˆÔ!àˆŒàœÔ4°[ÔAˆŒØ!%Ô!EˆØŒ>˜YÒ&Ð&Ý.¨t¬~Ô>ˆLØ+7¨<¸¼ÀVÑ+LÔ+LÑ(ˆ�$Ô(à×Ò˜Z¨¸eÐÑDÔDÐDØ×ÒÐ0°(·.².Ñ2BÔ2BÈuÐÑUÔUÐUÐUÐUr6   ra   ztorch.deviceÚseq_lenr)   ztorch.Tensorc                 óü   — | j         d         }t          | dd¦  «        p| j        | j        z  }d}d|t	          j        d|dt          j        ¬¦  «                             |t          j        ¬¦  «        |z  z  z  }||fS )	a¨  
        Computes the inverse frequencies according to the original RoPE implementation
        Args:
            config ([`~transformers.PreTrainedConfig`]):
                The model configuration.
            device (`torch.device`):
                The device to use for initialization of the inverse frequencies.
            seq_len (`int`, *optional*):
                The current sequence length. Unused for this type of RoPE.
        Returns:
            Tuple of (`torch.Tensor`, `float`), containing the inverse frequencies for the RoPE embeddings and the
            post-processing scaling factor applied to the computed cos/sin (unused in this type of RoPE).
        Ú
rope_thetaÚhead_dimNg      ð?r   r9   ©r<   )ra   r<   )	r\   Úgetattrr3   Únum_attention_headsr.   ÚarangeÚint64r=   rL   )rS   ra   rc   ÚbaseÚdimÚattention_factorrR   s          r5   r]   z3Lfm2RotaryEmbedding.compute_default_rope_parametersZ   sŒ   € ð& Ô% lÔ3ˆÝ�f˜j¨$Ñ/Ô/Ðc°6Ô3EÈÔIcÑ3cˆàÐð Ø•U”\ ! S¨!µ5´;Ð?Ñ?Ô?×BÒBÈ&ÕX]ÔXcÐBÑdÔdÐgjÑjÑkñ
ˆð Ð)Ð)Ð)r6   c                 óN  — | j         d d d …d f                              ¦   «                              |j        d         dd¦  «                             |j        ¦  «        }|d d …d d d …f                              ¦   «         }t          |j        j        t          ¦  «        r|j        j        dk    r|j        j        nd}t          |d¬¦  «        5  |                     ¦   «         |                     ¦   «         z   
                    dd¦  «        }t          j        ||fd¬	¦  «        }|                     ¦   «         | j        z  }|                     ¦   «         | j        z  }	d d d ¦  «         n# 1 swxY w Y   |                     |j        ¬
¦  «        |	                     |j        ¬
¦  «        fS )Nr   r:   r    ÚmpsÚcpuF)Údevice_typeÚenabledr9   ©rm   rg   )rR   rL   ÚexpandrG   r=   ra   Ú
isinstanceÚtypeÚstrr   Ú	transposer.   ÚcatÚcosr^   Úsinr<   )
r2   ÚxÚposition_idsÚinv_freq_expandedÚposition_ids_expandedrr   ÚfreqsÚembr{   r|   s
             r5   rD   zLfm2RotaryEmbedding.forwardx   s·  € ð !œM¨$°°°°4¨-Ô8×>Ò>Ñ@Ô@×GÒGÈÔHZÐ[\ÔH]Ð_aÐcdÑeÔe×hÒhÐijÔiqÑrÔrÐØ ,¨Q¨Q¨Q°°a°a°a¨ZÔ 8× >Ò >Ñ @Ô @Ðå'1°!´(´-ÅÑ'EÔ'EÐkÈ!Ì(Ì-Ð[`ÒJ`ÐJ`�a”h”m�mÐfkˆÝ¨¸UÐCÑCÔCð 	5ð 	5Ø&×,Ò,Ñ.Ô.Ð1F×1LÒ1LÑ1NÔ1NÑN×YÒYÐZ[Ð]^Ñ_Ô_ˆEÝ”)˜U E˜N°Ð3Ñ3Ô3ˆCØ—'’'‘)”)˜dÔ4Ñ4ˆCØ—'’'‘)”)˜dÔ4Ñ4ˆCð		5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð �vŠv˜AœGˆvÑ$Ô$ c§f¢f°1´7 fÑ&;Ô&;Ð;Ð;s   ÃBE&Å&E*Å-E*©N©NNN)rI   rJ   rK   r.   rM   Ú__annotations__r!   r,   Ústaticmethodr   ÚintrF   rL   r]   Úno_gradr   rD   rN   rO   s   @r5   rQ   rQ   G   sù   ø€ € € € € € ØŒlÐÐÑðVð V˜zð Vð Vð Vð Vð Vð Vð  à$(Ø+/Ø"ð*ð *Ø˜TÑ!ð*à˜Ô(ð*ð �t‘ð*ð 
ˆ~˜uÐ$Ô	%ð	*ð *ð *ñ „\ð*ð: €U„]�_„_Øð<ð <ñ Ôñ „_ð<ð <ð <ð <ð <r6   rQ   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚLfm2MLPrS   c                 óÊ  •— t          ¦   «                              ¦   «          |j        }|j        rPt	          d|z  dz  ¦  «        }|j        �4t	          |j        |z  ¦  «        }|j        ||j        z   dz
  |j        z  z  }t          j        |j	        |d¬¦  «        | _
        t          j        |j	        |d¬¦  «        | _        t          j        ||j	        d¬¦  «        | _        d S )Nr9   r   r    F©Úbias)r+   r,   Úintermediate_sizeÚblock_auto_adjust_ff_dimr‡   Úblock_ffn_dim_multiplierÚblock_multiple_ofr   ÚLinearr3   Úw1Úw3Úw2)r2   rS   rŽ   r4   s      €r5   r,   zLfm2MLP.__init__‰   sæ   ø€ Ý‰Œ×ÒÑÔÐØ"Ô4ÐØÔ*ð 	Ý # AÐ(9Ñ$9¸AÑ$=Ñ >Ô >ÐàÔ.Ð:Ý$'¨Ô(GÐJ[Ñ([Ñ$\Ô$\Ð!Ø$*Ô$<Ø&¨Ô)AÑAÀAÑEÈ&ÔJbÑbñ%Ð!õ ”)˜FÔ.Ð0AÈÐNÑNÔNˆŒÝ”)˜FÔ.Ð0AÈÐNÑNÔNˆŒÝ”)Ð-¨vÔ/AÈÐNÑNÔNˆŒˆˆr6   c                 ó¢   — |                       t          j        |                      |¦  «        ¦  «        |                      |¦  «        z  ¦  «        S rƒ   )r•   ÚFÚsilur“   r”   )r2   r}   s     r5   rD   zLfm2MLP.forward˜   s7   € Ø�wŠw•q”v˜dŸgšg a™jœjÑ)Ô)¨D¯GªG°A©J¬JÑ6Ñ7Ô7Ð7r6   )rI   rJ   rK   r!   r,   rD   rN   rO   s   @r5   rŠ   rŠ   ˆ   sZ   ø€ € € € € ðO˜zð Oð Oð Oð Oð Oð Oð8ð 8ð 8ð 8ð 8ð 8ð 8r6   rŠ   c                 óœ   — | dd| j         d         dz  …f         }| d| j         d         dz  d…f         }t          j        | |fd¬¦  «        S )z*Rotates half the hidden dims of the input..Nr:   r9   rt   )rG   r.   rz   )r}   Úx1Úx2s      r5   Úrotate_halfrœ   œ   s]   € à	
ˆ3Ð"�!”'˜"”+ Ñ"Ð"Ð"Ô	#€BØ	
ˆ3�”˜”˜qÑ Ð"Ð"Ð"Ô	#€BÝŒ9�r�c˜2�Y BÐ'Ñ'Ô'Ð'r6   Úrotary_pos_embc                 ó¾   — |                      |¦  «        }|                      |¦  «        }| |z  t          | ¦  «        |z  z   }||z  t          |¦  «        |z  z   }||fS )a…  Applies Rotary Position Embedding to the query and key tensors.

    Args:
        q (`torch.Tensor`): The query tensor.
        k (`torch.Tensor`): The key tensor.
        cos (`torch.Tensor`): The cosine part of the rotary embedding.
        sin (`torch.Tensor`): The sine part of the rotary embedding.
        unsqueeze_dim (`int`, *optional*, defaults to 1):
            The 'unsqueeze_dim' argument specifies the dimension along which to unsqueeze cos[position_ids] and
            sin[position_ids] so that they can be properly broadcasted to the dimensions of q and k. For example, note
            that cos[position_ids] and sin[position_ids] have the shape [batch_size, seq_len, head_dim]. Then, if q and
            k have the shape [batch_size, heads, seq_len, head_dim], then setting unsqueeze_dim=1 makes
            cos[position_ids] and sin[position_ids] broadcastable to the shapes of q and k. Similarly, if q and k have
            the shape [batch_size, seq_len, heads, head_dim], then set unsqueeze_dim=2.
    Returns:
        `tuple(torch.Tensor)` comprising of the query and key tensors rotated using the Rotary Position Embedding.
    )Ú	unsqueezerœ   )ÚqÚkr{   r|   Úunsqueeze_dimÚq_embedÚk_embeds          r5   Úapply_rotary_pos_embr¥   £   sc   € ð& �-Š-˜Ñ
&Ô
&€CØ
�-Š-˜Ñ
&Ô
&€CØ�3‰w�; q™>œ>¨CÑ/Ñ0€GØ�3‰w�; q™>œ>¨CÑ/Ñ0€GØ�GÐÐr6   r7   Ún_repr)   c                 ó¸   — | j         \  }}}}|dk    r| S | dd…dd…ddd…dd…f                              |||||¦  «        } |                      |||z  ||¦  «        S )zÔ
    This is the equivalent of torch.repeat_interleave(x, dim=1, repeats=n_rep). The hidden states go from (batch,
    num_key_value_heads, seqlen, head_dim) to (batch, num_attention_heads, seqlen, head_dim)
    r    N)rG   ru   Úreshape)r7   r¦   ÚbatchÚnum_key_value_headsÚslenrf   s         r5   Ú	repeat_kvr¬   ½   s„   € ð
 2?Ô1DÑ.€EÐ  hØ�‚z€zØÐØ! ! ! ! Q Q Q¨¨a¨a¨a°°°Ð"2Ô3×:Ò:¸5ÐBUÐW\Ð^bÐdlÑmÔm€MØ× Ò  Ð(;¸eÑ(CÀTÈ8ÑTÔTÐTr6   ç        ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingÚdropoutÚkwargsc                 ó  — t          || j        ¦  «        }t          || j        ¦  «        }	t          j        ||                     dd¦  «        ¦  «        |z  }
|�|
|z   }
t
          j                             |
dt          j        ¬¦  «         	                    |j
        ¦  «        }
t
          j                             |
|| j        ¬¦  «        }
t          j        |
|	¦  «        }|                     dd¦  «                             ¦   «         }||
fS )Nr9   r   r:   )rm   r<   )ÚpÚtrainingr    )r¬   Únum_key_value_groupsr.   Úmatmulry   r   Ú
functionalÚsoftmaxr>   r=   r<   r´   r¸   Ú
contiguous)r®   r¯   r°   r±   r²   r³   r´   rµ   Ú
key_statesÚvalue_statesÚattn_weightsÚattn_outputs               r5   Úeager_attention_forwardrÂ   É   sé   € õ ˜3 Ô ;Ñ<Ô<€JÝ˜U FÔ$?Ñ@Ô@€Lå”<  z×';Ò';¸A¸qÑ'AÔ'AÑBÔBÀWÑL€LØÐ!Ø# nÑ4ˆå”=×(Ò(¨¸2ÅUÄ]Ð(ÑSÔS×VÒVÐW\ÔWbÑcÔc€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€LÝ”,˜|¨\Ñ:Ô:€KØ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€Kà˜Ð$Ð$r6   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
dz  d
e	ej        ej        dz  f         f
d„Zˆ xZS )ÚLfm2Attentionz=Multi-headed attention from 'Attention Is All You Need' paperrS   Ú	layer_idxc                 óî  •— t          ¦   «                              ¦   «          || _        || _        t	          |d|j        |j        z  ¦  «        | _        |j        |j        z  | _	        | j        dz  | _
        d| _        t          j        |j        |j        | j        z  d¬¦  «        | _        t          j        |j        |j        | j        z  d¬¦  «        | _        t          j        |j        |j        | j        z  d¬¦  «        | _        t          j        |j        | j        z  |j        d¬¦  «        | _        t%          | j        |j        ¬¦  «        | _        t%          | j        |j        ¬¦  «        | _        d S )Nrf   g      à¿TFrŒ   ©r(   )r+   r,   rS   rÅ   rh   r3   ri   rf   rª   r¹   r³   Ú	is_causalr   r’   Úq_projÚk_projÚv_projÚout_projr&   Únorm_epsÚq_layernormÚk_layernorm©r2   rS   rÅ   r4   s      €r5   r,   zLfm2Attention.__init__æ   sC  ø€ Ý‰Œ×ÒÑÔÐØˆŒØ"ˆŒÝ ¨
°FÔ4FÈ&ÔJdÑ4dÑeÔeˆŒØ$*Ô$>À&ÔB\Ñ$\ˆÔ!Ø”} dÑ*ˆŒØˆŒÝ”i Ô 2°FÔ4NÐQUÔQ^Ñ4^ÐejÐkÑkÔkˆŒÝ”i Ô 2°FÔ4NÐQUÔQ^Ñ4^ÐejÐkÑkÔkˆŒÝ”i Ô 2°FÔ4NÐQUÔQ^Ñ4^ÐejÐkÑkÔkˆŒÝœ	 &Ô"<¸t¼}Ñ"LÈfÔN`ÐglÐmÑmÔmˆŒÝ& t¤}¸&¼/ÐJÑJÔJˆÔÝ& t¤}¸&¼/ÐJÑJÔJˆÔÐÐr6   Nr7   Úposition_embeddingsr²   Úpast_key_valuesr)   c                 ó  — |j         d d…         }g |¢d‘| j        ‘R }|                       |                      |¦  «        j        |Ž ¦  «                             dd¦  «        }|                       |                      |¦  «        j        |Ž ¦  «                             dd¦  «        }	 |                      |¦  «        j        |Ž                      dd¦  «        }
|\  }}t          ||	||¦  «        \  }}	|�| 
                    |	|
| j        ¦  «        \  }	}
t          j        | j        j        t           ¦  «        } || ||	|
|fd| j        dœ|¤Ž\  }} |j        g |¢d‘R Ž                      ¦   «         }|                      |¦  «        }||fS )Nr:   r    r9   r­   )r´   r³   )rG   rf   rÎ   rÉ   Úviewry   rÏ   rÊ   rË   r¥   ÚupdaterÅ   r   Úget_interfacerS   Ú_attn_implementationrÂ   r³   r¨   r½   rÌ   )r2   r7   rÑ   r²   rÒ   rµ   Úinput_shapeÚhidden_shapeÚquery_statesr¾   r¿   r{   r|   Úattention_interfacerÁ   rÀ   Úoutputs                    r5   rD   zLfm2Attention.forwardõ   sÇ  € ð $Ô)¨#¨2¨#Ô.ˆØ8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆà×'Ò'Ð(G¨¯ª°MÑ(BÔ(BÔ(GÈÐ(VÑWÔW×aÒaÐbcÐefÑgÔgˆØ×%Ò%Ð&E d§k¢k°-Ñ&@Ô&@Ô&EÀ|Ð&TÑUÔU×_Ò_Ð`aÐcdÑeÔeˆ
Ø6�t—{’{ =Ñ1Ô1Ô6¸ÐE×OÒOÐPQÐSTÑUÔUˆà&‰ˆˆSÝ#7¸ÀjÐRUÐWZÑ#[Ô#[Ñ ˆ�jàÐ&Ø'6×'=Ò'=¸jÈ,ÐX\ÔXfÑ'gÔ'gÑ$ˆJ˜å(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð	%
ð Ø”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—’˜{Ñ+Ô+ˆØ�|Ð#Ð#r6   rƒ   )rI   rJ   rK   Ú__doc__r!   r‡   r,   r.   rM   rF   r   rD   rN   rO   s   @r5   rÄ   rÄ   â   sÕ   ø€ € € € € àGÐGðK˜zð K°cð Kð Kð Kð Kð Kð Kð( )-ð%$ð %$à”|ð%$ð # 5¤<°´Ð#=Ô>ð%$ð œ tÑ+ð	%$ð
  ™ð%$ð 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ð%$ð %$ð %$ð %$ð %$ð %$ð %$ð %$r6   rÄ   c                 ó¦   — |�N|j         d         dk    r=|j         d         dk    r,| j        }| |dd…dd…df         z                       |¦  «        } | S )zm
    Tunes out the hidden states for padding tokens, see https://github.com/state-spaces/mamba/issues/66
    Nr    r   )rG   r<   r=   )r7   r²   r<   s      r5   Úapply_mask_to_padding_statesrß     si   € ð
 Ð! nÔ&:¸1Ô&=ÀÒ&AÐ&AÀnÔFZÐ[\ÔF]Ð`aÒFaÐFaØÔ#ˆØ&¨¸¸¸¸1¸1¸1¸d¸
Ô)CÑC×GÒGÈÑNÔNˆàÐr6   c                   ó:  ‡ — e Zd Zdedefˆ fd„Z	 	 	 ddej        dedz  dej        dz  dej	        dz  fd	„Z
	 	 	 ddej        dedz  dej        dz  dej	        dz  fd
„Z ed¦  «        	 	 	 ddej        dedz  dej        dz  dej	        dz  fd„¦   «         Zˆ xZS )ÚLfm2ShortConvrS   rÅ   c           	      óê  •— t          ¦   «                              ¦   «          || _        || _        |j        | _        |j        | _        t          j	        |j
        |j
        | j        |j
        | j        | j        dz
  ¬¦  «        | _        t          j        |j
        d|j
        z  | j        ¬¦  «        | _        t          j        |j
        |j
        | j        ¬¦  «        | _        |j        |         | _        d S )Nr    )Úin_channelsÚout_channelsÚkernel_sizeÚgroupsr�   Úpaddingr   rŒ   )r+   r,   rS   rÅ   Úconv_L_cacheÚL_cacheÚ	conv_biasr�   r   ÚConv1dr3   Úconvr’   Úin_projrÌ   Úlayer_typesÚ
layer_typerÐ   s      €r5   r,   zLfm2ShortConv.__init__.  s×   ø€ õ
 	‰Œ×ÒÑÔÐØˆŒØ"ˆŒØÔ*ˆŒØÔ$ˆŒ	å”IØÔ*ØÔ+ØœØÔ%Ø”Ø”L 1Ñ$ð
ñ 
ô 
ˆŒ	õ ”y Ô!3°Q¸Ô9KÑ5KÐRVÔR[Ð\Ñ\Ô\ˆŒÝœ	 &Ô"4°fÔ6HÈtÌyÐYÑYÔYˆŒà Ô,¨YÔ7ˆŒˆˆr6   Nr}   rÒ   r²   Úseq_idxc                 óæ  — t          ||¦  «        }|                      |¦  «                             dd¦  «        }|                     dd¬¦  «        \  }}}||z  }| j        j                             | j        j                             d¦  «        | j        j                             d¦  «        ¦  «        }	|�{|                     | j	        ¦  «        rat          |                     d¦  «        |j        | j	                 j        d         |	| j        j        d ¦  «        }
|
                     d¦  «        }
n€|�`t           j                             || j        |j        d         z
  df¦  «        }|                     || j	        ¦  «        d| j         d …f         }t-          ||	| j        j        d |¬¦  «        }
||
z  }|                      |                     dd¦  «                             ¦   «         ¦  «        }|S )	Nr:   éþÿÿÿr   rt   r   r9   .)Ú
activationrð   )rß   rí   ry   Úchunkrì   r0   rÔ   ÚsizeÚhas_previous_staterÅ   r#   ÚsqueezeÚlayersÚconv_statesr�   rŸ   r   r»   Úpadré   rG   Úupdate_conv_stater"   rÌ   r½   )r2   r}   rÒ   r²   rð   ÚBCxÚBÚCÚBxÚconv_weightsÚconv_outÚ
conv_stateÚys                r5   Úcuda_kernels_forwardz"Lfm2ShortConv.cuda_kernels_forwardF  s¿  € õ )¨¨NÑ;Ô;ˆØ�lŠl˜1‰oŒo×'Ò'¨¨BÑ/Ô/ˆØ—)’)˜A 2�)Ñ&Ô&‰ˆˆ1ˆaà�‰Uˆà”yÔ'×,Ò,¨T¬YÔ-=×-BÒ-BÀ1Ñ-EÔ-EÀtÄyÔGW×G\ÒG\Ð]^ÑG_ÔG_Ñ`Ô`ˆØÐ&¨?×+MÒ+MÈdÌnÑ+]Ô+]Ð&Ý+Ø—
’
˜2‘”ØÔ& t¤~Ô6ÔBÀ1ÔEØØ”	”Øñô ˆHð  ×)Ò)¨"Ñ-Ô-ˆHˆHàÐ*Ýœ]×.Ò.¨r°D´LÀ2Ä8ÈBÄ<Ñ4OÐQRÐ3SÑTÔT�
Ø,×>Ò>¸zÈ4Ì>ÑZÔZÐ[^ÐaeÔamÐ`mÐ`oÐ`oÐ[oÔp�
õ (¨¨L¸$¼)¼.ÐUYÐcjÐkÑkÔkˆHà�‰LˆØ�MŠM˜!Ÿ+š+ b¨"Ñ-Ô-×8Ò8Ñ:Ô:Ñ;Ô;ˆØˆr6   c           
      ó(  — |j         d         }t          ||¦  «        }|                      |¦  «                             dd¦  «        }|                     dd¬¦  «        \  }}}||z  }	|�º|                     | j        ¦  «        r |                     |	| j        ¦  «        d| j         d …f         }
t          j
        |
                     |	j        ¦  «        | j        j        d d …dd d …f         z  d¬¦  «        }| j        r|| j        j        z  }|                     d¦  «        }�n-|��©|j         d         dk    �r—|�`t"          j                             |	| j        |	j         d         z
  df¦  «        }
|                     |
| j        ¦  «        d| j         d …f         }
|d         }|dd …         |d d…         k                         d¬	¦  «        d         dz   }t          j        |                     d¦  «        ||                     d
|                     ¦   «         ¦  «        g¦  «                             ¦   «         }g }t5          t7          |¦  «        dz
  ¦  «        D ]_}||         ||dz            }}||k    rD|                     |                      |	d d …d d …||…f         ¦  «        dd ||z
  …f         ¦  «         Œ`t          j        |d¬¦  «        }n�|�`t"          j                             |	| j        |	j         d         z
  df¦  «        }
|                     |
| j        ¦  «        d| j         d …f         }
|                      |	¦  «        dd |…f         }||z  }|                     dd¦  «                             ¦   «         }|                      |¦  «        }|S )Nr    r:   rò   r   rt   .r   T)Úas_tuple©r    )rG   rß   rí   ry   rô   rö   rÅ   rû   ré   r.   Úsumr=   ra   rì   r0   r�   rŸ   r   r»   rú   Únonzerorz   Ú	new_zerosÚnew_fullÚnumelÚtolistÚrangeÚlenÚappendr½   rÌ   )r2   r}   rÒ   r²   rð   Úseqlenrü   rý   rþ   rÿ   r  r  ÚsiÚchangeÚboundsÚpartsÚiÚsÚer  s                       r5   Úslow_forwardzLfm2ShortConv.slow_forwardi  sr  € ð ”˜”ˆå(¨¨NÑ;Ô;ˆØ�lŠl˜1‰oŒo×'Ò'¨¨BÑ/Ô/ˆØ—)’)˜A 2�)Ñ&Ô&‰ˆˆ1ˆaà�‰UˆàÐ&¨?×+MÒ+MÈdÌnÑ+]Ô+]Ð&Ø(×:Ò:¸2¸t¼~ÑNÔNÈsÐUYÔUaÐTaÐTcÐTcÐOcÔdˆJÝ”y §¢¨r¬yÑ!9Ô!9¸D¼IÔ<LÈQÈQÈQÐPQÐSTÐSTÐSTÈWÔ<UÑ!UÐ[]Ð^Ñ^Ô^ˆHØŒyð +Ø˜DœIœNÑ*�à×)Ò)¨"Ñ-Ô-ˆH‰HØÑ  Q¤W¨Q¤Z°1¢_¡_àÐ*Ýœ]×.Ò.¨r°D´LÀ2Ä8ÈBÄ<Ñ4OÐQRÐ3SÑTÔT�
Ø,×>Ò>¸zÈ4Ì>ÑZÔZÐ[^ÐaeÔamÐ`mÐ`oÐ`oÐ[oÔp�
Ø˜”ˆBØ˜˜˜”f  3 B 3¤Ò'×0Ò0¸$Ð0Ñ?Ô?ÀÔBÀQÑFˆFÝ”Y × 0Ò 0°Ñ 3Ô 3°V¸V¿_º_ÈTÐSU×S[ÒS[ÑS]ÔS]Ñ=^Ô=^Ð_Ñ`Ô`×gÒgÑiÔiˆFØˆEÝ�3˜v™;œ;¨™?Ñ+Ô+ð Ið I�Ø˜a”y &¨¨Q©¤-�1�Ø�q’5�5Ø—L’L §¢¨2¨a¨a¨a°°°°A°a°C¨i¬=Ñ!9Ô!9¸#¸wÀÀQÁ¸w¸,Ô!GÑHÔHÐHøÝ”y ¨BÐ/Ñ/Ô/ˆHˆHàÐ*Ýœ]×.Ò.¨r°D´LÀ2Ä8ÈBÄ<Ñ4OÐQRÐ3SÑTÔT�
Ø,×>Ò>¸zÈ4Ì>ÑZÔZÐ[^ÐaeÔamÐ`mÐ`oÐ`oÐ[oÔp�
à—y’y ‘}”} S¨'¨6¨' \Ô2ˆHà�‰LˆØ�KŠK˜˜BÑÔ×*Ò*Ñ,Ô,ˆØ�MŠM˜!ÑÔˆØˆr6   rì   r7   c                 ó¬   — t           r5d|j        j        v r't          ¦   «         s|                      ||||¬¦  «        S |                      ||||¬¦  «        S )NÚcuda)rð   )Úis_fast_path_availablera   rw   r   r  r  )r2   r7   rÒ   r²   rð   s        r5   rD   zLfm2ShortConv.forward™  se   € õ "ð 	n f°Ô0DÔ0IÐ&IÐ&IÕRjÑRlÔRlÐ&IØ×,Ò,¨]¸OÈ^ÐelÐ,ÑmÔmÐmØ× Ò  °ÀÐY`Ð ÑaÔaÐar6   r„   )rI   rJ   rK   r!   r‡   r,   r.   rM   r   Ú	IntTensorr  r  r   rD   rN   rO   s   @r5   rá   rá   -  s�  ø€ € € € € ð8àð8ð ð8ð 8ð 8ð 8ð 8ð 8ð6 )-Ø.2Ø*.ð!ð !àŒ<ð!ð  ™ð!ð œ tÑ+ð	!ð
 ” 4Ñ'ð!ð !ð !ð !ðL )-Ø.2Ø*.ð.ð .àŒ<ð.ð  ™ð.ð œ tÑ+ð	.ð
 ” 4Ñ'ð.ð .ð .ð .ð` Ð˜FÑ#Ô#ð )-Ø.2Ø*.ð	bð 	bà”|ð	bð  ™ð	bð œ tÑ+ð		bð
 ” 4Ñ'ð	bð 	bð 	bñ $Ô#ð	bð 	bð 	bð 	bð 	br6   rá   c                   ó¶   ‡ — e Zd Zdedefˆ fd„Z	 	 	 	 ddej        deej        ej        f         dz  dej        dz  dej	        dz  d	e
dz  d
ej        fd„Zˆ xZS )ÚLfm2DecoderLayerrS   rÅ   c                 ó€  •— t          ¦   «                              ¦   «          |j        |         dk    | _        | j        rt	          ||¦  «        | _        nt          ||¦  «        | _        t          |¦  «        | _	        t          |j        |j        ¬¦  «        | _        t          |j        |j        ¬¦  «        | _        d S )NÚfull_attentionrÇ   )r+   r,   rî   Úis_attention_layerrÄ   Ú	self_attnrá   rì   rŠ   Úfeed_forwardr&   r3   rÍ   Úoperator_normÚffn_normrÐ   s      €r5   r,   zLfm2DecoderLayer.__init__§  s£   ø€ Ý‰Œ×ÒÑÔÐØ"(Ô"4°YÔ"?ÐCSÒ"SˆÔàÔ"ð 	9Ý*¨6°9Ñ=Ô=ˆDŒNˆNå% f¨iÑ8Ô8ˆDŒIÝ# F™OœOˆÔÝ(¨Ô);ÀÄÐQÑQÔQˆÔÝ# FÔ$6¸F¼OÐLÑLÔLˆŒˆˆr6   Nr7   rÑ   r²   r~   rÒ   r)   c           	      óJ  — |}| j         r* | j        d|                      |¦  «        ||||dœ|¤Ž\  }}n?|                      |                      |¦  «        |||                     d¦  «        ¬¦  «        }||z   }||                      |                      |¦  «        ¦  «        z   }|S )N)r7   rÑ   r²   r~   rÒ   rð   )r7   rÒ   r²   rð   © )r"  r#  r%  rì   Úgetr$  r&  )	r2   r7   rÑ   r²   r~   rÒ   rµ   ÚresidualÚ_s	            r5   rD   zLfm2DecoderLayer.forward³  sÕ   € ð !ˆØÔ"ð 	Ø-˜tœ~ð  Ø"×0Ò0°Ñ?Ô?Ø$7Ø-Ø)Ø /ð ð  ð ð ð  ÑˆM˜1˜1ð !ŸIšIØ"×0Ò0°Ñ?Ô?Ø /Ø-ØŸ
š
 9Ñ-Ô-ð	 &ñ ô ˆMð &¨Ñ0ˆØ%¨×(9Ò(9¸$¿-º-ÈÑ:VÔ:VÑ(WÔ(WÑWˆàÐr6   )NNNN)rI   rJ   rK   r!   r‡   r,   r.   rM   rF   Ú
LongTensorr   rD   rN   rO   s   @r5   r  r  ¦  sà   ø€ € € € € ð
M˜zð 
M°cð 
Mð 
Mð 
Mð 
Mð 
Mð 
Mð IMØ.2Ø04Ø(,ðð à”|ðð # 5¤<°´Ð#=Ô>ÀÑEðð œ tÑ+ð	ð
 Ô&¨Ñ-ðð  ™ðð 
Œðð ð ð ð ð ð ð r6   r  c                   óP   — e Zd ZU eed<   dZdZdgZdgZdZ	dZ
dZdZdZeedœZdZdS )ÚLfm2PreTrainedModelrS   ÚmodelTr  rÒ   )r7   Ú
attentionsN)rI   rJ   rK   r!   r…   Úbase_model_prefixÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_can_compile_fullgraphÚ_supports_attention_backendr  rÄ   Ú_can_record_outputsÚ_is_statefulr(  r6   r5   r.  r.  Ó  sq   € € € € € € àÐÐÑØÐØ&*Ð#Ø+Ð,ÐØ#4Ð"5ÐØÐØ€NØÐà!ÐØ"&Ðà)Ø#ðð Ðð €L€L€Lr6   r.  c                   óâ   ‡ — e Zd Z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e         defd„¦   «         ¦   «         ¦   «         Zˆ xZS )Ú	Lfm2ModelrS   c                 óÞ  •‡— t          ¦   «                              ‰¦  «         ‰j        | _        ‰j        | _        t          j        ‰j        ‰j        | j        ¦  «        | _        t          j	        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        t          ‰¬¦  «        | _        d| _        t!          ‰j        ‰j        ¬¦  «        | _        |                      ¦   «          d S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r(  )r  )Ú.0rÅ   rS   s     €r5   ú
<listcomp>z&Lfm2Model.__init__.<locals>.<listcomp>ð  s$   ø€ ÐbÐbÐb°YÕ˜f iÑ0Ô0ÐbÐbÐbr6   ©rS   FrÇ   )r+   r,   Úpad_token_idÚpadding_idxÚ
vocab_sizer   Ú	Embeddingr3   Úembed_tokensÚ
ModuleListr  Únum_hidden_layersrø   rQ   Ú
rotary_embÚgradient_checkpointingr&   rÍ   Úembedding_normÚ	post_init©r2   rS   r4   s    `€r5   r,   zLfm2Model.__init__é  sÔ   øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø!Ô.ˆÔØ Ô+ˆŒåœL¨Ô):¸FÔ<NÐPTÔP`ÑaÔaˆÔÝ”mØbÐbÐbÐbÅ%ÈÔH`ÑBaÔBaÐbÑbÔbñ
ô 
ˆŒõ .°VÐ<Ñ<Ô<ˆŒØ&+ˆÔ#Ý)¨&Ô*<À&Ä/ÐRÑRÔRˆÔð 	�ŠÑÔÐÐÐr6   NÚ	input_idsr²   r~   rÒ   Úinputs_embedsÚ	use_cacherµ   r)   c           	      óÚ  — |d u |d uz  rt          d¦  «        ‚|€|                      |¦  «        }|r|€t          | j        ¬¦  «        }|€V|�|                     ¦   «         nd}t          j        |j        d         |j        ¬¦  «        |z   }| 	                    d¦  «        }t          |x}	t          ¦  «        s&| j        ||||dœ}
t          di |
¤Žt          di |
¤Ždœ}	|}|                      ||¬¦  «        }t          | j        d | j        j        …         ¦  «        D ])\  }} ||f|	| j        j        |                  |||d	œ|¤Ž}Œ*|                      |¦  «        }t)          ||¬
¦  «        S )Nz:You must specify exactly one of input_ids or inputs_embedsrB  r   r    )ra   )rS   rP  r²   rÒ   r~   )r!  rì   )r~   )r²   rÑ   r~   rÒ   )Úlast_hidden_staterÒ   r(  )Ú
ValueErrorrG  r   rS   Úget_seq_lengthr.   rj   rG   ra   rŸ   rv   Údictr   r   rJ  Ú	enumeraterø   rI  rî   rL  r   )r2   rO  r²   r~   rÒ   rP  rQ  rµ   Úpast_seen_tokensÚcausal_mask_mappingÚmask_kwargsr7   rÑ   r  Údecoder_layers                  r5   rD   zLfm2Model.forwardù  sè  € ð ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàÐ Ø ×-Ò-¨iÑ8Ô8ˆMàð 	?˜Ð0Ý*°$´+Ð>Ñ>Ô>ˆOàÐØCRÐC^˜×=Ò=Ñ?Ô?Ð?ÐdeÐÝ œ<¨Ô(;¸AÔ(>À}ÔG[Ð\Ñ\Ô\Ð_oÑoˆLØ'×1Ò1°!Ñ4Ô4ˆLå°Ð?Ð-ÅÑFÔFð 	àœ+Ø!.Ø"0Ø#2Ø ,ðð ˆKõ #5Ð"CÐ"C°{Ð"CÐ"CÝ7ÐFÐF¸+ÐFÐFð#ð #Ðð
 &ˆØ"Ÿošo¨mÈ,˜oÑWÔWÐõ !*¨$¬+Ð6U¸¼Ô8UÐ6UÔ*VÑ WÔ Wð 	ð 	ÑˆAˆ}Ø)˜MØðà2°4´;Ô3JÈ1Ô3MÔNØ$7Ø)Ø /ðð ð ðð ˆMˆMð ×+Ò+¨MÑ:Ô:ˆå&Ø+Ø+ð
ñ 
ô 
ð 	
r6   )NNNNNN)rI   rJ   rK   r!   r,   r   r   r   r.   r,  rM   r   ÚFloatTensorÚboolr   r   r   rD   rN   rO   s   @r5   r=  r=  ç  s  ø€ € € € € ð˜zð ð ð ð ð ð ð   ØØð .2Ø.2Ø04Ø(,Ø26Ø!%ð8
ð 8
àÔ# dÑ*ð8
ð œ tÑ+ð8
ð Ô&¨Ñ-ð	8
ð
  ™ð8
ð Ô(¨4Ñ/ð8
ð ˜$‘;ð8
ð Ð+Ô,ð8
ð 
!ð8
ð 8
ð 8
ñ „^ñ „_ñ  Ôð8
ð 8
ð 8
ð 8
ð 8
r6   r=  c                   ó  ‡ — e Zd ZddiZddiZddgdgfiZˆ fd„Z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	j
        dz  dedz  dee	j        z  dee         defd„¦   «         ¦   «         Zˆ xZS )ÚLfm2ForCausalLMzlm_head.weightzmodel.embed_tokens.weightÚlm_headÚcolwise_gather_outputr7   Úlogitsc                 óþ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        |j        | _        t          j        |j        |j        d¬¦  «        | _        |  	                    ¦   «          d S )NFrŒ   )
r+   r,   r=  r/  rE  r   r’   r3   r`  rM  rN  s     €r5   r,   zLfm2ForCausalLM.__init__=  sj   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý˜vÑ&Ô&ˆŒ
Ø Ô+ˆŒÝ”y Ô!3°VÔ5FÈUÐSÑSÔSˆŒð 	�ŠÑÔÐÐÐr6   Nr   rO  r²   r~   rÒ   rP  ÚlabelsrQ  Úlogits_to_keeprµ   r)   c	           
      óP  —  | j         d||||||dœ|	¤Ž}
|
j        }t          |t          ¦  «        rt	          | d¦  «        n|}|                      |dd…|dd…f         ¦  «        }d}|� | j        d||| j        j        dœ|	¤Ž}t          |||
j
        |
j        |
j        ¬¦  «        S )aÉ  
        Example:

        ```python
        >>> from transformers import AutoTokenizer, Lfm2ForCausalLM

        >>> model = Lfm2ForCausalLM.from_pretrained("meta-lfm2/Lfm2-2-7b-hf")
        >>> tokenizer = AutoTokenizer.from_pretrained("meta-lfm2/Lfm2-2-7b-hf")

        >>> prompt = "Hey, are you conscious? Can you talk to me?"
        >>> inputs = tokenizer(prompt, return_tensors="pt")

        >>> # Generate
        >>> generate_ids = model.generate(inputs.input_ids, max_length=30)
        >>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
        "Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."
        ```)rO  r²   r~   rÒ   rP  rQ  N)rb  rd  rE  )Úlossrb  rÒ   r7   r0  r(  )r/  rS  rv   r‡   Úslicer`  Úloss_functionrS   rE  r   rÒ   r7   r0  )r2   rO  r²   r~   rÒ   rP  rd  rQ  re  rµ   Úoutputsr7   Úslice_indicesrb  rg  s                  r5   rD   zLfm2ForCausalLM.forwardF  sô   € ð> ,6¨4¬:ð ,
ØØ)Ø%Ø+Ø'Øð,
ð ,
ð ð,
ð ,
ˆð  Ô1ˆå8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜m¨A¨A¨A¨}¸a¸a¸aÐ,?Ô@ÑAÔAˆàˆØÐØ%�4Ô%Ðp¨V¸FÈtÌ{ÔOeÐpÐpÐioÐpÐpˆDå%ØØØ#Ô3Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
r6   )NNNNNNNr   )rI   rJ   rK   Ú_tied_weights_keysÚ_tp_planÚ_pp_planr,   r   r   r.   r,  rM   r   r\  r]  r‡   r   r   r   rD   rN   rO   s   @r5   r_  r_  7  sK  ø€ € € € € à*Ð,GÐHÐØÐ2Ð3€HØ˜_Ð-°¨zÐ:Ð;€Hðð ð ð ð ð Øð .2Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø-.ð6
ð 6
àÔ# dÑ*ð6
ð œ tÑ+ð6
ð Ô&¨Ñ-ð	6
ð
  ™ð6
ð Ô(¨4Ñ/ð6
ð Ô  4Ñ'ð6
ð ˜$‘;ð6
ð ˜eœlÑ*ð6
ð Ð+Ô,ð6
ð 
 ð6
ð 6
ð 6
ñ „^ñ Ôð6
ð 6
ð 6
ð 6
ð 6
r6   r_  )r_  r=  r.  r  )r­   )KÚcollections.abcr   Útypingr   r.   Útorch.nn.functionalr   r»   r—   Úcache_utilsr   r   Ú
generationr	   Úintegrationsr
   r   r   Úintegrations.accelerater   Úmasking_utilsr   r   Úmodeling_layersr   Úmodeling_outputsr   r   Úmodeling_rope_utilsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   r   Úutils.import_utilsr   r   Úutils.output_capturingr   Úconfiguration_lfm2r!   Úcausal_conv1dr"   r#   ÚModuler&   rQ   rŠ   rœ   r¥   rM   r‡   r¬   rL   rÂ   rÄ   rß   Úkernel_modulesÚallr  rá   r  r.  r=  r_  Ú__all__r(  r6   r5   ú<module>r†     s$  ðð( %Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø )Ð )Ð )Ð )Ð )Ð )Ø fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fØ =Ð =Ð =Ð =Ð =Ð =Ø PÐ PÐ PÐ PÐ PÐ PÐ PÐ PØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø *Ð *Ð *Ð *Ð *Ð *ð ÐÑÔð 8ØDÐDÐDÐDÐDÐDÐDÐDÐDà-7Ñ*ÐÐ*ð Ð˜YÑ'Ô'ðJð Jð Jð Jð J�"”)ñ Jô Jñ (Ô'ðJð(><ð ><ð ><ð ><ð ><˜"œ)ñ ><ô ><ð ><ðB8ð 8ð 8ð 8ð 8ˆbŒiñ 8ô 8ð 8ð((ð (ð (ð ÐÐ*Ñ+Ô+ðð ð ñ ,Ô+ðð2	U˜Uœ\ð 	U°#ð 	U¸%¼,ð 	Uð 	Uð 	Uð 	Uð& ð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð ð%ð ð%ð Ð'Ô(ð%ð %ð %ð %ð2 ÐÐ)Ñ*Ô*ð7$ð 7$ð 7$ð 7$ð 7$�B”Iñ 7$ô 7$ñ +Ô*ð7$ðt	ð 	ð 	ð #Ð$8Ð9€Ø˜˜^Ñ,Ô,Ð ðvbð vbð vbð vbð vb�B”Iñ vbô vbð vbðr*ð *ð *ð *ð *Ð1ñ *ô *ð *ðZ ðð ð ð ð ˜/ñ ô ñ „ðð& ðL
ð L
ð L
ð L
ð L
Ð#ñ L
ô L
ñ „ðL
ð^ ðF
ð F
ð F
ð F
ð F
Ð)¨?ñ F
ô F
ñ „ðF
ðR BÐ
AÐ
A€€€r6   