§
    ‚Štj‚r  ã                   óÒ  — d dl 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 ddl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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( ddl)m*Z*m+Z+m,Z, ddl-m.Z. ddl/m0Z0m1Z1 ddl2m3Z3  e!j4        e5¦  «        Z6 G d„ de+¦  «        Z7 G d„ de*¦  «        Z8 G d„ dej9        ¦  «        Z: G d„ d e.¦  «        Z; G d!„ d"e0¦  «        Z< G d#„ d$ej9        ¦  «        Z= G d%„ d&e¦  «        Z> G d'„ d(e¦  «        Z?e>e?d)œZ@ G d*„ d+e¦  «        ZAe  G d,„ d-eA¦  «        ¦   «         ZB G d.„ d/e1¦  «        ZC G d0„ d1eeA¦  «        ZDg d2¢ZEdS )3é    )ÚCallableN)Únné   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)Úlazy_load_kernel)Úforce_accelerate_hooks)Úcreate_causal_maskÚcreate_recurrent_attention_mask)Ú GenericForSequenceClassificationÚGradientCheckpointingLayer)ÚMoeCausalLMOutputWithPastÚMoeModelOutputWithPast)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚlogging)Úmerge_with_config_defaults)Úresolve_internal_import)ÚOutputRecorderÚcapture_outputsé   )ÚLlamaAttentionÚLlamaRMSNormÚeager_attention_forward)Ú
MistralMLP)ÚMixtralExpertsÚMixtralForCausalLMé   )ÚJambaConfigc                   ó   — e Zd ZdS )ÚJambaRMSNormN©Ú__name__Ú
__module__Ú__qualname__© ó    úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/jamba/modular_jamba.pyr&   r&   /   ó   € € € € € Ø€Dr,   r&   c                   ó    ‡ — e Zd Zdedefˆ fd„Z	 	 ddej        dej        dz  dedz  de	e
         d	eej        ej        dz  f         f
d
„Zˆ xZS )ÚJambaAttentionÚconfigÚ	layer_idxc                 ó¼  •— t          ¦   «                              ||¦  «         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¬¦  «        | _        d S ©NF©Úbias)ÚsuperÚ__init__r   ÚLinearÚhidden_sizeÚnum_attention_headsÚhead_dimÚq_projÚnum_key_value_headsÚk_projÚv_projÚo_proj)Úselfr1   r2   Ú	__class__s      €r-   r8   zJambaAttention.__init__4   s¿   ø€ Ý‰Œ×Ò˜ Ñ+Ô+Ð+Ý”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ˆŒÝ”i Ô :¸T¼]Ñ JÈFÔL^ÐejÐkÑkÔkˆŒˆˆr,   NÚhidden_statesÚattention_maskÚpast_key_valuesÚkwargsÚreturnc                 óî  — |j         d d…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }	|�|                     ||	| j        ¦  «        \  }}	t          j
        | j        j        t          ¦  «        }
 |
| |||	|f| j        sdn| j        | j        dœ|¤Ž\  }} |j        g |¢d‘R Ž                      ¦   «         }|                      |¦  «        }||fS )Néÿÿÿÿr#   r   ç        )ÚdropoutÚscaling)Úshaper<   r=   ÚviewÚ	transposer?   r@   Úupdater2   r   Úget_interfacer1   Ú_attn_implementationr   ÚtrainingÚattention_dropoutrM   ÚreshapeÚ
contiguousrA   )rB   rD   rE   rF   rG   Úinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚattention_interfaceÚattn_outputÚattn_weightss                r-   ÚforwardzJambaAttention.forward;   s�  € ð $Ô)¨#¨2¨#Ô.ˆØ8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆà—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆØ—[’[ Ñ/Ô/×4Ò4°\ÑBÔB×LÒLÈQÐPQÑRÔRˆ
Ø—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆàÐ&Ø'6×'=Ò'=¸jÈ,ÐX\ÔXfÑ'gÔ'gÑ$ˆJ˜å(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð	%
ð  $œ}ÐH�C�C°$Ô2HØ”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—k’k +Ñ.Ô.ˆØ˜LÐ(Ð(r,   ©NN)r(   r)   r*   r$   Úintr8   ÚtorchÚTensorr   r   r   Útupler`   Ú__classcell__©rC   s   @r-   r0   r0   3   sÊ   ø€ € € € € ðl˜{ð l°sð lð lð lð lð lð lð /3Ø(,ð	")ð ")à”|ð")ð œ tÑ+ð")ð  ™ð	")ð
 Ð+Ô,ð")ð 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ð")ð ")ð ")ð ")ð ")ð ")ð ")ð ")r,   r0   c                   óØ   ‡ — e Zd ZdZdefˆ fd„Z	 	 ddej        dedz  dej	        dz  fd„Z
ddedz  dej	        dz  fd	„Z ed
¦  «        	 	 ddedz  dej	        dz  fd„¦   «         Zˆ xZS )ÚJambaMambaMixeruƒ  
    Compute âˆ†, A, B, C, and D the state space parameters and compute the `contextualized_states`.
    A, D are input independent (see Mamba paper [1] Section 3.5.2 "Interpretation of A" for why A isn't selective)
    âˆ†, B, C are input-dependent (this is a key difference between Mamba and the linear time invariant S4,
    and is why Mamba is called **selective** state spaces)
    r1   c           	      ó  •— t          ¦   «                              ¦   «          || _        || _        |j        | _        |j        | _        |j        | _        |j	        |j        z  | _
        |j        | _        |j        | _        |j        | _        t#          j        | j
        | j
        | j        | j        | j
        | j        dz
  ¬¦  «        | _        |j        | _        t,          |j                 | _        t#          j        | j        | j
        dz  | j        ¬¦  «        | _        t#          j        | j
        | j        | j        dz  z   d¬¦  «        | _        t#          j        | j        | j
        d¬¦  «        | _        t9          j        d| j        dz   ¦  «        d d d …f         }|                     | j
        d¦  «                             ¦   «         }t#          j         t9          j!        |¦  «        ¦  «        | _"        t#          j         t9          j#        | j
        ¦  «        ¦  «        | _$        t#          j        | j
        | j        | j        ¬¦  «        | _%        tM          | j        |j'        ¬¦  «        | _(        tM          | j        |j'        ¬¦  «        | _)        tM          | j        |j'        ¬¦  «        | _*        tW          d	¦  «        }tY          |d
d ¦  «        a-tY          |dd ¦  «        a.tW          d¦  «        }t_          |d¬¦  «        a0tY          |dd ¦  «        a1tY          |dd ¦  «        a2tg          t`          tb          t\          tZ          td          f¦  «        a4th          stj           6                    d¦  «         |j7        |         | _8        d S )Nr#   )Úin_channelsÚout_channelsr6   Úkernel_sizeÚgroupsÚpaddingr   r5   FTrJ   ©Úepszcausal-conv1dÚcausal_conv1d_updateÚcausal_conv1d_fnz	mamba-ssmz8ops.triton.selective_state_update.selective_state_update)Úchained_pathÚselective_scan_fnÚmamba_inner_fna  The fast path is not available because on of `(selective_state_update, selective_scan_fn, causal_conv1d_fn, causal_conv1d_update, mamba_inner_fn)` is None. To install follow https://github.com/state-spaces/mamba/#installation and https://github.com/Dao-AILab/causal-conv1d.)9r7   r8   r1   r2   r:   Úmamba_d_stateÚssm_state_sizeÚmamba_d_convÚconv_kernel_sizeÚmamba_expandÚintermediate_sizeÚmamba_dt_rankÚtime_step_rankÚmamba_conv_biasÚuse_conv_biasÚmamba_proj_biasÚuse_biasr   ÚConv1dÚconv1dÚ
hidden_actÚ
activationr   Úactr9   Úin_projÚx_projÚdt_projrc   ÚarangeÚexpandrW   Ú	ParameterÚlogÚA_logÚonesÚDÚout_projr&   Úrms_norm_epsÚdt_layernormÚb_layernormÚc_layernormr
   Úgetattrrr   rs   r   Úselective_state_updateru   rv   ÚallÚis_fast_path_availableÚloggerÚwarning_onceÚlayer_typesÚ
