ó
    "EñiýM  ã            #       ón  • % S r SSKrSSKJr  SSKJrJr  SSKJr  SSK	r	SSK
Jr  \" S5      r\" S5      r0 r\\	R                   R"                  \4   \S	'   \" 1 S
k5      rS\S\S\\\4   S\\\\4   /\\\4   4   4S jr S9SSSS.S\	R0                  S\	R0                  S\	R0                  S\\	R0                     S\S\S\S\	R0                  4S jjjr\" SS\5       S9SSSS.S\	R0                  S\	R0                  S\	R0                  S\\	R0                     S\S\S\S\	R0                  4S jjj5       rS\\   S\S\4S jrS \	R0                  S!\S\S\	R0                  4S" jrS#\	R0                  S$\	R0                  S%\S&\S\\   S'\S\	R0                  4S( jrS%\S&\SS4S) jr S#\	R0                  S$\	R0                  S%\S&\S\\   S\	R0                  4S* jr!   S:SSSSSS+SS,.S#\	R0                  S$\	R0                  S-\	R0                  S.\\	R0                     S/\\	R0                     S0\\	R0                     S1\S2\S3\S'\S\\   S4\S5\\   S\"\	R0                  \	R0                  \	R0                  \	R0                  4   4S6 jjjr#\" S7S\#5         S:SSSSSS+SS,.S#\	R0                  S$\	R0                  S-\	R0                  S.\\	R0                     S/\\	R0                     S0\\	R0                     S1\S2\S3\S'\S\\   S4\S5\\   S\"\	R0                  \	R0                  \	R0                  \	R0                  4   4S8 jjj5       r$g);zãImplementations of ONNX operators as native Torch ops.

NOTE: Fake implementations:
    Refer to https://docs.pytorch.org/docs/stable/library.html#torch.library.register_fake
    for more details on how to create fake kernels.
