§
    ‚ŠtjÚ6  ã                   óê  — d Z 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
 dd	lmZm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mZ ddlmZmZ ddlmZmZmZm Z m!Z!m"Z" ddl#m$Z$  ej%        e&¦  «        Z' G d„ dej(        ¦  «        Z) G d„ de!¦  «        Z*d„ Z+d$d„Z, G d„ de¦  «        Z-e G d„ de¦  «        ¦   «         Z. G d„ de
¦  «        Z/ G d„ d e ¦  «        Z0 G d!„ d"e¦  «        Z1g d#¢Z2dS )%zPyTorch Cohere model.é    )ÚCallableN)Únné   )ÚCache)ÚFlashAttentionKwargs)ÚGradientCheckpointingLayer)ÚBaseModelOutputWithPastÚCausalLMOutputWithPast)Údynamic_rope_update)ÚALL_ATTENTION_FUNCTIONS)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚlogging)Úmaybe_autocastÚno_inherit_decoratoré   )ÚLlamaAttentionÚLlamaForCausalLMÚLlamaMLPÚ
LlamaModelÚLlamaRotaryEmbeddingÚeager_attention_forwardé   )ÚCohereConfigc                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚCohereLayerNormNçñhãˆµøä>Fc                 ó¬   •— t          ¦   «                              ¦   «          t          j        t	          j        |¦  «        ¦  «        | _        || _        dS )zcThe hidden size can be a tuple or an int. The tuple is used for QKNorm to normalize across head_dimN)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizeÚepsÚbiasÚ	__class__s       €úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/cohere/modular_cohere.pyr"   zCohereLayerNorm.__init__5   sB   ø€ å‰Œ×ÒÑÔÐÝ”l¥5¤:¨kÑ#:Ô#:Ñ;Ô;ˆŒØ #ˆÔÐÐó    c                 ó’  — |j         }|                     t          j        ¦  «        }|                     dd¬¦  «        }||z
                       d¦  «                             dd¬¦  «        }||z
  t          j        || j        z   ¦  «        z  }| j                             t          j        ¦  «        |z  }|                     |¦  «        S )NéÿÿÿÿT)Úkeepdimr   )	ÚdtypeÚtor$   Úfloat32ÚmeanÚpowÚrsqrtr'   r&   )r(   Úhidden_statesÚinput_dtyper5   Úvariances        r-   ÚforwardzCohereLayerNorm.forward;   s±   € Ø#Ô)ˆØ%×(Ò(­¬Ñ7Ô7ˆØ×!Ò! "¨dÐ!Ñ3Ô3ˆØ! DÑ(×-Ò-¨aÑ0Ô0×5Ò5°bÀ$Ð5ÑGÔGˆØ&¨Ñ-µ´¸XÈÔH]Ñ=]Ñ1^Ô1^Ñ^ˆØœŸš¥u¤}Ñ5Ô5¸ÑEˆØ×Ò Ñ,Ô,Ð,r.   )Nr   F)Ú__name__Ú
