Ë
    êÿæiq  ã                   ó   — d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZmZ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mZmZmZ  ej>                  ddgddgddgddgddgddggd¬«      Z  ej>                  g d¢«      Z! ej>                  g d¢«      Z" ej>                  dgdgdgdgdgdggd¬«      Z# ej>                  d d gddgddgddgddgddgddgddgddgg	«      Z$ ej>                  g d¢«      Z% ej>                  g d¢«      Z& ej>                  dgdgdgdgd gdgdgdgdgg	«      Z' ej>                  dd gdd gdd gdd gd d gdd gdd gdd gdd gg	«      Z( ej>                  g d¢«      Z)g d¢Z*d„ Z+ejX                  j[                  dddg«      ejX                  j[                  dg d¢«      d„ «       «       Z.d„ Z/d„ Z0d „ Z1d!„ Z2d"„ Z3d#„ Z4d$„ Z5ejX                  j[                  d% e6d&«      «      d'„ «       Z7d(„ Z8ejX                  j[                  d)dd*g«      ejX                  j[                  dd*dg«      d+„ «       «       Z9ejX                  j[                  d,ejt                  ejt                  fejv                  ejv                  fejx                  ejv                  fejz                  ejv                  fg«      d-„ «       Z>d.„ Z?ejX                  j[                  dd/d0g«      d1„ «       Z@d2„ ZAd3„ ZBd4„ ZCd5„ ZDejX                  j[                  d6g d7¢«      d8„ «       ZEd9„ ZFd:„ ZGejX                  j[                  dd/d0g«      d;„ «       ZHd<„ ZIejX                  j[                  dg d¢«      d=„ «       ZJejX                  j[                  dd/d0g«      d>„ «       ZKd?„ ZLejX                  j[                  d)d@g«      ejX                  j[                  dAdBg«      ejX                  j[                  dCd/d0g«      dD„ «       «       «       ZMy)Eé    N)Úlinalg)ÚKMeans)Ú
LedoitWolfÚShrunkCovarianceÚledoit_wolf)Ú
make_blobs)ÚLinearDiscriminantAnalysisÚQuadraticDiscriminantAnalysisÚ_cov)ÚShuffleSplitÚcross_val_score)ÚStandardScaler)Úcheck_random_state)Ú_convert_containerÚassert_allcloseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equaléþÿÿÿéÿÿÿÿé   é   Úf©Údtype)r   r   r   r   r   r   )r   r   r   r   é   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   éýÿÿÿ)	r   r   r   r   r   r   r   r   r   )	)ÚsvdN)ÚlsqrN)ÚeigenN)r   Úauto)r   r   )r   ç…ëQ¸…Û?)r    r!   )r    r   )r    r"   c            	      ó¸  — t         D �][  } | \  }}t        ||¬«      }|j                  t        t        «      j                  t        «      }t        |t        d|z  «       |j                  t        t        «      j                  t        «      }t        |t        d|z  «       |j                  t        «      }t        |d d …df   dkD  dz   t        d|z  «       |j                  t        «      }t        t        j                  |«      |ddd|z  ¬«       |j                  t        t        «      j                  t        «      }t        j                  |t        k7  «      r�ŒTJ d|z  «       ‚ t        dd¬«      }t        j                   t"        «      5  |j                  t        t        «       d d d «       t        d	d
t%        «       ¬«      }t        j                   t&        d¬«      5  |j                  t        t        «       d d d «       t        dt)        «       ¬«      }t        j                   t&        d¬«      5  |j                  t        t        «       d d d «       t        d	t+        dd¬«      ¬«      }t        j                   t&        «      5  |j                  t        t        «       d d d «       y # 1 sw Y   �ŒxY w# 1 sw Y   Œ¾xY w# 1 sw Y   ŒwxY w# 1 sw Y   y xY w)N©ÚsolverÚ	shrinkagez	solver %sr   ç      à?ç�íµ ÷Æ°>)ÚrtolÚatolÚerr_msgr   r!   r   çš™™™™™¹?©r%   r&   Úcovariance_estimatorú[covariance_estimator and shrinkage parameters are not None. Only one of the two can be set.©Úmatch©r%   r.   z.covariance estimator is not supported with svdr   ©Ú
n_clustersÚn_init)Úsolver_shrinkager	   ÚfitÚXÚyÚpredictr   ÚX1Úpredict_probaÚpredict_log_probar   ÚnpÚexpÚy3ÚanyÚpytestÚraisesÚNotImplementedErrorr   Ú
ValueErrorr   r   )	Ú	test_caser%   r&   ÚclfÚy_predÚy_pred1Úy_proba_pred1Úy_log_proba_pred1Úy_pred3s	            ú}/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/sklearn/tests/test_discriminant_analysis.pyÚtest_lda_predictrN   D   s/  € ÷ &Ð%ˆ	Ø%Ñˆ�	Ü(°À)ÔLˆØ—‘œœA“×&Ñ&¤qÓ)ˆÜ˜6¤1 k°FÑ&:Ô;ð —'‘'œ"œa“.×(Ñ(¬Ó,ˆÜ˜7¤A {°VÑ';Ô<ð ×)Ñ)¬"Ó-ˆÜ˜Mª!¨Q¨$Ñ/°#Ñ5¸Ñ:¼A¸{ÈVÑ?SÔTØ×1Ñ1´"Ó5ÐÜÜ�F‰FÐ$Ó%ØØØØ &Ñ(õ	
ð —'‘'œ!œR“.×(Ñ(¬Ó+ˆä�v‰v�g¤‘mÖ$Ð: k°FÑ&:Ó:Ð$ð3 &ô6 %¨E¸VÔ
D€CÜ	�‰Ô*Õ	+Ø�‰””1Œ÷ 
,ô %Ø Ô;KÓ;Mô€Cô 
�‰Üð.ö
ð 	�‰””1Œ÷
ô %¨EÌ
ËÔ
U€CÜ	�‰ÜÐJö
ð 	�‰””1Œ÷
ô %Ø¬F¸aÈÔ,Oô€Cô 
�‰”zÕ	"Ø�‰””1Œ÷ 
#Ð	"÷7 
,Ñ	+ú÷
ð 
ú÷
ð 
ú÷ 
#Ð	"ús0   ÆJ+Ç J8È3KÊKÊ+J5Ê8KËKËKÚ	n_classesr%   ©r   r   r    c                 ó„  — dd„}t        j                  ddgddgddgg«      d | }t        j                  ddgddgggt        |«      z  «      } |d	||d
¬«      \  }}t        | dd ¬«      j	                  ||«      }t        |j                  |d¬«       t        |j                  |d   d¬«       t        j                  |d   «      }g }	g }
t        t        |«      dz
  «      D ]Ž  }|	j                  t        j                  |||   |d   z
  d d …t         j                  f   «      «       |