layer_type)rB   r1   r2   ÚAÚcausal_conv1dÚ	mamba_ssmrC   s         €r-   r8   zJambaMambaMixer.__init__h   s'  ø€ Ý‰Œ×ÒÑÔÐØˆŒØ"ˆŒØ!Ô-ˆÔØ$Ô2ˆÔØ &Ô 3ˆÔØ!'Ô!4°vÔ7IÑ!IˆÔØ$Ô2ˆÔØ#Ô3ˆÔØÔ.ˆŒÝ”iØÔ.ØÔ/ØÔ#ØÔ-ØÔ)ØÔ)¨AÑ-ð
ñ 
ô 
ˆŒð !Ô+ˆŒÝ˜&Ô+Ô,ˆŒõ ”y Ô!1°4Ô3IÈAÑ3MÐTXÔTaÐbÑbÔbˆŒå”i Ô 6¸Ô8KÈdÔNaÐdeÑNeÑ8eÐlqÐrÑrÔrˆŒå”y Ô!4°dÔ6LÐSWÐXÑXÔXˆŒõ ŒL˜˜DÔ/°!Ñ3Ñ4Ô4°T¸1¸1¸1°WÔ=ˆØ�HŠH�TÔ+¨RÑ0Ô0×;Ò;Ñ=Ô=ˆå”\¥%¤)¨A¡,¤,Ñ/Ô/ˆŒ
Ý”�eœj¨Ô)?Ñ@Ô@ÑAÔAˆŒÝœ	 $Ô"8¸$Ô:JÐQUÔQ^Ð_Ñ_Ô_ˆŒå(¨Ô)<À&ÔBUÐVÑVÔVˆÔÝ'¨Ô(;ÀÔATÐUÑUÔUˆÔÝ'¨Ô(;ÀÔATÐUÑUÔUˆÔõ )¨Ñ9Ô9ˆÝ& }Ð6LÈdÑSÔSÐÝ" =Ð2DÀdÑKÔKÐõ % [Ñ1Ô1ˆ	Ý!8ØÐ$^ð"
ñ "
ô "
Ðõ $ IÐ/BÀDÑIÔIÐÝ  Ð,<¸dÑCÔCˆõ "%Ý#Õ%6Õ8HÕJ^Õ`nÐoñ"
ô "
Ðõ &ð 	Ý×ÒðRñô ð ð
 !Ô,¨YÔ7ˆŒˆˆr,   NrD   Úcache_paramsrE   c                 óF	  — |j         \  }}}|d uo|                     | j        ¦  «        o|dk    }|                      |¦  «                             dd¦  «        }|                     dd¬¦  «        \  }}	|�||                     d¦  «        z  }| j        j         	                    | j        j         
                    d¦  «        | j        j         
                    d¦  «        ¦  «        }
|rft          |                     d¦  «        |j        | j                 j        d         |
| j        j        | j        ¦  «        }|                     d¦  «        }nt|�Pt"          j                             || j        |j         d         z
  df¦  «        }|                     || j        ¦  «         t-          ||
