Ë
    z�h6/  ã                  óÞ  — 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 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 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 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$ er!d dl%m
c m&Z' d dl(m)Z) d dl*m+Z+ d dl*m,Z, d dl#m-Z-  G d„ deeeej\                  f   eeef   «      Z/ G d„ deedef   «      Z0 G d„ d eedef   e«      Z1y)!é    )ÚannotationsN)Úreduce)ÚTYPE_CHECKING)ÚIterable)ÚSequence)ÚCompliantThen)ÚCompliantWhen)ÚLazyNamespace)ÚDepthTrackingNamespace©ÚDaskLazyFrame©ÚDaskExpr)ÚDaskSelectorNamespace)Úalign_series_full_broadcast)Úname_preserving_div)Úname_preserving_sum)Únarwhals_to_native_dtype)Úvalidate_comparand)Úcombine_alias_output_names)Úcombine_evaluate_output_names)ÚImplementation)ÚDType)ÚConcatMethod)ÚNonNestedLiteral)ÚVersionc                  óâ   — e Zd ZU ej                  Zded<   edd„«       Zedd„«       Z	edd„«       Z
dd„Zdd„Zdd„Zdd	„Zdd
„Zdd„Z	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Zdd„Z	 	 	 	 	 	 	 	 dd„Zy)ÚDaskNamespacer   Ú_implementationc                ó,   — t        j                  | «      S ©N)r   Úfrom_namespace©Úselfs    úV/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/narwhals/_dask/namespace.pyÚ	selectorszDaskNamespace.selectors+   s   € ä$×3Ñ3°DÓ9Ð9ó    c                ó   — t         S r!   r   r#   s    r%   Ú_exprzDaskNamespace._expr/   ó   € äˆr'   c                ó   — t         S r!   r   r#   s    r%   Ú
_lazyframezDaskNamespace._lazyframe3   s   € äÐr'   c               ó    — || _         || _        y r!   )Ú_backend_versionÚ_version)r$   Úbackend_versionÚversions      r%   Ú__init__zDaskNamespace.__init__7   s   € Ø /ˆÔØˆ�r'   c           	     ór   ‡ ‡‡— dˆˆ ˆfd„}‰ j                  |ddd„ d ‰ j                  ‰ j                  ¬«      S )Nc                ó  •— ‰�0t        ‰‰j                  «      }t        j                  ‰g|d¬«      }nt        j                  ‰gd¬«      }| j                  j
                  }t        j                  ||¬«      }|d   j                  «       gS )NÚliteral)ÚdtypeÚname)r7   )Únpartitionsr   )	r   r/   ÚpdÚSeriesÚ_native_framer8   ÚddÚfrom_pandasÚ	to_series)ÚdfÚnative_dtypeÚnative_pd_seriesr8   Údask_seriesr6   r$   Úvalues        €€€r%   ÚfunczDaskNamespace.lit.<locals>.func<   sy   ø€ ØÐ Ü7¸¸t¿}¹}ÓM�Ü#%§9¡9¨e¨W¸LÈyÔ#YÑ ä#%§9¡9¨e¨W¸9Ô#EÐ Ø×*Ñ*×6Ñ6ˆKÜŸ.™.Ð)9À{ÔSˆKØ ‘N×,Ñ,Ó.Ð/Ð/r'   r   Úlitc                ó   — dgS ©Nr5   © ©Ú_dfs    r%   ú<lambda>z#DaskNamespace.lit.<locals>.<lambda>J   s   € ¨y¨k€ r'   ©ÚdepthÚfunction_nameÚevaluate_output_namesÚalias_output_namesr0   r1   ©r?   r   Úreturnzlist[dx.Series]©r)   r.   r/   )r$   rC   r6   rD   s   ``` r%   rE   zDaskNamespace.lit;   s?   ú€ ÷	0ð �z‰zØØØÙ"9Ø#Ø ×1Ñ1Ø—M‘Mð ó 