j                  t        j                  d||   |d   z   t         j                  d d …f   z  |	d   «      «       Œ� t        j                  ddgg«      }d„ }t        j                  t        |dz
  «      D �cg c]H  }t         |||	|
|«      dt        t        |dz
  «      D �cg c]  } |||	|
|«      ‘Œ c}«      z   z  «      ‘ŒJ c}«      }dt        j                  |«      z
  }t        ddt        t        |dz
  «      D �cg c]  } |||	|
|«      ‘Œ c}«      z   z  «      }|t!        j"                  |«      k(  sJ ‚t        |j%                  |«      t        j&                  ||g«      t         j                     d¬«       y c c}w c c}w c c}w )Nc                 ó`  — t        |«      }t        j                  t        ||«      D ��cg c]%  \  }}|j	                  ||| t        |«      z  ¬«      ‘Œ' c}}«      }t        j                  t        t        |«      «      D �cg c]  }|g| t        |«      z  z  ‘Œ c}«      }	||	fS c c}}w c c}w )zNGenerate a multivariate normal data given some centers and
        covariances©Úsize)r   r>   ÚvstackÚzipÚmultivariate_normalÚlenÚhstackÚrange)
Ú	n_samplesÚcentersÚcovariancesÚrandom_stateÚrngÚmeanÚcovr8   Úclazzr9   s
             rM   Úgenerate_datasetz0test_lda_predict_proba.<locals>.generate_dataset†   s²   € ô ! Ó.ˆÜ�I‰Iô "% W¨kÔ!:ôá!:‘I�D˜#ð ×'Ñ'¨¨c¸	ÄSÈÃ\Ñ8QÐ'ÕRØ!:òó
ˆô �I‰IÜ@EÄcÈ'ÃlÔ@SÓTÑ@S°uˆeˆW˜	¤S¨£\Ñ1Ó2Ð@SÑTó
ˆð �!ˆtˆùóùò Us   ª*B%
ÂB+r   éöÿÿÿé(   iâÿÿÿé   é
   éd   i�_ é*   )r[   r\   r]   r^   T)r%   Ústore_covariancer&   r,   )r*   r   r   ç      à¿iêÿÿÿé   c                 ó‚   — t        j                  ||   t        j                  | ||   «      z   «      j                  «       S ©N)r>   r?   ÚdotÚitem)ÚsampleÚcoefÚ	interceptrb   s       rM   Údiscriminant_funcz1test_lda_predict_proba.<locals>.discriminant_funcµ   s3   € Ü�v‰v�i Ñ&¬¯©°¸¸U¹Ó)DÑDÓE×JÑJÓLÐLó    ç{®Gáz„?rn   )r>   ÚarrayrX   r	   r7   r   Úmeans_Úcovariance_r   ÚinvrZ   Úappendro   ÚnewaxisÚfloatÚsumrB   Úapproxr<   rY   )r%   rO   rc   Úblob_centersÚ	blob_stdsr8   r9   ÚldaÚ	precisionÚalpha_kÚ	alpha_k_0rb   rq   rt   ÚprobÚprob_refÚ
prob_ref_2s                    rM   Útest_lda_predict_probar‰   ƒ   sà  € óô —8‘8˜a ˜V c¨2 Y°°b°	Ð:Ó;¸J¸YÐG€LÜ—‘˜B ˜8 b¨# YÐ/Ð0´3°|Ó3DÑDÓE€IÙØ ¸9ÐSUô�D€A€qô %Ø¨¸ôç	�cˆ!ˆQƒið ô
 �C—J‘J °4Õ8Ü�C—O‘O Y¨q¡\¸Õ:ô
 —
‘
˜9 Q™<Ó(€IØ€GØ€IÜ”s˜<Ó(¨1Ñ,Ö-ˆØ�‰Ü�F‰F�9˜|¨EÑ2°\À"Ñ5EÑEÂqÌ"Ï*É*À}ÑUÓVô	
ð 	×ÑÜ�F‰FØ˜ UÑ+¨l¸2Ñ.>Ñ>ÄÇ
Á
ÊAÀÑNÑNØ˜‘óõ	
ð	 .ô �X‰X˜˜R�y�kÓ"€FòMô �8‰8ô ˜y¨1™}Ô-ó	
ñ .�ô Ù! &¨'°9¸eÓDàÜô */¨y¸1©}Ô)=óá)= ñ .¨f°g¸yÈ%ÕPØ)=ñóññ	õð .ñ	
ó€Dð$ ”2—6‘6˜$“<Ñ€Hô Ø	àÜô "' y°1¡}Ô!5óá!5˜ñ & f¨g°yÀ%ÕHØ!5ñóññ		
ó€Jð ”v—}‘} ZÓ0Ò0Ð0Ð0ô Ø×Ñ˜&Ó!¤2§9¡9¨d°HÐ-=Ó#>¼r¿z¹zÑ#JÐQUöùò?ùò	
ùò4s   Æ,*J8ÇJ3Ç(J8È4J=Ê3J8c                  ód  — t        j                  ddg«      } t        | ¬«      }d}t        j                  t
        |¬«      5  |j                  t        t        «       d d d «       t        ddg¬«      }|j                  t        t        «       t        j                  ddg«      } t        j                  ddg«      }t        | ¬«      }t        j                  t        «      5  |j                  t        t        «       d d d «       t        |j                  |d	«       y # 1 sw Y   Œ¿xY w# 1 sw Y   Œ-xY w)
Nr'   rk   ©Úpriorszpriors must be non-negativer0   ç333333ã?çÍÌÌÌÌÌÜ?gš™™™™™á?r   )r>   rw   r	   rB   rC   rE   r7   r8   r9   ÚwarnsÚUserWarningr   Úpriors_)rŒ   rG   ÚmsgÚ
prior_norms       rM   Útest_lda_priorsr”   ã   sÒ   € ä�X‰X�s˜D�kÓ"€FÜ
$¨FÔ
3€CØ
'€Cä	�‰”z¨Ö	-Ø�‰””1Œ÷ 
.ô
 %¨S°#¨JÔ