| j        j        | j        ¬¦  «        }|�||                     d¦  «        z  }|                      |                     dd¦  «        ¦  «        }t1          j        || j        | j        | j        gd¬¦  «        \  }}}|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }| j        j        j         }t1          j!        ¦   «         5  t1          j"        | j        j        j         ¦  «        | j        j        _         d d d ¦  «         n# 1 swxY w Y   |                      |¦  «                             dd¦  «        }t1          j!        ¦   «         5  || j        j        _         d d d ¦  «         n# 1 swxY w Y   t1          j#        | j$         %                    ¦   «         ¦  «         }|�| %                    ¦   «         nd }|rstM          |j        | j                 j'        d         |d         |d         ||d d …df         |d d …df         | j(        |	d         |d¬	¦
  «
                             d¦  «        }nztS          ||||                     dd¦  «        |                     dd¦  «        | j(         %                    ¦   «         |	|dd¬
¦
  «
        \  }}|�|�| *                    || j        ¦  «         |  +                    |                     dd¦  «        ¦  «        }|S )Nr#   r   ©Údimr   rJ   )r†   ).r   T)Údt_softplus)Údelta_softplusÚreturn_last_state),rN   Úhas_previous_stater2   rˆ   rP   ÚchunkÚ	unsqueezer„   ÚweightrO   Úsizerr   ÚsqueezeÚlayersÚconv_statesr6   r†   r   Ú
functionalÚpadrz   Úupdate_conv_staters   r‰   rc   Úsplitr~   rx   r”   r•   r–   rŠ   ÚdataÚno_gradÚ
zeros_likeÚexpr�   Úfloatr˜   Úrecurrent_statesr‘   ru   Úupdate_recurrent_stater’   )rB   rD   r¢   rE   Ú
batch_sizeÚseq_lenÚ_Úuse_precomputed_statesÚprojected_statesÚgateÚconv_weightsr°   Ússm_parametersÚ	time_stepÚBÚCÚtime_proj_biasÚdiscrete_time_steprŸ   Úscan_outputsÚ	ssm_stateÚcontextualized_statess                         r-   Úcuda_kernels_forwardz$JambaMambaMixer.cuda_kernels_forward­   s
  € ð "/Ô!4Ñˆ
�G˜Qà Ð$Ði¨×)HÒ)HÈÌÑ)XÔ)XÐiÐ]dÐhiÒ]ið 	ð  Ÿ<š<¨Ñ6Ô6×@Ò@ÀÀAÑFÔFÐð /×4Ò4°Q¸AÐ4Ñ>Ô>Ñˆ�tàÐ%Ø)¨N×,DÒ,DÀQÑ,GÔ,GÑGˆMð ”{Ô)×.Ò.¨t¬{Ô/A×/FÒ/FÀqÑ/IÔ/IÈ4Ì;ÔK]×KbÒKbÐcdÑKeÔKeÑfÔfˆØ!ð 	xÝ0Ø×%Ò% bÑ)Ô)ØÔ# D¤NÔ3Ô?ÀÔBØØ”Ô Ø”ñô ˆMð *×3Ò3°BÑ7Ô7ˆMˆMàÐ'Ý œm×/Ò/°ÀÔ@UÐXeÔXkÐlnÔXoÑ@oÐqrÐ?sÑtÔt�Ø×.Ò.¨{¸D¼NÑKÔKÐKÝ,¨]¸LÈ$Ì+ÔJZÐgkÔgvÐwÑwÔwˆMàÐ%Ø)¨N×,DÒ,DÀQÑ,GÔ,GÑGˆMð Ÿš ]×%<Ò%<¸QÀÑ%BÔ%BÑCÔCˆÝœ+Ø˜TÔ0°$Ô2EÀtÔGZÐ[Ðacð
ñ 
ô 
‰ˆ	�1�að ×%Ò% iÑ0Ô0ˆ	Ø×Ò˜QÑÔˆØ×Ò˜QÑÔˆð œÔ*Ô/ˆÝŒ]‰_Œ_ð 	Nð 	NÝ%*Ô%5°d´lÔ6GÔ6LÑ%MÔ%MˆDŒLÔÔ"ð	Nð 	Nð 	Nñ 	Nô 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nøøøð 	Nð 	Nð 	Nð 	Nà!Ÿ\š\¨)Ñ4Ô4×>Ò>¸qÀ!ÑDÔDÐÝŒ]‰_Œ_ð 	4ð 	4Ø%3ˆDŒLÔÔ"ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4õ ŒY�t”z×'Ò'Ñ)Ô)Ñ*Ô*Ð*ˆà3AÐ3M˜×-Ò-Ñ/Ô/Ð/ÐSWˆØ!ð 	OÝ1ØÔ# D¤NÔ3ÔDÀQÔGØ˜fÔ%Ø" 6Ô*ØØ�!�!�!�Q�$”Ø�!�!�!�Q�$”Ø”Ø�V”ØØ ðñ ô ÷ Ši˜‰mŒmð ˆLõ '8ØØ"ØØ—’˜A˜qÑ!Ô!Ø—’˜A˜qÑ!Ô!Ø”—’‘”ØØØ#Ø"&ð'ñ 'ô 'Ñ#ˆL˜)ð Ð$¨Ð)AØ×3Ò3°I¸t¼~ÑNÔNÐNð !%§¢¨l×.DÒ.DÀQÈÑ.JÔ.JÑ KÔ KÐà$Ð$s$   Ê3KËKËKÌL:Ì:L>ÍL>c           	      óÈ
  — |j         \  }}}|j        }|                      |¦  «                             dd¦  «        }|                     dd¬¦  «        \  }	}