__module__Ú__qualname__r"   r;   Ú__classcell__©r,   s   @r-   r   r   4   sL   ø€ € € € € ð$ð $ð $ð $ð $ð $ð-ð -ð -ð -ð -ð -ð -r.   r   c                   óN   — e Zd Z ej        ¦   «         ed„ ¦   «         ¦   «         ZdS )ÚCohereRotaryEmbeddingc                 ó  — | j         d d d …d f                              ¦   «                              |j        d         dd¦  «        }|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        |dd¬	¦  «        }|                     ¦   «         | j        z  }|                     ¦   «         | j        z  }	d d d ¦  «         n# 1 swxY w Y   |                     |j        ¬
¦  «        |	                     |j        ¬
¦  «        fS )Nr   r0   r   ÚmpsÚcpuF)Údevice_typeÚenabledr   ©Údim©r2   )Úinv_freqÚfloatÚexpandÚshapeÚ
isinstanceÚdeviceÚtypeÚstrr   Ú	transposer$   Úrepeat_interleaveÚcosÚattention_scalingÚsinr3   r2   )
r(   ÚxÚposition_idsÚinv_freq_expandedÚposition_ids_expandedrF   ÚfreqsÚembrU   rW   s
             r-   r;   zCohereRotaryEmbedding.forwardF   s¤  € ð !œM¨$°°°°4¨-Ô8×>Ò>Ñ@Ô@×GÒGÈÔHZÐ[\ÔH]Ð_aÐcdÑeÔeÐØ ,¨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ÝÔ)¨%°¸Ð;Ñ;Ô;ˆ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   Â4BEÅEÅEN)r<   r=   r>   r$   Úno_gradr   r;   © r.   r-   rB   rB   E   s@   € € € € € Ø€U„]�_„_Øð<ð <ñ Ôñ „_ð<ð <ð <r.   rB   c                 ó’   — | dd d d…f         }| ddd d…f         }t          j        | |gd¬¦  «                             d¦  «        }|S )N.r   r   r0   rH   éþÿÿÿ)r$   ÚstackÚflatten)rX   Úx1Úx2Úrot_xs       r-   Úrotate_halfrg   V   sU   € à	
ˆ3���!�ˆ8Œ€BØ	
ˆ3���1�ˆ9Œ€BÝŒK˜"˜˜b˜	 rÐ*Ñ*Ô*×2Ò2°2Ñ6Ô6€EØ€Lr.   c                 ól  — | j         }|                      ¦   «         } |                     ¦   «         }|                     |¦  «        }|                     |¦  «        }| |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.
    rJ   )r2   rL   Ú	unsqueezerg   r3   )ÚqÚkrU   rW   Úunsqueeze_dimr2   Úq_embedÚk_embeds           r-   Úapply_rotary_pos_embro   ^   s    € ð$ ŒG€EØ	�Š‰	Œ	€AØ	�Š‰	Œ	€AØ
�-Š-˜Ñ
&Ô
&€CØ
�-Š-˜Ñ
&Ô
&€CØ�3‰w�; q™>œ>¨CÑ/Ñ0€GØ�3‰w�; q™>œ>¨CÑ/Ñ0€GØ�:Š:˜Eˆ:Ñ"Ô" G§J¢J°U JÑ$;Ô$;Ð;Ð;r.   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú	CohereMLPc                 ó.  •— t          ¦   «                              |¦  «         t          j        | j        | j        d¬¦  «        | _        t          j        | j        | j        d¬¦  «        | _        t          j        | j        | j        d¬¦  «        | _        d S )NF)r+   )	r!   r"   r   ÚLinearr)   Úintermediate_sizeÚ	gate_projÚup_projÚ	down_proj©r(   Úconfigr,   s     €r-   r"   zCohereMLP.__init__{   s|   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ýœ 4Ô#3°TÔ5KÐRWÐXÑXÔXˆŒÝ”y Ô!1°4Ô3IÐPUÐVÑVÔVˆŒÝœ 4Ô#9¸4Ô;KÐRWÐXÑXÔXˆŒˆˆr.   )r<   r=   r>   r"   r?   r@   s   @r-   rq   rq   z   sA   ø€ € € € € ðYð Yð Yð Yð Yð Yð Yð Yð Yr.   rq   c                   óÒ   ‡ — e Zd ZdZddededz  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         de	ej        ej        dz  f         fd„Zˆ xZS )ÚCohereAttentionz=Multi-headed attention from 'Attention Is All You Need' paperNry   Ú	layer_idxc                 ó  •— t          ¦   «                              ||¦  «         |j        | _        | j        rPt          |j        | j        f|j        ¬¦  «        | _        t          |j        | j        f|j        ¬¦  «        | _	        d S d S )N©r)   r*   )
r!   r"   Úuse_qk_normr   Únum_attention_headsÚhead_dimÚlayer_norm_epsÚq_normÚnum_key_value_headsÚk_norm©r(   ry   r|   r,   s      €r-   r"   zCohereAttention.__init__†   s“   ø€ Ý‰Œ×Ò˜ Ñ+Ô+Ð+Ø!Ô-ˆÔØÔð 	å)Ø#Ô7¸¼ÐGÈVÔMbðñ ô ˆDŒKõ *Ø#Ô7¸¼ÐGÈVÔMbðñ ô ˆDŒKˆKˆKð	ð 	r.   r8   Úposition_embeddingsÚattention_maskÚpast_key_valuesÚkwargsÚreturnc                 ó�  — |j         d d…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «        }|                      |¦  «                             |¦  «        }	|                      |¦  «                             |¦  «        }
| j        r*|                      |¦  «        }|                      |	¦  «        }	| 	                    dd¦  «        }|	 	                    dd¦  «        }	|
 	                    dd¦  «        }