7€CØ‡G�GŒAŒq„Mô �X‰X�s˜C�jÓ!€FÜ—‘˜4 ˜,Ó'€JÜ
$¨FÔ
3€Cä	�‰”kÕ	"Ø�‰””1Œ÷ 
#ô ˜cŸk™k¨:°qÕ9÷! 
.Ð	-ú÷ 
#Ð	"ús   ÁDÃD&ÄD#Ä&D/c                  ó®  — d} d}d}t        || |d¬«      \  }}t        d¬«      }t        d¬«      }t        d¬«      }|j                  ||«       |j                  ||«       |j                  ||«       t        |j                  |j                  d	«       t        |j                  |j                  d	«       t        |j                  |j                  d	«       y )
Nr   éè  é   ©r[   Ú
n_featuresr\   r^   r   ©r%   r   r    r   )r   r	   r7   r   Úcoef_)r™   rO   r[   r8   r9   Úclf_lda_svdÚclf_lda_lsqrÚclf_lda_eigens           rM   Útest_lda_coefsrŸ   ü   s¿   € à€JØ€IØ€IÜØ¨
¸IÐTVô�D€A€qô -°EÔ:€KÜ-°VÔ<€LÜ.°gÔ>€Mà‡O�O�A�qÔØ×Ñ�Q˜ÔØ×Ñ�a˜Ôä˜k×/Ñ/°×1CÑ1CÀQÔGÜ˜k×/Ñ/°×1DÑ1DÀaÔHÜ˜m×1Ñ1°<×3EÑ3EÀqÕIru   c                  ó  — t        dd¬«      } | j                  t        t        «      j	                  t        «      }|j
                  d   dk(  sJ ‚t        dd¬«      } | j                  t        t        «      j	                  t        «      }|j
                  d   dk(  sJ ‚t        dd¬«      } | j                  t        t        «       d}t        j                  t        |¬«      5  | j	                  t        «       d d d «       y # 1 sw Y   y xY w)Nr   r   )r%   Ún_componentsr    r   z$transform not implemented for 'lsqr'r0   )	r	   r7   r8   r9   Ú	transformÚshaperB   rC   rD   )rG   ÚX_transformedr’   s      rM   Útest_lda_transformr¥     sÅ   € ä
$¨EÀÔ
B€CØ—G‘GœAœq“M×+Ñ+¬AÓ.€MØ×Ñ˜qÑ! QÒ&Ð&Ð&Ü
$¨GÀ!Ô
D€CØ—G‘GœAœq“M×+Ñ+¬AÓ.€MØ×Ñ˜qÑ! QÒ&Ð&Ð&ä
$¨FÀÔ
C€CØ‡G�GŒAŒq„MØ
0€Cä	�‰Ô*°#Ö	6Ø�‰”aÔ÷ 
7×	6Ñ	6ús   Ã!D Ä D	c                  ó^  — t         j                  j                  d«      } | j                  ddd¬«      }| j	                  ddd¬«      }t        d¬	«      }|j                  ||«       t        |j                  j                  «       d
d«       |j                  j                  dk(  sJ d«       ‚t        d¬	«      }|j                  ||«       t        |j                  j                  «       d
d«       |j                  j                  dk(  sJ d«       ‚t        |j                  |j                  «       y )Nr   rh   )re   é   )ÚlocÚscalerT   r   )re   rS   r    rš   ç      ð?)r   z/Unexpected length for explained_variance_ratio_r   )r>   ÚrandomÚRandomStateÚnormalÚrandintr	   r7   r   Úexplained_variance_ratio_r~   r£   r   )Ústater8   r9   rž   rœ   s        rM   Ú!test_lda_explained_variance_ratior±   #  s  € ô �I‰I×!Ñ! !Ó$€EØ�‰˜ #¨HˆÓ5€AØ�‰�a˜ ˆÓ'€Aä.°gÔ>€MØ×Ñ�a˜ÔÜ˜×?Ñ?×CÑCÓEÀsÈAÔNØ×2Ñ2×8Ñ8¸DÒ@ð Ø9óÐ@ô -°EÔ:€KØ‡O�O�A�qÔÜ˜×=Ñ=×AÑAÓCÀSÈ!ÔLØ×0Ñ0×6Ñ6¸$Ò>ð Ø9óÐ>ô Ø×-Ñ-¨}×/VÑ/Võru   c            	      óV  — t        j                  g d¢g d¢g d¢g d¢g«      } t        j                  g d¢g d¢g d¢g d¢g d	¢g d
¢g«      }| d d …t         j                  d d …f   |t         j                  d d …d d …f   z   j                  d«      }t        j                  t        j
                  | j                  d   «      |j                  d   «      }t        d¬«      j                  ||«      }|j                  | «      }|d   |d   z
  }|d   |d   z
  }|t        j                  t        j                  |dz  «      «      z  }|t        j                  t        j                  |dz  «      «      z  }t        t        j                  |j                  |«      j                  «      t        j                  d«      «       t        t        j                   t        j"                  |d d ddg«      «      d«       t        t        j                   t        j"                  |d d ddg«      «      d«       y )N)r   r   r   )r   r   r   )r   r   r   )r   r   é   )r,   r   r   )çš™™™™™¹¿r   r   )r   r,   r   )r   r´   r   )r   r   r,   )r   r   r´   )r   r   r   r   rš   r   r   r   rª   )r>   rw   r|   ÚreshapeÚrepeatÚaranger£   r	   r7   r¢   Úsqrtr~   r   ra   ÚTÚeyeÚabsro   )ÚmeansÚscatterr8   r9   rG   Úmeans_transformedÚd1Úd2s           rM   Útest_lda_orthogonalityrÁ   @  s³  € ô �H‰H’j¢)ªZºÐCÓD€Eô �h‰hâÚÚÚÚÚð	