|�|	|                     d¦  «        z  }	|�J|                     | j        ¦  «        r0|j        | j                 j	        d          
                    ¦   «         }n)t          j        || j        | j        f|	j        |¬¦  «        }|��`|                     | j        ¦  «        r³|dk    r­|                     |	| j        ¦  «        d| j         d …f         }t          j        || j        j        d d …dd d …f         z  d¬¦  «        }	| j        r|	| j        j        z  }	|                      |	¦  «                             |¦  «                             d¦  «        }	nÅt2          j                             |	| j        |	j         d         z
  df¦  «        }|                     || j        ¦  «        d| j         d …f         }|                      |                      |	¦  «        dd |…f         ¦  «        }	n2|                      |                      |	¦  «        dd |…f         ¦  «        }	|�|	|                     d¦  «        z  }	|                      |	                     dd¦  «        ¦  «        }t          j        || j        | j        | j        gd¬¦  «        \  }}}|                      |¦  «        }|                       |¦  «        }|  !                    |¦  «        }|  "                    |¦  «        }t2          j         #                    |¦  «                             dd¦  «        }t          j$        | j%         &                    ¦   «         ¦  «         }t          j$        |d d d …d d d …f         |d d …d d …d d …d f         z  ¦  «        }|d d …d d …d d …d f         |d d …d d d …d d …f          &                    ¦   «         z  }||	d d …d d …d d …d f          &                    ¦   «         z  }g }tO          |¦  «        D ]”}|d d …d d …|d d …f         |z  |d d …d d …|d d …f         z   }t          j(        |                     |¦  «        |d d …|d d …f                              d¦  «        ¦  «        }| )                    |d d …d d …df         ¦  «         Œ•t          j*        |d¬¦  «        }||	| j+        d d d …d f         z  z   }||                      |
¦  «        z  }|�| ,                    || j        ¦  «         |  -                    |                     dd¦  «        ¦  «        }|S )Nr#   r   r¤   r   )ÚdeviceÚdtype.rJ   ).rN   rÏ   rˆ   rP   rª   r«   r©   r2   r¯   rº   Úclonerc   Úzerosr|   rx   rÎ   r³   rz   Úsumr„   r¬   r€   r6   r‡   Útor   r±   r²   r‰   r´   r~   r”   r•   r–   rŠ   Úsoftplusr¸   r�   r¹   ÚrangeÚmatmulÚappendÚstackr‘   r»   r’   )rB   Úinput_statesr¢   rE   r¼   r½   r¾   rÏ   rÀ   rD   rÁ   rÊ   Ú
conv_staterÃ   rÄ   rÅ   rÆ   rÈ   rŸ   Ú
discrete_AÚ
discrete_BÚdeltaB_urÉ   ÚiÚscan_outputrË   s                             r-   Úslow_forwardzJambaMambaMixer.slow_forward  s�  € Ø!-Ô!3Ñˆ
�G˜QØÔ"ˆàŸ<š<¨Ñ5Ô5×?Ò?ÀÀ1ÑEÔEÐØ.×4Ò4°Q¸AÐ4Ñ>Ô>Ñˆ�tàÐ%Ø)¨N×,DÒ,DÀQÑ,GÔ,GÑGˆMàÐ#¨×(GÒ(GÈÌÑ(WÔ(WÐ#à$Ô+¨D¬NÔ;ÔLÈQÔO×UÒUÑWÔWˆIˆIåœØ˜TÔ3°TÔ5HÐIØ$Ô+°5ðñ ô ˆIð Ñ#Ø×.Ò.¨t¬~Ñ>Ô>ð TÀ7ÈaÂ<À<Ø)×;Ò;¸MÈ4Ì>ÑZÔZÐ[^ÐaeÔavÐ`vÐ`wÐ`wÐ[wÔx�
Ý %¤	¨*°t´{Ô7IÈ!È!È!ÈQÐPQÐPQÐPQÈ'Ô7RÑ*RÐXZÐ [Ñ [Ô [�ØÔ%ð 6Ø! T¤[Ô%5Ñ5�MØ $§¢¨Ñ 7Ô 7× :Ò :¸5Ñ AÔ A× KÒ KÈBÑ OÔ O��åœ]×.Ò.Ø!ØÔ*¨]Ô-@ÀÔ-DÑDÀaÐHñô �
ð *×;Ò;¸JÈÌÑWÔWÐX[Ð^bÔ^sÐ]sÐ]tÐ]tÐXtÔu�
Ø $§¢¨¯ª°]Ñ)CÔ)CÀCÈÈ'ÈÀMÔ)RÑ SÔ S��à ŸHšH T§[¢[°Ñ%?Ô%?ÀÀXÀgÀXÀÔ%NÑOÔOˆMàÐ%Ø)¨N×,DÒ,DÀQÑ,GÔ,GÑGˆMð Ÿš ]×%<Ò%<¸QÀÑ%BÔ%BÑCÔCˆÝœ+Ø˜TÔ0°$Ô2EÀtÔGZÐ[Ðacð
ñ 
ô 
‰ˆ	�1�að ×%Ò% iÑ0Ô0ˆ	Ø×Ò˜QÑÔˆØ×Ò˜QÑÔˆà!Ÿ\š\¨)Ñ4Ô4ÐÝœ]×3Ò3Ð4FÑGÔG×QÒQÐRSÐUVÑWÔWÐõ ŒY�t”z×'Ò'Ñ)Ô)Ñ*Ô*Ð*ˆÝ”Y˜q  q q q¨$°°°Ð!1Ô2Ð5GÈÈÈÈ1È1È1ÈaÈaÈaÐQUÈÔ5VÑVÑWÔWˆ
Ø'¨¨¨¨1¨1¨1¨a¨a¨a°¨Ô6¸¸1¸1¸1¸dÀAÀAÀAÀqÀqÀq¸=Ô9I×9OÒ9OÑ9QÔ9QÑQˆ
Ø ¨a¨a¨a°°°°A°A°A°t¨mÔ <× BÒ BÑ DÔ DÑDˆàˆÝ�w‘”ð 	6ð 	6ˆAØ" 1 1 1 a a a¨¨A¨A¨A :Ô.°Ñ:¸XÀaÀaÀaÈÈÈÈAÈqÈqÈqÀjÔ=QÑQˆIÝœ, y§|¢|°EÑ':Ô':¸A¸a¸a¸aÀÀAÀAÀA¸g¼J×<PÒ<PÐQSÑ<TÔ<TÑUÔUˆKØ×Ò ¨A¨A¨A¨q¨q¨q°!¨GÔ 4Ñ5Ô5Ð5Ð5Ý”k ,°BÐ7Ñ7Ô7ˆØ! ]°T´V¸DÀ!À!À!ÀT¸MÔ5JÑ%JÑKˆØ" T§X¢X¨d¡^¤^Ñ3ˆàÐ#Ø×/Ò/°	¸4¼>ÑJÔJÐJð !%§¢¨k×.CÒ.CÀAÀqÑ.IÔ.IÑ JÔ JÐØ$Ð$r,   r„   c                 ó  — | j         j        rEt          rd| j        j        j        j        vr&t                               d¦  «         d| j         _        | j         j        r|  	                    |||¦  «        S |  
                    |||¦  «        S )NÚcudazÔFast Mamba kernels are not available. Make sure that they are installed and that the mamba module is on a CUDA device. Turning off the fast path `config.use_mamba_kernels=False` and falling back to the slow path.F)r1   Úuse_mamba_kernelsrš   r‰   r¬   rÎ   Útyper›   rœ   rÌ   rà   )rB   rD   r¢   rE   s       r-   r`   zJambaMambaMixer.forward`  s—   € ð Œ;Ô(ð 	2Ý&ð	2Ø*0¸¼Ô8JÔ8QÔ8VÐ*VÐ*Vå×ÒðVñô ð ð
 -2ˆDŒKÔ)àŒ;Ô(ð 	ZØ×,Ò,¨]¸LÈ.ÑYÔYÐYØ× Ò  °¸nÑMÔMÐMr,   ra   )r(   r)   r*   Ú__doc__r$   r8   rc   rd   r   Ú