ð 	
r'   c           	     ód   — dd„}| j                  |ddd„ d | j                  | j                  ¬«      S )Nc                ól   — | j                   | j                  d      j                  j                  «       gS ©Nr   )r;   ÚcolumnsÚsizer>   )r?   s    r%   rD   zDaskNamespace.len.<locals>.funcQ   s-   € à×$Ñ$ R§Z¡Z°¡]Ñ3×8Ñ8×BÑBÓDÐEÐEr'   r   Úlenc                ó   — dgS )NrY   rH   rI   s    r%   rK   z#DaskNamespace.len.<locals>.<lambda>Y   s   € ¨u¨g€ r'   rL   rQ   rS   )r$   rD   s     r%   rY   zDaskNamespace.lenP   s?   € ó	Fð �z‰zØØØÙ"5Ø#Ø ×1Ñ1Ø—M‘Mð ó 
ð 	
r'   c           	     ó¦   ‡— dˆfd„}| j                  |t        d„ ‰D «       «      dz   dt        ‰Ž t        ‰Ž | j                  | j
                  ¬«      S )Nc                óf   •‡ — t        ‰ gˆ fd„‰D «       ¢­Ž }t        t        j                  |«      gS )Nc              3  ó<   •K  — | ]  } |‰«      D ]  }|–— Œ Œ y ­wr!   rH   ©Ú.0r)   Úsr?   s      €r%   ú	<genexpr>z=DaskNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>b   ó!   øè ø€ Ò>˜E±E¸"³IÒ>¨q”aÐ>�aÑ>ùó   ƒ)r   r   ÚoperatorÚand_©r?   ÚseriesÚexprss   ` €r%   rD   z*DaskNamespace.all_horizontal.<locals>.func`   s3   ù€ Ü0ØðÛ> UÔ>òˆFô œ8Ÿ=™=¨&Ó1Ð2Ð2r'   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr!   ©Ú_depth©r_   Úxs     r%   ra   z/DaskNamespace.all_horizontal.<locals>.<genexpr>h   ó   è ø€ Ò. 1�a—h•hÑ.ùó   ‚é   Úall_horizontal©ÚcallrM   rN   rO   rP   r0   r1   rQ   ©r)   Úmaxr   r   r.   r/   ©r$   rh   rD   s    ` r%   rq   zDaskNamespace.all_horizontal_   sY   ø€ õ	3ð �z‰zØÜÑ.¨Ô.Ó.°Ñ2Ø*Ü"?ÀÐ"GÜ9¸5ÐAØ ×1Ñ1Ø—M‘Mð ó 
ð 	
r'   c           	     ó¦   ‡— dˆfd„}| j                  |t        d„ ‰D «       «      dz   dt        ‰Ž t        ‰Ž | j                  | j
                  ¬«      S )Nc                óf   •‡ — t        ‰ gˆ fd„‰D «       ¢­Ž }t        t        j                  |«      gS )Nc              3  ó<   •K  — | ]  } |‰«      D ]  }|–— Œ Œ y ­wr!   rH   r^   s      €r%   ra   z=DaskNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>s   rb   rc   )r   r   rd   Úor_rf   s   ` €r%   rD   z*DaskNamespace.any_horizontal.<locals>.funcq   s3   ù€ Ü0ØðÛ> UÔ>òˆFô œ8Ÿ<™<¨Ó0Ð1Ð1r'   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr!   rj   rl   s     r%   ra   z/DaskNamespace.any_horizontal.<locals>.<genexpr>y   rn   ro   rp   Úany_horizontalrr   rQ   rt   rv   s    ` r%   r|   zDaskNamespace.any_horizontalp   sY   ø€ õ	2ð �z‰zØÜÑ.¨Ô.Ó.°Ñ2Ø*Ü"?ÀÐ"GÜ9¸5ÐAØ ×1Ñ1Ø—M‘Mð ó 