ó	€Gð 
Šq”"—*‘*šaÐÑ	  7¬2¯:©:²qº!Ð+;Ñ#<Ñ	<×EÑEÀgÓN€AÜ
�	‰	”"—)‘)˜EŸK™K¨™NÓ+¨W¯]©]¸1Ñ-=Ó>€Aô %¨EÔ
2×
6Ñ
6°q¸!Ó
<€CØŸ™ eÓ,Ðà	˜1Ñ	Ð 1°!Ñ 4Ñ	4€BØ	˜1Ñ	Ð 1°!Ñ 4Ñ	4€BØŒ"�'‰'”"—&‘&˜˜Q™“-Ó
 Ñ €BØŒ"�'‰'”"—&‘&˜˜Q™“-Ó
 Ñ €Bô œŸ™˜sŸ}™}¨WÓ5×7Ñ7Ó8¼"¿&¹&À»)ÔDô œŸ™œrŸv™v b¨¨! f¨q°!¨fÓ5Ó6¸Ô<ô œŸ™œrŸv™v b¨¨! f¨q°!¨fÓ5Ó6¸Õ<ru   c                  ó„  — d} t         j                  j                  d«      }|j                  dd| df«      g d¢z   }|j                  dd| df«      g d¢z   }t        j                  ||f«      g d¢z  }dg| z  dg| z  z   }d	D ]=  }t        |¬
«      }|j                  ||«      j                  ||«      dk(  rŒ5J d|z  «       ‚ y )Nrh   iÒ  r   r   r   )rd   r   r   )rg   r   r   )r   rh   i'  rP   rš   rª   zusing covariance: %s)r>   r«   r¬   ÚuniformrU   r	   r7   Úscore)Únr_   Úx1Úx2Úxr9   r%   rG   s           rM   Útest_lda_scalingrÉ   i  sÄ   € à€AÜ
�)‰)×
Ñ
 Ó
%€Cð 
�‰�R˜˜Q ˜FÓ	#¢kÑ	1€BØ	�‰�R˜˜Q ˜FÓ	#¢jÑ	0€BÜ
�	‰	�2�r�(ÓšoÑ-€AØ	ˆˆq‰�A�3˜‘7Ñ€Aã*ˆÜ(°Ô7ˆà�w‰w�q˜!‹}×"Ñ" 1 aÓ(¨CÓ/ÐPÐ1GÈ&Ñ1PÓPÐ/ñ +ru   c            	      ób  — dD ]–  } t        | ¬«      j                  t        t        «      }t	        |d«      sJ ‚t        | d¬«      j                  t        t        «      }t	        |d«      sJ ‚t        |j                  t        j                  ddgddgg«      «       Œ˜ t        d	¬«      j                  t        t        «      }t	        |d«      rJ ‚t         d¬«      j                  t        t        «      }t	        |d«      sJ ‚t        |j                  t        j                  ddgddgg«      «       y )
N)r   r    rš   ry   T)r%   rj   g¦µil¯Û?g€aùómÁ¶?g	^á?r   )	r	   r7   ÚX6Úy6Úhasattrr   ry   r>   rw   )r%   rG   s     rM   Útest_lda_store_covariancerÎ   z  s  € ó $ˆÜ(°Ô7×;Ñ;¼BÄÓCˆÜ�s˜MÔ*Ð*Ð*ô )°ÈÔN×RÑRÜ”ó
ˆô �s˜MÔ*Ð*Ð*ä!Ø�O‰OœRŸX™X¨°(Ð';¸hÈÐ=QÐ&RÓSõ	
ð $ô %¨EÔ
2×
6Ñ
6´r¼2Ó
>€CÜ�s˜MÔ*Ð*Ð*ô %¨FÀTÔ
J×
NÑ
NÌrÔSUÓ
V€CÜ�3˜Ô&Ð&Ð&äØ�‰œŸ™ H¨hÐ#7¸(ÀHÐ9MÐ"NÓOõru   Úseedrg   c                 ó   — t         j                  j                  | «      }|j                  dd«      }|j	                  dd¬«      }t        ddd¬«      }t        dt        d¬	«      d¬
«      }|j                  ||«       |j                  ||«       t        |j                  |j                  «       t        |j                  |j                  «       y )Nrh   rg   r   rS   Tr'   r   ©rj   r&   r%   )r&   ©rj   r.   r%   )r>   r«   r¬   Úrandr®   r	   r   r7   r   rx   ry   )rÏ   r_   r8   r9   Úc1Úc2s         rM   Útest_lda_shrinkagerÖ   ˜  s¡   € ô �)‰)×
Ñ
 Ó
%€CØ�‰��bÓ€AØ�‰�A˜SˆÓ"€AÜ	#°TÀSÐQWÔ	X€BÜ	#ØÜ-¸Ô<Øô
€Bð
 ‡F�Fˆ1ˆa„LØ‡F�Fˆ1ˆa„LÜ�B—I‘I˜rŸy™yÔ)Ü�B—N‘N B§N¡NÕ3ru   c                  óª  —  G d„ d«      } t         j                  j                  d«      }|j                  dd«      }|j	                  dd¬«      }t        d	d
d¬«      }t        d	 | «       d¬«      }|j                  ||«       |j                  ||«       t        |j                  |j                  «       t        |j                  |j                  «       y )Nc                   ó   — e Zd Zd„ Zy)ú3test_lda_ledoitwolf.<locals>.StandardizedLedoitWolfc                 óð   — t        «       }|j                  |«      }t        |«      d   }|j                  d d …t        j
                  f   |z  |j                  t        j
                  d d …f   z  }|| _        y ©Nr   ©r   Úfit_transformr   Úscale_r>   r|   ry   ©Úselfr8   ÚscÚX_scÚss        rM   r7   z7test_lda_ledoitwolf.<locals>.StandardizedLedoitWolf.fit°  ób   € ÜÓ!ˆBØ×#Ñ# AÓ&ˆDÜ˜DÓ! !Ñ$ˆAà—	‘	š!œRŸZ™Z˜-Ñ(¨1Ñ,¨r¯y©y¼¿¹ÂQ¸Ñ/GÑGˆAØ ˆDÕru   N©Ú__name__Ú
__module__Ú__qualname__r7   © ru   rM   ÚStandardizedLedoitWolfrÙ   ¯  ó   „ ó	!ru   rê   r   rh   rg   r   ©rh   rS   Tr!   r   rÑ   rÒ   )
r>   r«   r¬   rÓ   r®   r	   r7   r   rx   ry   )rê   r_   r8   r9   rÔ   rÕ   s         rM   Útest_lda_ledoitwolfrí   «  s­   € ÷!ñ !ô �)‰)×
Ñ
 Ó