|\  }}t          ||	||¦  «        \  }}	|�|                     |	|
| j        ¦  «        \  }	}
t          j        | j        j        t"          ¦  «        } || ||	|
|f| j        sdn| j        | j        dœ|¤Ž\  }} |j        g |¢d‘R Ž                      ¦   «         }|                      |¦  «        }||fS )Nr0   r   r   g        )ÚdropoutÚscaling)rN   r�   Úq_projÚviewÚk_projÚv_projr   rƒ   r…   rS   ro   Úupdater|   r   Úget_interfacery   Ú_attn_implementationr   ÚtrainingÚattention_dropoutrŽ   ÚreshapeÚ
contiguousÚo_proj)r(   r8   r‡   rˆ   r‰   rŠ   Úinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesrU   rW   Úattention_interfaceÚattn_outputÚattn_weightss                   r-   r;   zCohereAttention.forward’   sù  € ð $Ô)¨#¨2¨#Ô.ˆØ8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆà—{’{ =Ñ1Ô1×6Ò6°|ÑDÔDˆØ—[’[ Ñ/Ô/×4Ò4°\ÑBÔBˆ
Ø—{’{ =Ñ1Ô1×6Ò6°|ÑDÔDˆàÔð 	1ØŸ;š; |Ñ4Ô4ˆLØŸš ZÑ0Ô0ˆJà#×-Ò-¨a°Ñ3Ô3ˆØ×)Ò)¨!¨QÑ/Ô/ˆ
Ø#×-Ò-¨a°Ñ3Ô3ˆà&‰ˆˆSÝ#7¸ÀjÐRUÐWZÑ#[Ô#[Ñ ˆ�jàÐ&Ø'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.   ©N)r<   r=   r>   Ú__doc__r   Úintr"   r$   ÚTensorÚtupler   r   r   r;   r?   r@   s   @r-   r{   r{   ‚   sæ   ø€ € € € € àGÐGð
ð 
˜|ð 
¸¸d¹
ð 
ð 
ð 
ð 
ð 
ð 
ð" )-ð.)ð .)à”|ð.)ð # 5¤<°´Ð#=Ô>ð.)ð œ tÑ+ð	.)ð
  ™ð.)ð Ð-Ô.ð.)ð 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ð.)ð .)ð .)ð .)ð .)ð .)ð .)ð .)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j        ej        f         dz  dee         deej        eej        ej        f         dz  f         fd„Zˆ xZS )ÚCohereDecoderLayerry   r|   c                 óô   •— t          ¦   «                              ¦   «          |j        | _        t          ||¬¦  «        | _        t          |¦  «        | _        t          |j        |j        ¬¦  «        | _	        d S )N)ry   r|   r~   )
r!   r"   r)   r{   Ú	self_attnrq   Úmlpr   r‚   Úinput_layernormr†   s      €r-   r"   zCohereDecoderLayer.__init__Ä   si   ø€ Ý‰Œ×ÒÑÔÐØ!Ô-ˆÔÝ(°À)ÐLÑLÔLˆŒÝ˜VÑ$Ô$ˆŒÝ.¸FÔ<NÐU[ÔUjÐkÑkÔkˆÔÐÐr.   NFr8   rˆ   rY   r‰   Ú	use_cacher‡   rŠ   r‹   c           
      óœ   — |}|                       |¦  «        } | j        d||||||dœ|¤Ž\  }	}