ð 	
r'   c           	     ó¦   ‡— dˆfd„}| j                  |t        d„ ‰D «       «      dz   dt        ‰Ž t        ‰Ž | j                  | j
                  ¬«      S )Nc                ó€   •‡ — t        ‰ gˆ fd„‰D «       ¢­Ž }t        j                  |d¬«      j                  d¬«      gS )Nc              3  ó<   •K  — | ]  } |‰«      D ]  }|–— Œ Œ y ­wr!   rH   r^   s      €r%   ra   z=DaskNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>„   rb   rc   rp   ©Úaxis)r   r<   ÚconcatÚsumrf   s   ` €r%   rD   z*DaskNamespace.sum_horizontal.<locals>.func‚   sA   ù€ Ü0ØðÛ> UÔ>òˆFô —I‘I˜f¨1Ô-×1Ñ1°qÐ1Ó9Ð:Ð:r'   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr!   rj   rl   s     r%   ra   z/DaskNamespace.sum_horizontal.<locals>.<genexpr>Š   rn   ro   rp   Úsum_horizontalrr   rQ   rt   rv   s    ` r%   r…   zDaskNamespace.sum_horizontal�   sY   ø€ õ	;ð �z‰zØÜÑ.¨Ô.Ó.°Ñ2Ø*Ü"?ÀÐ"GÜ9¸5ÐAØ ×1Ñ1Ø—M‘Mð ó 
ð 	
r'   c               ó|  — |sd}t        |«      ‚|D �cg c]  }|j                  ‘Œ }}|d   j                  }|dk(  r¹t        |dd  d¬«      D ]n  \  }}|j                  }t	        |«      t	        |«      k(  r||k(  j                  «       rŒ=d|j                  «       › d|› d|j                  «       › d	�}t        |«      ‚ t        t        j                  |dd
¬«      | j                  | j                  ¬«      S |dk(  r8t        t        j                  |dd¬«      | j                  | j                  ¬«      S t        ‚c c}w )NzNo items to concatenater   Úverticalrp   )Ústartz>unable to vstack, column names don't match:
   - dataframe 0: z
   - dataframe z: ú