"€CØ�‰��bÓ€AØ�‰�A˜FˆÓ#€AÜ	#Ø¨¸ô
€Bô 
$ØÙ3Ó5Øô
€Bð
 ‡F�Fˆ1ˆa„LØ‡F�Fˆ1ˆa„LÜ�B—I‘I˜rŸy™yÔ)Ü�B—N‘N B§N¡NÕ3ru   r™   r³   c                 óÞ  — t        d«      }d}|j                  ||«      }t        j                  t	        | «      || z  dz   «      d | }t        || dz
  «      }|dz
  d |fD ]   }t        |¬«      }|j                  ||«       Œ" |dz   t        || dz
  «      dz   fD ]F  }t        |¬«      }d}	t        j                  t        |	¬«      5  |j                  ||«       d d d «       ŒH y # 1 sw Y   ŒSxY w)Nr   rg   r   )r¡   z#n_components cannot be larger than r0   )r   Úrandnr>   ÚtilerZ   Úminr	   r7   ÚmaxrB   rC   rE   )
rO   r™   r_   r[   r8   r9   Úmax_componentsr¡   r‚   r’   s
             rM   Útest_lda_dimension_warningrô   É  sí   € ô ˜QÓ
€CØ€IØ�	‰	�)˜ZÓ(€Aô 	�‰”�iÓ  )¨yÑ"8¸1Ñ"<Ó=¸j¸yÐI€AÜ˜ Y°¡]Ó3€Nà'¨!Ñ+¨T°>ÓBˆä(°lÔCˆØ�‰��1�ð Cð
 (¨!Ñ+¬S°¸YÈ¹]Ó-KÈaÑ-OÓPˆô
 )°lÔCˆØ3ˆÜ�]‰]œ:¨SÖ1Ø�G‰G�A�qŒM÷ 2Ð1ñ Q÷ 2Ð1ús   ÃC#Ã#C,	zdata_type, expected_typec                 óà   — t         D ]e  \  }}t        ||¬«      }|j                  t        j	                  | «      t
        j	                  | «      «       |j                  j                  |k(  rŒeJ ‚ y )Nr$   )r6   r	   r7   r8   Úastyper9   r›   r   )Ú	data_typeÚexpected_typer%   r&   rG   s        rM   Útest_lda_dtype_matchrù   ä  sU   € ÷ .Ñˆ�	Ü(°À)ÔLˆØ�‰”—‘˜Ó#¤Q§X¡X¨iÓ%8Ô9Ø�y‰y�‰ -Ó/Ð/Ð/ñ .ru   c                  óì  — t         D ]ë  \  } }t        | |¬«      }|j                  t        j	                  t
        j                  «      t        j	                  t
        j                  «      «       t        | |¬«      }|j                  t        j	                  t
        j                  «      t        j	                  t
        j                  «      «       d}t        |j                  |j                  |¬«       Œí y )Nr$   r(   )r)   )r6   r	   r7   r8   rö   r>   Úfloat32r9   Úfloat64r   r›   )r%   r&   Úclf_32Úclf_64r)   s        rM   Ú,test_lda_numeric_consistency_float32_float64rÿ   ô  s”   € ß-Ñˆ�	Ü+°6ÀYÔOˆØ�
‰
”1—8‘8œBŸJ™JÓ'¬¯©´"·*±*Ó)=Ô>Ü+°6ÀYÔOˆØ�
‰
”1—8‘8œBŸJ™JÓ'¬¯©´"·*±*Ó)=Ô>ð ˆÜ˜Ÿ™ f§l¡l¸Ö>ñ .ru   r   r    c                 ó  — t        | ¬«      }|j                  t        t        «      j	                  t        «      }t        |t        «       |j                  t        t        «      j	                  t        «      }t        |t        «       |j                  t        «      }t        |d d …df   dkD  dz   t        «       |j                  t        «      }t        t        j                  |«      |d«       |j                  t        t        «      j	                  t        «      }t        j                  |t        k7  «      sJ ‚t        j                  t         «      5  |j                  t        t"        «       d d d «       y # 1 sw Y   y xY w)Nrš   r   r'   é   )r
   r7   rË   rÌ   r:   r   ÚX7r<   r=   r   r>   r?   Úy7rA   rB   rC   rE   Úy4)r%   rG   rH   rI   rJ   rK   rL   s          rM   Útest_qdar     s  € ô
 (¨vÔ
6€CØ�W‰W”Rœ‹_×$Ñ$¤RÓ(€FÜ�vœrÔ"ð �g‰g”bœ"‹o×%Ñ%¤bÓ)€GÜ�w¤Ô#ð ×%Ñ%¤bÓ)€MÜ˜¢a¨ dÑ+¨cÑ1°QÑ6¼Ô;Ø×-Ñ-¬bÓ1ÐÜœbŸf™fÐ%6Ó7¸ÈÔJà�g‰g”bœ"‹o×%Ñ%¤bÓ)€Gä�6‰6�'œR‘-Ô Ð Ð ô 
�‰”zÕ	"Ø�‰””BŒ÷ 
#×	"Ñ	"ús   ÅE6Å6E?c                  óî  — t        dd¬«      } t        j                  t        «      5  | j	                  t
        t        «       d d d «       t        ddt        «       ¬«      } t        j                  t        d¬«      5  | j	                  t
        t        «       d d d «       t        dt        «       ¬	«      } t        j                  t        d
¬«      5  | j	                  t
        t        «       d d d «       t        dt        dd¬«      ¬	«      } t        j                  t        «      5  | j	                  t
        t        «       d d d «       y # 1 sw Y   �ŒxY w# 1 sw Y   Œ¾xY w# 1 sw Y   ŒwxY w# 1 sw Y   y xY w)Nr   r!   r$   r    r,   r-   r/   r0   r2   z7covariance_estimator is not supported with solver='svd'r   r3   )r
   rB   rC   rD   r7   r8   r9   r   rE   r   r   ©rG   s    rM   Útest_qda_covariance_estimatorr    s	  € ô (¨uÀÔ
G€CÜ	�‰Ô*Õ	+Ø�‰””1Œ÷ 
,ô (Ø #Ô<LÓ<Nô€Cô 
�‰Üð.ö
ð 	�‰””1Œ÷
ô (¨uÌ:Ë<Ô
X€CÜ	�‰ÜÐSö
ð 	�‰””1Œ÷
ô (Ø¬V¸qÈÔ-Pô€Cô 
�‰”zÕ	"Ø�‰””1Œ÷ 
#Ð	"÷5 
,Ñ	+ú÷
ð 
ú÷
ð 
ú÷ 
#Ð	"ús/   §EÁ;EÃEÄ"E+ÅEÅEÅE(Å+E4c                 óª  —  G d„ d«      }t         j                  j                  | «      }|j                  dd«      }|j	                  dd¬«      }t        dd	d
¬«      }t        d |«       d
¬«      }|j                  ||«       |j                  ||«       t        |j                  |j                  «       t        |j                  |j                  «       y )Nc                   ó   — e Zd Zd„ Zy)ú3test_qda_ledoitwolf.<locals>.StandardizedLedoitWolfc                 óð   — t        «       }|j                  |«      }t        |«      d   }|j                  d d …t        j
                  f   |z  |j                  t        j
                  d d …f   z  }|| _        y rÛ   rÜ   rß   s        rM   r7   z7test_qda_ledoitwolf.<locals>.StandardizedLedoitWolf.fitC  rä   ru   Nrå   ré   ru   rM   rê   r  B  rë   ru   rê   rh   rg   r   rì   rS   Tr!   r    rÑ   rÒ   )