|                      |¦  «        }||	z   |z   }|S )a¼  
        Args:
            hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)`
            attention_mask (`torch.FloatTensor`, *optional*):
                attention mask of size `(batch_size, sequence_length)` if flash attention is used or `(batch_size, 1,
                query_sequence_length, key_sequence_length)` if default attention is used.
            past_key_values (`Cache`, *optional*): cached past key and value projection states
            output_attentions (`bool`, *optional*):
                Whether or not to return the attentions tensors of all attention layers. See `attentions` under
                returned tensors for more detail.
            use_cache (`bool`, *optional*):
                If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding
                (see `past_key_values`).
            position_embeddings (`tuple[torch.FloatTensor, torch.FloatTensor]`, *optional*):
                Tuple containing the cosine and sine positional embeddings of shape `(batch_size, seq_len, head_dim)`,
                with `head_dim` being the embedding dimension of each attention head.
        )r8   rˆ   rY   r‰   r®   r‡   r_   )r­   r«   r¬   )r(   r8   rˆ   rY   r‰   r®   r‡   rŠ   ÚresidualÚhidden_states_attentionÚ_Úhidden_states_mlps               r-   r;   zCohereDecoderLayer.forwardË   s†   € ð6 !ˆØ×,Ò,¨]Ñ;Ô;ˆà%3 T¤^ð &
Ø'Ø)Ø%Ø+ØØ 3ð&
ð &
ð ð&
ð &
Ñ"Ð ð !ŸHšH ]Ñ3Ô3ÐØ Ð#:Ñ:Ð=NÑNˆØÐr.   )NNNFN)r<   r=   r>   r   r¥   r"   r$   r¦   Ú
LongTensorr   Úboolr§   r   r   ÚFloatTensorr;   r?   r@   s   @r-   r©   r©   Ã   s   ø€ € € € € ðl˜|ð l¸ð lð lð lð lð lð lð /3Ø04Ø(,Ø!&ØHLð*ð *à”|ð*ð œ tÑ+ð*ð Ô&¨Ñ-ð	*ð
  ™ð*ð ˜$‘;ð*ð # 5¤<°´Ð#=Ô>ÀÑEð*ð Ð-Ô.ð*ð 
ˆuÔ  %¨Ô(9¸5Ô;LÐ(LÔ"MÐPTÑ"TÐTÔ	Uð*ð *ð *ð *ð *ð *ð *ð *r.   r©   c                   ó$   ‡ — e Zd Zdefˆ fd„Zˆ xZS )ÚCohereModelry   c                 óú   •‡— t          ¦   «                              ‰¦  «         t          j        ˆfd„t	          ‰j        ¦  «        D ¦   «         ¦  «        | _        t          ‰j        ‰j	        ¬¦  «        | _
        d S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r_   )r©   )Ú.0r|   ry   s     €r-   ú
<listcomp>z(CohereModel.__init__.<locals>.<listcomp>ü   s$   ø€ ÐdÐdÐd°yÕ ¨	Ñ2Ô2ÐdÐdÐdr.   r~   )r!   r"   r   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayersr   r)   r‚   Únormrx   s    `€r-   r"   zCohereModel.__init__ù   sq   øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”mØdÐdÐdÐdÅEÈ&ÔJbÑDcÔDcÐdÑdÔdñ
ô 
ˆŒõ $°Ô1CÈ&ÔJ_Ð`Ñ`Ô`ˆŒ	ˆ	ˆ	r.   )r<   r=   r>   r   r"   r?   r@   s   @r-   r¸   r¸   ø   sO   ø€ € € € € ða˜|ð að að að að að að að að að ar.   r¸   c                   óø   ‡ — e Zd 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 )ÚCohereForCausalLMc                 ó¢   •— t          ¦   «                              |¦  «         t          |¦  «        | _        |j        | _        |j        | _        d S r£   )r!   r"   r¸   ÚmodelÚlogit_scaleÚtie_word_embeddingsrx   s     €r-   r"   zCohereForCausalLM.__init__  sF   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý  Ñ(Ô(ˆŒ
Ø!Ô-ˆÔØ#)Ô#=ˆÔ Ð Ð r.   Nr   Ú	input_idsrˆ   rY   r‰   Úinputs_embedsÚlabelsr®   Úlogits_to_keeprŠ   r‹   c	           
      ód  —  | j         d||||||dœ|	¤Ž}
|
j        }t          |t          ¦  «        rt	          | d¦  «        n|}|                      |dd…|dd…f         ¦  «        }|| j        z  }d}|� | j        d||| j        j	        dœ|	¤Ž}t          |||
j        |
j        |
j        ¬¦  «        S )aÕ  
        Example:

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

        >> model = CohereForCausalLM.from_pretrained("CohereForAI/c4ai-command-r-v01")
        >> tokenizer = AutoTokenizer.from_pretrained("CohereForAI/c4ai-command-r-v01")

        >> 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."
        ```)rÈ   rˆ   rY   r‰   rÉ   r®   N)ÚlogitsrÊ   Ú