Úinner)r�   Újoin)r0   r1   ÚdiagonalÚouter)ÚAssertionErrorr;   rW   Ú	enumeraterY   ÚallÚto_listÚ	TypeErrorr   r<   r‚   r.   r/   ÚNotImplementedError)	r$   ÚitemsÚhowÚmsgÚiÚdfsÚcols_0r?   Úcols_currents	            r%   r‚   zDaskNamespace.concat’   sE  € ñ Ø+ˆCÜ  Ó%Ð%Ø(-Ö. 1ˆq�‹Ð.ˆÐ.Ø�Q‘—‘ˆØ�*ÒÜ" 3 q r 7°!Ô4ò 
)‘��2Ø!Ÿz™z�ä˜Ó&¬#¨f«+Ò5¸LÈFÑ<R×;WÑ;WÕ;Yð-Ø-3¯^©^Ó-=Ð,>ð ?*Ø*+¨¨B¨|×/CÑ/CÓ/EÐ.FÀbðJð ô
 $ C›.Ð(ð
)ô !Ü—	‘	˜# A¨GÔ4Ø $× 5Ñ 5ØŸ™ôð ð
 �*ÒÜ Ü—	‘	˜# A¨GÔ4Ø $× 5Ñ 5ØŸ™ôð ô "Ð!ùò5 /s   ”D9c           	     ó¦   ‡— dˆfd„}| j                  |t        d„ ‰D «       «      dz   dt        ‰Ž t        ‰Ž | j                  | j
                  ¬«      S )Nc                óê   •— ‰D ��cg c]  } || «      D ]  }|‘Œ Œ }}}t        | gd„ |D «       ¢­Ž }t        | gd„ |D «       ¢­Ž }t        t        t        |«      t        t        |«      «      gS c c}}w )Nc              3  ó>   K  — | ]  }|j                  d «      –— Œ y­w)r   N)Úfillna©r_   r`   s     r%   ra   z>DaskNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>·   s   è ø€ Ò6YÀq°q·x±xÀ·{Ñ6Yùs   ‚c              3  óB   K  — | ]  }d |j                  «       z
  –— Œ y­w)rp   N)ÚisnarŸ   s     r%   ra   z>DaskNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>¹   s   è ø€ Ò9 q�a˜!Ÿ&™&›(•lÑ9ùs   ‚)r   r   r   r   )r?   r)   r`   Úexpr_resultsrg   Únon_narh   s         €r%   rD   z+DaskNamespace.mean_horizontal.<locals>.funcµ   s…   ø€ Ø+0×D %¹%À»)ÒD°QšAÐD˜AÐDˆLÑDÜ0°ÐZÑ6YÈLÔ6YÒZˆFÜ0ØðÙ9¨LÔ9òˆFô $ÜÔ.°Ó7ÜÔ.°Ó7óðð ùó Es   ‡A/c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr!   rj   rl   s     r%   ra   z0DaskNamespace.mean_horizontal.<locals>.<genexpr>Ä   rn   ro   rp   Úmean_horizontalrr   rQ   rt   rv   s    ` r%   r¥   zDaskNamespace.mean_horizontal´   sY   ø€ õ	ð �z‰zØÜÑ.¨Ô.Ó.°Ñ2Ø+Ü"?ÀÐ"GÜ9¸5ÐAØ ×1Ñ1Ø—M‘Mð ó 
ð 	
r'   c           	     ó¦   ‡— dˆfd„}| j                  |t        d„ ‰D «       «      dz   dt        ‰Ž t        ‰Ž | j                  | j
                  ¬«      S )Nc                ó€   •‡ — t        ‰ gˆ fd„‰D «       ¢­Ž }t        j                  |d¬«      j                  d¬«      gS )Nc              3  ó<   •K  — | ]  } |‰«      D ]  }|–— Œ Œ y ­wr!   rH   r^   s      €r%   ra   z=DaskNamespace.min_horizontal.<locals>.func.<locals>.<genexpr>Ï   rb   rc   rp   r€   )r   r<   r‚   Úminrf   s   ` €r%   rD   z*DaskNamespace.min_horizontal.<locals>.funcÍ   óA   ù€ Ü0ØðÛ> UÔ>òˆFô —I‘I˜f¨1Ô-×1Ñ1°qÐ1Ó9Ð:Ð:r'   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr!   rj   rl   s     r%   ra   z/DaskNamespace.min_horizontal.<locals>.<genexpr>Ö   rn   ro   rp   Úmin_horizontalrr   rQ   rt   rv   s    ` r%   r¬   zDaskNamespace.min_horizontalÌ   óY   ø€ õ	;ð �z‰zØÜÑ.¨Ô.Ó.°Ñ2Ø*Ü"?ÀÐ"GÜ9¸5ÐAØ ×1Ñ1Ø—M‘Mð ó 
ð 	
r'   c           	     ó¦   ‡— dˆfd„}| j                  |t        d„ ‰D «       «      dz   dt        ‰Ž t        ‰Ž | j                  | j
                  ¬«      S )Nc                ó€   •‡ — t        ‰ gˆ fd„‰D «       ¢­Ž }t        j                  |d¬«      j                  d¬«      gS )Nc              3  ó<   •K  — | ]  } |‰«      D ]  }|–— Œ Œ y ­wr!   rH   r^   s      €r%   ra   z=DaskNamespace.max_horizontal.<locals>.func.<locals>.<genexpr>á   rb   rc   rp   r€   )r   r<   r‚   ru   rf   s   ` €r%   rD   z*DaskNamespace.max_horizontal.<locals>.funcß   rª   r'   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr!   rj   rl   s     r%   ra   z/DaskNamespace.max_horizontal.<locals>.<genexpr>è   rn   ro   rp   Úmax_horizontalrr   rQ   rt   rv   s    ` r%   r²   zDaskNamespace.max_horizontalÞ   r­   r'   c                ó0   — t         j                  || ¬«      S )N)Úcontext)ÚDaskWhenÚ	from_expr)r$   Ú	predicates     r%   ÚwhenzDaskNamespace.whenð   s   € Ü×!Ñ! )°TÐ!Ó:Ð:r'   c               óÐ   ‡‡‡— d