r>   r«   r¬   rÓ   r®   r
   r7   r   rx   ry   )Úglobal_random_seedrê   r_   r8   r9   rÔ   rÕ   s          rM   Útest_qda_ledoitwolfr  >  s®   € ÷!ñ !ô �)‰)×
Ñ
Ð 2Ó
3€CØ�‰��bÓ€AØ�‰�A˜FˆÓ#€AÜ	&Ø¨¸ô
€Bô 
'ØÙ3Ó5Øô
€Bð
 ‡F�Fˆ1ˆa„LØ‡F�Fˆ1ˆa„LÜ�B—I‘I˜rŸy™yÔ)Ü�B—N‘N B§N¡NÕ3ru   c                 óÎ  — d}d}d}t        |||ddg| ¬«      \  }}t        d¬«      }t        d¬«      }|j                  ||«       |j                  ||«       t        |«      D ]€  }t	        t        j                  |j                  |   «      t        j                  |j                  |   «      d	d
|› �¬«       t	        |j                  |   |j                  |   d	d|› �¬«       Œ‚ y )Nr   i¸  rª   ç      @)r[   r™   r\   Úcluster_stdr^   r   rš   r    gü©ñÒMbP?z)SVD and Eigen rotations differ for class )r)   r+   z(SVD and Eigen scalings differ for class )	r   r
   r7   rZ   r   r>   r»   Ú
rotations_Ú	scalings_)	r  r™   rO   r[   r8   r9   Úclf_svdÚ	clf_eigenÚ	class_idxs	            rM   Útest_qda_coefsr  \  sé   € à€JØ€IØ€IÜØØØØ˜#�JØ'ô�D€A€qô ,°5Ô9€GÜ-°WÔ=€Ià‡K�K��1ÔØ‡M�M�!�QÔä˜9Ö%ˆ	ÜÜ�F‰F�7×%Ñ% iÑ0Ó1Ü�F‰F�9×'Ñ'¨	Ñ2Ó3ØØ?À	¸{ÐKõ		
ô 	Ø×Ñ˜iÑ(Ø×Ñ 	Ñ*ØØ>¸y¸kÐJö		
ñ &ru   c                  ó†  — t        «       } | j                  t        t        «      j	                  t        «      }t        j                  |dk(  «      }d}t        t        j                  |d|z
  g«      ¬«      } | j                  t        t        «      j	                  t        «      }t        j                  |dk(  «      }||kD  sJ ‚y )Nr   g»½×Ùß|Û=r   r‹   )r
   r7   rË   rÌ   r:   r>   r~   rw   )rG   rH   Ún_posÚnegÚn_pos2s        rM   Útest_qda_priorsr  ~  sŽ   € Ü
'Ó
)€CØ�W‰W”Rœ‹_×$Ñ$¤RÓ(€FÜ�F‰F�6˜Q‘;Ó€Eà
€CÜ
'¬r¯x©x¸¸aÀ#¹g¸Ó/GÔ
H€CØ�W‰W”Rœ‹_×$Ñ$¤RÓ(€FÜ�V‰V�F˜a‘KÓ €Fà�EŠ>Ð‰>ru   Úpriors_type)ÚlistÚtuplerw   c                 óä   — ddg}t        t        ddg| «      ¬«      j                  t        t        «      }t        |j                  t        j                  «      sJ ‚t        |j                  |«       y)z$Check that priors accept array-like.r'   r‹   N)
r
   r   r7   rË   rÌ   Ú
isinstancer‘   r>   Úndarrayr   )r  rŒ   rG   s      rM   Útest_qda_prior_typer#  ‹  s[   € ð �3ˆZ€FÜ
'Ü! 3¨ *¨kÓ:ôç	�cŒ"Œbƒkð ô �c—k‘k¤2§:¡:Ô.Ð.Ð.Ü�s—{‘{ FÕ+ru   c                  ó  — t        j                  ddg«      } t        | ¬«      j                  t        t
        «      }t        |j                  |j                  «       d| d<   |j                  d   |j                  d   k7  sJ ‚y)zCCheck that altering `priors` without `fit` doesn't change `priors_`r'   r‹   çš™™™™™É?r   N)	r>   rw   r
   r7   r8   r9   r   r‘   rŒ   )rŒ   Úqdas     rM   Útest_qda_prior_copyr'  –  sh   € ä�X‰X�s˜C�jÓ!€FÜ
'¨vÔ
6×
:Ñ
:¼1¼aÓ
@€Cô �s—{‘{ C§J¡JÔ/ð €Fˆ1�IØ�;‰;�q‰>˜SŸZ™Z¨™]Ò*Ð*Ñ*ru   c                  ó�  — t        «       j                  t        t        «      } t	        | d«      rJ ‚t        d¬«      j                  t        t        «      } t	        | d«      sJ ‚t        | j                  d   t        j                  ddgddgg«      «       t        | j                  d   t        j                  dd	gd	d
gg«      «       y )Nry   T)rj   r   gffffffæ?rŽ   r   gÚÁQUUÕ?gÚÁQUUÕ¿g“vWUUå?)	r
   r7   rË   rÌ   rÍ   r   ry   r>   rw   r  s    rM   Útest_qda_store_covariancer)  £  s©   € ä