é    N)ÚCallable)ÚOptionalÚTypeVar)Ú	ParamSpec)Ú_dtype_mappingsÚ_PÚ_RÚONNX_ATEN_DECOMP_TABLE>   é   é
   é   é   Úop_typeÚopset_versionÚ	fake_implÚreturnc                 ól   ^ ^^• S[         [        [        4   S[         [        [        4   4UU U4S jjnU$ )zDDecorator to register an ONNX operator with a custom implementation.Úfuncr   c                 óò   >• ST 3n[         R                  R                  ST SU 3SS9" U 5      nU [        [	        [	        [         R
                  R                  T5      U5      '   UR                  T5        U$ )NÚopsetzonnx::Ú.© )Úmutates_args)ÚtorchÚlibraryÚ	custom_opr
   ÚgetattrÚopsÚonnxÚregister_fake)r   ÚoverloadÚtorch_opr   r   r   s      €€€ÚQ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/onnx/ops/_impl.pyÚ	decoratorÚ_onnx_op.<locals>.decorator'   s|   ø€ Ø˜=˜/Ð*ˆÜ—=‘=×*Ñ*Ø�W�I˜Q˜x˜jÐ)¸ð +ñ 
à
óˆð ô 	œw¤w¬u¯y©y¯~©~¸wÓ'GÈÓRÑSð 	×Ñ˜yÔ)Øˆó    )r   r   r	   )r   r   r   r$   s   ``` r#   Ú_onnx_opr'   "   s5   ú€ ð
	œ¤¤R Ñ(ð 	¬X´b¼"°fÑ-=÷ 	ñ 	ð Ðr&   F)ÚinterleavedÚ	num_headsÚrotary_embedding_dimÚxÚ	cos_cacheÚ	sin_cacheÚposition_idsr(   r)   r*   c                ó"   • U R                  5       $ )zFFake implementation for RotaryEmbedding-23 for torch.compile purposes.)Úclone)r+   r,   r-   r.   r(   r)   r*   s          r#   Ú_rotary_embedding_23_fake_implr1   5   s   € ð �7‰7‹9Ðr&   ÚRotaryEmbeddingé   c                óÀ  ^^^^^^^^^• U R                   m[        T5      nTS   mTS   mTbÌ  [        R                  " TR	                  5       S:H  U4S j5        [        R                  " TR                   S   T:H  UU4S j5        [        R                  " TR                   S   T:H  UU4S j5        [        R                  " TR	                  5       S:H  =(       a    TR	                  5       S:H  UU4S	 j5        OG[        R                  " TR	                  5       S
:H  =(       a    TR	                  5       S
:H  UU4S j5        US:X  a  [        R
                  " U S5      n OHUS
:X  aB  [        R                  " US:g  U4S j5        TS   nX…-  n	TTXY/n
[        R                  " X
5      n [        R                  " [        U R                   5      S:H  S 5        U R                   S
   n	US:X  a  U	nU SS2SS2SS2SU24   nU SS2SS2SS2US24   nUS-  mTb  TT   mTT   mOTmTm[        R                  " TR                   S   T:H  =(       a    TR                   S   T:H  UUU4S j5        [        R                  " TR                   S   T:H  =(       a    TR                   S   T:H  UUU4S j5        [        R                  " TR                   S   T:H  UU4S j5        [        R                  " TR                   S   T:H  UU4S j5        [        R                  " TS5      m[        R                  " TS5      mU(       a%  USS2SS2SS2SSS24   nUSS2SS2SS2SSS24   nO[        R                  " USSS9u  pÞTU-  TU-  -
  nTU-  TU-  -   nU(       ag  [        R                  " US5      n[        R                  " US5      n[        R                  " UU4SS9n[        R                  " UUR                   5      nO[        R                  " UU4SS9n[        R                  " X¼4SS9nUS
:X  a  [        R                  " UT5      $ [        R
                  " US5      $ )z_RotaryEmbedding-23 https://onnx.ai/onnx/operators/onnx__RotaryEmbedding.html#rotaryembedding-23r   éþÿÿÿNé   c                  ó"   >• ST R                    3$ )Nz6position_ids must be 2D when provided. Received shape ©Úshape)r.   s   €r#   Ú<lambda>Ú%rotary_embedding_23.<locals>.<lambda>Z   s   ø€ ÐLÈ\×M_ÑM_ÐL`Ñar&   c                  ó.   >• ST  STR                   S    3$ )Nz6position_ids first dim (batch) must match x.shape[0] (ú). Received r   r8   )Ú
batch_sizer.   s   €€r#   r:   r;   ^   s"   ø€ ÐLÈZÈLÐXdÐeq×ewÑewÐxyÑezÐd{Ñ|r&   r   c                  ó.   >• ST ST R                   S    3$ )Nz;position_ids second dim (sequence) must match x.shape[-2] (r=   r   r8   )r.   Úsequence_lengths   €€r#   r:   r;   b   s;   ø€ ÐQÐRaÐQbÐbnÐo{÷  pBñ  pBð  CDñ  pEð  oFñ  Gr&   c                  ó<   >• ST R                    STR                    3$ )NzWcos_cache/sin_cache must be 2D when position_ids is provided. Received cos_cache shape ú, sin_cache shape r8   ©r,   r-   s   €€r#   r:   r;   f   ó$   ø€ ð (Ø(1¯©Ð'8Ð8JÈ9Ï?É?ÐJ[ñ]r&   é   c                  ó<   >• ST R                    STR                    3$ )Nz[cos_cache/sin_cache must be 3D when position_ids is not provided. Received cos_cache shape rB   r8   rC   s   €€r#   r:   r;   l   rD   r&   é   )r   r6   r   rE   c                  ó   >• ST  3$ )NzKnum_heads must be provided for 3D inputs. Received input tensor with shape r   )Úinput_shapes   €r#   r:   r;   y   s   ø€ ÐaÐbmÐanÑor&   c                  ó   • g)Nzx should be a 4D tensor by nowr   r   r&   r#   r:   r;   €   s   € Ð,Lr&   c                  ó0   >• STR                    ST  ST S3$ )Nzcos has shape ú but expected (batch=ú, seq=ú, ...)r8   )r>   Úcosr@   s   €€€r#   r:   r;   ™   ó"   ø€ �. §¡ Ð+@ÀÀÈFÐSbÐRcÐciÑjr&   c                  ó0   >• STR                    ST  ST S3$ )Nzsin has shape rL   rM   rN   r8   )r>   r@   Úsins   €€€r#   r:   r;   �   rP   r&   éÿÿÿÿc                  ó0   >• ST R                   S    ST S3$ )NzLast dimension of cos cache (rS   ú') should match rotary_embedding_dim/2 (ú).r8   )rO   Úrotary_embedding_dim_halfs   €€r#   r:   r;   ¡   ó,   ø€ Ð/°·	±	¸"±¨Ð>eÐfð  fAð  ACñ  Dr&   c                  ó0   >• STR                   S    ST  S3$ )NzLast dimension of sin cache (rS   rU   rV   r8   )rW   rR   s   €€r#   r:   r;   ¥   rX   r&   ©Údim)
r9   Úlenr   Ú_checkr[   ÚpermuteÚreshapeÚ	unsqueezeÚchunkÚcat)r+   r,   r-   r.   r(   r)   r*   Ú
input_rankÚhidden_sizeÚ	head_sizeÚ	new_shapeÚx_rotateÚx_not_rotateÚx1Úx2ÚrealÚimagÚx_rotate_concatÚoutputr>   rO   rI   rW   r@   rR   s    ```               @@@@@@r#   Úrotary_embedding_23ro   C   sô  ÿø€ ð —'‘'€KÜ�[Ó!€JØ˜Q‘€JØ! "‘o€Oð ÑÜ�ŠØ×ÑÓ !Ñ#Üaô	
ô 	�ŠØ×Ñ˜qÑ! ZÑ/Ý|ô	
ô 	�ŠØ×Ñ˜qÑ! _Ñ4õ Gô	
ô 	�ŠØ�M‰M‹O˜qÑ ×9 Y§]¡]£_¸Ñ%9õ]õ	
ô 	�ŠØ�M‰M‹O˜qÑ ×9 Y§]¡]£_¸Ñ%9õ]ô	
ð �Qƒô �MŠM˜!˜\Ó*‰Ø	�q‹Ü�ŠØ˜‰NÜoô	
ð " !‘nˆØÑ,ˆ	Ø °)ÐGˆ	Ü�MŠM˜!Ó'ˆä	‡L‚L”�Q—W‘W“ Ñ"Ñ$LÔMØ—‘˜‘
€Ið ˜qÓ à(ÐØ’’A’qÐ/Ð/Ð/Ð/Ñ0€HØ’Qšš1Ð2Ñ3Ð3Ñ4€LØ 4¸Ñ 9Ðð ÑØØñ
ˆð Øñ
‰ð ˆØˆä	‡L‚LØ�	‰	�!‰˜
Ñ"×F s§y¡y°¡|°Ñ'FÞjôô 
‡L‚LØ�	‰	�!‰˜
Ñ"×F s§y¡y°¡|°Ñ'FÞjôô 
‡L‚LØ�	‰	�"‰Ð2Ñ2õ 	Dôô 
‡L‚LØ�	‰	�"‰Ð2Ñ2õ 	Dôô �/Š/ØˆQó€Cô �/Š/ØˆQó€Cö
 Ø’aššA˜q˜t !˜t�mÑ$ˆØ’aššA˜q˜t !˜t�mÑ$‰ä—’˜X q¨bÑ1‰ˆð �‰8�c˜B‘hÑ€DØ�‰8�c˜B‘hÑ€Dö ô �Š˜t RÓ(ˆÜ�Š˜t RÓ(ˆÜŸ)š) T¨4 L°bÑ9ˆÜ—=’= °(·.±.ÓA‰ä—9’9˜d D˜\¨rÑ2ˆÜ�YŠY˜Ð/°RÑ8€FØ�QƒÜ�}Š}˜V [Ó1Ð1ô �=Š=˜ Ó.Ð.r&   Úscalere   c                 ó>   • U b  U $ S[         R                  " U5      -  $ )z/Get the scale factor for attention computation.g      ð?)ÚmathÚsqrt)rp   re   s     r#   Ú_get_scale_factorrt   Ë   s    € àÑ%ˆ5ÐG¨C´$·)²)¸IÓ2FÑ,FÐGr&   Útensorr>   c                 ó¤   • U R                   S   U R                   S   pCXB-  nU R                  XX%5      R                  SS5      R                  5       $ )z1Reshape 3D tensor to 4D for multi-head attention.r   r6   )r9   ÚviewÚ	transposeÚ
contiguous)ru   r>   r)   r@   rd   re   s         r#   Ú_reshape_3d_to_4drz   Ð   sH   € ð $*§<¡<°¡?°F·L±LÀ±O�[ØÑ(€Ià�‰�J°ÓFß	‰�1�a‹ß	‰‹ðr&   ÚQÚKÚcurrent_q_num_headsÚcurrent_kv_num_headsÚqk_matmul_output_modec           	      óœ   • US:X  a  [        XX#U5      $ [        R                  " [        R                  " XR	                  SS5      5      5      $ )z1Get QK output tensor based on the specified mode.r   r5   rS   )Ú_compute_qk_output_for_mode_0r   Ú
zeros_likeÚmatmulrx   )r{   r|   r}   r~   rp   r   s         r#   Ú_get_qk_output_for_aten_spdar„   Ý   sH   € ð  Ó!Ü,ØÐ%¸Uó
ð 	
ô
 ×Ò¤§¢¨Q·±¸BÀÓ0CÓ DÓEÐEr&   c                 óL   ^ ^• [         R                  " T T-  S:H  UU 4S j5        g)z-Validate Group Query Attention configuration.r   c                  ó   >• ST ST  S3$ )Nzq_num_heads (z%) must be divisible by kv_num_heads (z	) for GQAr   )r~   r}   s   €€r#   r:   Ú-_validate_gqa_configuration.<locals>.<lambda>õ   s   ø€ �-Ð 3Ð4Ð4YÐZnÐYoÐoxÑyr&   N)r   r]   )r}   r~   s   ``r#   Ú_validate_gqa_configurationrˆ   ï   s"   ù€ ô 
‡L‚LØÐ2Ñ2°aÑ7Ýyõr&   c                 óð   • UnX#:w  a  X#-  nUR                  USS9n[        X@R                  S   5      n[        R                  " U5      nX-  n	XX-  n
[
        R                  " XšR                  SS5      5      $ )zDHelper function to compute QK output for qk_matmul_output_mode == 0.r   rZ   rE   r5   rS   )Úrepeat_interleavert   r9   rr   rs   r   rƒ   rx   )r{   r|   r}   r~   rp   ÚK_for_qkÚrepeat_factorÚscale_factorÚ
sqrt_scaleÚQ_scaledÚK_scaleds              r#   r�   r�   ù   sw   € ð €HØÓ2Ø+ÑCˆØ×&Ñ& }¸!Ð&Ð<ˆä$ U¯G©G°A©JÓ7€Lä—’˜<Ó(€JØ‰~€HØÑ$€HÜ�<Š<˜×"4Ñ"4°R¸Ó"<Ó=Ð=r&   ç        )Ú	is_causalÚkv_num_headsÚq_num_headsr   rp   ÚsoftcapÚsoftmax_precisionÚVÚ	attn_maskÚpast_keyÚ
past_valuer’   r“   r”   r•   r–   c                óü  • U R                   S   n[        U R                   5      S:X  a�  U R                   S   nU R                   nUb4  UUUR                   S   UR                   S   -   UR                   S   U-  4nO#UUUR                   S   UR                   S   U-  4nUnUUUUS   4nO§U R                   S   nU R                   nUbK  UR                   S   UR                   S   UR                   S   UR                   S   -   UR                   S   4nOUR                   nUnU R                   S   U R                   S   U R                   S   US   4n[        R                  " XðR                  U R
                  S9n[        R                  " UUR                  UR
                  S9n[        R                  " UUR                  UR
                  S9n[        R                  " UU R                  U R
                  S9nUUUU4$ )z@Fake implementation for Attention-23 for torch.compile purposes.r   rE   r   r6   ©ÚdtypeÚdevice)r9   r\   r   Úemptyr�   rž   )r{   r|   r—   r˜   r™   rš   r’   r“   r”   r   rp   r•   r–   r>   Úq_sequence_lengthÚoutput_shapeÚpresent_key_shapeÚpresent_value_shapeÚqk_output_shapern   Úpresent_keyÚpresent_valueÚ	qk_outputs                          r#   Ú_attention_23_fake_implr¨     sæ  € ð" —‘˜‘€Jô ˆ1�7‰7ƒ|�qÓàŸG™G A™JÐØ—w‘wˆð ÑàØØ—‘˜qÑ! A§G¡G¨A¡JÑ.Ø—‘˜‘
˜lÑ*ð	!Ñð ØØ—‘˜‘
Ø—‘˜‘
˜lÑ*ð	!Ðð 0Ðð ØØØ˜aÑ ð	
‰ð ŸG™G A™JÐà—w‘wˆð Ñà—‘˜‘
Ø—‘˜‘
Ø—‘˜qÑ! A§G¡G¨A¡JÑ.Ø—‘˜‘
ð	!Ñð !"§¡ÐØ/Ðð �G‰G�A‰JØ�G‰G�A‰JØ�G‰G�A‰JØ˜aÑ ð	
ˆô �[Š[˜¯W©W¸Q¿X¹XÑF€FÜ—+’+Ð/°q·w±wÀqÇxÁxÑP€KÜ—K’KÐ 3¸1¿7¹7È1Ï8É8ÑT€MÜ—’˜O°1·7±7À1Ç8Á8ÑL€Ià�; ¨yÐ8Ð8r&   Ú	Attentionc                óø	  • Su  pÞn[        U R                  5      nU R                  S   n[        U R                  5      S:X  a]  [        R                  " US:g  =(       a    US:g  S 5        U R                  S   n[	        U UU5      n [	        UUU5      n[	        UUU5      n[        R                  " [        U R                  5      S:H  =(       a7    [        UR                  5      S:H  =(       a    [        UR                  5      S:H  S 5        U R                  U   n[        U
U5      n
Ub  [        R                  " XA/US	9OUR                  5       nUb  [        R                  " XR/US	9OUR                  5       nUUp!U R                  U   nUR                  U   nU R                  U   nUR                  U   nUS
:H  =(       a?    U	S:H  =(       a3    USL =(       a(    USL =(       d    UR                  [        R                  :H  n[        UU5        U(       aL  [        R                  R                  R                  U UUUS
UU
[        UU:g  5      S9n[        U UUUU
U	5      nGO]UU:w  a%  UU-  nUR                  UUS	9nUR                  UUS	9n[        R                   " UUU R                  U R"                  S9nU(       ay  [        R                  " USL S 5        [        R$                  " [        R&                  " UU[        R                  U R"                  S95      nUR)                  U) [+        S5      5      nUb@  UR                  [        R                  :X  a  UR)                  U) [+        S5      5      nOUU-   n[        X R                  S   5      n[,        R.                  " U5      n U U -  n!UU -  n"[        R0                  " U!U"R3                  SS5      5      n#U#nU#U-   n$U	S:X  a  U$nUS
:”  a  U[        R4                  " U$U-  5      -  n$U	S:X  a  U$nUbu  U[6        ;   aU  U$R                  n%U$R9                  [:        R<                  U   5      n$[        R>                  " U$SS	9n&U&R9                  U%5      n&O+[        R>                  " U$SS	9n&O[        R>                  " U$SS	9n&U	S:X  a  U&n[        R0                  " U&U5      nUS:X  a1  UR3                  SS5      RA                  5       RC                  UUS5      nUUUU4$ )zMAttention-23 https://onnx.ai/onnx/operators/onnx__Attention.html#attention-23)r   r6   rE   r   rE   c                  ó   • g)Nz;q_num_heads and kv_num_heads must be provided for 3D inputsr   r   r&   r#   r:   Úattention_23.<locals>.<lambda>€  s   € ÐQr&   r   rG   c                  ó   • g)Nz'Q, K, and V should be 4D tensors by nowr   r   r&   r#   r:   r¬   ‰  s   € Ð9r&   NrZ   r‘   )r˜   Ú	dropout_pr’   rp   Ú
enable_gqarœ   c                  ó   • g)Nz'Cannot use both is_causal and attn_maskr   r   r&   r#   r:   r¬   ×  s   € Ð+Tr&   z-infr5   rS   r6   )"r\   r9   r   r]   rz   rt   rb   r0   r�   Úboolrˆ   ÚnnÚ
functionalÚscaled_dot_product_attentionr„   rŠ   Úzerosrž   ÚtrilÚonesÚmasked_fillÚfloatrr   rs   rƒ   rx   ÚtanhÚ-_ATTENTION_23_ALLOWED_INTERMEDIATE_PRECISIONSÚtor   ÚONNX_DTYPE_TO_TORCH_DTYPEÚsoftmaxry   rw   )'r{   r|   r—   r˜   r™   rš   r’   r“   r”   r   rp   r•   r–   Únum_head_dimÚsequence_dimÚhead_dimÚinput_shape_lenr>   r    Úq_head_sizer¥   r¦   r}   r~   Úkv_sequence_lengthÚcan_use_sdparn   r§   rŒ   Ú	attn_biasÚcausal_maskr�   rŽ   r�   r�   Úqk_matmul_outputÚqk_with_biasÚoriginal_dtypeÚ
qk_softmaxs'                                          r#   Úattention_23rÌ   c  sÚ  € ð& ,3Ñ(€L ô ˜!Ÿ'™'“l€OØ—‘˜‘€Jô ˆ1�7‰7ƒ|�qÓÜ�ŠØ˜1Ñ×2 °Ñ!2ÙQô	
ð ŸG™G A™JÐÜ˜a ¨[Ó9ˆÜ˜a ¨\Ó:ˆÜ˜a ¨\Ó:ˆä	‡L‚LÜˆA�G‰G‹˜Ñ×Eœc !§'¡'›l¨aÑ/×E´C¸¿¹³LÀAÑ4EÙ9ôð —'‘'˜(Ñ#€KÜ˜e [Ó1€Eð
 Ñô 	�	Š	�8�- \Ò2à�W‰W‹Yð ð Ñ!ô 	�	Š	�:�/ |Ò4à�W‰W‹Yð ð ˜€qð Ÿ'™' ,Ñ/ÐØŸ7™7 <Ñ0ÐØŸ™ Ñ-ÐØŸ™ Ñ.Ðð 	�3‰÷ 	AØ! QÑ&÷	Aà Ð%÷	Að ˜$Ð×? )§/¡/´U·Z±ZÑ"?ð	 ô  Ð 3Ð5IÔJæä—‘×$Ñ$×AÑAØØØØØØØÜØ#Ð';Ñ;óð Bð 
ˆô 1ØØØØ ØØ!ó
Š	ð Ð"6Ó6Ø/Ð3GÑGˆMØ×#Ñ# M°|Ð#ÐDˆAØ×#Ñ# M°|Ð#ÐDˆAô —K’KØÐ1¸¿¹ÈÏÉñ
ˆ	ö
 Ü�LŠLØ˜TÐ!Ñ#Tôô  Ÿ*š*Ü—
’
Ø%Ø&ÜŸ*™*ØŸ8™8ñ	óˆKð "×-Ñ-¨{¨l¼EÀ&»MÓJˆIð Ñ Ø�‰¤%§*¡*Ó,à%×1Ñ1°9°*¼eÀF»mÓL‘	ð &¨	Ñ1�	ô )¨·±¸±
Ó;ˆô —Y’Y˜|Ó,ˆ
Ø�z‘>ˆØ�z‘>ˆô !Ÿ<š<¨°(×2DÑ2DÀRÈÓ2LÓMÐð %ˆ	ð (¨)Ñ3ˆà  AÓ%Ø$ˆIð �S‹=Ø"¤U§Z¢Z°¸wÑ0FÓ%GÑGˆLà  AÓ%Ø$ˆIð Ñ(à Ô$QÓQØ!-×!3Ñ!3�Ø+Ÿ™Ü#×=Ñ=Ð>OÑPó �ô #Ÿ]š]¨<¸RÑ@�
Ø'Ÿ]™]¨>Ó:‘
ä"Ÿ]š]¨<¸RÑ@‘
äŸš |¸Ñ<ˆJà  AÓ%Ø"ˆIô —’˜j¨!Ó,ˆð ˜!Óð ×Ñ˜Q Ó"×-Ñ-Ó/×4Ñ4°ZÐARÐTVÓWð 	ð �; ¨yÐ8Ð8r&   )N)NNN)%Ú__doc__rr   Úcollections.abcr   Útypingr   r   Útyping_extensionsr   r   Útorch.onnx.opsr   r   r	   r
   ÚdictÚ_opsÚ
OpOverloadÚ__annotations__Ú	frozensetr»   ÚstrÚintr'   ÚTensorr±   r1   ro   r¹   rt   rz   r„   rˆ   r�   Útupler¨   rÌ   r   r&   r#   Ú<module>rÛ      s,  ðòó Ý $ß $Ý 'ã Ý *ñ ˆtƒ_€ÙˆTƒ]€ð ACÐ ˜˜UŸZ™Z×2Ñ2°HÐ<Ñ=Ó BÙ09òó1Ð -ðØðØ!$ðØ19¸"¸b¸&Ñ1Aðàˆx˜˜B˜ÑÐ  (¨2¨r¨6Ñ"2Ð2Ñ3ôð. ,0ð	ð ØØ !òØ‡|�|ðà�|‰|ðð �|‰|ðð ˜5Ÿ<™<Ñ(ð	ð ðð ðð ðð ‡\�\öñ 
Ð
˜RÐ!?Ó@ð
 ,0ð	D/ð ØØ !òD/Ø‡|�|ðD/à�|‰|ðD/ð �|‰|ðD/ð ˜5Ÿ<™<Ñ(ð	D/ð ðD/ð ðD/ð ðD/ð ‡\�\õD/ó AðD/ðNH˜X e™_ð H¸ð HÀô Hð

Ø�L‰Lð
Ø&)ð
Ø69ð
à
‡\�\ô
ðFØ‡|�|ðFà‡|�|ðFð ðFð ð	Fð
 �E‰?ðFð ðFð ‡\�\ôFð$ØðØ47ðà	ôð>Ø‡|�|ð>à‡|�|ð>ð ð>ð ð	>ð
 �E‰?ð>ð ‡\�\ô>ð4 )-Ø'+Ø)-ðQ9ð ØØØ!"Ø!ØØ'+òQ9Ø‡|�|ðQ9à‡|�|ðQ9ð ‡|�|ðQ9ð ˜Ÿ™Ñ%ð	Q9ð
 �u—|‘|Ñ$ðQ9ð ˜Ÿ™Ñ&ðQ9ð ðQ9ð ðQ9ð ðQ9ð ðQ9ð �E‰?ðQ9ð ðQ9ð   ‘}ðQ9ð ˆ5�<‰<˜Ÿ™ u§|¡|°U·\±\ÐAÑBöQ9ñh 
ˆ+�rÐ2Ó3ð
 )-Ø'+Ø)-ð9ð ØØØ!"Ø!ØØ'+ò9Ø‡|�|ð9à‡|�|ð9ð ‡|�|ð9ð ˜Ÿ™Ñ%ð	9ð
 �u—|‘|Ñ$ð9ð ˜Ÿ™Ñ&ð9ð ð9ð ð9ð ð9ð ð9ð �E‰?ð9ð ð9ð   ‘}ð9ð ˆ5�<‰<˜Ÿ™ u§|¡|°U·\±\ÐAÑBõ9ó 4ñ9r&   