LongTensorrÌ   rà   r   r`   rf   rg   s   @r-   ri   ri   `   sK  ø€ € € € € ðð ðC8˜{ð C8ð C8ð C8ð C8ð C8ð C8ðP &*Ø26ð	c%ð c%à”|ðc%ð ˜d‘lðc%ð Ô(¨4Ñ/ð	c%ð c%ð c%ð c%ðLJ%ð J%°u¸t±|ð J%Ð\aÔ\lÐosÑ\sð J%ð J%ð J%ð J%ðZ Ð˜HÑ%Ô%ð &*Ø26ð	Nð Nð ˜d‘lðNð Ô(¨4Ñ/ð	Nð Nð Nñ &Ô%ðNð Nð Nð Nð Nr,   ri   c                   ó   — e Zd ZdS )ÚJambaMLPNr'   r+   r,   r-   rè   rè   v  r.   r,   rè   c                   ó   — e Zd ZdS )ÚJambaExpertsNr'   r+   r,   r-   rê   rê   z  r.   r,   rê   c                   óR   ‡ — e Zd ZdZdefˆ fd„Zd„ Zdej        dej        fd„Z	ˆ xZ
S )ÚJambaSparseMoeBlockaÈ  
    This implementation is
    strictly equivalent to standard MoE with full capacity (no
    dropped tokens). It's faster since it formulates MoE operations
    in terms of block-sparse operations to accommodate imbalanced
    assignments of tokens to experts, whereas standard MoE either
    (1) drop tokens at the cost of reduced performance or (2) set
    capacity factor to number of experts and thus waste computation
    and memory on padding.
    r1   c                 ó  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        |j        | _        |j        | _        t          j
        | j        | j        d¬¦  «        | _        t          |¦  «        | _        d S r4   )r7   r8   r:   Ú
hidden_dimr|   Úffn_dimÚnum_expertsÚnum_experts_per_tokÚtop_kr   r9   Úrouterrê   Úexperts©rB   r1   rC   s     €r-   r8   zJambaSparseMoeBlock.__init__Š  sr   ø€ Ý‰Œ×ÒÑÔÐØ Ô,ˆŒØÔ/ˆŒØ!Ô-ˆÔØÔ/ˆŒ
å”i ¤°Ô1AÈÐNÑNÔNˆŒÝ# FÑ+Ô+ˆŒˆˆr,   c                 óÚ   — t           j        j                             |dt           j        ¬¦  «        }t          j        || j        d¬¦  «        \  }}||                     |j        ¦  «        fS )NrJ   )r¥   rÏ   r¤   )	rc   r   r±   Úsoftmaxr¹   Útopkrò   rÓ   rÏ   )rB   rD   Úrouter_logitsÚrouting_weightsÚtop_k_weightsÚtop_k_indexs         r-   Úroute_tokens_to_expertsz+JambaSparseMoeBlock.route_tokens_to_experts”  s_   € Ýœ(Ô-×5Ò5°mÈÕSXÔS^Ð5Ñ_Ô_ˆÝ%*¤Z°ÀÄÐQSÐ%TÑ%TÔ%TÑ"ˆ�{Ø˜M×,Ò,¨]Ô-@ÑAÔAÐAÐAr,   rD   rH   c                 ó   — |j         \  }}}|                     d|¦  «        }|                      |¦  «        }|                      ||¦  «        \  }}|                      |||¦  «        }|                     |||¦  «        }|S )NrJ   )rN   rO   ró   rý   rô   rV   )rB   rD   r¼   Úsequence_lengthrî   rù   rü   rû   s           r-   r`   zJambaSparseMoeBlock.forward™  s„   € Ø2?Ô2EÑ/ˆ
�O ZØ%×*Ò*¨2¨zÑ:Ô:ˆØŸš MÑ2Ô2ˆØ%)×%AÒ%AÀ-ÐQ^Ñ%_Ô%_Ñ"ˆ�]ØŸš ]°KÀÑOÔOˆØ%×-Ò-¨j¸/È:ÑVÔVˆØÐr,   )r(   r)   r*   rå   r$   r8   rý   rc   rd   r`   rf   rg   s   @r-   rì   rì   ~  s†   ø€ € € € € ð	ð 	ð,˜{ð ,ð ,ð ,ð ,ð ,ð ,ðBð Bð Bð
 U¤\ð °e´lð ð ð ð ð ð ð ð r,   rì   c                   ó¢   ‡ — e Zd Zdedefˆ fd„Z	 	 	 	 ddej        dej        dz  dej        dz  d	e	dz  d