vocab_size)ÚlossrÍ   r‰   r8   Ú
attentionsr_   )rÅ   Úlast_hidden_staterO   r¥   ÚsliceÚlm_headrÆ   Úloss_functionry   rÎ   r
   r‰   r8   rÐ   )r(   rÈ   rˆ   rY   r‰   rÉ   rÊ   r®   rË   rŠ   Úoutputsr8   Úslice_indicesrÍ   rÏ   s                  r-   r;   zCohereForCausalLM.forward  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Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
r.   )NNNNNNNr   )r<   r=   r>   r"   r   r   r$   r´   r¦   r   r¶   rµ   r¥   r   r   r
   r;   r?   r@   s   @r-   rÃ   rÃ     s   ø€ € € € € ð>ð >ð >ð >ð >ð Øð .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
r.   rÃ   )rÃ   r¸   ÚCoherePreTrainedModel)r   )3r¤   Úcollections.abcr   r$   r   Úcache_utilsr   Úmodeling_flash_attention_utilsr   Úmodeling_layersr   Úmodeling_outputsr	   r
   Úmodeling_rope_utilsr   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.genericr   r   Úllama.modeling_llamar   r   r   r   r   r   Úconfiguration_coherer   Ú
get_loggerr<   ÚloggerÚModuler   rB   rg   ro   rq   r{   r©   r¸   rÃ   Ú__all__r_   r.   r-   ú<module>rè      sõ  ðð, Ð à $Ð $Ð $Ð $Ð $Ð $à €€€Ø Ð Ð Ð Ð Ð à  Ð  Ð  Ð  Ð  Ð  Ø BÐ BÐ BÐ BÐ BÐ BØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø &Ð &Ð &Ð &Ð &Ð &Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð /Ð .Ð .Ð .Ð .Ð .ð 
ˆÔ	˜HÑ	%Ô	%€ð-ð -ð -ð -ð -�b”iñ -ô -ð -ð"<ð <ð <ð <ð <Ð0ñ <ô <ð <ð"ð ð ð<ð <ð <ð <ð8Yð Yð Yð Yð Y�ñ Yô Yð Yð ð=)ð =)ð =)ð =)ð =)�nñ =)ô =)ñ Ôð=)ð@2ð 2ð 2ð 2ð 2Ð3ñ 2ô 2ð 2ðjað að að að a�*ñ aô að að?
ð ?
ð ?
ð ?
ð ?
Ð(ñ ?
ô ?
ð ?
ðDð ð €€€r.   