'Ó
)×
-Ñ
-¬b´"Ó
5€CÜ�s˜MÔ*Ð*Ð*ô (¸Ô
>×
BÑ
BÄ2ÄrÓ
J€CÜ�3˜Ô&Ð&Ð&ä˜cŸo™o¨aÑ0´"·(±(¸SÀ$¸KÈ$ÐPSÈÐ;UÓ2VÔWäØ�‰˜ÑÜ
�‰�:˜{Ð+¨k¸:Ð-FÐGÓHõru   c                 ó  — t         j                  j                  | «      }d}t        |¬«      }t	        j
                  t        j                  |¬«      5  |j                  t        t        «       d d d «       t	        j
                  t        «      5  |j                  t        «      }d d d «       |dk(  rt        |d¬«      }n|dk(  rt        |d¬«      }t        j                  «       5  t        j                  d	«       d d d «       |j                  t        t        «       |j                  t        «      }t!        |t        «       |j#                  d
¬«      }t        j$                  g d¢«      }t        |¬«      }|dk(  r|dz   }n|dk(  r|}t	        j
                  t        j                  ¬«      5  |j                  ||«       d d d «       |dk(  rNt        |d¬«      }t	        j
                  t        j                  |¬«      5  |j                  ||«       d d d «       y |dk(  r t        |d¬«      }|j                  ||«       y y # 1 sw Y   �Œ×xY w# 1 sw Y   �Œ­xY w# 1 sw Y   �ŒcxY w# 1 sw Y   Œ©xY w# 1 sw Y   y xY w)Nz3The covariance matrix of class .+ is not full rank.rš   r0   r   rv   )r%   Ú	reg_paramr    r$   Úerror)é	   é   rS   )	r   r   r   r   r   r   r   r   r   z When using `solver='svd'`g333333Ó?)r>   r«   Údefault_rngr
   rB   rC   r   ÚLinAlgErrorr7   ÚX2rÌ   ÚAttributeErrorr:   ÚwarningsÚcatch_warningsÚsimplefilterr   r­   rw   )	r  r%   r_   r’   rG   rH   r8   r9   Úmsg2s	            rM   Útest_qda_regularizationr7  ´  sá  € ô �)‰)×
Ñ
Ð 2Ó
3€Cð A€CÜ
'¨vÔ
6€CÜ	�‰”v×)Ñ)°Ö	5Ø�‰””BŒ÷ 
6ô 
�‰”~Õ	&Ø—‘œR“ˆ÷ 
'ð �‚Ü+°6ÀTÔJ‰Ø	�7Ò	Ü+°6ÀTÔJˆÜ	×	 Ñ	 Õ	"Ü×Ñ˜gÔ&÷ 
#à‡G�GŒB”„OØ�[‰[œ‹_€FÜ�vœrÔ"ð 	�
‰
˜ˆ
Ó€AÜ
�‰Ò,Ó-€Aä
'¨vÔ
6€CØ�‚ØÐ1Ñ1‰Ø	�7Ò	Øˆä	�‰”v×)Ñ)°Ö	6Ø�‰��1Œ÷ 
7ð
 �‚Ü+°6ÀSÔIˆÜ�]‰]œ6×-Ñ-°TÖ:Ø�G‰G�A�qŒM÷ ;Ð:ð 
�7Ò	Ü+°6ÀSÔIˆØ�‰��1�ð 
÷O 
6Ñ	5ú÷ 
'Ñ	&ú÷ 
#Ñ	"ú÷" 
7Ð	6ú÷ ;Ð:ús<   ÁIÂIÃ&IÆ/I*ÈI6ÉIÉIÉI'É*I3É6I?c                  óv  — t        dddd¬«      \  } }t        j                  | t        j                  | j                  d   dz  «      j                  | j                  d   | j                  d   «      «      } t        | d«      }t        ||j                  «       t        | d«      }t        ||j                  «       y )	Nrh   r³   r   ri   r˜   r   Ú	empiricalr!   )	r   r>   ro   r·   r£   rµ   r   r   r¹   )rÈ   r9   Úc_eÚc_ss       rM   Útest_covariancer<  ê  s�   € Ü °¸1È2ÔN�D€A€qô 	�‰ˆq”"—)‘)˜AŸG™G A™J¨!™OÓ,×4Ñ4°Q·W±W¸Q±ZÀÇÁÈÁÓLÓM€Aä
ˆq�+Ó
€CÜ˜˜SŸU™UÔ#ä
ˆq�&‹/€CÜ˜˜SŸU™UÕ#ru   c                 ó  — t        j                  ddgddgg«      }t        j                  ddg«      }t        | ¬«      }t        j                  t
        d¬«      5  |j                  ||«       ddd«       y# 1 sw Y   yxY w)	zg
    Tests that if the number of samples equals the number
    of classes, a ValueError is raised.
    r'   r�   ÚaÚbrš   z"The number of samples must be morer0   N)r>   rw   r	   rB   rC   rE   r7   ©r%   r8   r9   rG   s       rM   Ú=test_raises_value_error_on_same_number_of_classes_and_samplesrA  ÷  sd   € ô 	�‰�3˜�*˜s C˜jÐ)Ó*€AÜ
�‰�#�s�Ó€AÜ
$¨FÔ
3€CÜ	�‰”zÐ)MÖ	NØ�‰��1Œ÷ 
O×	NÑ	Nús   ÁA6Á6A?c                 ó  — t        j                  ddgddgddgddgg«      }t        j                  g d¢«      }t        | ¬«      }t        j                  t
        d¬«      5  |j                  ||«       ddd«       y# 1 sw Y   yxY w)	zG
    Tests that if a class has one sample, a ValueError is raised.
    r'   r�   gš™™™™™Ù?)r>  r>  r>  r?  rš   zy has only 1 sample in classr0   N)r>   rw   r
   rB   rC   rE   r7   r@  s       rM   Ú/test_raises_value_error_on_one_sample_per_classrC    sm   € ô
 	�‰�3˜�*˜s C˜j¨3°¨*°s¸C°jÐAÓB€AÜ
�‰Ò%Ó&€AÜ
'¨vÔ
6€CÜ	�‰”zÐ)GÖ	HØ�‰��1Œ÷ 
I×	HÑ	Hús   Á A<Á<Bc                  óD  — t        «       j                  t        t        «      } | j	                  «       }dj                  «       }t        j                  t        | j                  j                  d   «      D �cg c]  }|› |› �‘Œ
 c}t        ¬«      }t        ||«       yc c}w )z6Check get_feature_names_out uses class name as prefix.r	   r   r   N)r	   r7   r8   r9   Úget_feature_names_outÚlowerr>   rw   rZ   r¯   r£   Úobjectr   )ÚestÚ	names_outÚclass_name_lowerÚiÚexpected_names_outs        rM   Útest_get_feature_names_outrM    s™   € ô %Ó