e
dz  dee         dej        fd„Zˆ xZS )ÚJambaAttentionDecoderLayerr1   r2   c                 óf  •— t          ¦   «                              ¦   «          |j        r|j        |         nd}t          ||¦  «        | _        |dk    rt
          nt          } ||¦  «        | _        t          |j	        |j
        ¬¦  «        | _        t          |j	        |j
        ¬¦  «        | _        d S )Nr#   rp   )r7   r8   Úlayers_num_expertsr0   Ú	self_attnrì   rè   Úfeed_forwardr&   r:   r“   Úinput_layernormÚpre_ff_layernorm©rB   r1   r2   rð   Úffn_layer_classrC   s        €r-   r8   z#JambaAttentionDecoderLayer.__init__¤  s¦   ø€ Ý‰Œ×ÒÑÔÐØ>DÔ>WÐ^�fÔ/°	Ô:Ð:Ð]^ˆÝ'¨°	Ñ:Ô:ˆŒà1<¸q²°Õ-Ð-ÅhˆØ+˜O¨FÑ3Ô3ˆÔÝ+¨FÔ,>ÀFÔDWÐXÑXÔXˆÔÝ ,¨VÔ-?ÀVÔEXÐ YÑ YÔ YˆÔÐÐr,   NFrD   rE   Úposition_idsrF   Ú	use_cacherG   rH   c           	      óÌ   — |}|                       |¦  «        } | j        d|||||dœ|¤Ž\  }}||z   }|}|                      |¦  «        }|                      |¦  «        }||z   }|S )N)rD   rE   r
  rF   r  r+   )r  r  r  r  )	rB   rD   rE   r
  rF   r  rG   Úresidualr¾   s	            r-   r`   z"JambaAttentionDecoderLayer.forward®  sž   € ð !ˆØ×,Ò,¨]Ñ;Ô;ˆØ)˜4œ>ð 
Ø'Ø)Ø%Ø+Øð
ð 
ð ð
ð 
Ñˆ�qð ! =Ñ0ˆØ ˆØ×-Ò-¨mÑ<Ô<ˆØ×)Ò)¨-Ñ8Ô8ˆØ  =Ñ0ˆØÐr,   )NNNF)r(   r)   r*   r$   rb   r8   rc   rd   ræ   r   Úboolr   r   ÚFloatTensorr`   rf   rg   s   @r-   r  r  £  sà   ø€ € € € € ðZ˜{ð Z°sð Zð Zð Zð Zð Zð Zð /3Ø04Ø(,Ø!&ðð à”|ðð œ tÑ+ðð Ô&¨Ñ-ð	ð
  ™ðð ˜$‘;ðð Ð+Ô,ðð 
Ô	ðð ð ð ð ð ð ð r,   r  c                   ó–   ‡ — e Zd Zdedefˆ fd„Z	 	 	 ddej        dej        dz  dej        dz  de	dz  d	e
e         d
ej        fd„Zˆ xZS )ÚJambaMambaDecoderLayerr1   r2   c                 óh  •— t          ¦   «                              ¦   «          |j        r|j        |         nd}t          ||¬¦  «        | _        |dk    rt
          nt          } ||¦  «        | _        t          |j	        |j
        ¬¦  «        | _        t          |j	        |j
        ¬¦  «        | _        d S )Nr#   )r1   r2   rp   )r7   r8   r  ri   Úmambarì   rè   r  r&   r:   r“   r  r  r  s        €r-   r8   zJambaMambaDecoderLayer.__init__Ê  s©   ø€ Ý‰Œ×ÒÑÔÐØ>DÔ>WÐ^�fÔ/°	Ô:Ð:Ð]^ˆÝ$¨F¸iÐHÑHÔHˆŒ