ˆˆˆfd„}| j                  |t        d„ ‰D «       «      dz   dt        ‰d   dd„ «      t        ‰d   dd «      | j                  | j                  ¬	«      S )Nc                ó2  •— ‰D ��cg c]  } || «      D ]  }|‘Œ Œ }}}d„ t        | g|¢­Ž D «       }t        | g|¢­Ž D �cg c]  }|j                  «       ‘Œ }}‰s=t        t        j                  |«      }t        ˆfd„|«      j                  | d «      }|gS t        ||«      D ��cg c]  \  }}|j                  | d«      ‘Œ c}}^}	}
ˆfd„|d d D «       }t        t        j                  d„ t        ||
«      D «       |	«      }|gS c c}}w c c}w c c}}w )Nc              3  óF   K  — | ]  }|j                  t        «      –— Œ y ­wr!   )ÚastypeÚstrrŸ   s     r%   ra   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>û   s   è ø€ ò Ø"#�—‘œ—ñùs   ‚!c                ó   •— | ‰z   |z   S r!   rH   )rm   ÚyÚ	separators     €r%   rK   z8DaskNamespace.concat_str.<locals>.func.<locals>.<lambda>  s   ø€ ¨Q°©]¸QÑ->€ r'   Ú c              3  óR   •K  — | ]  }|j                  d ‰dœt        ¬«      –— Œ  y­w)rÁ   )TF)ÚmetaN)Úmapr½   )r_   ÚnmrÀ   s     €r%   ra   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>
  s+   øè ø€ ò àð —F‘F "¨YÑ7¼c�F×Bñùs   ƒ$'éÿÿÿÿc              3  ó,   K  — | ]  \  }}||z   –— Œ y ­wr!   rH   )r_   r`   Úvs      r%   ra   z9DaskNamespace.concat_str.<locals>.func.<locals>.<genexpr>  s   è ø€ Ò?™t˜q !�Q˜•UÑ?ùs   ‚)r   r¡   r   rd   rz   ÚwhereÚzipÚadd)r?   r)   r`   r¢   rg   Ú	null_maskÚnull_mask_resultÚresultrÅ   Ú
init_valueÚvaluesÚ
separatorsrh   Úignore_nullsrÀ   s               €€€r%   rD   z&DaskNamespace.concat_str.<locals>.funcù   s*  ø€ Ø+0×D %¹%À»)ÒD°QšAÐD˜AÐDˆLÑDñÜ'BÀ2Ð'UÈÒ'UôˆFô ,GÀrÐ+YÈLÒ+YÖZ a˜Ÿ™�ÐZˆIÐZáÜ#)¬(¯,©,¸	Ó#BÐ ÜÓ >ÀÓG×MÑMØ%Ð% tó�ð$ �8ˆOô 36°f¸iÓ2H÷'Ù).¨¨B�A—G‘G˜R˜C Õ$ó'Ð#�
˜Vóà'¨¨˜nô�
ô  Ü—L‘LÙ?¤s¨:°vÓ'>Ô?Øó�ð �8ˆOùó5 Eùò [ùó's   ‡DÁDÂ(Dc              3  ó4   K  — | ]  }|j                   –— Œ y ­wr!   rj   rl   s     r%   ra   z+DaskNamespace.concat_str.<locals>.<genexpr>  rn   ro   rp   Ú
concat_strr   Ú_evaluate_output_namesc                ó   — dgS rG   rH   rI   s    r%   rK   z*DaskNamespace.concat_str.<locals>.<lambda>  s   € ÀÀ€ r'   Ú_alias_output_namesrr   rQ   )r)   ru   Úgetattrr.   r/   )r$   rÀ   rÒ   rh   rD   s    ``` r%   rÔ   zDaskNamespace.concat_stró   sq   ú€ ÷	ð: �z‰zØÜÑ.¨Ô.Ó.°Ñ2Ø&Ü")Ø�a‘Ð2Ñ4Kó#ô  ' u¨Q¡xÐ1FÈÓMØ ×1Ñ1Ø—M‘Mð ó 

ð 
	