&×
*Ñ
*¬1¬aÓ
0€CØ×)Ñ)Ó+€Ià3×9Ñ9Ó;ÐÜŸ™ô ˜3×8Ñ8×>Ñ>¸qÑAÔBó	
áB�ð  Ð   Ò$ØBñ	
ô ôÐô �yÐ"4Õ5ùò	
s   Á6Bé   Ú
train_sizerh   Úsolver_no_shrinkagec                 óØ  — d}|}t         j                  j                  | «      }|j                  dd|¬«      }|j                  dd|¬«      }t        j                  t         j                  j                  |dz  |«      t        j                  |«      z  t         j                  j                  |dz  |«      t        j                  |«      z  gd¬	«      }t        j                  dg|dz  z  d
g|dz  z  z   «      }	t        d|d¬«      }
t        dd¬«      }t        |d ¬«      }t        |||	|
d¬«      }t        |||	|
d¬«      }|j                  «       dkD  sJ ‚|j                  «       dk  sJ ‚y )Nr–   g       @r  rS   r%  rª   r   r   )Úaxisr   r³   )Ún_splitsrO  r^   r    r!   r$   Úd2_brier_score)ÚcvÚscoringgÍÌÌÌÌÌì?r�   )r>   r«   r/  rÃ   Úconcatenaterï   r¸   rw   r   r
   r   r`   )r  r™   rO  rP  r[   r_   Úvars1Úvars2r8   r9   rU  Úqda_shrinkageÚqda_no_shrinkageÚscores_no_shrinkageÚscores_shrinkages                  rM   Útest_qda_shrinkage_performancer^  !  sd  € ð €IØ€Jä
�)‰)×
Ñ
Ð 2Ó
3€Cð �K‰K˜˜S zˆKÓ2€EØ�K‰K˜˜S zˆKÓ2€Eä
�‰ä�I‰I�O‰O˜I¨™N¨JÓ7¼"¿'¹'À%».ÑHÜ�I‰I�O‰O˜I¨™N¨JÓ7¼"¿'¹'À%».ÑHð	
ð ô	€Aô 	�‰�!�˜	 Q™Ñ'¨1¨#°¸a±Ñ*@Ñ@ÓA€Aô 
˜q¨ZÀaÔ	H€BÜ1¸ÈFÔS€MÜ4Ø"¨dôÐô *Ø˜!˜Q 2Ð/?ôÐô 'Ø�q˜! Ð,<ôÐð × Ñ Ó" SÒ(Ð(Ð(Ø×#Ñ#Ó%¨Ò+Ð+Ñ+ru   )Nr3  Únumpyr>   rB   Úscipyr   Úsklearn.clusterr   Úsklearn.covariancer   r   r   Úsklearn.datasetsr   Úsklearn.discriminant_analysisr	   r
   r   Úsklearn.model_selectionr   r   Úsklearn.preprocessingr   Úsklearn.utilsr   Úsklearn.utils._testingr   r   r   r   r   rw   r8   r9   r@   r;   rË   rÌ   r  r  r1  r  r6   rN   ÚmarkÚparametrizer‰   r”   rŸ   r¥   r±   rÁ   rÉ   rÎ   rZ   rÖ   rí   rô   rû   rü   Úint32Úint64rù   rÿ   r  r  r  r  r  r#  r'  r)  r7  r<  rA  rC  rM  r^  ré   ru   rM   Ú<module>rm     s†  ðÛ ã Û Ý å "ß HÑ HÝ '÷ñ ÷
 BÝ 0Ý ,÷õ ð €B‡H�Hˆr�2ˆh˜˜R˜ 2 r (¨Q°¨F°Q¸°F¸QÀ¸FÐCÈ3ÔO€Ø€B‡H�HÒÓ €Ø€R‡X�XÒ Ó!€ð €R‡X�XØ€TˆBˆ4�"�˜�s˜Q˜C ! Ð%Ø
ô€ð €R‡X�XØˆ€Vˆb�"ˆX˜˜B�x " b ¨B°¨8°a¸°V¸aÀ¸VÀaÈÀVÈaÐQRÈVÐTó€ð €R‡X�XÒ)Ó*€Ø€R‡X�XÒ)Ó*€ð €R‡X�X�ˆt�b�T˜B˜4 " ¨ s¨Q¨C°!°°q°c¸A¸3Ð?Ó@€ð €R‡X�XØˆ!€Wˆr�1ˆg˜˜A�w  Q ¨!¨Q¨°!°Q°¸!¸Q¸À!ÀQÀÈ!ÈQÈÐPó€ð
 €R‡X�XÒ)Ó*€ò
Ð ò<ð~ ‡�×Ñ˜ q¨! fÓ-Ø‡�×Ñ˜Ò#;Ó<ñ[ó =ó .ð[ò|:ò2Jò,ò"ò:&=òRQò"ð< ‡�×Ñ˜¡ r£Ó+ñ4ó ,ð4ò$4ð< ‡�×Ñ˜¨¨1 vÓ.Ø‡�×Ñ˜ q¨! fÓ-ñó .ó /ðð2 ‡�×ÑØà	�‰�R—Z‘ZÐ Ø	�‰�R—Z‘ZÐ Ø	�‰�2—:‘:ÐØ	�‰�2—:‘:Ðð	óñ0óð0ò	?ð ‡�×Ñ˜ E¨7Ð#3Ó4ñó 5ðò6òD4ò<
òD
ð ‡�×Ñ˜Ò(BÓCñ,ó Dð,ò
+òð" ‡�×Ñ˜ E¨7Ð#3Ó4ñ2ó 5ð2òj
$ð ‡�×Ñ˜Ò#;Ó<ñ	ó =ð	ð ‡�×Ñ˜ E¨7Ð#3Ó4ñó 5ðò6ð" ‡�×Ñ˜¨ tÓ,Ø‡�×Ñ˜¨ uÓ-Ø‡�×ÑÐ.°¸Ð0@ÓAñ(,ó Bó .ó -ñ(,ru   