Ø1<¸q²°Õ-Ð-ÅhˆØ+˜O¨FÑ3Ô3ˆÔÝ+¨FÔ,>ÀFÔDWÐXÑXÔXˆÔÝ ,¨VÔ-?ÀVÔEXÐ YÑ YÔ YˆÔÐÐr,   NrD   rE   r
  rF   rG   rH   c                 óÐ   — |}|                       |¦  «        }|                      |||¬¦  «        }||z   }|}|                      |¦  «        }|                      |¦  «        }||z   }|S )N)rD   r¢   rE   )r  r  r  r  )rB   rD   rE   r
  rF   rG   r  s          r-   r`   zJambaMambaDecoderLayer.forwardÓ  s„   € ð !ˆØ×,Ò,¨]Ñ;Ô;ˆØŸ
š
Ø'Ø(Ø)ð #ñ 
ô 
ˆð
 ! =Ñ0ˆØ ˆØ×-Ò-¨mÑ<Ô<ˆØ×)Ò)¨-Ñ8Ô8ˆØ  =Ñ0ˆØÐr,   )NNN)r(   r)   r*   r$   rb   r8   rc   rd   ræ   r   r   r   r  r`   rf   rg   s   @r-   r  r  É  sÏ   ø€ € € € € ðZ˜{ð Z°sð Zð Zð Zð Zð Zð Zð /3Ø04Ø(,ðð à”|ðð œ tÑ+ðð Ô&¨Ñ-ð	ð
  ™ðð Ð+Ô,ðð 
Ô	ðð ð ð ð ð ð ð r,   r  )Ú	attentionr  c                   óª   ‡ — e Zd ZU eed<   dZdZddgZdgZdZ	dZ
dZdZeege eej        d¬¦  «        d	œZ ej        ¦   «         ˆ fd
„¦   «         Zˆ xZS )ÚJambaPreTrainedModelr1   ÚmodelTr  r  rF   ró   )Ú
layer_name)rD   Ú
attentionsrù   c                 óp  •— t          ¦   «                              |¦  «         t          |t          ¦  «        r›t	          j        d|j        dz   ¦  «        d d d …f         }|                     |j        d¦  «         	                    ¦   «         }t          j        |j        t	          j        |¦  «        ¦  «         t          j        |j        ¦  «         d S t          |t           ¦  «        rNt          j        |j        d| j        j        ¬¦  «         t          j        |j        d| j        j        ¬¦  «         d S d S )Nr#   rJ   rK   )ÚmeanÚstd)r7   Ú_init_weightsÚ
isinstanceri   rc   r‹   rx   rŒ   r|   rW   ÚinitÚcopy_r�   rŽ   Úones_r‘   rê   Únormal_Úgate_up_projr1   Úinitializer_rangeÚ	down_proj)rB   ÚmodulerŸ   rC   s      €r-   r  z"JambaPreTrainedModel._init_weightsý  s  ø€ å‰Œ×Ò˜fÑ%Ô%Ð%Ý�f�oÑ.Ô.ð 	XÝ”˜Q Ô 5¸Ñ 9Ñ:Ô:¸4ÀÀÀ¸7ÔCˆAØ—’˜Ô1°2Ñ6Ô6×AÒAÑCÔCˆAÝŒJ�v”|¥U¤Y¨q¡\¤\Ñ2Ô2Ð2ÝŒJ�v”xÑ Ô Ð Ð Ð Ý˜¥Ñ-Ô-ð 	XÝŒL˜Ô,°3¸D¼KÔ<YÐZÑZÔZÐZÝŒL˜Ô)°¸¼Ô9VÐWÑWÔWÐWÐWÐWð	Xð 	Xr,   )r(   r)   r*   r$   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_is_statefulÚ_can_compile_fullgraphr  r  r0   r   r   r9   Ú_can_record_outputsrc   r¶   r  rf   rg   s   @r-   r  r  í  sÇ   ø€ € € € € € ØÐÐÑØÐØ&*Ð#Ø5Ð7OÐPÐØ#4Ð"5ÐØÐØ€NØ€LØ!Ðà4Ð6LÐMØ$Ø'˜¨¬	¸hÐGÑGÔGðð Ðð €U„]�_„_ð	Xð 	Xð 	Xð 	Xñ „_ð	Xð 	Xð 	Xð 	Xð 	Xr,   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 )Ú
JambaModelr1   c                 ó  •— t          ¦   «                              |¦  «         |j        | _        |j        | _        t          j        |j        |j        | j        ¦  «        | _        g }t          |j
        ¦  «        D ]:}t          |j        |                  }|                      |||¬¦  «        ¦  «         Œ;t          j        |¦  «        | _        t!          |j        |j        ¬¦  «        | _        d| _        |                      ¦   «          d S )N)r2   rp   F)r7   r8   Úpad_token_idÚpadding_idxÚ
vocab_sizer   Ú	Embeddingr:   Úembed_tokensrÕ   Únum_hidden_layersÚALL_DECODER_LAYER_TYPESÚlayers_block_typer×   Ú
ModuleListr¯   r&   r“   Úfinal_layernormÚgradient_checkpointingÚ	post_init)rB   r1   Údecoder_layersrÞ   Úlayer_classrC   s        €r-   r8   zJambaModel.__init__  só   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø!Ô.ˆÔØ Ô+ˆŒåœL¨Ô):¸FÔ<NÐPTÔP`ÑaÔaˆÔØˆÝ�vÔ/Ñ0Ô0ð 	Dð 	DˆAÝ1°&Ô2JÈ1Ô2MÔNˆKØ×!Ò! + +¨fÀÐ"BÑ"BÔ"BÑCÔCÐCÐCÝ”m NÑ3Ô3ˆŒå+¨FÔ,>ÀFÔDWÐXÑXÔXˆÔà&+ˆÔ#à�ŠÑÔÐÐÐr,   NÚ	input_idsrE   r
  rF   Úinputs_embedsr  rG   rH   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 ])\  }} ||f|	| j        j        |                  |||dœ|¤Ž}Œ*|                      |¦  «        }t%          ||¬	¦  «        S )Nz:You must specify exactly one of input_ids or inputs_embeds)r1   r   r#   )rÎ   )r1   rD  rE   rF   r
  )Úfull_attentionÚlinear_attention)rE   r
  rF   r  )Úlast_hidden_staterF   r+   )Ú
ValueErrorr9  r	   r1   Úget_seq_lengthrc   r‹   rN   rÎ   r«   r  Údictr   r   Ú	enumerater¯   r�   r>  r   )rB   rC  rE   r
  rF   rD  r  rG   Úpast_seen_tokensÚcausal_mask_mappingÚmask_kwargsrD   rÞ   Údecoder_layers                 r-   r`   zJambaModel.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Ý$CÐ$RÐ$RÀkÐ$RÐ$Rð#ð #Ðð &ˆÝ )¨$¬+Ñ 6Ô 6ð 	ð 	ÑˆAˆ}Ø)˜MØðà2°4´;Ô3JÈ1Ô3MÔNØ)Ø /Ø#ðð ð ðð ˆMˆMð ×,Ò,¨]Ñ;Ô;ˆå%Ø+Ø+ð