r'   N)rR   r   )rR   ztype[DaskExpr])rR   ztype[DaskLazyFrame])r0   ztuple[int, ...]r1   r   rR   ÚNone)rC   r   r6   zDType | type[DType] | NonerR   r   )rR   r   )rh   r   rR   r   )r”   zIterable[DaskLazyFrame]r•   r   rR   r   )r·   r   rR   rµ   )rh   r   rÀ   r½   rÒ   ÚboolrR   r   )Ú__name__Ú
__module__Ú__qualname__r   ÚDASKr   Ú__annotations__Úpropertyr&   r)   r,   r2   rE   rY   rq   r|   r…   r‚   r¥   r¬   r²   r¸   rÔ   rH   r'   r%   r   r   %   sÉ   … ð '5×&9Ñ&9€O�^Ó9àò:ó ð:ð òó ðð òó ðó ó
ó*
ó
ó"
ó"
ð" "Ø,ð "Ø6Bð "à	ó "óD
ó0
ó$
ó$;ð-
àð-
ð ð-
ð ð	-
ð
 
ô-
r'   r   c                  ó&   — e Zd Zedd„«       Zdd„Zy)rµ   c                ó   — t         S r!   )ÚDaskThenr#   s    r%   Ú_thenzDaskWhen._then$  r*   r'   c                ó  — | j                  |«      d   }t        | j                  t        «      r| j                  |«      d   }n| j                  }t	        ||«      \  }t        ||«       | j                  €|j                  |«      gS t        | j                  t        «      r| j                  |«      d   }n|j                  || j                  «      gS t	        ||«      \  }t        ||«       |j                  ||«      gS rV   )Ú
_conditionÚ
isinstanceÚ_then_valuer   r   r   Ú_otherwise_valuerÉ   )r$   r?   Ú	conditionÚ
then_valueÚthen_seriesÚotherwise_valueÚotherwise_seriess          r%   Ú__call__zDaskWhen.__call__(  sð   € Ø—O‘O BÓ'¨Ñ*ˆ	ä�d×&Ñ&¬Ô1Ø×)Ñ)¨"Ó-¨aÑ0‰Jà×)Ñ)ˆJÜ4°R¸ÓD‰ˆÜ˜9 kÔ2à× Ñ Ð(Ø×%Ñ% iÓ0Ð1Ð1ä�d×+Ñ+¬XÔ6Ø"×3Ñ3°BÓ7¸Ñ:‰Oà×%Ñ% i°×1FÑ1FÓGÐHÐHÜ9¸"¸oÓNÑÐ	Ü˜9Ð&6Ô7Ø×!Ñ! )Ð-=Ó>Ð?Ð?r'   N)rR   ztype[DaskThen])r?   r   rR   zSequence[dx.Series])rÛ   rÜ   rÝ   rà   rä   rï   rH   r'   r%   rµ   rµ   #  s   „ Øòó ðô@r'   rµ   z	dx.Seriesc                  ó   — e Zd Zy)rã   N)rÛ   rÜ   rÝ   rH   r'   r%   rã   rã   >  s   … r'   rã   )2Ú
__future__r   rd   Ú	functoolsr   Útypingr   r   r   Údask.dataframeÚ	dataframer<   Úpandasr9   Únarwhals._compliantr   r	   r
   Únarwhals._compliant.namespacer   Únarwhals._dask.dataframer   Únarwhals._dask.exprr   Únarwhals._dask.selectorsr   Únarwhals._dask.utilsr   r   r   r   r   Únarwhals._expression_parsingr   r   Únarwhals.utilsr   Údask.dataframe.dask_exprÚ	dask_exprÚdxÚnarwhals.dtypesr   Únarwhals.typingr   r   r   Ú	DataFramer   rµ   rã   rH   r'   r%   ú<module>r     s¿   ðÝ "ã Ý Ý  Ý Ý å Û å -Ý -Ý -Ý @Ý 2Ý (Ý :Ý <Ý 4Ý 4Ý 9Ý 3Ý CÝ FÝ )áß)Ð)å%Ý,Ý0Ý&ô{
Ø�- ¨2¯<©<Ð7Ñ8Ø˜=¨(Ð2Ñ3ô{
ô|@ˆ}˜]¨K¸ÐAÑBô @ô6 Sˆ}˜]¨K¸ÐAÑBÀHÕ Rr'   