ñ 
ô 
ð 	
r,   )NNNNNN)r(   r)   r*   r$   r8   r   r   r   rc   ræ   rd   r   r  r  r   r   r   r`   rf   rg   s   @r-   r3  r3  
  s  ø€ € € € € ð˜{ð ð ð ð ð ð ð$  ØØð .2Ø.2Ø04Ø(,Ø26Ø!%ð6
ð 6
àÔ# dÑ*ð6
ð œ tÑ+ð6
ð Ô&¨Ñ-ð	6
ð
  ™ð6
ð Ô(¨4Ñ/ð6
ð ˜$‘;ð6
ð Ð+Ô,ð6
ð 
 ð6
ð 6
ð 6
ñ „^ñ „_ñ  Ôð6
ð 6
ð 6
ð 6
ð 6
r,   r3  c                   óî   ‡ — e Zd Zdefˆ fd„Z	 	 	 	 	 	 	 	 	 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
dz  deej        z  dee         defˆ fd„Zˆ xZS )ÚJambaForCausalLMr1   c                 ób   •— t          ¦   «                              |¦  «         |j        | _        d S )N)r7   r8   rð   rõ   s     €r-   r8   zJambaForCausalLM.__init__[  s,   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø!Ô-ˆÔÐÐr,   Nr   rC  rE   r
  rF   rD  Úlabelsr  Úoutput_router_logitsÚlogits_to_keeprG   rH   c
           
      óF   •—  t          ¦   «         j        ||||||||	fi |
¤ŽS )aj  
        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]`.

        Example:

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

        >>> model = JambaForCausalLM.from_pretrained("ai21labs/Jamba-v0.1")
        >>> tokenizer = AutoTokenizer.from_pretrained("ai21labs/Jamba-v0.1")

        >>> 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."
        ```)r7   r`   )rB   rC  rE   r
  rF   rD  rT  r  rU  rV  rG   rC   s              €r-   r`   zJambaForCausalLM.forward_  sG   ø€ ðF �u‰wŒwŒØØØØØØØØð

ð 

ð ð

ð 

ð 
	
r,   )	NNNNNNNNr   )r(   r)   r*   r$   r8   rc   ræ   rd   r   r  r  rb   r   r   r   r`   rf   rg   s   @r-   rR  rR  Z  s0  ø€ € € € € ð.˜{ð .ð .ð .ð .ð .ð .ð .2Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø,0Ø-.ð-
ð -
àÔ# dÑ*ð-
ð œ tÑ+ð-
ð Ô&¨Ñ-ð	-
ð
  ™ð-
ð Ô(¨4Ñ/ð-
ð Ô  4Ñ'ð-
ð ˜$‘;ð-
ð # T™kð-
ð ˜eœlÑ*ð-
ð Ð+Ô,ð-
ð 
#ð-
ð -
ð -
ð -
ð -
ð -
ð -
ð -
ð -
ð -
r,   rR  c                   ó   — e Zd ZdS )ÚJambaForSequenceClassificationNr'   r+   r,   r-   rY  rY  �  r.   r,   rY  )rR  rY  r3  r  )FÚcollections.abcr   rc   r   Ú r   r   Úactivationsr   Úcache_utilsr   r	   Úintegrationsr
   Úintegrations.accelerater   Úmasking_utilsr   r   Úmodeling_layersr   r   Úmodeling_outputsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   Úutils.import_utilsr   Úutils.output_capturingr   r   Úllama.modeling_llamar   r   r   Úmistral.modeling_mistralr    Úmixtral.modeling_mixtralr!   r"   Úconfiguration_jambar$   Ú
get_loggerr(   r›   r&   r0   ÚModuleri   rè   rê   rì   r  r  r;  r  r3  rR  rY  Ú__all__r+   r,   r-   ú<module>rp     s)  ðð& %Ð $Ð $Ð $Ð $Ð $à €€€Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø =Ð =Ð =Ð =Ð =Ð =Ø PÐ PÐ PÐ PÐ PÐ PÐ PÐ PØ [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ ,Ð ,Ð ,Ð ,Ð ,Ð ,ð 
ˆÔ	˜HÑ	%Ô	%€ð	ð 	ð 	ð 	ð 	�<ñ 	ô 	ð 	ð*)ð *)ð *)ð *)ð *)�^ñ *)ô *)ð *)ðZSNð SNð SNð SNð SN�b”iñ SNô SNð SNðl	ð 	ð 	ð 	ð 	ˆzñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�>ñ 	ô 	ð 	ð"ð "ð "ð "ð "˜"œ)ñ "ô "ð "ðJ#ð #ð #ð #ð #Ð!;ñ #ô #ð #ðLð ð ð ð Ð7ñ ô ð ðB )CÐMcÐdÐdÐ ðXð Xð Xð Xð X˜?ñ Xô Xð Xð: ðL
ð L
ð L
ð L
ð L
Ð%ñ L
ô L
ñ „ðL
ð^2
ð 2
ð 2
ð 2
ð 2
Ð)ñ 2
ô 2
ð 2
ðj	ð 	ð 	ð 	ð 	Ð%EÐG[ñ 	ô 	ð 	ð gÐ
fÐ
f€€€r,   