Ë
    8Ò^j”V ã                   óŽ  — d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlm	Z	 d dl
mZmZmZmZ d dlmZ d dlmZmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ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* d dl+m,Z, d dl-m.Z.m/Z/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z: ejv                  jy                  d «      Z= ej|                  «       Z?e=j�                  e?j‚                  j„                  «      ZCe?jˆ                  eC   e?_D        e?j‚                  eC   e?_A         ejŠ                  «       ZFe=j�                  eFj‚                  j„                  «      ZCeFjˆ                  eC   eF_D        eFj‚                  eC   eF_A         eGe2e3z   e4z   e5z   e7z   e8z   «      ZHeHej’                  fz   ZJdZK eL eMjœ                   eOeMej                   j£                  «       «      Ž «      ZRddddej¦                  fZT e0ejª                  «      e_U         e0ej¬                  «      e_V        dgZWd«deXfd„ZYdeXdeZfd„Z[d„ Z\dde\gZ]ej¼                  j¾                  ej¼                  jÁ                  dd d!g«      ej¼                  jÁ                  d"d#d$g«      ej¼                  jÁ                  deReWz   «      d%„ «       «       «       «       Zaej¼                  jÁ                  d&d'd(g«      ej¼                  jÁ                  deReWz   «      ej¼                  jÁ                  d)g d*¢«      ej¼                  jÁ                  d+ejÄ                  ejJ                  ejÆ                  ejÈ                  g«      d,„ «       «       «       «       Zeej¼                  jÁ                  d-ejÄ                  ejJ                  ejÌ                  g«      d.„ «       Zgd/„ Zhej¼                  jÓ                  d0«      d1„ «       Zjd2„ Zkej¼                  jÁ                  d3d4d5g«      d6„ «       Zlej¼                  jÁ                  d3d4d5g«      d7„ «       Zmej¼                  jÁ                  d8e5«      d9„ «       Znej¼                  jÓ                  d0«      ej¼                  jÁ                  d:e*e(g«      ej¼                  jÁ                  d8e5«      d;„ «       «       «       Zoej¼                  jÓ                  d0«      ej¼                  jÁ                  d8e5«      d<„ «       «       Zpej¼                  jÁ                  d8e5«      d=„ «       Zqej¼                  jÁ                  d>e7e2z   e6z   «      d?„ «       Zrej¼                  jÓ                  d0«      ej¼                  jÁ                  d8e5«      d@„ «       «       ZsdA„ Zt	 d¬dD„Zuej¼                  jÁ                  dEeK«      ej¼                  jÁ                  dFe]«      	 	 	 	 	 d­dH„«       «       Zv	 	 	 	 	 d­dI„ZwdJ„ Zxej¼                  jÁ                  dEeK«      ej¼                  jÁ                  dFe]«      	 	 	 	 	 d®dK„«       «       Zyej¼                  jÁ                  dEeK«      ej¼                  jÁ                  dFe]«      ej¼                  jÁ                  dLg dM¢«      dN„ «       «       «       Zzej¼                  jÁ                  dEeK«      ej¼                  jÁ                  dFe]«      dO„ «       «       Z{dP„ Z|dQ„ Z}dR„ Z~ej¼                  jÁ                  d8e5«      dS„ «       Zej¼                  jÁ                  dEg dT¢«      dU„ «       Z€ej¼                  jÁ                  dEdg e� edVdWgeW¢­«      «      dXdYgz   «      dZ„ «       Z‚d[„ Zƒ	 d­d\„Z„d]„ Z…	 d¯d^„Z†d_„ Z‡	 d¯d`„Zˆ	 d°da„Z‰db„ ZŠ	 d±dc„Z‹ej¼                  jÓ                  d0«      	 d­dd„«       ZŒde„ Z�df„ ZŽdg„ Z�ej¼                  jÁ                  dhg di¢«      ej¼                  jÁ                  djdkdg«      ej¼                  jÁ                  d8e5«      d²dl„«       «       «       Z�dm„ Z‘ej¼                  jÁ                  dhg di¢«      ej¼                  jÁ                  djdkdg«      ej¼                  jÁ                  d8e5«      d²dn„«       «       «       Z’ej¼                  jÁ                  doejÄ                  ejÆ                  ejJ                  ejÈ                  g«      ej¼                  jÁ                  d8e5«      dp„ «       «       Z“ej¼                  jÁ                  doejÄ                  ejÆ                  ejJ                  ejÈ                  g«      ej¼                  jÁ                  dddqg«      ej¼                  jÁ                  dEdrdsg«      dt„ «       «       «       Z”ej¼                  jÁ                  doejÄ                  ejÆ                  ejJ                  ejÈ                  g«      ej¼                  jÁ                  dddqg«      ej¼                  jÁ                  dEdudvg«      dw„ «       «       «       Z•dx„ Z–ej¼                  jÁ                  d eL eMej                   dv   «      j�                  ej                   ds   «       eMdyge¢«      z
  «      eWz   «      	 	 	 	 d³dz„«       Z— e0e˜¬{«      ej¼                  jÁ                  d eL eMej                   ds   «       eMd|g«      z
  «      «      	 	 	 	 d´d}„«       «       Z™d~„ Zšej¼                  jÁ                  dej                   ds   eWz   «      ej¼                  jÁ                  d8e5«      	 dµd„«       «       Z›d€„ Zœej¼                  jÁ                  d8e5«      d�„ «       Z�d‚„ Zždƒ„ ZŸd„„ Z ej¼                  jÁ                  dEeK«      d…„ «       Z¡ej¼                  jÁ                  dEeK«      d†„ «       Z¢d‡„ Z£ej¼                  jÁ                  dEeK«      dˆ„ «       Z¤ej¼                  jÁ                  dEeK«      d‰„ «       Z¥ej¼                  j¾                  ej¼                  jÁ                  dŠd‹dŒg«      ej¼                  jÁ                  dEeK«      d�„ «       «       «       Z¦dŽ„ Z§ej¼                  jÁ                  d8e5«      d�„ «       Z¨ej¼                  jÓ                  d�«      d‘„ «       Z©d’„ Zªd“„ Z«ej¼                  jÁ                  d”ejv                  �jY                  dGd•¬–«      d|ddsfejv                  �j[                  dGdB«      dWddsfejv                  �j[                  d—dC«      dWddsfejv                  �j[                  dGdC«      dWddufejv                  �j[                  dGdC«      d˜d™dgdCz  idvfejv                  �j[                  dGdC«      dšddsfg«      d›„ «       Z® e0e˜¬{«      ej¼                  jÁ                  d eL eMej                   ds   «       eMd|g«      z
  «      «      	 	 	 	 d¶dœ„«       «       Z¯d�„ Z°dž„ Z±ej¼                  jÁ                  dŸejÄ                  dhdifejJ                  dhdifejÈ                  i fejÆ                  i fe�jd                  dhdife�jf                  d d¡ife�jh                  dhdifg«      d¢„ «       Zµd£„ Z¶d¤„ Z·d¥„ Z¸ej¼                  jÁ                  d¦ ejÄ                  dG¬§«       ejÆ                  «       g«      ej¼                  jÁ                  dEeK«      d¨„ «       «       Z¹ej¼                  jÁ                  d¦ ejJ                  dG¬§«       ejÈ                  «       g«      ej¼                  jÁ                  dEeK«      d©„ «       «       Zºej¼                  jÁ                  deR«      ej¼                  jÁ                  doejÄ                  ejÆ                  g«      dª„ «       «       Z»y)·é    N)Úproduct)Úissparse)Úconfig_contextÚdatasetsÚmetricsÚ	neighbors)Úclone)ÚEfficiencyWarningÚNotFittedError)ÚDistanceMetric)ÚPAIRWISE_BOOLEAN_FUNCTIONSÚpairwise_distances)ÚBOOL_METRICS)Ú!assert_compatible_argkmin_resultsÚ assert_compatible_radius_results)ÚLeaveOneOutÚcross_val_predictÚcross_val_scoreÚtrain_test_split)ÚVALID_METRICS_SPARSEÚKNeighborsRegressor)ÚKNeighborsMixinÚ_check_precomputedÚ_is_sorted_by_dataÚsort_graph_by_row_values)Úmake_pipeline)Úassert_allcloseÚassert_array_equalÚignore_warnings)ÚBSR_CONTAINERSÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERSÚDIA_CONTAINERSÚDOK_CONTAINERSÚLIL_CONTAINERS)Úcheck_random_state)Ú	ball_treeÚbruteÚkd_treeÚautoé   é   é   é   ÚDM_euclideanÚmetricc                 óJ   — | dd dk(  rt        j                  | dd |¬«      S | S )aˆ  
    Helper function for properly building a type-specialized DistanceMetric instances.

    Constructs a type-specialized DistanceMetric instance from a string
    beginning with "DM_" while allowing a pass-through for other metric-specifying
    strings. This is necessary since we wish to parameterize dtype independent of
    metric, yet DistanceMetric requires it for construction.

    Nr.   ÚDM_©Údtype)r   Ú
get_metric)r1   r5   s     úq/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/sklearn/neighbors/tests/test_neighbors.pyÚ_parse_metricr8   c   s0   € ð ˆbˆq€z�UÒÜ×(Ñ(¨°°¨¸5ÔAÐAØ€Mó    Ú
n_featuresc           
      óØ  — t         j                  j                  d«      }| dk(  rWt        d¬«      t        d¬«      t        d¬«      t        t         j                  ¬«      t        d|j                  |«      ¬«      gS | dk(  rt        |j                  |«      ¬	«      gS | d
k(  rG|j                  ||«      }||j                  z   dt        j                  |«      z  z   }t        |¬«      gS i gS )z/Return list of DistanceMetric kwargs for tests.r,   Ú	minkowskiç      ø?)Úpr-   r.   )r>   ÚwÚ
seuclidean)ÚVÚmahalanobis)ÚVI)ÚnpÚrandomÚRandomStateÚdictÚinfÚrandÚTÚeye)r1   r:   ÚrngÚArC   s        r7   Ú_generate_test_params_forrN   r   sË   € ô �)‰)×
Ñ
 Ó
"€Cà�Òä�3ŒKÜ�1ŒIÜ�1ŒIÜ”2—6‘6ŒNÜ�1˜Ÿ™ Ó,Ô-ð
ð 	
ð �ÒÜ�s—x‘x 
Ó+Ô,Ð-Ð-à�ÒØ�H‰H�Z Ó,ˆà�—‘‰W�qœ2Ÿ6™6 *Ó-Ñ-Ñ-ˆÜ˜”ˆ}Ðð ˆ4€Kr9   c                 ót   — t        j                  d¬«      5  d| z  }ddd«       |dz  S # 1 sw Y   dz  S xY w)zWeight function to replace lambda d: d ** -2.
    The lambda function is not valid because:
    if d==0 then 0^-2 is not valid.Úignore)Údivideç      ð?Nr-   )rD   Úerrstate)ÚdistÚretvals     r7   Ú_weight_funcrV   �   s=   € ô 
�‰˜HÔ	%ñ Ø�t‘ˆ÷à�1‰9Ð÷à�1‰9Ðús   —*ª7ÚuniformÚdistancez/n_samples, n_features, n_query_pts, n_neighbors)éd   rY   é
   rY   )éè  é   rY   r,   Úquery_is_trainFTc           
      ó�  — t        || «      }t        j                  j                  d«      }|j	                  ||«      j                  | d¬«      }|r|n"|j	                  ||«      j                  | d¬«      }	g }
g }t        D ]«  }t        |t        «      r,| t        j                  k(  rd|v rt        j                  d«       t        j                  |||¬«      }|j                  |«       |
j                  |j!                  |	d¬«      «       |j                  |j!                  |	d¬«      «       Œ­ t#        t%        |«      d	z
  «      D ]  }t        |   }t        |d	z      }|
|   }||   d   ||d	z      d   }}||   d	   ||d	z      d	   }}t'        ||d
|› d�¬«       t'        ||d
|› d|› d�¬«       t)        ||d
|› d|› d�d¬«       Œ� y )Nr   F©ÚcopyÚtreeúCNeither KDTree nor BallTree support 32-bit distance metric objects.©Ún_neighborsÚ	algorithmr1   ©Úreturn_distanceTr,   úThe 'zE' algorithm returns differentindices depending on 'return_distances'.©Úerr_msgú' and 'z&' algorithms return different indices.z(' algorithms return different distances.g�íµ ÷Æ°>)rj   Úatol)r8   rD   rE   rF   rI   ÚastypeÚ
ALGORITHMSÚ
isinstancer   Úfloat32ÚpytestÚskipr   ÚNearestNeighborsÚfitÚappendÚ
kneighborsÚrangeÚlenr   r   )Úglobal_dtypeÚ	n_samplesr:   Ún_query_ptsrd   r]   r1   Ú	local_rngÚXÚqueryÚresults_nodistÚresultsre   ÚneighÚiÚnext_algorithmÚindices_no_distÚ	distancesÚnext_distancesÚindicesÚnext_indicess                        r7   Útest_unsupervised_kneighborsr‰       s  € ô. ˜6 <Ó0€Fô —	‘	×%Ñ% aÓ(€IØ�‰�y *Ó-×4Ñ4°\ÈÐ4ÓN€Añ ñ 	
à�^‰^˜K¨Ó4×;Ñ;¸LÈuÐ;ÓUð 
ð €NØ€Gäò Fˆ	Ü�fœnÔ-°,Ä"Ç*Á*Ò2LØ˜Ñ"Ü—‘ð ôô ×*Ñ*Ø#¨yÀô
ˆð 	�	‰	�!Œà×Ñ˜e×.Ñ.¨uÀeÐ.ÓLÔMØ�‰�u×'Ñ'¨¸tÐ'ÓDÕEðFô ”3�w“< !Ñ#Ó$ò 
ˆÜ˜q‘Mˆ	Ü# A¨¡EÑ*ˆà(¨Ñ+ˆØ$+¨A¡J¨q¡M°7¸1¸q¹5±>À!Ñ3D�>ˆ	Ø '¨¡
¨1¡¨w°q¸1±u©~¸aÑ/@�ˆÜØØà˜	�{ð #;ð ;õ		
ô 	ØØà˜	�{ '¨.Ð)9ð :7ð 7õ		
ô 	ØØà˜	�{ '¨.Ð)9ð :9ð 9ð ö	
ñ/
r9   z"n_samples, n_features, n_query_pts)rY   rY   rZ   )r[   r\   rY   zn_neighbors, radius))r,   rY   )é2   iô  )rY   r[   ÚNeighborsMixinSubclassc           
      ó’  — t        || «      }t        |t        «      rFd|j                  v rt	        j
                  d«       d|j                  v rt	        j
                  d«       t        j                  j                  d«      }|j                  ||«      j                  | d¬«      }	|j                  d|¬	«      }
|j                  ||«      j                  | d¬«      }g }t        |t        «      r|n|}t        D ]{  }t        |t        «      r,| t        j                  k(  rd
|v rt	        j
                  d«        ||||¬«      }|j!                  |	|
«       |j#                  |j%                  |«      «       Œ} t'        t)        |«      dz
  «      D ]9  }t        |   }t        |dz      }||   ||dz      }}t+        ||d|› d|› d�¬«       Œ; y )NÚ
ClassifierzGMetrics of type `DistanceMetric` are not yet supported for classifiers.ÚRadiusúVMetrics of type `DistanceMetric` are not yet supported for radius-neighbor estimators.r   Fr_   r.   ©Úsizera   rb   ©re   r1   r,   rh   rk   z*' algorithms return different predictions.ri   )r8   ro   r   Ú__name__rq   rr   rD   rE   rF   rI   rm   ÚrandintÚ
issubclassr   rn   rp   rt   ru   Úpredictrw   rx   r   )ry   rz   r:   r{   r1   rd   Úradiusr‹   r|   r}   Úyr~   Úpredict_resultsÚ	parameterre   r�   r‚   rƒ   ÚpredictionsÚnext_predictionss                       r7   Ú,test_neigh_predictions_algorithm_agnosticityr�   ÷   sÌ  € ô> ˜6 <Ó0€FÜ�&œ.Ô)ØÐ1×:Ñ:Ñ:Ü�K‰Kð ôð Ð-×6Ñ6Ñ6Ü�K‰Kð/ôô —	‘	×%Ñ% aÓ(€IØ�‰�y *Ó-×4Ñ4°\ÈÐ4ÓN€AØ×Ñ˜! )ÐÓ,€Aà�N‰N˜;¨
Ó3×:Ñ:¸<ÈeÐ:ÓT€Eà€Oô "Ð"8¼/ÔJ‰ÐPVð ô  ò 
5ˆ	Ü�fœnÔ-°,Ä"Ç*Á*Ò2LØ˜Ñ"Ü—‘ð ôñ ' y¸IÈfÔUˆØ�	‰	�!�QŒà×Ñ˜uŸ}™}¨UÓ3Õ4ð
5ô ”3�Ó'¨!Ñ+Ó,ò 
ˆÜ˜q‘Mˆ	Ü# A¨¡EÑ*ˆà(7¸Ñ(:¸OÈAÐPQÉEÑ<RÐ%ˆäØØà˜	�{ '¨.Ð)9ð :;ð ;ö		
ñ
r9   ÚKNeighborsMixinSubclassc                 óâ  — t         j                  d«      j                  | d¬«      }t         j                  dd¬«      }t	        j
                  d¬«      }|j                  |«       |j                  |«      \  }} |d¬«      }|t	        j                  |«      t	        j                  |«      fD ]@  }|j                  ||«       |j                  |«      \  }	}
t        ||	«       t        ||
«       ŒB y )	N©rZ   r.   Fr_   r.   rZ   r�   r,   ©rd   )rL   Úrandom_samplerm   r”   r   rs   rt   rv   ÚBallTreeÚKDTreer   r   )ry   rž   r}   r˜   Únbrs_fidÚdist1Úind1ÚnbrsÚdataÚdist2Úind2s              r7   Útest_unsupervised_inputsr¬   L  sÏ   € ô 	×Ñ˜'Ó"×)Ñ)¨,¸UÐ)ÓC€AÜ�‰�A˜BˆÓ€AÜ×)Ñ)°aÔ8€HØ‡L�L�„Oà×%Ñ% aÓ(�K€Eˆ4á"¨qÔ1€Dàœ9×-Ñ-¨aÓ0´)×2BÑ2BÀ1Ó2EÐFò 'ˆØ�‰��qÔà—o‘o aÓ(‰ˆˆtä˜˜uÔ%Ü˜4 Õ&ñ'r9   c                  ó0  — dgg} t        j                  «       }t        j                  t        «      5  |j                  | «       d d d «       t        j                  t        «      5  |j                  | «       d d d «       y # 1 sw Y   Œ=xY w# 1 sw Y   y xY w)Nr,   )r   rs   rq   Úraisesr   Úkneighbors_graphÚradius_neighbors_graph)r}   Ú
neighbors_s     r7   Ú!test_not_fitted_error_gets_raisedr²   i  s|   € Ø
ˆˆ€AÜ×+Ñ+Ó-€JÜ	�‰”~Ó	&ñ 'Ø×#Ñ# AÔ&÷'ä	�‰”~Ó	&ñ -Ø×)Ñ)¨!Ô,÷-ð -÷'ð 'ú÷-ð -ús   ²B Á%BÂ B	ÂBzignore:EfficiencyWarningc                 ó°  — t         j                  j                  d«      }|j                  d«      }|j                  d«      } | ||«      \  }}dD �]a  }t	        j
                  d¬«      }|j                  |«        t        ||«      |«      \  }	}
t	        j
                  ddd¬	«      }|j                  |«        t        ||«      |«      \  }}t        |	|«       t        |
|«       t	        j
                  dd
d¬	«      }|j                  |«        t        ||«      |«      \  }}t        |	|«       t        |
|«        t        ||«      d«      \  }	}
 t        ||«      d«      \  }}t        |	|«       t        |
|«       t        j                  t        «      5   t        ||«      |«       ddd«       �Œd t        j                  |j                  d   «      }|D ]n  } |d¬«      }dx|_        |_        |j                  ||«      j#                  |«      }d|_        |j                  ||«      j#                  |«      }t        ||«       Œp y# 1 sw Y   �ŒxY w)z;Tests unsupervised NearestNeighbors with a distance matrix.é*   ©rZ   r/   ©r.   r/   )rv   r.   r¡   r)   Úprecomputedrc   r+   Nr   Ú	euclidean©r1   r,   )rD   rE   rF   r¢   r   rs   rt   Úgetattrr   r   rq   r®   Ú
ValueErrorÚarangeÚshaper—   rd   r–   r1   )Úmake_train_testÚ
estimatorsrL   r}   ÚYÚDXXÚDYXÚmethodÚnbrs_XÚdist_XÚind_XÚnbrs_DÚdist_DÚind_DÚtargetÚEstÚestÚpred_XÚpred_Ds                      r7   Úcheck_precomputedrÏ   r  s4  € ô �)‰)×
Ñ
 Ó
#€CØ×Ñ˜'Ó"€AØ×Ñ˜&Ó!€AÙ˜q !Ó$�H€Cˆðó $'ˆô ×+Ñ+¸Ô:ˆØ�
‰
�1ŒØ/œ ¨Ó/°Ó2‰ˆ�ô ×+Ñ+Ø W°]ô
ˆð 	�
‰
�3ŒØ/œ ¨Ó/°Ó4‰ˆ�Ü˜ Ô'Ü˜5 %Ô(ô ×+Ñ+Ø V°Mô
ˆð 	�
‰
�3ŒØ/œ ¨Ó/°Ó4‰ˆ�Ü˜ Ô'Ü˜5 %Ô(ð 0œ ¨Ó/°Ó5‰ˆ�Ø/œ ¨Ó/°Ó5‰ˆ�Ü˜ Ô'Ü˜5 %Ô(ô �]‰]œ:Ó&ñ 	'Ø#ŒG�F˜FÓ# AÔ&÷	'ñ 	'ðG$'ôL �Y‰Y�q—w‘w˜q‘zÓ"€FØò (ˆÙ˜Ô%ˆØ'(Ð(ˆŒ
�S”_Ø—‘˜˜FÓ#×+Ñ+¨AÓ.ˆØ"ˆŒ
Ø—‘˜˜fÓ%×-Ñ-¨cÓ2ˆÜ˜ Õ'ñ(÷		'ñ 	'ús   ÆIÉI	c                  óž   — d„ } t         j                  t         j                  t         j                  t         j                  g}t        | |«       y )Nc                 óX   — t        j                  | «      t        j                  || «      fS ©N)r   r   )ÚX_trainÚX_tests     r7   r¾   z/test_precomputed_dense.<locals>.make_train_test«  s*   € ä×&Ñ& wÓ/Ü×&Ñ& v¨wÓ7ð
ð 	
r9   )r   ÚKNeighborsClassifierr   ÚRadiusNeighborsClassifierÚRadiusNeighborsRegressorrÏ   )r¾   r¿   s     r7   Útest_precomputed_denserØ   ª  s@   € ò
ô 	×&Ñ&Ü×%Ñ%Ü×+Ñ+Ü×*Ñ*ð	€Jô �o zÕ2r9   ÚfmtÚcsrÚlilc                 óh   ‡ — ˆ fd„}t         j                  t         j                  g}t        ||«       y )Nc                 óÖ   •— t        j                  d¬«      j                  | «      }|j                  | d¬«      j	                  ‰«      |j                  |d¬«      j	                  ‰«      fS )Nr/   r¡   rX   ©Úmode)r   rs   rt   r¯   Úasformat©rÓ   rÔ   ÚnnrÙ   s      €r7   r¾   z4test_precomputed_sparse_knn.<locals>.make_train_test¼  sd   ø€ Ü×'Ñ'°EÔ:×>Ñ>¸wÓGˆà×Ñ ¨jÐÓ9×BÑBÀ3ÓGØ×Ñ ¨ZÐÓ8×AÑAÀ#ÓFð
ð 	
r9   )r   rÕ   r   rÏ   ©rÙ   r¾   r¿   s   `  r7   Útest_precomputed_sparse_knnrä   º  s/   ø€ ô
ô 	×&Ñ&Ü×%Ñ%ð€Jô �o zÕ2r9   c                 óh   ‡ — ˆ fd„}t         j                  t         j                  g}t        ||«       y )Nc                 óÖ   •— t        j                  d¬«      j                  | «      }|j                  | d¬«      j	                  ‰«      |j                  |d¬«      j	                  ‰«      fS )Nr,   ©r—   rX   rÞ   )r   rs   rt   r°   rà   rá   s      €r7   r¾   z7test_precomputed_sparse_radius.<locals>.make_train_testÎ  sd   ø€ Ü×'Ñ'¨qÔ1×5Ñ5°gÓ>ˆà×%Ñ% g°JÐ%Ó?×HÑHÈÓMØ×%Ñ% f°:Ð%Ó>×GÑGÈÓLð
ð 	
r9   )r   rÖ   r×   rÏ   rã   s   `  r7   Útest_precomputed_sparse_radiusrè   Ì  s/   ø€ ô
ô 	×+Ñ+Ü×*Ñ*ð€Jô �o zÕ2r9   Úcsr_containerc                 ó&  —  | t        j                  d«      j                  dd«      «      }t        |«      sJ ‚d|d<   t        |«      rJ ‚ | g d¢g d¢g d¢g d¢g«      }t        |«      sJ ‚g d	¢g d
¢g d¢}}} | |||fd¬«      }t        |«      sJ ‚y )NrZ   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½   )rD   r¼   Úreshaper   )ré   r}   r©   r‡   Úindptrs        r7   Útest_is_sorted_by_datarñ   Þ  s›   € ñ 	”b—i‘i “m×+Ñ+¨A¨rÓ2Ó3€AÜ˜aÔ Ð Ð à€A€d�GÜ! !Ô$Ð$Ð$ñ 	’y¢)ªYº	ÐBÓC€AÜ˜aÔ Ð Ð ò )ª,º�6ˆ'€DÙ�t˜W fÐ-°VÔ<€AÜ˜aÔ Ð Ñ r9   Úfunctionc                 ó¼  —  |t        j                  t         j                  j                  d«      j	                  dd«      «      «      }t        |«      rJ ‚ | |«      }t        |«      sJ ‚t         j                  j                  d«      j                  dd¬«      }|j                  «       }d||dk(  <    ||«      }t        |«      rJ ‚ | |«      }t        |«      sJ ‚y )Nr´   rZ   r-   ©rZ   rZ   r�   r   r,   )rD   ÚabsrE   rF   Úrandnr   r”   Útoarray)rò   ré   r}   ÚXtÚmasks        r7   Útest_sort_graph_by_row_valuesrú   ÷  sÅ   € ñ
 	”b—f‘fœRŸY™Y×2Ñ2°2Ó6×<Ñ<¸RÀÓDÓEÓF€AÜ! !Ô$Ð$Ð$Ù	�!‹€BÜ˜bÔ!Ð!Ð!ô �9‰9× Ñ  Ó$×,Ñ,¨Q°XÐ,Ó>€DØ	�	‰	‹€AØ€A€dˆa�i�LÙ�aÓ€AÜ! !Ô$Ð$Ð$Ù	�!‹€BÜ˜bÔ!Ð!Ñ!r9   c                 ó  —  | t        j                  t         j                  j                  d«      j	                  dd«      «      «      }t        |«      rJ ‚|j                  «       }t        |«      j                  |j                  u sJ ‚|j                  «       }t        |d¬«      j                  |j                  u sJ ‚|j                  «       }t        |d¬«      j                  |j                  usJ ‚|j                  «       }t        |«      j                  |j                  usJ ‚t        |j                  «       d¬«       t        j                  t        d¬«      5  t        |j                  «       d¬«       d d d «       y # 1 sw Y   y xY w)Nr´   rZ   Fr_   Tz%Use copy=True to allow the conversion©Úmatch)rD   rõ   rE   rF   rö   r   r`   r   r©   r   Útocscrq   r®   r»   )ré   ÚX_r}   s      r7   Ú"test_sort_graph_by_row_values_copyr     s1  € ñ 
”r—v‘vœbŸi™i×3Ñ3°BÓ7×=Ñ=¸bÀ"ÓEÓFÓ	G€BÜ! "Ô%Ð%Ð%ð 	�‰‹	€AÜ# AÓ&×+Ñ+¨q¯v©vÑ5Ð5Ð5à
�‰‹	€AÜ# A¨EÔ2×7Ñ7¸1¿6¹6ÑAÐAÐAà
�‰‹	€AÜ# A¨DÔ1×6Ñ6¸a¿f¹fÑDÐDÐDð 	�‰‹	€AÜ˜aÓ ×%Ñ%¨Q¯V©VÑ3Ð3Ð3ô ˜QŸW™W›Y¨TÕ2ô 
�‰”zÐ)PÔ	Qñ 8Ü  §¡£°Õ7÷8÷ 8ñ 8ús   ÅFÆF
c                 ó²  —  | t        j                  t         j                  j                  d«      j	                  dd«      «      «      }t        |«      rJ ‚t        j                  t        d¬«      5  t        |d¬«       d d d «       t        j                  t        d¬«      5  t        |dd¬«       d d d «       t        j                  t        d¬«      5  t        |«       d d d «       t        j                  «       5  t        j                  d«       t        |dd	¬«       d d d «       y # 1 sw Y   Œ«xY w# 1 sw Y   Œ…xY w# 1 sw Y   ŒbxY w# 1 sw Y   y xY w)
Nr´   rZ   zwas not sorted by row valuesrü   Tr_   )r`   Úwarn_when_not_sortedÚerrorF)rD   rõ   rE   rF   rö   r   rq   Úwarnsr
   r   r   ÚwarningsÚcatch_warningsÚsimplefilter)ré   r}   s     r7   Ú%test_sort_graph_by_row_values_warningr  (  s  € ñ 	”b—f‘fœRŸY™Y×2Ñ2°2Ó6×<Ñ<¸RÀÓDÓEÓF€AÜ! !Ô$Ð$Ð$ô 
�‰Ô'Ð/MÔ	Nñ /Ü  ¨Õ.÷/ä	�‰Ô'Ð/MÔ	Nñ JÜ  ¨ÀDÕI÷Jä	�‰Ô'Ð/MÔ	Nñ Ü˜1Ô÷ô 
×	 Ñ	 Ó	"ñ KÜ×Ñ˜gÔ&Ü  ¨ÀEÕJ÷Kð K÷/ð /ú÷Jð Jú÷ð ú÷Kð Kús0   Á1D)Â"D5ÃEÃ<$EÄ)D2Ä5D>ÅE
ÅEÚsparse_containerc                 ó€  —  | t        j                  t         j                  j                  d«      j	                  dd«      «      «      }t        j                  t        d¬«      5  t        |«       d d d «       t        j                  t        d¬«      5  t        |«       d d d «       y # 1 sw Y   Œ9xY w# 1 sw Y   y xY w)Nr´   rZ   zformat is not supportedrü   )
rD   rõ   rE   rF   rö   rq   r®   Ú	TypeErrorr   r   )r	  r}   s     r7   Ú/test_sort_graph_by_row_values_bad_sparse_formatr  <  s�   € ñ
 	œŸ™¤§	¡	× 5Ñ 5°bÓ 9× ?Ñ ?ÀÀBÓ GÓHÓI€AÜ	�‰”yÐ(AÔ	Bñ $Ü  Ô#÷$ä	�‰”yÐ(AÔ	Bñ Ü˜1Ô÷ð ÷$ð $ú÷ð ús   Á$B(ÂB4Â(B1Â4B=c                 óæ  — t        j                  g d¢g d¢g d¢g«      } | |«      }t        j                  dd¬«      }|j	                  |«       |j                  d d¬«       |j                  t        j                  g d¢g«      d	¬«       t        j                  g d
¢g d¢g d¢g«      } | |«      }|j	                  |«       d}t        j                  t        |¬«      5  |j                  d d¬«       d d d «       t        j                  g d¢g d¢g d¢g«      } | |«      }d}t        j                  t        |¬«      5  |j                  |d¬«       d d d «       y # 1 sw Y   ŒixY w# 1 sw Y   y xY w)N)ç        ç       @rR   )r  r  ç      @)rR   r  r  r,   r·   ©rd   r1   r¡   ©r  r  r  r-   )r  r  r  )r  r  r  zB2 neighbors per samples are required, but some samples have only 1rü   )ç      @r  rR   )g       Àr  r  z>Negative values in data passed to precomputed distance matrix.)	rD   Úarrayr   rs   rt   rv   rq   r®   r»   )ré   rT   Údist_csrr�   Úmsgs        r7   Útest_precomputed_sparse_invalidr  H  s=  € ô �8‰8’_¢o²ÐGÓH€DÙ˜TÓ"€HÜ×&Ñ&°1¸]ÔK€EØ	‡I�IˆhÔØ	×Ñ�T qÐÔ)Ø	×Ñ”R—X‘XšÐ/Ó0¸aÐÔ@ô �8‰8’_¢o²ÐGÓH€DÙ˜TÓ"€HØ	‡I�IˆhÔØ
N€CÜ	�‰”z¨Ô	-ñ .Ø×Ñ˜¨1ÐÔ-÷.ô �8‰8’_Ò&6ºÐHÓI€DÙ˜TÓ"€HØ
J€CÜ	�‰”z¨Ô	-ñ 2Ø×Ñ˜¨qÐÔ1÷2ð 2÷.ð .ú÷2ð 2ús   ÃEÄ>E'ÅE$Å'E0c                  ó�  — t         j                  j                  d«      } | j                  dd«      }t	        |d¬«      }| j                  dd¬«      }t        j                  t        j                  t        j                  t        j                  fD ]4  }t         |«       ||«      }t         |d¬«      ||«      }t        ||«       Œ6 y )	Nr   é   r-   r¸   r¹   r.   r�   r·   )rD   rE   rF   rI   r   r”   r   rÕ   rÖ   r   r×   r   r   )rL   r}   ÚDr˜   rË   Úmetric_scoreÚprecomp_scores          r7   Ú!test_precomputed_cross_validationr  b  s§   € ä
�)‰)×
Ñ
 Ó
"€CØ�‰��Q‹€AÜ˜1 [Ô1€AØ�‰�A˜BˆÓ€Aä×&Ñ&Ü×+Ñ+Ü×%Ñ%Ü×*Ñ*ð	ò 8ˆô '¡s£u¨a°Ó3ˆÜ'©°=Ô(AÀ1ÀaÓHˆÜ˜<¨Õ7ñ8r9   r  r\   c                 óT  — t         j                  j                  |«      }|j                  ||«      j	                  | d¬«      }|j                  ||«      j	                  | d¬«      }t
        D �]¹  }	g }
t        D ]é  }t        j                  |||	¬«      }|j                  |«       |j                  |d¬«      }|j                  |d¬«      \  }}t        |||«      D ].  \  }}}|j                  «       }||   |d d  ||   |d d  ||   |d d  Œ0 |
j                  ||f«       t        t        j                  t!        |«      «      t        j                  t!        |«      «      «       Œë t#        t%        |
«      dz
  «      D ]¨  }t        t        j                  t!        |
|   d   «      «      t        j                  t!        |
|dz      d   «      «      «       t        t        j                  t!        |
|   d   «      «      t        j                  t!        |
|dz      d   «      «      «       Œª �Œ¼ y )NFr_   )r—   re   r>   rf   Tr,   r   )rD   rE   rF   rI   rm   ÚPrn   r   rs   rt   Úradius_neighborsÚzipÚargsortru   r   ÚconcatenateÚlistrw   rx   )ry   rz   r:   r{   r—   Úrandom_staterL   r}   Útestr>   r€   re   r�   r§   rT   ÚindÚdr‚   Úi1Újs                       r7   Ú"test_unsupervised_radius_neighborsr+  s  sò  € ô �)‰)×
Ñ
 Ó
-€Cà�‰�˜JÓ'×.Ñ.¨|À%Ð.ÓH€Aà�8‰8�K Ó,×3Ñ3°LÀuÐ3ÓM€Däó ˆØˆä#ò 	SˆIÜ×.Ñ.°fÈ	ÐUVÔWˆEØ�I‰I�aŒLà×)Ñ)¨$ÀÐ)ÓFˆDð ×.Ñ.¨tÀTÐ.ÓJ‰IˆD�#Ü  c¨4Ó0ò ‘��1�bØ—I‘I“K�Ø˜‘t�‘!�Ø˜‘t�‘!�Ø˜1™�‘1‘ð	ð
 �N‰N˜D #˜;Ô'äœBŸN™N¬4°«9Ó5´r·~±~ÄdÈ4ÃjÓ7QÕRð!	Sô$ ”s˜7“| aÑ'Ó(ò 	ˆAÜÜ—‘œt G¨A¡J¨q¡MÓ2Ó3Ü—‘œt G¨A°©E¡N°1Ñ$5Ó6Ó7ôô Ü—‘œt G¨A¡J¨q¡MÓ2Ó3Ü—‘œt G¨A°©E¡N°1Ñ$5Ó6Ó7õò	ñ+r9   re   ÚweightsrZ   c                 óZ  — t         j                  j                  |«      }d|j                  ||«      j	                  | d¬«      z  dz
  }	|	dz  j                  d¬«      dk  j	                  t        «      }
|
j	                  t        «      }t        j                  |||¬«      }|j                  |	|
«       dd|j                  d|«      z  dz
  z  }|j                  |	d | |z   «      }t        ||
d | «       |j                  |	|«       |j                  |	d | |z   «      }t        ||d | «       y )	Nr-   Fr_   r,   ©Úaxisç      à?©rd   r,  re   çñhãˆµøä>)rD   rE   rF   rI   rm   ÚsumÚintÚstrr   rÕ   rt   r–   r   )ry   re   r,  rz   r:   Ú
n_test_ptsrd   r%  rL   r}   r˜   Úy_strÚknnÚepsilonÚy_preds                  r7   Útest_kneighbors_classifierr;  �  s  € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+×2Ñ2°<ÀeÐ2ÓLÑLÈqÑP€AØ
ˆQ‰$�‰˜ˆÓ	˜cÑ	!×)Ñ)¬#Ó.€AØ�H‰H”S‹M€Eä
×
(Ñ
(Ø¨¸Iô€Cð ‡G�GˆAˆq„MØ�a˜#Ÿ(™( 1 jÓ1Ñ1°AÑ5Ñ6€GØ�[‰[˜˜;˜J˜¨'Ñ1Ó2€FÜ�v˜q  *˜~Ô.à‡G�GˆAˆuÔØ�[‰[˜˜;˜J˜¨'Ñ1Ó2€FÜ�v˜u [ jÐ1Õ2r9   c                 óâ  — t         j                  j                  |«      }d|j                  ||«      j	                  | d¬«      z  dz
  }|dz  j                  d¬«      dk  j	                  t        «      }t        j                  |¬«      }	|	j                  ||j	                  t        «      «       dd|j                  d|«      z  dz
  z  }
|	j                  |d | |
z   «      }t        ||d | «       y )	Nr-   Fr_   r,   r.  r0  r¡   r2  )rD   rE   rF   rI   rm   r3  r4  r   rÕ   rt   Úfloatr–   r   )ry   rz   r:   r6  rd   r%  rL   r}   r˜   r8  r9  r:  s               r7   Ú'test_kneighbors_classifier_float_labelsr>  ¼  sÔ   € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+×2Ñ2°<ÀeÐ2ÓLÑLÈqÑP€AØ
ˆQ‰$�‰˜ˆÓ	˜cÑ	!×)Ñ)¬#Ó.€Aä
×
(Ñ
(°[Ô
A€CØ‡G�GˆAˆq�x‰xœ‹ÔØ�a˜#Ÿ(™( 1 jÓ1Ñ1°AÑ5Ñ6€GØ�[‰[˜˜;˜J˜¨'Ñ1Ó2€FÜ�v˜q  *˜~Õ.r9   c           	      óü  — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g«      j                  | d¬«      }t        j                  g d	¢«      }t        j                  d
d¬«      }|j                  ||«       |j                  |«      }t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g«      dz  }t        ||«       |j                  ||j                  t        «      «       |j                  |«      }t        ||«       t        j                  ddd¬«      }|j                  ||«       |j                  t        j                  g d¢g d¢g«      «      }t        j                  g d¢g d¢g«      }t        ||«       y )N)r   r-   r   )r   r-   r,   )r-   r   r   )r-   r-   r   )r   r   r-   )r   r   r,   Fr_   )r/   r/   r\   r\   r,   r,   r.   r,   )rd   r>   )r,   r-   r   rí   rì   )r-   r,   r   r  r-   rX   )rd   r>   r,  )r-   r-   r-   ©r   r,   r   )r   gš™™™™™Ù?g333333ã?)
rD   r  rm   r   rÕ   rt   Úpredict_probar   r5  r   )ry   r}   r˜   ÚclsÚy_probÚ	real_probs         r7   Ú(test_kneighbors_classifier_predict_probarE  Ð  s;  € ä
�‰Ú	’Išyª)²YÂ	ÐJó	ç�fˆ\ €fÓ&ð ô 	�‰Ò#Ó$€AÜ
×
(Ñ
(°Q¸!Ô
<€CØ‡G�GˆAˆq„MØ×Ñ˜qÓ!€Fä
�‰âÚÚÚÚÚðó		
ð ñ
	ð ô �y &Ô)à‡G�GˆAˆq�x‰xœ‹}ÔØ×Ñ˜qÓ!€FÜ�y &Ô)ä
×
(Ñ
(°Q¸!ÀZÔ
P€CØ‡G�GˆAˆq„MØ×ÑœrŸx™xª²IÐ(>Ó?Ó@€FÜ—‘š)¢]Ð3Ó4€IÜ�I˜vÕ&r9   c                 óZ  — t         j                  j                  |«      }d|j                  ||«      j	                  | d¬«      z  dz
  }	|	dz  j                  d¬«      |k  j	                  t        «      }
|
j	                  t        «      }t        j                  |||¬«      }|j                  |	|
«       dd|j                  d|«      z  dz
  z  }|j                  |	d | |z   «      }t        ||
d | «       |j                  |	|«       |j                  |	d | |z   «      }t        ||d | «       y )Nr-   Fr_   r,   r.  ©r—   r,  re   r2  )rD   rE   rF   rI   rm   r3  r4  r5  r   rÖ   rt   r–   r   )ry   re   r,  rz   r:   r6  r—   r%  rL   r}   r˜   r7  r�   r9  r:  s                  r7   Ú test_radius_neighbors_classifierrH  ó  s  € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+×2Ñ2°<ÀeÐ2ÓLÑLÈqÑP€AØ
ˆQ‰$�‰˜ˆÓ	˜fÑ	$×,Ñ,¬SÓ1€AØ�H‰H”S‹M€Eä×/Ñ/Ø˜w°)ô€Eð 
‡I�Iˆa�„OØ�a˜#Ÿ(™( 1 jÓ1Ñ1°AÑ5Ñ6€GØ�]‰]˜1˜[˜j˜>¨GÑ3Ó4€FÜ�v˜q  *˜~Ô.Ø	‡I�Iˆa�ÔØ�]‰]˜1˜[˜j˜>¨GÑ3Ó4€FÜ�v˜u [ jÐ1Õ2r9   Úoutlier_label)r   éÿÿÿÿNc                 ó$  — t        j                  ddgddgg| ¬«      }t        j                  ddg«      }d}t        j                  ddgddgg| ¬«      }t        j                  ddgd	d	gg| ¬«      }t        j                  }	 |	||||¬
«      }
|
j	                  ||«       t        t        j                  ddg«      |
j                  |«      «       |€4t        j                  t        «      5  |
j                  |«       d d d «       y y # 1 sw Y   y xY w)NrR   r  r4   r,   r-   çš™™™™™¹?ç)\�Âõ(ð?ç®Gáz @çffffffö?©r—   r,  re   rI  )
rD   r  r   rÖ   rt   r   r–   rq   r®   r»   )ry   re   r,  rI  r}   r˜   r—   Úz1Úz2ÚrncÚclfs              r7   Ú2test_radius_neighbors_classifier_when_no_neighborsrU    s  € ô 	�‰�3˜�*˜s C˜jÐ)°Ô>€AÜ
�‰�!�Q�Ó€AØ€Fô 
�‰�D˜$�< $¨ Ð.°lÔ	C€Bô 
�‰�D˜$�< # s Ð,°LÔ	A€Bä
×
-Ñ
-€CÙ
ØØØØ#ô	€Cð ‡G�GˆAˆq„MÜ”r—x‘x  A Ó'¨¯©°R«Ô9ØÐÜ�]‰]œ:Ó&ñ 	Ø�K‰K˜ŒO÷	ð 	ð ÷	ð 	ús   Ã*DÄDc                 ó¸	  ‡‡‡‡— t        j                  ddgddgddgddgddgg| ¬«      Št        j                  g d¢«      Šd}t        j                  d	d	gddgg| ¬«      }t        j                  d
d
gd	d	gddgg| ¬«      }t        j                  ddg«      }t        j                  g d¢«      }t        j                  ddg«      }t        j                  |||d¬«      }	|	j	                  ‰‰«       t        ||	j                  |«      «       t        j                  t        d¬«      5  t        ||	j                  |«      «       d d d «       t        j                  t        d¬«      5  t        ||	j                  |«      d   «       d d d «       t        j                  Št        j                  dgdgdgdgdgdgdgdgdgdgg
| ¬«      Št        j                  g d¢«      Šˆˆˆfd„}
t        j                  t        «      5   |
«        d d d «       ˆˆˆfd„}t        j                  t        «      5   |«        d d d «        ‰dd¬«      }	|	j	                  ‰‰«       |	j                  dgdgg«      }t        |dd d …f   g d ¢«        ‰dd¬«      }	|	j	                  ‰‰«       |	j                  dgdgg«      }t        |dd d …f   g d!¢«       |	j                  dgdgg«      }t        |ddg«       ˆˆˆfd"„}t        j                  t        «      5   |«        d d d «       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ddgg
Š ‰dd¬«      }	|	j	                  ‰‰«       |	j                  dgdgg«      }t        |d   dd d …f   g d!¢«       |	j                  dgdgg«      }t        |dd d …f   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ddgddgg
Š ‰dddg¬«      }	|	j	                  ‰‰«       |	j                  dgdgg«      }t        |d   dd d …f   g d#¢«       t        |d   dd d …f   g d!¢«       |	j                  dgdgg«      }t        |dd d …f   ddg«       ˆˆˆfd$„}t        j                  t        «      5   |«        d d d «       y # 1 sw Y   �ŒNxY w# 1 sw Y   �ŒxY w# 1 sw Y   �Œ¤xY w# 1 sw Y   �Œ�xY w# 1 sw Y   �Œ¯xY w# 1 sw Y   y xY w)%NrR   r  g®Gáz®ï?g\�Âõ(\ï?rN  r4   )r,   r-   r,   r,   r-   rL  rM  rO  r,   r-   )rJ  r,   r-   r   rJ  rP  z+Outlier label -1 is not in training classesrü   r.   r/   r\   é   é   é   é	   )
r   r-   r-   r,   r,   r,   r.   r.   r.   r.   c                  óB   •—  ‰ddgg¬«      } | j                  ‰‰«       y )Nr,   r\   ©r—   rI  ©rt   ©rT  ÚRNCr}   r˜   s    €€€r7   Úcheck_array_exceptionzPtest_radius_neighbors_classifier_outlier_labeling.<locals>.check_array_exceptionY  s    ø€ Ù˜¨A¨3¨%Ô0ˆØ�‰��1�r9   c                  ó>   •—  ‰dd¬«      } | j                  ‰‰«       y )Nr,   Úar\  r]  r^  s    €€€r7   Úcheck_dtype_exceptionzPtest_radius_neighbors_classifier_outlier_labeling.<locals>.check_dtype_exceptiona  s   ø€ Ù˜¨#Ô.ˆØ�‰��1�r9   Úmost_frequentr\  é   )r   r   r   r,   )r   r,   r   r   c                  óh   •—  ‰dd¬«      } | j                  ‰‰«       | j                  dgdgg«       y )Nr,   r/   r\  re  )rt   rA  r^  s    €€€r7   Úcheck_warningzHtest_radius_neighbors_classifier_outlier_labeling.<locals>.check_warningw  s2   ø€ Ù˜¨!Ô,ˆØ�‰��1ŒØ×Ñ˜A˜3  ˜+Õ&r9   )r,   r   r   r   c                  óB   •—  ‰dg d¢¬«      } | j                  ‰‰«       y )Nr,   rì   r\  r]  )rT  r_  r}   Úy_multis    €€€r7   Úcheck_exceptionzJtest_radius_neighbors_classifier_outlier_labeling.<locals>.check_exception©  s   ø€ Ù˜ª)Ô4ˆØ�‰��7Õr9   )rD   r  r   rÖ   rt   r   r–   rq   r  ÚUserWarningr   rA  r®   r  r»   )ry   re   r,  r—   rQ  rR  Úcorrect_labels1Úcorrect_labels2Úoutlier_probarT  r`  rc  ÚprobaÚpredrg  rj  r_  r}   r˜   ri  s                   @@@@r7   Ú1test_radius_neighbors_classifier_outlier_labelingrq  2  sÚ  û€ ô 	�‰Ø
ˆsˆ�c˜3�Z $¨ °°d¨|¸dÀD¸\ÐJØô	€Aô 	�‰’Ó!€AØ€Fô 
�‰�D˜$�< $¨ Ð.°lÔ	C€Bô 
�‰�C˜�:  d˜|¨d°D¨\Ð:À,Ô	O€Bä—h‘h  1˜vÓ&€OÜ—h‘hšzÓ*€OÜ—H‘H˜a ˜VÓ$€Mä
×
-Ñ
-Ø˜w°)È2ô€Cð ‡G�GˆAˆq„MÜ�¨¯©°B«Ô8Ü	�‰”kÐ)VÔ	Wñ =Ü˜?¨C¯K©K¸«OÔ<÷=ä	�‰”kÐ)VÔ	Wñ AÜ˜ s×'8Ñ'8¸Ó'<¸QÑ'?Ô@÷Aô ×
-Ñ
-€CÜ
�‰�1�#˜�s˜Q˜C !  q c¨A¨3°°°a°S¸1¸#À¸sÐCÈ<ÔX€AÜ
�‰Ò/Ó0€Aöô 
�‰”yÓ	!ñ  ÙÔ÷ öô 
�‰”yÓ	!ñ  ÙÔ÷ ñ �Q oÔ
6€CØ‡G�GˆAˆq„MØ×Ñ ˜s R D˜kÓ*€EÜ�u˜Q¢˜T‘{¢LÔ1ñ �Q aÔ
(€CØ‡G�GˆAˆq„MØ×Ñ ˜s R D˜kÓ*€EÜ�u˜Q¢˜T‘{¢LÔ1Ø�;‰;˜˜˜b˜T�{Ó#€DÜ�t˜a ˜VÔ$ö'ô
 
�‰”kÓ	"ñ ÙŒ÷ð
 
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆð€Gñ �Q aÔ
(€CØ‡G�GˆAˆwÔØ×Ñ ˜s R D˜kÓ*€EÜ�u˜Q‘x ¢1 ‘~¢|Ô4Ø�;‰;˜˜˜b˜T�{Ó#€DÜ�t˜Ašq˜D‘z A q 6Ô*ð 
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆð€Gñ �Q q¨! fÔ
-€CØ‡G�GˆAˆwÔØ×Ñ ˜s R D˜kÓ*€EÜ�u˜Q‘x ¢1 ‘~¢|Ô4Ü�u˜Q‘x ¢1 ‘~¢|Ô4Ø�;‰;˜˜˜b˜T�{Ó#€DÜ�t˜Ašq˜D‘z A q 6Ô*öô 
�‰”zÓ	"ñ ÙÔ÷ð ÷=ñ =ú÷Añ Aú÷ ñ  ú÷ ñ  ú÷.ñ ú÷bð úsH   Ä'RÅ&RÇ?R)È/R6ÌSÑ>SÒRÒR&Ò)R3Ò6S ÓSÓSc            	      óæ  — t        j                  ddgddgg«      } t        j                  ddg«      }d}t        j                  ddgddgg«      }t        j                  ddg«      }t        }t        D ]p  }dd|fD ]f  }t	        j
                  |||¬	«      }|j                  | |«       t        j                  d
¬«      5  t        ||j                  |«      «       d d d «       Œh Œr y # 1 sw Y   ŒuxY w)NrR   r  r,   r-   rL  rM  rW   rX   rG  rP   )Úinvalid)
rD   r  rV   rn   r   rÖ   rt   rS   r   r–   )	r}   r˜   r—   rQ  rl  Úweight_funcre   r,  rT  s	            r7   Ú.test_radius_neighbors_classifier_zero_distanceru  ±  sö   € ô 	�‰�3˜�*˜s C˜jÐ)Ó*€AÜ
�‰�!�Q�Ó€AØ€Fä	�‰�D˜$�< # s Ð,Ó	-€BÜ—h‘h  1˜vÓ&€Oä€Käò 	Eˆ	Ø! :¨{Ð;ò 	EˆGÜ×5Ñ5Ø w¸)ôˆCð �G‰G�A�qŒMÜ—‘ XÔ.ñ Eô # ?°C·K±KÀ³OÔD÷Eð Eñ	Eñ	E÷Eð Eús   Â>C'Ã'C0c                  ó   — t        j                  ddgddgddgddgg«      } t        j                  g d¢«      }d}t        j                  ddgddgg«      }t        j                  ddg«      }t        j                  ddg«      }t        j                  ddg«      }t        D ]«  }dD ]G  }t        j                  |||¬	«      }	|	j                  | |«       t        ||	j                  |«      «       ŒI t        d
dg||g«      D ]J  \  }}
t        j                  d||¬«      }|j                  | |«       t        |
|j                  |«      «       ŒL Œ­ y )NrR   r  ç      @)rR   r=   r  r  çš™™™™™É?çš™™™™™ñ?g      ô?©rW   rX   rG  rW   rX   r-   r1  )
rD   r  rn   r   r×   rt   r   r–   r!  r   )r}   r˜   r—   ÚzÚrnn_correct_labelsÚknn_correct_unifÚknn_correct_distre   r,  ÚrnnÚcorr_labelsr8  s               r7   Ú'test_neighbors_regressors_zero_distancer�  É  sT  € ô 	�‰�3˜�*˜s C˜j¨3°¨*°s¸C°jÐAÓB€AÜ
�‰Ò%Ó&€AØ€FÜ
�‰�3˜�*˜s C˜jÐ)Ó*€AäŸ™ 4¨ +Ó.Ðä—x‘x  s Ó,ÐÜ—x‘x  s Ó,Ðäò 9ˆ	ð /ò 	@ˆGÜ×4Ñ4Ø w¸)ôˆCð �G‰G�A�qŒMÜÐ.°·±¸A³Õ?ð	@ô %(Ø˜
Ð#Ð&6Ð8HÐ%Ió%
ò 	9Ñ ˆG�[ô ×/Ñ/Ø w¸)ôˆCð �G‰G�A�qŒMÜ˜K¨¯©°Q«Õ8ñ	9ñ9r9   c                  ó8  — t        j                  dgdgdgg«      } d}t        D ]t  }t        j                  ||¬«      j                  | «      }|j                  dggd¬«      }|j                  dk(  sJ ‚|j                  t        k(  sJ ‚t        |d	   d	d
g«       Œv y)z²Test whether points lying on boundary are handled consistently

    Also ensures that even with only one query point, an object array
    is returned rather than a 2d array.
    r=   r  g®Gáz@©r—   re   r  Frf   )r,   r   r,   N)rD   r  rn   r   rs   rt   r   r½   r5   Úobjectr   )r}   r—   re   r¨   r€   s        r7   Ú'test_radius_neighbors_boundary_handlingr…  ê  s    € ô 	�‰�3�%˜#˜  Ð'Ó(€AØ€Fäò /ˆ	Ü×)Ñ)°À9ÔM×QÑQÐRSÓTˆØ×'Ñ'¨#¨¨ÀÐ'ÓGˆØ�}‰} Ò$Ð$Ð$Ø�}‰}¤Ò&Ð&Ð&Ü˜7 1™:¨¨1 vÕ.ñ/r9   c                 ó  —  | t        j                  d«      «      }|j                  g d¢«       t        j                  dddd¬«      j                  |«      }|j                  |d¬	«      \  }}t        j                  |j                  d
   t        ¬«      }t        j                  d
g«      t        j                  d
g«      t        j                  d
g«      t        j                  d
g«      g|d d  t        j                  |j                  d
   t        ¬«      }t        j                  d
g«      t        j                  dg«      t        j                  dg«      t        j                  dg«      g|d d  t        ||«       t        ||«       y )N)r/   r/   )r   r   r   r   r0  r+   é   r·   )r—   re   Ú	leaf_sizer1   Trf   r   r4   r,   r-   r.   )rD   ÚonesÚsetdiagr   rs   rt   r   Úemptyr½   r„  r  r   )ré   r}   r¨   Ú
neigh_distÚ	neigh_indÚexpected_distÚexpected_inds          r7   Ú.test_radius_neighbors_returns_array_of_objectsr�  ü  s  € ñ 	”b—g‘g˜f“oÓ&€AØ‡I�IŠlÔä×%Ñ%Ø˜f°¸=ôç	�cˆ!ƒfð 	ð !×1Ñ1°!ÀTÐ1ÓJÑ€J�	ä—H‘H˜QŸW™W Q™Z¬vÔ6€MÜŸ™ ! ›¤r§x¡x°°£}´b·h±hÀ¸s³mÄRÇXÁXÈqÈcÃ]ÐS€M‘!ÐÜ—8‘8˜AŸG™G A™J¬fÔ5€LÜ—x‘x  “}¤b§h¡h°¨s£m´R·X±X¸q¸c³]ÄBÇHÁHÈaÈSÃMÐR€L‘€Oä�z =Ô1Ü�y ,Õ/r9   )r(   r*   r)   c                 óZ  — t        j                  ddgg«      }t        j                  ddgddgddgddgg«      }d}t        j                  ddgg«      }t        j                  | ¬«      j	                  |«      }t        j
                  |j                  ||d¬«      «      }t        ||«       y )Nr   r,   rJ  r-   ©re   F)rd   rg   )rD   r  r   rs   rt   Úsortrv   r   )re   Úquery_pointÚequidistant_pointsÚkÚknn_indicesrâ   r‡   s          r7   Útest_query_equidistant_kth_nnr˜    sŸ   € ô —(‘(˜Q ˜F˜8Ó$€KÜŸ™ A q 6¨A¨q¨6°B¸°7¸QÀ¸GÐ"DÓEÐð 	
€AÜ—(‘(˜Q ˜F˜8Ó$€KÜ	×	#Ñ	#¨iÔ	8×	<Ñ	<Ð=OÓ	P€BÜ�g‰g�b—m‘m K¸QÐPU�mÓVÓW€GÜ�w Õ,r9   )r*   r(   r)   r¸   )r)   r¸   )r)   r·   c                 óT  — t        |t        j                  «      }t        |t        «      rt        j                  d«       d}t        j                  j                  d«      }|j                  |df«      }|dk(  r&t        j                  |t        j                  d¬«      }t        j                  | |¬«      }|j                  |«       |j                  |t        j                  d	¬
«      \  }}t!        |«      D ]'  }t#        ||   t        j$                  ||   «      «       Œ) |dk7  rGt        j&                  t(        d¬«      5  |j                  |t        j                  d	d¬«       d d d «       |j                  |t        j                  dd	¬«      }	t+        |	«      sJ ‚y # 1 sw Y   Œ:xY w)Nr�   rZ   r´   r/   r·   rX   ©r—   rß   r’   T)r}   r—   Úsort_resultszreturn_distance must be Truerü   F)r}   r—   r›  rg   )r}   r—   rß   r›  )r8   rD   Úfloat64ro   r   rq   rr   rE   rF   r¢   r   r°   rH   rs   rt   r   rw   r   r“  r®   r»   r   )
re   r1   rz   rL   r}   Úmodelr…   r‡   ÚiiÚgraphs
             r7   Ú"test_radius_neighbors_sort_resultsr   "  sq  € ô  ˜6¤2§:¡:Ó.€FÜ�&œ.Ô)Ü�‰ðô	
ð €IÜ
�)‰)×
Ñ
 Ó
#€CØ×Ñ˜9 a˜.Ó)€Aà�ÒÜ×,Ñ,¨Q´r·v±vÀJÔOˆÜ×&Ñ&°À6ÔJ€EØ	‡I�Iˆa„Lð ×/Ñ/°!¼B¿F¹FÐQUÐ/ÓVÑ€IˆwÜ�IÓò BˆÜ˜9 R™=¬"¯'©'°)¸B±-Ó*@ÕAðBð �ÒÜ�]‰]œ:Ð-KÔLñ 	Ø×"Ñ"ØœBŸF™F°Àuð #ô ÷	ð ×(Ñ(Ø
”B—F‘F ¸$ð )ó €Eô ˜eÔ$Ð$Ñ$÷	ð 	ús   Å$FÆF'c                  óÜ  — t        d«      } d}d}d}| j                  ||«      }| j                  dd||f«      }t        ||d¬«      \  }}}}	d ddt        g}
t        t        |
«      D �]  \  }}
g }t        |«      D ]R  }t        j                  |
|¬«      }|j                  ||d d …|f   «       |j                  |j                  |«      «       ŒT t        j                  |«      j                  }|j                   |	j                   k(  sJ ‚t        j                  |
|¬«      }|j                  ||«       |j                  |«      }|j                   |	j                   k(  sJ ‚t#        ||«       �Œ y )	Nr   r-   é(   r.   ©r%  rW   rX   ©r,  re   )r'   rI   r”   r   rV   r   rn   rw   r   rÖ   rt   ru   r–   rD   ÚvstackrJ   r½   r   )rL   r:   rz   Ún_outputr}   r˜   rÓ   rÔ   Úy_trainÚy_testr,  re   Ú	y_pred_soÚor  Úrnn_moÚ	y_pred_mos                    r7   Ú*test_RadiusNeighborsClassifier_multioutputr­  T  s_  € ä
˜QÓ
€CØ€JØ€IØ€Hà�‰�˜JÓ'€AØ�‰�A�q˜9 hÐ/Ó0€Aä'7¸¸1È1Ô'MÑ$€GˆV�W˜fà�Y 
¬LÐ9€Gä%¤j°'Ó:ó 1Ñˆ	�7àˆ	Ü�x“ò 	2ˆAÜ×5Ñ5Ø¨9ôˆCð �G‰G�G˜W¢Q¨ T™]Ô+Ø×Ñ˜SŸ[™[¨Ó0Õ1ð	2ô —I‘I˜iÓ(×*Ñ*ˆ	Ø�‰ &§,¡,Ò.Ð.Ð.ô ×4Ñ4Ø yô
ˆð 	�
‰
�7˜GÔ$Ø—N‘N 6Ó*ˆ	à�‰ &§,¡,Ò.Ð.Ð.Ü˜9 iÖ0ñ+1r9   c                 ó  — t         j                  j                  |«      }d|j                  | |«      z  dz
  }||dkD  z  }|dz  j	                  d¬«      dk  j                  t        «      }t        D ]—  }t        j                  |d¬«      }	|	j                   ||«      |«       dd|j                  d|«      z  dz
  z  }
t        t         j                  fz   D ]0  } ||d | |
z   «      }|	j                  |«      }t        ||d | «       Œ2 Œ™ y )	Nr-   r,   rx  r.  r0  r+   ©rd   re   r2  )rD   rE   rF   rI   r3  rm   r4  ÚSPARSE_TYPESr   rÕ   rt   Úasarrayr–   r   )rz   r:   r6  rd   r%  rL   r}   r˜   Ú	sparsematr8  r9  ÚsparsevÚX_epsr:  s                 r7   Ú!test_kneighbors_classifier_sparserµ  z  s  € ô
 �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+Ñ+¨aÑ/€AØˆˆS‰�L€AØ
ˆQ‰$�‰˜ˆÓ	˜cÑ	!×)Ñ)¬#Ó.€Aä!ò 7ˆ	Ü×,Ñ,¸ÐPVÔWˆØ�‰‘	˜!“˜aÔ Ø˜!˜cŸh™h q¨*Ó5Ñ5¸Ñ9Ñ:ˆÜ#¤r§z¡z mÑ3ò 	7ˆGÙ˜A˜k˜z˜N¨WÑ4Ó5ˆEØ—[‘[ Ó'ˆFÜ˜v q¨¨* ~Õ6ñ	7ñ	7r9   c                  óÂ  — t        d«      } d}d}d}| j                  ||«      }| j                  dd||f«      }t        ||d¬«      \  }}}}	d ddt        g}
t        t        |
«      D �]v  \  }}
g }g }t        |«      D ]r  }t        j                  |
|¬«      }|j                  ||d d …|f   «       |j                  |j                  |«      «       |j                  |j                  |«      «       Œt t        j                  |«      j                   }|j"                  |	j"                  k(  sJ ‚t%        |«      |k(  sJ ‚t        j                  |
|¬«      }|j                  ||«       |j                  |«      }|j"                  |	j"                  k(  sJ ‚t'        ||«       |j                  |«      }t%        |«      |k(  sJ ‚t)        ||«      D ]  \  }}t'        ||«       Œ �Œy y )	Nr   r\   rŠ   r.   r£  rW   rX   r¤  )r'   rI   r”   r   rV   r   rn   rw   r   rÕ   rt   ru   r–   rA  rD   r¥  rJ   r½   rx   r   r!  )rL   r:   rz   r¦  r}   r˜   rÓ   rÔ   r§  r¨  r,  re   r©  Úy_pred_proba_sorª  r8  Úknn_mor¬  Úy_pred_proba_moÚproba_moÚproba_sos                        r7   Ú%test_KNeighborsClassifier_multioutputr¼  Ž  sÐ  € ä
˜QÓ
€CØ€JØ€IØ€Hà�‰�˜JÓ'€AØ�‰�A�q˜9 hÐ/Ó0€Aä'7¸¸1È1Ô'MÑ$€GˆV�W˜fà�Y 
¬LÐ9€Gä%¤j°'Ó:ó 3Ñˆ	�7àˆ	ØˆÜ�x“ò 	>ˆAÜ×0Ñ0¸ÈIÔVˆCØ�G‰G�G˜W¢Q¨ T™]Ô+Ø×Ñ˜SŸ[™[¨Ó0Ô1Ø×"Ñ" 3×#4Ñ#4°VÓ#<Õ=ð		>ô —I‘I˜iÓ(×*Ñ*ˆ	Ø�‰ &§,¡,Ò.Ð.Ð.Ü�?Ó# xÒ/Ð/Ð/ô ×/Ñ/¸È9ÔUˆØ�
‰
�7˜GÔ$Ø—N‘N 6Ó*ˆ	à�‰ &§,¡,Ò.Ð.Ð.Ü˜9 iÔ0ð !×.Ñ.¨vÓ6ˆÜ�?Ó# xÒ/Ð/Ð/ä"% o°Ó"Gò 	3ÑˆH�hÜ˜x¨Õ2ò	3ñ53r9   c                 ó*  — t         j                  j                  |«      }d|j                  | |«      z  dz
  }t        j                  |dz  j                  d«      «      }||j                  «       z  }|d | }t        }	t        D ]Ž  }
dd|	fD ]„  }t        j                  |||
¬«      }|j                  ||«       dd|j                  d|«      z  dz
  z  }|j                  |d | |z   «      }t        j                  t        ||z
  «      dk  «      rŒ„J ‚ Œ� y ©Nr-   r,   rW   rX   r1  r2  ç333333Ó?)rD   rE   rF   rI   Úsqrtr3  ÚmaxrV   rn   r   r   rt   r–   Úallrõ   )rz   r:   r6  rd   r%  rL   r}   r˜   Úy_targetrt  re   r,  r8  r9  r:  s                  r7   Útest_kneighbors_regressorrÄ  º  s  € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+Ñ+¨aÑ/€AÜ
�‰��A‘—
‘
˜1“Ó€AØˆ�‰‹�L€Aà��*ˆ~€Hä€Käò 8ˆ	Ø! :¨{Ð;ò 	8ˆGÜ×/Ñ/Ø'°ÀIôˆCð �G‰G�A�qŒMØ˜a #§(¡(¨1¨jÓ"9Ñ9¸AÑ=Ñ>ˆGØ—[‘[  ; J °'Ñ!9Ó:ˆFÜ—6‘6œ#˜f xÑ/Ó0°3Ñ6Õ7Ð7Ð7ñ	8ñ8r9   c            
      óf  — t        d«      } d}d}d}| j                  ||«      }| j                  ||«      }t        ||d¬«      \  }}}}	t        t        d dg«      D ]Ï  \  }
}t        j                  ||
¬«      }|j                  ||«       |j                  |d¬	«      }t        j                  |D �cg c]  }t        j                  ||   d¬
«      ‘Œ c}«      }|j                  |«      }|j                  |	j                  k(  sJ ‚|j                  |	j                  k(  sJ ‚t        ||«       ŒÑ y c c}w ©Nr   r\   r¢  r/   r£  rW   r¤  Frf   r.  )r'   rI   r   r   rn   r   r   rt   rv   rD   r  Úmeanr–   r½   r   )rL   r:   rz   r¦  r}   r˜   rÓ   rÔ   r§  r¨  re   r,  r8  Ú	neigh_idxÚidxÚ
y_pred_idxr:  s                    r7   Ú3test_KNeighborsRegressor_multioutput_uniform_weightrË  Ò  s  € ä
˜QÓ
€CØ€JØ€IØ€Hà�‰�˜JÓ'€AØ�‰�˜HÓ%€Aä'7¸¸1È1Ô'MÑ$€GˆV�W˜fÜ%¤j°4¸Ð2CÓDò ,Ñˆ	�7Ü×+Ñ+°GÀyÔQˆØ�‰�˜Ô!à—N‘N 6¸5�NÓAˆ	Ü—X‘XÈ	ÖRÀœrŸw™w w¨s¡|¸!Ö<ÒRÓSˆ
à—‘˜VÓ$ˆà�|‰|˜vŸ|™|Ò+Ð+Ð+Ø×Ñ 6§<¡<Ò/Ð/Ð/Ü˜ 
Õ+ñ,ùò
 Ss   Â0!D.
c                 óÂ  — t         j                  j                  |«      }d|j                  | |«      z  dz
  }t        j                  |dz  j                  d«      «      }||j                  «       z  }t        j                  ||g«      j                  }|d | }ddt        g}	t        t        |	«      D ]¬  \  }
}	t        j                  ||	|
¬«      }|j                  ||«       dd|j                  d|«      z  dz
  z  }|j                  |d | |z   «      }|j                   |j                   k(  sJ ‚t        j"                  t        j$                  ||z
  «      dk  «      rŒ¬J ‚ y r¾  )rD   rE   rF   rI   rÀ  r3  rÁ  r¥  rJ   rV   r   rn   r   r   rt   r–   r½   rÂ  rõ   )rz   r:   r6  rd   r%  rL   r}   r˜   rÃ  r,  re   r8  r9  r:  s                 r7   Ú%test_kneighbors_regressor_multioutputrÍ  ë  s>  € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+Ñ+¨aÑ/€AÜ
�‰��A‘—
‘
˜1“Ó€AØˆ�‰‹�L€AÜ
�	‰	�1�a�&Ó×Ñ€Aà��*ˆ~€Hà˜*¤lÐ3€GÜ%¤j°'Ó:ò 	7Ñˆ	�7Ü×+Ñ+Ø#¨WÀ	ô
ˆð 	�‰��1ŒØ˜!˜cŸh™h q¨*Ó5Ñ5¸Ñ9Ñ:ˆØ—‘˜Q˜{ 
˜^¨gÑ5Ó6ˆØ�|‰|˜xŸ~™~Ò-Ð-Ð-ä�v‰v”b—f‘f˜V hÑ.Ó/°#Ñ5Õ6Ð6Ð6ñ	7r9   c                 óÂ  — t         j                  j                  |«      }d|j                  | |«      z  dz
  }t        j                  |dz  j                  d«      «      }||j                  «       z  }|d | }t        }	t        D ]‘  }
dd|	fD ]‡  }t        j                  |||
¬«      }|j                  ||«       dd|j                  d|«      z  dz
  z  }|j                  |d | |z   «      }t        j                  t        ||z
  «      |dz  k  «      rŒ‡J ‚ Œ“ dD ]¸  }t        j                  ||d¬«      }|j                  ||«       t        j                  d|fd	«      }d
}t!        j"                  t$        t'        j(                  |«      ¬«      5  |j                  |«      }d d d «       t        j                  t        j*                  «      «      rŒ¸J ‚ y # 1 sw Y   Œ6xY w)Nr-   r,   rW   rX   rG  r2  rz  r+   g      ð¿zNOne or more samples have no neighbors within specified radius; predicting NaN.rü   )rD   rE   rF   rI   rÀ  r3  rÁ  rV   rn   r   r×   rt   r–   rÂ  rõ   Úfullrq   r  rk  ÚreÚescapeÚisnan)rz   r:   r6  r—   r%  rL   r}   r˜   rÃ  rt  re   r,  r�   r9  r:  Ú
X_test_nanÚempty_warning_msgrp  s                     r7   Útest_radius_neighbors_regressorrÕ    s¿  € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+Ñ+¨aÑ/€AÜ
�‰��A‘—
‘
˜1“Ó€AØˆ�‰‹�L€Aà��*ˆ~€Hä€Käò ?ˆ	Ø! :¨{Ð;ò 	?ˆGÜ×6Ñ6Ø w¸)ôˆEð �I‰I�a˜ŒOØ˜a #§(¡(¨1¨jÓ"9Ñ9¸AÑ=Ñ>ˆGØ—]‘] 1 [ j >°GÑ#;Ó<ˆFÜ—6‘6œ#˜f xÑ/Ó0°6¸A±:Ñ=Õ>Ð>Ð>ñ	?ð?ð +ò &ˆÜ×2Ñ2Ø 7°fô
ˆð 	�	‰	�!�QŒÜ—W‘W˜a ˜_¨dÓ3ˆ
ð7ð 	ô �\‰\œ+¬R¯Y©YÐ7HÓ-IÔJñ 	-Ø—=‘= Ó,ˆD÷	-ä�v‰v”b—h‘h˜t“nÕ%Ð%Ð%ñ&÷	-ð 	-ús   ÆGÇG	c            
      ó�  — t        d«      } d}d}d}| j                  ||«      }| j                  ||«      }t        ||d¬«      \  }}}}	t        t        d dg«      D ]ä  \  }
}t        j                  ||
¬«      }|j                  ||«       |j                  |d¬	«      }t        j                  |D �cg c]  }t        j                  ||   d¬
«      ‘Œ c}«      }t        j                  |«      }|j                  |«      }|j                  |	j                  k(  sJ ‚|j                  |	j                  k(  sJ ‚t        ||«       Œæ y c c}w rÆ  )r'   rI   r   r   rn   r   r×   rt   r   rD   r  rÇ  r–   r½   r   )rL   r:   rz   r¦  r}   r˜   rÓ   rÔ   r§  r¨  re   r,  r  rÈ  rÉ  rÊ  r:  s                    r7   Ú=test_RadiusNeighborsRegressor_multioutput_with_uniform_weightr×  +  s+  € ô ˜QÓ
€CØ€JØ€IØ€Hà�‰�˜JÓ'€AØ�‰�˜HÓ%€AÜ'7¸¸1È1Ô'MÑ$€GˆV�W˜fä%¤j°4¸Ð2CÓDò ,Ñˆ	�7Ü×0Ñ0¸ÈIÔVˆØ�‰�˜Ô!à×(Ñ(¨ÀÐ(ÓGˆ	Ü—X‘XÈ	ÖRÀœrŸw™w w¨s¡|¸!Ö<ÒRÓSˆ
ä—X‘X˜jÓ)ˆ
Ø—‘˜VÓ$ˆà×Ñ 6§<¡<Ò/Ð/Ð/Ø�|‰|˜vŸ|™|Ò+Ð+Ð+Ü˜ 
Õ+ñ,ùò
 Ss   Â0!E
c                 óÀ  — t         j                  j                  |«      }d|j                  | |«      z  dz
  }t        j                  |dz  j                  d«      «      }||j                  «       z  }t        j                  ||g«      j                  }|d | }ddt        g}t        t        |«      D ]«  \  }	}t        j                  ||	¬«      }
|
j                  ||«       dd|j                  d|«      z  dz
  z  }|
j                  |d | |z   «      }|j                   |j                   k(  sJ ‚t        j"                  t        j$                  ||z
  «      dk  «      rŒ«J ‚ y )Nr-   r,   rW   rX   r¤  r2  r¿  )rD   rE   rF   rI   rÀ  r3  rÁ  r¥  rJ   rV   r   rn   r   r×   rt   r–   r½   rÂ  rõ   )rz   r:   r6  r%  rL   r}   r˜   rÃ  r,  re   r  r9  r:  s                r7   Ú)test_RadiusNeighborsRegressor_multioutputrÙ  F  s7  € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+Ñ+¨aÑ/€AÜ
�‰��A‘—
‘
˜1“Ó€AØˆ�‰‹�L€AÜ
�	‰	�1�a�&Ó×Ñ€Aà��*ˆ~€HØ˜*¤lÐ3€Gä%¤j°'Ó:ò 7Ñˆ	�7Ü×0Ñ0¸ÈIÔVˆØ�‰��1ŒØ˜!˜cŸh™h q¨*Ó5Ñ5¸Ñ9Ñ:ˆØ—‘˜Q˜{ 
˜^¨gÑ5Ó6ˆà�|‰|˜xŸ~™~Ò-Ð-Ð-Ü�v‰v”b—f‘f˜V hÑ.Ó/°#Ñ5Õ6Ð6Ð6ñ7r9   c                 ó‚  — t         j                  j                  |«      }d|j                  | |«      z  dz
  }|dz  j	                  d¬«      dk  j                  t        «      }t        D �]G  }t        j                  |d¬«      }	|	j                   ||«      |«       t        j                  |d¬«      }
|
j                  t        |d	¬
«      |«       t        D ]Ø  } ||«      }t        j                  |	j                  |«      j                  «       |k(  «      dkD  sJ ‚ |t        |d	¬
«      «      }|t         t"        z   v r8d}t%        j&                  t(        |¬«      5  |
j                  |«       d d d «       ŒŸt        j                  |
j                  |«      j                  «       |k(  «      dkD  rŒØJ ‚ �ŒJ y # 1 sw Y   ŒèxY w)Nr-   r,   r.  g      Ð?r+   r¯  r·   r  r¸   r¹   çffffffî?z3not supported due to its handling of explicit zerosrü   )rD   rE   rF   rI   r3  rm   r4  r°  r   r   rt   r   ÚSPARSE_OR_DENSErÇ  r–   Úroundr%   r    rq   r®   r  )rz   r:   r6  rd   r%  rL   r}   r˜   r²  r8  Úknn_prer³  ÚX2ÚX2_prer  s                  r7   Ú test_kneighbors_regressor_sparserá  ]  s‡  € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+Ñ+¨aÑ/€AØ
ˆQ‰$�‰˜ˆÓ	˜dÑ	"×*Ñ*¬3Ó/€Aä!ó Lˆ	Ü×+Ñ+¸ÈvÔVˆØ�‰‘	˜!“˜aÔ ä×/Ñ/Ø#¨Mô
ˆð 	�‰Ô& q°Ô=¸qÔAä&ò 
	LˆGÙ˜“ˆBÜ—7‘7˜3Ÿ;™; r›?×0Ñ0Ó2°aÑ7Ó8¸4Ò?Ð?Ð?áÔ/°¸+ÔFÓGˆFØœ.¬>Ñ9Ñ9ØK�Ü—]‘]¤9°CÔ8ñ ,Ø—O‘O FÔ+÷,ð ,ô —w‘w˜wŸ™¨vÓ6×<Ñ<Ó>À!ÑCÓDÀtÓKÐKÐKò
	LñL÷ ,ð ,ús   ÅF5Æ5F>c                  ó^  — t         D �]£  } t        j                  d| ¬«      }|j                  t        j
                  t        j                  «       t        |j                  t        j
                  «      t        j                  «       |j                  d| ¬«       |j                  t        j
                  t        j                  «       t        j                  |j                  t        j
                  «      t        j                  k(  «      dkD  sJ ‚t        j                  d| ¬«      }|j                  t        j
                  t        j                  «       t        j                  |j                  t        j
                  «      j                  «       t        j                  k(  «      dkD  r�Œ¤J ‚ y )Nr,   r¯  rZ  rÛ  r\   )rn   r   rÕ   rt   Úirisr©   rÊ   r   r–   Ú
set_paramsrD   rÇ  r   rÝ  )re   rT  Úrgss      r7   Útest_neighbors_irisræ  }  s	  € ô
  ó Mˆ	Ü×,Ñ,¸ÀiÔPˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ü˜3Ÿ;™;¤t§y¡yÓ1´4·;±;Ô?à�‰ 1°	ˆÔ:Ø�‰”—	‘	œ4Ÿ;™;Ô'Ü�w‰w�s—{‘{¤4§9¡9Ó-´·±Ñ<Ó=ÀÒDÐDÐDä×+Ñ+¸ÀYÔOˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ü�w‰w�s—{‘{¤4§9¡9Ó-×3Ñ3Ó5¼¿¹ÑDÓEÈÔLÐLÐLñMr9   c                  ó:  — t         j                  j                  d«      } t         j                  }| j                  \  }}t        |dz  «      }t        j                  d|«      }t        j                  ||«      }| |   ||   | |   ||   f\  }}}	}
t        j                  dd¬«      }|j                  ||«      j                  |	|
«      }|j                  |j                  t        d¬«      |«      j                  |	j                  t        d¬«      |
«      }||k(  sJ ‚y )	NÚuint8gš™™™™™é?r   r,   r)   r¯  Fr_   )Údigitsr©   rm   rÊ   r½   r4  rD   r¼   r   rÕ   rt   Úscorer=  )r}   rÀ   rz   r:   Útrain_test_boundaryÚtrainr&  rÓ   ÚY_trainrÔ   ÚY_testrT  Úscore_uint8Úscore_floats                 r7   Útest_neighbors_digitsrñ  �  s   € ô
 	�‰×Ñ˜7Ó#€AÜ�‰€AØŸg™gÑ€Y�
Ü˜i¨#™oÓ.ÐÜ�I‰I�aÐ,Ó-€EÜ�9‰9Ð(¨)Ó4€DØ)*¨5©°1°U±8¸Q¸t¹WÀaÈÁgÐ)MÑ&€Wˆg�v˜vä
×
(Ñ
(°QÀ'Ô
J€CØ—'‘'˜' 7Ó+×1Ñ1°&¸&ÓA€KØ—'‘'˜'Ÿ.™.¬°U˜.Ó;¸WÓE×KÑKØ�‰”e %ˆÓ(¨&ó€Kð ˜+Ò%Ð%Ñ%r9   c                  óÂ  — t        j                  ddgddgddgg«      } t        j                  | ddd¬«      }t	        |j                  «       t        j                  |j                  d   «      «       t        j                  | dd	¬
«      }t        |j                  «       g d¢g d¢g d¢g«       t        j                  | ddd¬«      }t	        |j                  «       g d¢g d¢g d¢g«       t        j                  | dd	¬
«      }t        |j                  «       g d¢g d¢g d¢g«       t        j                  | ddd¬«      }t        |j                  «       g d¢g d¢g d¢g«       y )Nr   r,   rM  rR   r-   ÚconnectivityT©rß   Úinclude_selfrX   rÞ   ©r  rM  r  )rM  r  r  ©r  çÊäzºƒö?r  ©rR   rR   r  ©r  rR   rR   )r  rM  ç½Üí›wã@©rM  r  rø  )rû  rø  r  r.   )r,   r,   r,   )	rD   r  r   r¯   r   r÷   rK   r½   r   ©r}   rM   s     r7   Útest_kneighbors_graphrþ  ¥  s  € ä
�‰�1�a�&˜4 ˜+¨¨1 vÐ.Ó/€Aô 	×"Ñ" 1 a¨nÈ4ÔP€AÜ�q—y‘y“{¤B§F¡F¨1¯7©7°1©:Ó$6Ô7ä×"Ñ" 1 a¨jÔ9€AÜØ	�	‰	‹Ò'Ò)9Ò;RÐSôô
 	×"Ñ" 1 a¨nÈ4ÔP€AÜ�q—y‘y“{¢_²oÂÐ$WÔXä×"Ñ" 1 a¨jÔ9€AÜØ	�	‰	‹â#Ú#Ú)ð	
ôô 	×"Ñ" 1 a¨nÈ4ÔP€AÜ�A—I‘I“K¢)ªYº	Ð!BÕCr9   rd   )r,   r-   r.   rß   ró  c                 ó  — t         j                  j                  |«      }|j                  dd«      } ||«      }t	        t        j                  || |¬«      j                  «       t        j                  || |¬«      j                  «       «       y ©NrZ   rÞ   )rD   rE   rF   rö   r   r   r¯   r÷   ©rd   rß   ré   ÚseedrL   r}   ÚXcsrs          r7   Útest_kneighbors_graph_sparser  Å  sp   € ô �)‰)×
Ñ
 Ó
%€CØ�	‰	�"�bÓ€AÙ˜Ó€DäÜ×"Ñ" 1 k¸Ô=×EÑEÓGÜ×"Ñ" 4¨¸4Ô@×HÑHÓJõr9   c                  ó.  — t        j                  ddgddgddgg«      } t        j                  | ddd¬	«      }t	        |j                  «       g d
¢g d¢g d¢g«       t        j                  | dd¬«      }t        |j                  «       g d¢g d¢g d¢g«       y )Nr   r,   rM  rR   r-   r=   ró  Trô  rù  )rR   rR   rR   rú  rX   rÞ   rö  rü  r÷  )rD   r  r   r°   r   r÷   r   rý  s     r7   Útest_radius_neighbors_graphr  Õ  s‚   € ä
�‰�1�a�&˜4 ˜+¨¨1 vÐ.Ó/€Aä×(Ñ(¨¨C°nÐSWÔX€AÜ�q—y‘y“{¢_²oÂÐ$WÔXä×(Ñ(¨¨C°jÔA€AÜØ	�	‰	‹Ò&Ò(?ÒAWÐXõr9   c                 ó  — t         j                  j                  |«      }|j                  dd«      } ||«      }t	        t        j                  || |¬«      j                  «       t        j                  || |¬«      j                  «       «       y r   )rD   rE   rF   rö   r   r   r°   r÷   r  s          r7   Ú"test_radius_neighbors_graph_sparser  â  sp   € ô �)‰)×
Ñ
 Ó
%€CØ�	‰	�"�bÓ€AÙ˜Ó€DäÜ×(Ñ(¨¨K¸dÔC×KÑKÓMÜ×(Ñ(¨¨{ÀÔF×NÑNÓPõr9   Ú	Estimatorc                 ó   — t         j                  d«      } ||«      }t         j                  d«      }t        j                  d«      } | dd¬«      }d}t	        j
                  t        |¬«      5  |j                  |«       d	d	d	«       d
}t	        j
                  t        |¬«      5  t        |j                  ||«      «       d	d	d	«        | dd¬«      }|j                  ||«       d}t	        j
                  t        |¬«      5  |j                  |«       d	d	d	«        | «       }t        j                  d«      }t	        j
                  t        |¬«      5  |j                  t        j                  d«      t        j                  d«      «       d	d	d	«       d}t	        j
                  t        |¬«      5  |j                  |d	d	…d	d	…d	f   |«       d	d	d	«       |j                  ||«       t        j                  d«      }t	        j
                  t        |¬«      5  |j                  g g«       d	d	d	«       y	# 1 sw Y   �Œ¶xY w# 1 sw Y   �Œ‚xY w# 1 sw Y   �Œ<xY w# 1 sw Y   ŒÐxY w# 1 sw Y   ŒšxY w# 1 sw Y   y	xY w)z`Additional parameter validation for *Neighbors* estimators not covered by common
    validation.©rZ   r-   r    rZ   r(   Ú	haversiner’   zinstance is not fitted yetrü   Nz.Metric 'haversine' not valid for sparse input.r)   ©r1   re   z-Haversine distance only valid in 2 dimensionszFound array with 0 sample(s)rë   r   zFound array with dim 3zFound array with 0 feature(s))rL   r¢   rD   r‰  rq   r®   r»   r–   r   rt   rÐ  rÑ  )r	  ré   r}   ÚXsparseÚX3r˜   r¨   r  s           r7   Ú"test_neighbors_validate_parametersr  ò  sñ  € ô 	×Ñ˜'Ó"€AÙ˜AÓ€GÜ	×	Ñ	˜7Ó	#€BÜ
�‰�‹€Aá˜{°;Ô?€DØ
&€CÜ	�‰”z¨Ô	-ñ Ø�‰�QŒ÷à
:€CÜ	�‰”z¨Ô	-ñ .Ü˜Ÿ™ ¨!Ó,Ô-÷.ñ ˜K°7Ô;€DØ‡H�HˆR�„OØ
9€CÜ	�‰”z¨Ô	-ñ Ø�‰�RÔ÷ñ ‹;€DÜ
�)‰)Ð2Ó
3€CÜ	�‰”z¨Ô	-ñ .Ø�‰”—‘˜“¤"§'¡'¨!£*Ô-÷.ð #€CÜ	�‰”z¨Ô	-ñ #Ø�‰�’1’a˜�:‘ Ô"÷#à‡H�HˆQ�„Nä
�)‰)Ð3Ó
4€CÜ	�‰”z¨Ô	-ñ Ø�‰�b�TÔ÷ð ÷/ñ ú÷.ñ .ú÷ñ ú÷
.ð .ú÷#ð #ú÷
ð úsH   Á/H5Â&IÄIÅ9IÆ2I(ÈI4È5H?ÉIÉIÉI%É(I1É4I=rY   r+   r)   c                 ó  — t         j                  d|f«      }t        j                  d«      } | d|¬«      }d}t	        j
                  t        |¬«      5  |j                  ||«       ddd«       |j                  dk(  sJ ‚y# 1 sw Y   ŒxY w)z¸
    Validation of all classes extending NeighborsBase with
    Minkowski semi-metrics (i.e. when 0 < p < 1). That proper
    Warning is raised for `algorithm="auto"` and "brute".
    rZ   rL  )r>   re   zwMind that for 0 < p < 1, Minkowski metrics are not distance metrics. Continuing the execution with `algorithm='brute'`.rü   Nr)   )	rL   r¢   rD   r‰  rq   r  rk  rt   Ú_fit_method©r	  r:   re   r}   r˜   r�  r  s          r7   Ú-test_neighbors_minkowski_semimetric_algo_warnr  !  s…   € ô" 	×Ñ˜2˜zÐ*Ó+€AÜ
�‰�‹€Aá˜ yÔ1€Eð	Gð ô 
�‰”k¨Ô	-ñ Ø�	‰	�!�QŒ÷ð ×Ñ Ò'Ð'Ñ'÷ð ús   ÁBÂB
r*   r(   c                 óü   — t         j                  d«      }t        j                  d«      } | |d¬«      }d|› d�}t	        j
                  t        |¬«      5  |j                  ||«       ddd«       y# 1 sw Y   yxY w)	zECheck that we raise a proper error if `algorithm!='brute'` and `p<1`.r  rZ   rL  )re   r>   zalgorithm="zv" does not support 0 < p < 1 for the Minkowski metric. To resolve this problem either set p >= 1 or algorithm="brute".rü   N)rL   r¢   rD   r‰  rq   r®   r»   rt   r  s          r7   Ú.test_neighbors_minkowski_semimetric_algo_errorr  @  su   € ô 	×Ñ˜'Ó"€AÜ
�‰�‹€Aá 	¨SÔ1€Eà
�i�[ð !+ð 	+ð ô
 
�‰”z¨Ô	-ñ Ø�	‰	�!�QŒ÷÷ ñ ús   ÁA2Á2A;c                  ó„  — t         j                  d«      } t        j                  «       j	                  | «      }d}t        j                  t        |¬«      5  |j                  | d¬«       ddd«       t        j                  t        |¬«      5  |j                  | d¬«       ddd«       y# 1 sw Y   ŒAxY w# 1 sw Y   yxY w)z'Validate parameter of NearestNeighbors.r  zUUnsupported mode, must be one of "connectivity", or "distance" but got "blah" insteadrü   ÚblahrÞ   N)
rL   r¢   r   rs   rt   rq   r®   r»   r¯   r°   )r}   r¨   r  s      r7   Ú&test_nearest_neighbors_validate_paramsr  [  s¨   € ä×Ñ˜'Ó"€Aä×%Ñ%Ó'×+Ñ+¨AÓ.€Dð	ð ô 
�‰”z¨Ô	-ñ .Ø×Ñ˜a fÐÔ-÷.ä	�‰”z¨Ô	-ñ 4Ø×#Ñ# A¨FÐ#Ô3÷4ð 4÷.ð .ú÷4ð 4ús   ÁB*ÂB6Â*B3Â6B?Úpyfuncc           	      óÖ  — t         j                  j                  |«      }t        || «      }g d¢}|j	                  ||«      j                  | d¬«      }	|j	                  ||«      j                  | d¬«      }
t        ||«      }|D �]Õ  }t        |t        «      rdn |t        j                  d   vxs
 d|v xr d|v }i }|j                  dd«      }|D �]  }t        |t        «      r,| t         j                  k(  rd	|v rt        j                  d
«       t        j                  |||||¬«      }|r9|dk(  r4t        j                   t"        «      5  |j%                  |	«       d d d «       Œ•|dk(  rDt'        d d«      }t        j(                  |	d d …|f   «      }	t        j(                  |
d d …|f   «      }
|j%                  |	«       |j+                  |
d¬«      ||<   �Œ |d   \  }}|d   \  }}| t         j,                  k(  rdnd}t/        |||¬«       t1        ||«       |r�Œš|d   \  }}t/        |||¬«       t1        ||«       t/        |||¬«       t1        ||«       �ŒØ y # 1 sw Y   �ŒxY w)N)r)   r(   r*   Fr_   r*   r<   r?   r>   r-   ra   rb   ©rd   re   r1   r>   Úmetric_paramsr  Trf   r)   r(   gH¯¼šò×z>g-Cëâ6?)Úrtol)rD   rE   rF   r8   rI   rm   rN   ro   r   r   ÚVALID_METRICSÚpoprp   rq   rr   rs   r®   r»   rt   ÚsliceÚascontiguousarrayrv   rœ  r   r   )ry   Úglobal_random_seedr1   rz   r:   r{   rd   rL   Ú
algorithmsrÓ   rÔ   Úmetric_params_listr  Úexclude_kd_treer€   r>   re   r�   Ú
feature_slÚ	brute_dstÚ	brute_idxÚball_tree_dstÚball_tree_idxr  Úkd_tree_dstÚkd_tree_idxs                             r7   Útest_neighbors_metricsr.  j  st  € ô& �)‰)×
Ñ
Ð 2Ó
3€Cä˜6 <Ó0€Fò 3€JØ�h‰h�y *Ó-×4Ñ4°\ÈÐ4ÓN€GØ�X‰X�k :Ó.×5Ñ5°lÈÐ5ÓO€Fä2°6¸:ÓFÐà+ó 7;ˆô ˜&¤.Ô1ñ àœy×6Ñ6°yÑAÐAò @Ø˜vÐ%Ò>¨#°Ð*>ð	 	ð ˆØ×Ñ˜c 1Ó%ˆØ#ó 	PˆIÜ˜&¤.Ô1°lÄbÇjÁjÒ6PØ˜YÑ&Ü—K‘Kð$ôô ×.Ñ.Ø'Ø#ØØØ+ôˆEñ  9°	Ò#9Ü—]‘]¤:Ó.ñ 'Ø—I‘I˜gÔ&÷'àð ˜Ò$Ü" 4¨›^�
Ü×.Ñ.¨w²q¸*°}Ñ/EÓF�Ü×-Ñ-¨f²Q¸
°]Ñ.CÓD�à�I‰I�gÔØ!&×!1Ñ!1°&È$Ð!1Ó!OˆG�IÓð7	Pð:  ' wÑ/Ñˆ	�9Ø'.¨{Ñ';Ñ$ˆ�}ð $¤r§z¡zÒ1‰t°tˆä˜	 =°tÕ<Ü˜9 mÔ4ãØ'.¨yÑ'9Ñ$ˆK˜Ü˜I {¸Õ>Ü˜y¨+Ô6ä˜M¨;¸TÕBÜ˜}¨kÖ:ño7;÷4'ñ 'ús   ÅIÉI()Úcategoryr·   c                 ó  — t         j                  j                  |«      }|j                  ||«      j	                  |d¬«      }|j                  ||«      j	                  |d¬«      }	| dk(  rDt        d d«      }
t        j                  |d d …|
f   «      }t        j                  |	d d …|
f   «      }	| t        v r
|dkD  }|	dkD  }	t        | |«      }|D ]£  }|j                  dd«      }t        j                  |d| ||¬«      }|j                  |«       t        d¬	«      5  |j                  |	d
¬«      \  }}d d d «       t        d
¬	«      5  |j                  |	d
¬«      \  }}d d d «       t        «       Œ¥ y # 1 sw Y   ŒExY w# 1 sw Y   Œ&xY w)NFr_   r  r-   r0  r>   r)   r  ©Úenable_cython_pairwise_distTrf   )rD   rE   rF   rI   rm   r!  r"  r   rN   r   r   rs   rt   r   rv   r   )r1   ry   r#  rz   r:   r{   rd   rL   rÓ   rÔ   r'  r%  r  r>   r�   Úlegacy_brute_dstÚlegacy_brute_idxÚpdr_brute_dstÚpdr_brute_idxs                      r7   Útest_kneighbors_brute_backendr7  Å  s§  € ô �)‰)×
Ñ
Ð 2Ó
3€Cà�h‰h�y *Ó-×4Ñ4°\ÈÐ4ÓN€GØ�X‰X�k :Ó.×5Ñ5°lÈÐ5ÓO€Fð �ÒÜ˜4 “^ˆ
Ü×&Ñ& wªq°*¨}Ñ'=Ó>ˆÜ×%Ñ% fªQ°
¨]Ñ&;Ó<ˆàÔ+Ñ+Ø˜C‘-ˆØ˜#‘ˆä2°6¸:ÓFÐà+ò 
ˆØ×Ñ˜c 1Ó%ˆä×*Ñ*Ø#ØØØØ'ô
ˆð 	�	‰	�'Ôä¸Ô>ñ 	à16×1AÑ1AØ¨ð 2Bó 2Ñ.ÐÐ.÷	ô
 ¸Ô=ñ 	à+0×+;Ñ+;Ø¨ð ,<ó ,Ñ(ˆM˜=÷	ô 	*Ø˜mÐ-=¸}õ	
ñ1
÷	ð 	ú÷
	ð 	ús   ÄE6ÅFÅ6E?	ÆF	c                  ót  — d„ } t         j                  j                  d«      j                  dd«      }t	        j
                  dd| ¬«      }t	        j
                  dd| ¬«      }|j                  |«       |j                  |«       |j                  |«      \  }}|j                  |«      \  }}t        ||«       y )	Nc                 ód   — t        j                  t        j                  | dz  |dz  z   «      «      S )Nr-   )rD   rÀ  r3  )Úx1Úx2s     r7   Úcustom_metricz+test_callable_metric.<locals>.custom_metric  s&   € Ü�w‰w”r—v‘v˜b !™e b¨!¡e™mÓ,Ó-Ð-r9   r´   r  r-   r.   r+   rc   r)   )	rD   rE   rF   rI   r   rs   rt   rv   r   )r<  r}   Únbrs1Únbrs2r¦   r§   rª   r«   s           r7   Útest_callable_metricr?     s¤   € ò.ô 	�	‰	×Ñ˜bÓ!×&Ñ& r¨1Ó-€AÜ×&Ñ&Ø °ô€Eô ×&Ñ&Ø °ô€Eð 
‡I�Iˆa„LØ	‡I�Iˆa„Là×"Ñ" 1Ó%�K€Eˆ4Ø×"Ñ" 1Ó%�K€Eˆ4ä�E˜5Õ!r9   c                 ó(  — t        || «      }t        j                  ||«      j                  | d¬«      } ||«      }t	        ||«      }|dk(  r“t        j                  d«      }t        j                  d«      }	t        j                  |d¬«      }
t        j                  |	|d¬«      }t        j                  dd¬	«      }|j                  |
«       |j                  |«       y |D ]®  }t        j                  dd
||¬«      }|dk(  r(t        d d«      }t        j                  |d d …|f   «      }|j                  |«       |j                  |«       |t        d   v sŒwt        j                  dd
|¬«      j                  |«      }|j                  |«       Œ° y )NFr_   r·   rµ   r¶   r¸   r¹   r.   r  r+   ©rd   re   r1   r  r  r-   r)   rc   )r8   rL   rI   rm   rN   r¢   r   r   r   rs   rt   rv   r!  rD   r"  r   )ry   r1   ré   rz   r:   r}   r  r%  ÚX_precomputedÚY_precomputedrÁ   rÂ   Únb_pr  râ   r'  s                   r7   Ú*test_valid_brute_metric_for_auto_algorithmrE    st  € ô ˜6 <Ó0€Fä�‰�˜JÓ'×.Ñ.¨|À%Ð.ÓH€AÙ˜Ó€Dä2°6¸:ÓFÐà�ÒÜ×)Ñ)¨'Ó2ˆÜ×)Ñ)¨&Ó1ˆÜ×(Ñ(¨¸{ÔKˆÜ×(Ñ(Ø˜=°ô
ˆô ×)Ñ)°aÀÔNˆØ�‰�ŒØ�‰˜Õð 0ò 	$ˆMÜ×+Ñ+ØØ ØØ+ô	ˆBð ˜Ò$Ü" 4¨›^�
Ü×(Ñ(¨ª1¨j¨=Ñ)9Ó:�à�F‰F�1ŒIØ�M‰M˜!ÔàÔ-¨gÑ6Ò6Ü×/Ñ/Ø !¨V¸Fôç‘#�d“)ð ð —‘˜dÕ#ñ'	$r9   c                  ó  — t         j                  dd«      } t         j                  ddd«      }t        j                  ddi¬«      }t        j                  t        «      5  |j                  | |«       d d d «       y # 1 sw Y   y xY w)Nr\   r   r-   r>   r.   )r  )	rL   rI   r”   r   rÕ   rq   r  ÚSyntaxWarningrt   )r}   r˜   rÌ   s      r7   Útest_metric_params_interfacerH  E  se   € Ü�‰��A‹€AÜ�‰�A�q˜!Ó€AÜ
×
(Ñ
(¸¸Q°xÔ
@€CÜ	�‰”mÓ	$ñ Ø�‰��1Œ÷÷ ñ ús   ÁA;Á;Bc                 ó¨  — t         j                  j                  d«      }|j                  dd«      }|j	                  ddd«      }t        j                  dd¬«      }t        j                  dd¬«      }||fD ]M  }|j                  ||«       t        j                  t        «      5  |j                   | |«      «       d d d «       ŒO y # 1 sw Y   ŒZxY w)Nr   r\   r-   r,   r*   r’  r(   )rD   rE   rF   rI   r”   r   rÕ   r   rt   rq   r®   r»   r–   )ré   rL   r}   r˜   r=  r>  r�  s          r7   Ú test_predict_sparse_ball_kd_treerJ  M  s²   € ä
�)‰)×
Ñ
 Ó
"€CØ�‰��A‹€AØ�‰�A�q˜!Ó€AÜ×*Ñ*¨1¸	ÔB€EÜ×)Ñ)¨!°{ÔC€EØ˜�ò ,ˆØ�	‰	�!�QŒÜ�]‰]œ:Ó&ñ 	,Ø�M‰M™-¨Ó*Ô+÷	,ð 	,ñ,÷	,ð 	,ús   Â%CÃC	c                  ó|  — t         j                  j                  d«      } | j                  dd«      }t	        |«      j                  «       }t        j                  |«       |d   }dD ]y  }t        j                  |d|dd¬«      j                  «       }t        j                  d|¬	«      j                  |«      }t        ||j                  |«      j                  «       «       Œ{ dD ]y  }t        j                  |||dd¬«      j                  «       }t        j                  ||¬
«      j                  |«      }t        ||j                  |«      j                  «       «       Œ{ t        j                  dd¬	«      }|j                  |«       t        j                  t         «      5  t        j                  |dd¬«       d d d «       t        j                  |d¬«      }|j                  |«       t        j                  t         «      5  t        j                  ||d¬«       d d d «       y # 1 sw Y   ŒlxY w# 1 sw Y   y xY w)Nr   r\   re  )Ú	manhattanÚ	chebyshevr.   ró  T)r1   rß   rõ  r  )r1   r—   rL  r¸   r¹   )r—   r1   )rD   rE   rF   rI   r   Úflattenr“  r   r¯   r÷   rs   rt   r   r°   rq   r®   r»   )rL   r}   Ú
dist_arrayr—   r1   Ú
nbrs_graphr=  ÚX_nbrss           r7   Útest_non_euclidean_kneighborsrR  Z  sé  € Ü
�)‰)×
Ñ
 Ó
"€CØ�‰��A‹€Aô $ AÓ&×.Ñ.Ó0€JÜ‡G�GˆJÔØ˜‰^€Fð -ò LˆÜ×/Ñ/Øˆq˜ nÀ4ô
ç
‰'‹)ð 	ô ×*Ñ*°qÀÔH×LÑLÈQÓOˆÜ˜: u×'=Ñ'=¸aÓ'@×'HÑ'HÓ'JÕKðLð -ò RˆÜ×5Ñ5Øˆv˜f¨>Èô
ç
‰'‹)ð 	ô ×*Ñ*°&ÀÔH×LÑLÈQÓOˆÜ˜: u×'CÑ'CÀAÓ'F×'NÑ'NÓ'PÕQðRô ×'Ñ'°A¸kÔJ€FØ
‡J�Jˆq„MÜ	�‰”zÓ	"ñ BÜ×"Ñ" 6¨1°[ÕA÷Bä×'Ñ'¨v¸kÔJ€FØ
‡J�Jˆq„MÜ	�‰”zÓ	"ñ MÜ×(Ñ(¨°ÀÕL÷Mð M÷	Bð Bú÷Mð Mús   Æ"H&ÈH2È&H/È2H;c                 óH   — t        | «      D ]  \  }}t        |||   «       Œ y rÒ   )Ú	enumerater   )ÚnparrayÚ
list_checkr'  Úeles       r7   Úcheck_object_arraysrX  ~  s(   € Ü˜gÓ&ò 1‰ˆˆSÜ˜3 
¨3¡Õ0ñ1r9   c            	      óÂ  — t         D �]U  } t        j                  d| ¬«      }dgdgg}|j                  |«       dgdgg}|j	                  |«      \  }}t        |dgdgg«       t        |dgdgg«       |j                  dgdggd¬«      \  }}t        |dgddgg«       t        |dgddgg«       t        |j                  |«      j                  «       ddgddgg«       t        |j                  dgdggd	¬
«      j                  «       t        j                  ddgddgg«      «       |j                  dgdggd¬«      }t        |j                  «       ddgddgg«       �ŒX y )Nr,   r¯  r   r-   r=   rç   r  rR   rX   rÞ   )rn   r   rs   rt   rv   r   r   rX  r¯   r÷   rD   r  r°   )re   râ   r}   Ú	test_datarT   r'  rL   s          r7   Ú.test_k_and_radius_neighbors_train_is_not_queryr[  ƒ  s~  € ô  ó <ˆ	Ü×'Ñ'°AÀÔKˆàˆS�1�#ˆJˆØ
�‰ˆqŒ	Ø�S˜1˜#�Jˆ	ð —M‘M )Ó,‰	ˆˆcÜ˜4 1 #¨ s Ô,Ü˜3 !  q c 
Ô+Ø×'Ñ'¨!¨¨q¨c¨
¸3Ð'Ó?‰	ˆˆcÜ˜D A 3¨¨A¨ -Ô0Ü˜C 1 #¨¨1 v Ô/ô 	Ø×Ñ 	Ó*×2Ñ2Ó4¸¸S°zÀCÈÀ:Ð6Nô	
ô 	Ø×Ñ !  q c 
°ÐÓ<×DÑDÓFÜ�H‰H�s˜C�j 3¨ *Ð-Ó.ô	
ð ×'Ñ'¨!¨¨q¨c¨
¸3Ð'Ó?ˆÜ˜3Ÿ;™;›=¨A¨q¨6°A°q°6Ð*:Ö;ñ1<r9   c           	      ó  — t        j                  d| ¬«      }dgdgg}|j                  |«       |j                  «       \  }}t	        |dgdgg«       t	        |dgdgg«       |j                  d d¬«      \  }}t        |dgdgg«       t        |dgdgg«       |j                  d d¬«      }|j                  d «      }||fD ]R  }t	        |j                  «       ddgddgg«       t	        |j                  ddg«       t	        |j                  ddg«       ŒT ddgddgddgg}t        j                  d| ¬«      }|j                  |«       t	        |j                  «       j                  «       t        j                  g d¢g d¢g d	¢g«      «       y )
Nr,   r¯  r   r=   rç   r-   rú  )rR   r  rR   )rR   rR   r   )r   rs   rt   rv   r   r   rX  r°   r¯   r÷   r©   r‡   rD   r  )re   râ   r}   rT   r'  rL   ÚkngrŸ  s           r7   Ú"test_k_and_radius_neighbors_X_Noner^  ¡  s€  € ô 
×	#Ñ	#°¸YÔ	G€Bà
ˆˆqˆcˆ
€AØ‡F�Fˆ1„Ià—‘“�I€Dˆ#Ü�t˜q˜c A 3˜ZÔ(Ü�s˜a˜S 1 #˜JÔ'Ø×#Ñ# D°Ð#Ó5�I€Dˆ#Ü˜ ˜s Q C˜jÔ)Ü˜˜q˜c A 3˜ZÔ(ð ×
#Ñ
# D°Ð
#Ó
5€CØ
×
Ñ
˜dÓ
#€CØ�s�ò 2ˆÜ˜5Ÿ=™=›?¨a°¨V°a¸°VÐ,<Ô=Ü˜5Ÿ:™:¨¨1 vÔ.Ü˜5Ÿ=™=¨1¨a¨&Õ1ð2ð
 ˆQˆ�!�Q�˜!˜Q˜Ð €AÜ	×	#Ñ	#°¸YÔ	G€BØ‡F�Fˆ1„IÜØ
×ÑÓ×%Ñ%Ó'Ü
�‰’/¢?²MÐBÓCõr9   c           	      óÞ  — t        j                  d| ¬«      }dgdgdgg}|j                  |«       |j                  |d¬«      }t	        |j                  «       t        j                  g d¢g d¢g d¢g«      «       t	        |j                  g d¢«       t	        |j                  g d¢«       |j                  dgdggd	¬
«      \  }}t        |ddgddgg«       t        |ddgddgg«       |j                  |d	¬
«      }t	        |j                  «       t        j                  g d¢g d¢g d¢g«      «       |j                  dgdggd	d¬«      }|j                  «        t	        |j                  «       g d¢g d¢g«       t	        |j                  g d¢«       t	        |j                  g d¢«       t        j                  d«      }t        j                  dd¬«      }|j                  |«       |j                  «       \  }}t	        |t        j                   d«      «       t	        |dgdgdgg«       |j                  d¬«      }t	        |j                  «       t        j                   d«      «       t	        |j                  t        j                   d«      «       t	        |j                  g d¢«       t	        |j                  «       j                  «       t        j                  g d¢g d¢g d¢g«      «       y )Nr,   r¯  r   r.   rX   rÞ   r  rì   r=   rç   rù  )r  r  rR   rš  r@  )r,   r   r   )r   r,   r   r,   )r   r,   r,   r   )r.   r,   r)   rî   )r,   r   r,   )r  rR   r  )rR   r  r  )r   rs   rt   r¯   r   r÷   rD   r  r©   r‡   r   rX  r°   Úsort_indicesr‰  rv   Úzeros)re   râ   Ú
duplicatesr]  rT   r'  rL   r}   s           r7   Ú&test_k_and_radius_neighbors_duplicatesrc  Á  sV  € ô 
×	#Ñ	#°¸YÔ	G€BØ�#˜�s˜Q˜C�€Jà‡F�Fˆ:Ôð ×
Ñ
˜j¨zÐ
Ó
:€CÜØ�‰‹”r—x‘x¢²/Â?Ð SÓTôô �C—H‘HšoÔ.Ü�C—K‘K¢Ô+à×#Ñ# a S¨1¨# J°sÐ#Ó;�I€Dˆ#Ü˜  1˜v¨¨1 vÐ.Ô/Ü˜˜q !˜f q¨! fÐ-Ô.à
×
#Ñ
# J°sÐ
#Ó
;€CÜØ�‰‹”r—x‘x¢²/Â?Ð SÓTôð ×
#Ñ
# a S¨1¨# J°sÀÐ
#Ó
L€CØ×ÑÔÜ�C—K‘K“M¢IªyÐ#9Ô:Ü�C—K‘K¢Ô.Ü�C—H‘HšlÔ+ô 	�‰�‹€AÜ	×	#Ñ	#°¸WÔ	E€BØ‡F�Fˆ1„IØ—‘“�I€Dˆ#Ü�Dœ"Ÿ(™( 6Ó*Ô+Ü�C˜1˜# ˜s Q C˜Ô)ð ×
Ñ
 :Ð
Ó
.€CÜ�C—K‘K“M¤2§8¡8¨FÓ#3Ô4Ü�C—H‘HœbŸh™h q›kÔ*Ü�C—K‘K¢Ô+ÜØ
×ÑÓ×%Ñ%Ó'Ü
�‰’/¢?²OÐDÓEõr9   c                  óÔ  — ddgddgg} t        j                  | dd¬«      j                  «       }t        j                  | dd¬«      j                  «       }t        |d	d
gd
d	gg«       t        |d
d	gd	d
gg«       t        j                  | dd¬«      j                  «       }t        j                  | dd¬«      j                  «       }t        |d	d	gd	d	gg«       t        |d
d	gd	d
gg«       y )Nr-   r.   r/   r\   r,   T)rõ  FrR   r  r  )r   r¯   r÷   r   r°   )r}   r]  Úkng_not_selfrL   Úrng_not_selfs        r7   Ú!test_include_self_neighbors_graphrg  ó  sê   € à
ˆQˆ�!�Q�Ð€AÜ
×
$Ñ
$ Q¨¸Ô
=×
EÑ
EÓ
G€CÜ×-Ñ-¨a°ÀÔG×OÑOÓQ€LÜ�s˜c 3˜Z¨#¨s¨Ð4Ô5Ü�| s¨C j°3¸°*Ð%=Ô>ä
×
*Ñ
*¨1¨cÀÔ
E×
MÑ
MÓ
O€CÜ×3Ñ3Ø	ˆ3˜Uôç�gƒið ô �s˜c 3˜Z¨#¨s¨Ð4Ô5Ü�| s¨C j°3¸°*Ð%=Õ>r9   c                 óp  — t        j                  dddd¬«      \  }}t        ||«      \  }}}}t        j                  d| ¬«      }|j                  ||«       |j                  |«      }|j                  |«      \  }}	|j                  |d¬«      j                  «       }
|j                  d¬	«       |j                  ||«       |j                  |«      }|j                  |«      \  }}|j                  |d¬«      j                  «       }t        ||«       t        ||«       t        |	|«       t        |
|«       y )
Nr‡  r\   r   ©rz   r:   Ún_redundantr%  r.   r¯  rX   rÞ   ©Ún_jobs)r   Úmake_classificationr   r   rÕ   rt   r–   rv   r¯   r÷   rä  r   r   )re   r}   r˜   rÓ   rÔ   r§  r¨  rT  rT   r'  rŸ  Ú
y_parallelÚdist_parallelÚind_parallelÚgraph_parallels                  r7   Útest_same_knn_parallelrr    s  € ä×'Ñ'Ø °Àô�D€A€qô (8¸¸1Ó'=Ñ$€GˆV�W˜fä
×
(Ñ
(°QÀ)Ô
L€CØ‡G�GˆG�WÔØ�‰�FÓ€AØ—‘˜vÓ&�I€Dˆ#Ø× Ñ  ¨jÐ Ó9×AÑAÓC€Eà‡N�N˜!€NÔØ‡G�GˆG�WÔØ—‘˜VÓ$€JØ"%§.¡.°Ó"8Ñ€M�<Ø×)Ñ)¨&°zÐ)ÓB×JÑJÓL€Nä�q˜*Ô%Ü�D˜-Ô(Ü�s˜LÔ)Ü�E˜>Õ*r9   c                 óº  — t        j                  dddd¬«      \  }}t        ||«      \  }}}}t        j                  d| ¬«      }|j                  ||«       |j                  |«      }|j                  |«      \  }}	|j                  |d¬«      j                  «       }
|j                  d	¬
«       |j                  ||«       |j                  |«      }|j                  |«      \  }}|j                  |d¬«      j                  «       }t        ||«       t        t        |«      «      D ]&  }t        ||   ||   «       t        |	|   ||   «       Œ( t        |
|«       y )Nr‡  r\   r   ri  rZ   rƒ  rX   rÞ   r.   rk  )r   rm  r   r   rÖ   rt   r–   r   r°   r÷   rä  r   rw   rx   r   )re   r}   r˜   rÓ   rÔ   r§  r¨  rT  rT   r'  rŸ  rn  ro  rp  rq  r‚   s                   r7   Ú#test_same_radius_neighbors_parallelrt    sF  € ä×'Ñ'Ø °Àô�D€A€qô (8¸¸1Ó'=Ñ$€GˆV�W˜fä
×
-Ñ
-°RÀ9Ô
M€CØ‡G�GˆG�WÔØ�‰�FÓ€AØ×$Ñ$ VÓ,�I€Dˆ#Ø×&Ñ& v°JÐ&Ó?×GÑGÓI€Eà‡N�N˜!€NÔØ‡G�GˆG�WÔØ—‘˜VÓ$€JØ"%×"6Ñ"6°vÓ">Ñ€M�<Ø×/Ñ/°¸ZÐ/ÓH×PÑPÓR€Nä�q˜*Ô%Ü”3�t“9Óò 4ˆÜ˜˜Q™ ¨qÑ!1Ô2Ü˜3˜q™6 <°¡?Õ3ð4ô �E˜>Õ*r9   ÚbackendÚ	threadingÚlokyc                 óp  — t        j                  | «      5  t        j                  dddd¬«      \  }}t	        ||«      \  }}}}t        j                  d|d¬«      }|j                  ||«       |j                  |«       |j                  |«       |j                  |d¬	«       d d d «       y # 1 sw Y   y xY w)
Nr‡  r\   r   ri  r.   r-   )rd   re   rl  rX   rÞ   )ÚjoblibÚparallel_backendr   rm  r   r   rÕ   rt   r–   rv   r¯   )	ru  re   r}   r˜   rÓ   rÔ   r§  r¨  rT  s	            r7   Útest_knn_forcing_backendr{  8  s­   € ô 
×	 Ñ	  Ó	)ñ 6Ü×+Ñ+Ø Q°AÀAô
‰ˆˆ1ô ,<¸A¸qÓ+AÑ(ˆ�˜ &ä×,Ñ,Ø Y°qô
ˆð 	�‰�˜Ô!Ø�‰�FÔØ�‰�vÔØ×Ñ˜V¨*ÐÔ5÷6÷ 6ñ 6ús   –BB,Â,B5c                  óæ   — t        j                  d¬«      } d}t        j                  |«      }dd | D �cg c]  }|‘Œ }}| j	                  ||«      j                  |«      }t        ||«       y c c}w )Nr,   r¡   re  ÚABCDEFGHIJKLMNOPQRSTU)r   rÕ   rD   rK   rt   r–   r   )Ú
classifierÚCLASSESr}   Úchr˜   Úresults         r7   Útest_dtype_convertr‚  M  sh   € Ü×/Ñ/¸AÔ>€JØ€GÜ
�‰ˆw‹€AØ-¨h¨wÐ7Ö8�ŠÐ8€AÐ8à�^‰^˜A˜qÓ!×)Ñ)¨!Ó,€FÜ�v˜qÕ!ùò 	9s   µ	A.c                 ó
  — d„ } | g d¢g d¢g d¢g«      } | g d¢g d¢g«      }t        j                  dd|¬	«      j                  |«      }|j                  |d
¬«      }t	        j
                  ddgddgg«      }t        ||«       y )Nc                 ó    — t        | «      rt        |«      sJ ‚| j                  |j                  «      j                  «       j	                  «       S rÒ   )r   ÚdotrJ   r÷   Úitem)Úxr˜   s     r7   Úsparse_metricz2test_sparse_metric_callable.<locals>.sparse_metricY  s9   € Ü˜Œ{œx¨œ{Ð*Ð*Ø�u‰u�Q—S‘S‹z×!Ñ!Ó#×(Ñ(Ó*Ð*r9   )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-   )re   rd   r1   Frf   r,   )r   rs   rt   rv   rD   r  r   )ré   rˆ  r}   rÀ   râ   ÚNÚgold_standard_nns          r7   Útest_sparse_metric_callabler‹  W  sŽ   € ò+ñ 	Ú	š/ª?Ð;ó	€Añ 	’ªÐ8Ó9€Aä	×	#Ñ	#Ø q°ô
ç	�cˆ!ƒfð ð 	�‰�a¨ˆÓ/€Aô —x‘x ! Q ¨!¨Q¨Ð 0Ó1Ðä�qÐ*Õ+r9   z0ignore::sklearn.exceptions.DataConversionWarningc                  óJ  — t         j                  j                  d«      } | j                  d¬«      }t        j
                  } |dd¬«      j                  |«      } |dd¬«      j                  |«      }t        |j                  |«      d   |j                  |«      d   «       y )Nr   )rW  r\   r�   Újaccardr)   r  r(   )	rD   rE   rF   rW   r   rs   rt   r   rv   )rL   r}   ÚNNÚnn1Únn2s        r7   Útest_pairwise_boolean_distancer‘  o  s‡   € ô
 �)‰)×
Ñ
 Ó
"€CØ�‰˜ˆÓ €AÜ	×	#Ñ	#€Bá
�I¨Ô
1×
5Ñ
5°aÓ
8€CÙ
�I¨Ô
5×
9Ñ
9¸!Ó
<€CÜ�s—~‘~ aÓ(¨Ñ+¨S¯^©^¸AÓ->¸qÑ-AÕBr9   c            	      óÈ  — t        d«      D ]Ô  } t        j                  ddddd| ¬«      \  }}t        ||d¬«      \  }}}}t	        d| z
  «      }t        j                  d|¬«      }|j                  ||«       |j                  |«      }	|j                  |«      }
|
j                  d	¬
«      }t        j                  |
j                  d	¬
«      dk(  ||«      }t        |	|«       ŒÖ y )Nr\   rŠ   r.   r   )rz   r:   Ún_informativerj  Ú	n_classesr%  r£  r-   r\  r,   r.  )rw   r   rm  r   r4  r   rÖ   rt   r–   rA  ÚargmaxrD   Úwherer3  r   )r  r}   r˜   ÚX_trÚX_teÚy_trÚy_terI  rT  rp  ro  Úproba_labels               r7   Ú#test_radius_neighbors_predict_probarœ  }  sÛ   € Ü�a“ò .ˆÜ×+Ñ+ØØØØØØô
‰ˆˆ1ô "2°!°QÀQÔ!GÑˆˆd�D˜$Ü˜A ™H›ˆÜ×1Ñ1¸È-ÔXˆØ�‰��dÔØ�{‰{˜4Ó ˆØ×!Ñ! $Ó'ˆØ—l‘l¨�lÓ*ˆÜ—h‘h˜uŸy™y¨a˜yÓ0°AÑ5°}ÀkÓRˆÜ˜4 Õ-ñ#.r9   c                  óX  — t         j                  j                  d«      } d| j                  dd«      z  dz
  }d| j                  dd«      z  dz
  }| j                  dd«      }d}d}d}t	        j
                  |d¬	«      }t	        j
                  t        ||z  «      d¬	«      }t	        j                  |d¬
«      }	t	        j                  t        ||z  «      d¬
«      }
t	        j                  |¬«      }t	        j                  |¬«      }||f||f|	|f|
|fg}|D ]�  \  }}t        |«      }t        |«      }|j                  d¬«       t        t        |«      |«      }|j                  ||«      j                  |«      }|j                  ||«      j                  |«      }t        ||«       Œ’ y )Nr   r-   r¢  r\   r,   é   r=   rX   )rd   rß   rš  r¡   rç   r·   r¹   )rD   rE   rF   rI   r   ÚKNeighborsTransformerr4  ÚRadiusNeighborsTransformerr   r×   r	   rä  r   rt   r–   r   )rL   r}   rß  r˜   rd   r—   ÚfactorÚk_transÚk_trans_factorÚr_transÚr_trans_factorÚk_regÚr_regÚ	test_listÚtransÚregÚreg_compactÚreg_precompÚ	reg_chainÚy_pred_chainÚy_pred_compacts                        r7   Ú0test_pipeline_with_nearest_neighbors_transformerr°  ’  sž  € ä
�)‰)×
Ñ
 Ó
"€CØ	ˆC�H‰H�R˜‹OÑ˜aÑ€AØ	
ˆS�X‰X�b˜!‹_Ñ	˜qÑ	 €BØ�‰��Q‹€Aà€KØ€Fð €Fä×-Ñ-¸+ÈJÔW€GÜ×4Ñ4Ü˜ fÑ,Ó-°Jô€Nô ×2Ñ2¸&ÀzÔR€GÜ×9Ñ9Ü�6˜F‘?Ó#¨*ô€Nô ×)Ñ)°kÔB€EÜ×.Ñ.°fÔ=€Eð 
�%ÐØ	˜ÐØ	�%ÐØ	˜Ðð	€Ið  ò 
6‰
ˆˆsä˜C“jˆÜ˜C“jˆØ×Ñ mÐÔ4ä!¤%¨£,°Ó<ˆ	à —}‘} Q¨Ó*×2Ñ2°2Ó6ˆØ$Ÿ™¨¨AÓ.×6Ñ6°rÓ:ˆÜ˜ nÕ5ñ
6r9   z'X, metric, metric_params, expected_algorô   r�   rY  r@   rA   Úcorrelationc                 óz   — t        j                  dd||¬«      }|j                  | «       |j                  |k(  sJ ‚y )Nr/   r+   rA  )r   rs   rt   r  )r}   r1   r  Úexpected_algor�  s        r7   Útest_auto_algorithmr´  À  s>   € ô ×&Ñ&Ø °Àmô€Eð 
‡I�Iˆa„LØ×Ñ Ò-Ð-Ñ-r9   c           	      óþ  — t         j                  j                  |«      }|j                  ||«      j	                  |d¬«      }|j                  ||«      j	                  |d¬«      }	| dk(  rDt        d d«      }
t        j                  |d d …|
f   «      }t        j                  |	d d …|
f   «      }	t        | |«      }|D ]¦  }|j                  dd«      }t        j                  |d| ||¬«      }|j                  |«       t        d¬«      5  |j                  |	d	¬
«      \  }}d d d «       t        d	¬«      5  |j                  |	d	¬
«      \  }}d d d «       t        |d¬«       Œ¨ y # 1 sw Y   ŒHxY w# 1 sw Y   Œ)xY w)NFr_   r  r-   r>   r)   )r—   re   r1   r>   r  r1  Trf   )r—   Úcheck_sorted)rD   rE   rF   rI   rm   r!  r"  rN   r   r   rs   rt   r   r   r   )r1   r#  ry   rz   r:   r{   r—   rL   rÓ   rÔ   r'  r%  r  r>   r�   r3  r4  r5  r6  s                      r7   Ú#test_radius_neighbors_brute_backendr·  Ö  s—  € ô �)‰)×
Ñ
Ð 2Ó
3€Cð �h‰h�y *Ó-×4Ñ4°\ÈÐ4ÓN€GØ�X‰X�k :Ó.×5Ñ5°lÈÐ5ÓO€Fð �ÒÜ˜4 “^ˆ
Ü×&Ñ& wªq°*¨}Ñ'=Ó>ˆÜ×%Ñ% fªQ°
¨]Ñ&;Ó<ˆä2°6¸:ÓFÐà+ò 
ˆØ×Ñ˜c 1Ó%ˆä×*Ñ*ØØØØØ'ô
ˆð 	�	‰	�'Ôä¸Ô>ñ 	à16×1GÑ1GØ¨ð 2Hó 2Ñ.ÐÐ.÷	ô
 ¸Ô=ñ 	à+0×+AÑ+AØ¨ð ,Bó ,Ñ(ˆM˜=÷	ô 	)ØØØØØØö	
ñ1
÷	ð 	ú÷
	ð 	ús   Ä	E'Ä4E3Å'E0	Å3E<	c                  óŽ   — t         j                  j                  «       D ]$  } t        | «      t        t	        | «      «      k(  rŒ$J ‚ y rÒ   )r   r  Úvaluesrx   Úset)Úvals    r7   Ú#test_valid_metrics_has_no_duplicater¼  	  s:   € Ü×&Ñ&×-Ñ-Ó/ò )ˆÜ�3‹xœ3œs 3›x›=Ó(Ð(Ð(ñ)r9   c                  ó¬   — ddgddgddgddgg} g d¢}d„ }t        dd|¬	«      }|j                  | |«       t        |j                  dd
gg«      dg«       y)ztEnsures that `predict` works for array-likes when `weights` is a callable.

    Non-regression test for #22687.
    r\   r,   r.   r/   r   )r-   r.   r\   rW  c                 ó,   — t        j                  | «      S rÒ   )rD   Ú	ones_like©rT   s    r7   Ú_weightsz6test_regressor_predict_on_arraylikes.<locals>._weights 	  s   € Ü�|‰|˜DÓ!Ð!r9   r)   )rd   re   r,  rw  rW  N)r   rt   r   r–   )r}   r˜   rÁ  rÌ   s       r7   Ú$test_regressor_predict_on_arraylikesrÂ  	  sd   € ð
 ˆQˆ�!�Q�˜!˜Q˜ ! Q Ð(€AÚ€Aò"ô ¨!°wÈÔ
Q€CØ‡G�GˆAˆq„MÜ�C—K‘K ! S  
Ó+¨a¨SÕ1r9   zEstimator, paramsr—   r=   c                 óÆ  — ddgdt         j                  gddgddgg}g d¢}|j                  ddi«         | «       j                  di |¤Žj	                  ||«      }d	D ]‚  }t        ||«      sŒ t        ||«      |«      }t        |d
«      r0t        j                  |j                  «      j                  «       sŒ\J ‚t        j                  |«      j                  «       sŒ‚J ‚ y)zyCheck that the different neighbor estimators are lenient towards `nan`
    values if using `metric="nan_euclidean"`.
    r   r,   r-   r.   r\   ©r   r   r,   r,   r1   Únan_euclidean)rv   r–   Ú	transformÚfit_predictr÷   N© )
rD   ÚnanÚupdaterä  rt   Úhasattrrº   rÒ  r©   Úany)r	  Úparamsr}   r˜   Ú	estimatorÚresponse_methodÚoutputs          r7   Útest_nan_euclidean_supportrÑ  (	  sÐ   € ð" ˆQˆ�!”R—V‘V�˜q !˜f q¨! fÐ-€AÚ€Aà
‡M�M�8˜_Ð-Ô.Ø&‘	“×&Ñ&Ñ0¨Ñ0×4Ñ4°Q¸Ó:€IàPò 2ˆÜ�9˜oÕ.Ø8”W˜Y¨Ó8¸Ó;ˆFÜ�v˜yÔ)ÜŸ8™8 F§K¡KÓ0×4Ñ4Õ6Ð6Ð6äŸ8™8 FÓ+×/Ñ/Õ1Ð1Ð1ñ2r9   c            	      ó2  — t        j                  d«      } | j                  t        j                  ddgddgddgdd	gg«      d
dg¬«      }t        j                  g d¢«      }t        j                  d¬«      j                  ||«      }|j                  |«       y)z[Check that KNN predict works with dataframes

    non-regression test for issue #26768
    Úpandasr,   r-   r.   r/   r\   rW  rX  rY  rb  Úb)Úcolumns)r,   r-   r.   r/   r¡   N)	rq   ÚimportorskipÚ	DataFramerD   r  r   rÕ   rt   r–   )Úpdr}   r˜   r8  s       r7   Útest_predict_dataframerÙ  H	  s‚   € ô
 
×	Ñ	˜XÓ	&€Bà
�‰”R—X‘X  1˜v¨¨1 v°°1¨v¸¸1°vÐ>Ó?È#ÈsÈˆÓT€AÜ
�‰’Ó€Aä
×
(Ñ
(°QÔ
7×
;Ñ
;¸A¸qÓ
A€CØ‡K�K�…Nr9   c                  ót  — t        j                  ddgddgddgg«      } t        j                  ddddi¬«      }|j	                  | «       |j                  | d   j                  d	d
«      dd¬«      }t        |d   g d¢«       |j                  | d   j                  d	d
«      d¬«      }t        |d   g d¢«       y)zµCheck that NearestNeighbors works with :math:`p \in (0,1)` when `algorithm`
    is `"auto"` or `"brute"` regardless of the dtype of X.

    Non-regression test for issue #26548
    rR   r  r.   r)   r>   r0  )rd   re   r  r   r,   rJ  r/   F)r—   rg   rì   rf   N)	rD   r  r   rs   rt   r   rï   r   rv   )r}   r�   r˜   s      r7   Ú0test_nearest_neighbours_works_with_p_less_than_1rÛ  V	  s³   € ô 	�‰�3˜�*˜s C˜j¨3°¨*Ð5Ó6€AÜ×&Ñ&Ø ¸¸c¸
ô€Eð 
‡I�Iˆa„Là×Ñ˜q ™tŸ|™|¨A¨rÓ2¸1ÈeÐÓT€AÜ�A�a‘Dš)Ô$à×Ñ˜˜1™Ÿ™ a¨Ó,¸eÐÓD€AÜ�A�a‘Dš)Õ$r9   c                  ó”  — ddgddgddgddgg} g d¢}d„ }t        j                  d|¬«      }|j                  | |«       d	}t        j                  t
        |¬
«      5  |j                  ddgg«       ddd«       t        j                  t
        |¬
«      5  |j                  ddgg«       ddd«       y# 1 sw Y   ŒBxY w# 1 sw Y   yxY w)zrCheck that `predict` and `predict_proba` raises on sample of all zeros weights.

    Related to Issue #25854.
    r   r,   r-   r.   r/   rÄ  c                 ó:   —  t        j                  d„ «      | «      S )Nc                 ó   — | dkD  rdS dS )Nr0  r   r,   rÈ  )r‡  s    r7   ú<lambda>zWtest_KNeighborsClassifier_raise_on_all_zero_weights.<locals>._weights.<locals>.<lambda>r	  s   € ¨1¨sª7 a€ ¸€ r9   )rD   Ú	vectorizerÀ  s    r7   rÁ  zEtest_KNeighborsClassifier_raise_on_all_zero_weights.<locals>._weightsq	  s   € Ø:Œr�|‰|Ñ9Ó:¸4Ó@Ð@r9   )rd   r,  zŠAll neighbors of some sample is getting zero weights. Please modify 'weights' to avoid this case if you are using a user-defined function.rü   ry  N)r   rÕ   rt   rq   r®   r»   r–   rA  )r}   r˜   rÁ  rÌ   r  s        r7   Ú3test_KNeighborsClassifier_raise_on_all_zero_weightsrá  i	  sÍ   € ð
 ˆQˆ�!�Q�˜!˜Q˜ ! Q Ð(€AÚ€AòAô ×
(Ñ
(°QÀÔ
I€CØ‡G�GˆAˆq„Mð	)ð ô 
�‰”z¨Ô	-ñ "Ø�‰�c˜3�Z�LÔ!÷"ô 
�‰”z¨Ô	-ñ (Ø×Ñ˜C ˜:˜,Ô'÷(ð (÷"ð "ú÷(ð (ús   ÁB2ÂB>Â2B;Â>CÚnn_modelr¡   c                 óz  — t        j                  dddd¬«      \  }}t        | «      j                  |¬«      } d| j	                  «       v rGt        |«      j                  «       }||dkD     }| j                  t        j                  |d«      ¬	«       t        | ||t        «       ¬
«      }| j                  ||«       t        || j                  d«      |k(  «       t        j                  |«      t        j                   | j#                  d|«      «      k(  sJ ‚| j#                  d|«      | j#                  ||«      k  sJ ‚y)a³  Check that `predict` and related functions work fine with X=None

    Calling predict with X=None computes a prediction for each training point
    from the labels of its neighbors (without the label of the data point being
    predicted upon). This is therefore mathematically equivalent to
    leave-one-out cross-validation without having do any retraining (rebuilding
    a KD-tree or Ball-tree index) or any data reshuffling.
    re  r\   r-   r   )rz   Úcentersr:   r%  r’  r—   éP   rç   ©ÚcvN)r   Ú
make_blobsr	   rä  Ú
get_paramsr   ÚravelrD   Ú
percentiler   r   rt   r   r–   rÇ  rq   Úapproxrê  ©râ  re   r}   r˜   ÚdistsÚloocvs         r7   Útest_neighbor_classifiers_loocvrð  „	  s  € ô" ×Ñ¨°QÀ1ÐSTÔU�D€A€qä�X‹×)Ñ)°IÐ)Ó>€Hð
 �8×&Ñ&Ó(Ñ(Ü" 1Ó%×+Ñ+Ó-ˆØ�e˜a‘iÑ ˆØ×Ñ¤2§=¡=°¸Ó#;ÐÔ<ä˜H a¨¬{«}Ô=€EØ‡L�L��AÔä�E˜8×+Ñ+¨DÓ1°QÑ6Ô7Ü�7‰7�5‹>œVŸ]™]¨8¯>©>¸$ÀÓ+BÓCÒCÐCÐCð
 �>‰>˜$ Ó" X§^¡^°A°qÓ%9Ò9Ð9Ñ9r9   c                 óª  — t        j                  ddd¬«      \  }}t        | «      j                  |¬«      } d| j	                  «       v rGt        |«      j                  «       }||dkD     }| j                  t        j                  |d«      ¬«       t        | ||t        «       ¬	«      }| j                  ||«       t        || j                  d
«      «       y
)z@Check that `predict` and related functions work fine with X=Nonere  r-   r   )rz   r:   r%  r’  r—   rå  rç   ræ  N)r   Úmake_regressionr	   rä  ré  r   rê  rD   rë  r   r   rt   r   r–   rí  s         r7   Útest_neighbor_regressors_loocvró  ­	  sº   € ô ×#Ñ#¨b¸QÈQÔO�D€A€qô �X‹×)Ñ)°IÐ)Ó>€Hð
 �8×&Ñ&Ó(Ñ(Ü" 1Ó%×+Ñ+Ó-ˆØ�e˜a‘iÑ ˆØ×Ñ¤2§=¡=°¸Ó#;ÐÔ<ä˜h¨¨1´³Ô?€EØ‡L�L��AÔÜ�E˜8×+Ñ+¨DÓ1Õ2r9   c                 ó  ‡— t         j                  d¬«      }t        j                  g d¢«      Š |d| ¬«      }|j	                  |‰«       |j                  |«      }|j                  dk(  sJ ‚t        ˆfd„|D «       «      sJ ‚y)	zxEnsure KNeighborsClassifier(algorithm='brute') works with string labels.

    Non-regression test for issue #33034.
    )r\   r.   r�   )ÚfooÚbarrõ  rö  rõ  r)   r’   )r\   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wrÒ   rÈ  )Ú.0Úlabelr˜   s     €r7   ú	<genexpr>z?test_neighbors_classifier_with_string_labels.<locals>.<genexpr>ã	  s   øè ø€ Ò.˜eˆu˜ŒzÑ.ùs   ƒN)rL   ÚnormalrD   r  rt   r–   r½   rÂ  )r1   r	  r}   r8  r:  r˜   s        @r7   Ú,test_neighbors_classifier_with_string_labelsrü  Ð	  sp   ø€ ô 	�
‰
˜ˆ
Ó€Aä
�‰Ò4Ó5€Aá
˜g¨fÔ
5€CØ‡G�GˆAˆq„Mà�[‰[˜‹^€Fà�<‰<˜4ÒÐÐÜÓ. vÔ.Ô.Ð.Ñ.r9   rÒ   )r  r\   r-   r0  r   )r¢  r\   rZ   r\   r   )r¢  r\   rZ   r0  r   )r¢  r\   rZ   r.   r   )r¢  r.   rZ   r0  r   )r¢  r\   rZ   r   )é$   )r  r.   r-   r\   )éÐ  r‡  r\   r\   )r  rž  )rþ  r‡  r\   rR   )¼rÐ  r  Ú	itertoolsr   ry  ÚnumpyrD   rq   Úscipy.sparser   Úsklearnr   r   r   r   Úsklearn.baser	   Úsklearn.exceptionsr
   r   Úsklearn.metrics._dist_metricsr   Úsklearn.metrics.pairwiser   r   Ú'sklearn.metrics.tests.test_dist_metricsr   Ú7sklearn.metrics.tests.test_pairwise_distances_reductionr   r   Úsklearn.model_selectionr   r   r   r   Úsklearn.neighborsr   r   Úsklearn.neighbors._baser   r   r   r   Úsklearn.pipeliner   Úsklearn.utils._testingr   r   r   Úsklearn.utils.fixesr    r!   r"   r#   r$   r%   r&   Úsklearn.utils.validationr'   rE   rF   rL   Ú	load_irisrã  ÚpermutationrÊ   r‘   Úpermr©   Úload_digitsré  Útupler°  r±  rÜ  rn   Úsortedrº  ÚintersectionÚmapr  r¹  ÚCOMMON_VALID_METRICSrH   r  r¯   r°   ÚDISTANCE_METRIC_OBJSr5  r8   r4  rN   rV   ÚWEIGHTSÚmarkÚthread_unsafeÚparametrizer‰   rÕ   rÖ   r×   r�   rs   r¬   r²   ÚfilterwarningsrÏ   rØ   rä   rè   rñ   rú   r   r  r  r  r  r+  r;  r>  rE  rH  rU  rq  ru  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.  ÚDeprecationWarningr7  r?  rE  rH  rJ  rR  rX  r[  r^  rc  rg  rr  rt  r{  r‚  r‹  r‘  rœ  r°  r”   rö   r´  r·  r¼  rÂ  rŸ  r   ÚLocalOutlierFactorrÑ  rÙ  rÛ  rá  rð  ró  rü  rÈ  r9   r7   ú<module>r!     sY  ðÛ 	Û Ý ã Û Û Ý !÷ó õ ß @õ÷ TÝ @÷÷ó ÷÷ó õ +÷ñ ÷
÷ ñ õ 8à‡i�i×Ñ˜AÓ€à€x×ÑÓ€Ø
‡��t—{‘{×'Ñ'Ó(€Ø�I‰I�d‰O€„	Ø�k‰k˜$Ñ€„ð 
ˆ×	Ñ	Ó	€Ø
‡��v—}‘}×)Ñ)Ó*€Ø�k‰k˜$Ñ€„Ø—‘˜dÑ#€„áØØñàñð ñð ñ	ð
 ñó€ð  "§*¡* Ñ.€à6€
ÙØ€C×Ñ‘c˜#˜y×6Ñ6×=Ñ=Ó?Ó@ÐAóÐ ð ˆˆ1ˆa�—‘Ð€ñ -¨Y×-GÑ-GÓH€	Ô Ù#2°9×3SÑ3SÓ#T€	Ô  ð 'Ð'Ð ñ˜#ó ð cð °só ò:	ð �j ,Ð
/€ð
 ‡�×ÑØ‡�×ÑØ5àØðóð ‡�×ÑÐ)¨E°4¨=Ó9Ø‡�×Ñ˜Ð#7Ð:NÑ#NÓOñJ
ó Pó :óó ðJ
ðZ ‡�×ÑØ(àØðóð ‡�×Ñ˜Ð#7Ð:NÑ#NÓOØ‡�×ÑÐ.Ò0RÓSØ‡�×ÑØà×&Ñ&Ø×%Ñ%Ø×+Ñ+Ø×*Ñ*ð	óñ@
óó Tó Póð$@
ðF ‡�×ÑØà×&Ñ&Ø×%Ñ%Ø×"Ñ"ðóñ'óð'ò*-ð ‡�×ÑÐ6Ó7ñ4(ó 8ð4(òn3ð  ‡�×Ñ˜ ¨ Ó/ñ3ó 0ð3ð" ‡�×Ñ˜ ¨ Ó/ñ3ó 0ð3ð" ‡�×Ñ˜¨.Ó9ñ!ó :ð!ð0 ‡�×ÑÐ6Ó7Ø‡�×Ñ˜Ð&>Ð@RÐ%SÓTØ‡�×Ñ˜¨.Ó9ñ"ó :ó Uó 8ð"ð" ‡�×ÑÐ6Ó7Ø‡�×Ñ˜¨.Ó9ñ8ó :ó 8ð8ð6 ‡�×Ñ˜¨.Ó9ñKó :ðKð& ‡�×ÑØ˜¨Ñ7¸.ÑHóñóðð ‡�×ÑÐ6Ó7Ø‡�×Ñ˜¨.Ó9ñ2ó :ó 8ð2ò08ð$ WXó'ðT ‡�×Ñ˜ jÓ1Ø‡�×Ñ˜ GÓ,ð
 ØØØØò3ó -ó 2ð3ð> ØØØØó/ò( 'ðF ‡�×Ñ˜ jÓ1Ø‡�×Ñ˜ GÓ,ð
 ØØØØò3ó -ó 2ð3ð8 ‡�×Ñ˜ jÓ1Ø‡�×Ñ˜ GÓ,Ø‡�×Ñ˜ª-Ó8ñó 9ó -ó 2ðð< ‡�×Ñ˜ jÓ1Ø‡�×Ñ˜ GÓ,ñzó -ó 2ðzòzEò09òB/ð$ ‡�×Ñ˜¨.Ó9ñ0ó :ð0ð, ‡�×Ñ˜Ò&GÓHñ-ó Ið-ð ‡�×ÑØ�(ÐÙÙØ-ØÐ0Ð/Ñ0ó	
óð 	Ø ðñ	óñ"%óð"%òJ#1ðN LMó7ò()3ðZ LMó8ò0,ð4 LMó7ð4 IJó$&òN,ð8 =>ó7ð. ‡�×ÑÐ6Ó7àKLòLó 8ðLò>Mò&&ò*Dð@ ‡�×Ñ˜ª	Ó2Ø‡�×Ñ˜ .°*Ð!=Ó>Ø‡�×Ñ˜¨.Ó9ò
ó :ó ?ó 3ð
ò
ð ‡�×Ñ˜ª	Ó2Ø‡�×Ñ˜ .°*Ð!=Ó>Ø‡�×Ñ˜¨.Ó9ò
ó :ó ?ó 3ð
ð ‡�×ÑØà×&Ñ&Ø×+Ñ+Ø×%Ñ%Ø×*Ñ*ð	óð ‡�×Ñ˜¨.Ó9ñ"ó :óð"ðJ ‡�×ÑØà×&Ñ&Ø×+Ñ+Ø×%Ñ%Ø×*Ñ*ð	óð ‡�×Ñ˜¨¨3 xÓ0Ø‡�×Ñ˜ v¨wÐ&7Ó8ñ(ó 9ó 1óð(ð( ‡�×ÑØà×&Ñ&Ø×+Ñ+Ø×%Ñ%Ø×*Ñ*ð	óð ‡�×Ñ˜¨¨3 xÓ0Ø‡�×Ñ˜ y°+Ð&>Ó?ñó @ó 1óðò 4ð ‡�×ÑØÙ
ÙˆI×#Ñ# KÑ0Ó1×>Ñ>Ø×#Ñ# GÑ,ó	
ñ ˆxÐ'˜,Ð'Ó
(ñ	)óð ñó	ð ØØØòK;ó	ðK;ñb Ð,Ô-Ø‡�×ÑØ‰f‘S˜×0Ñ0°Ñ9Ó:¹SÀ-ÀÓ=QÑQÓRóð ØØØò4
óó .ð4
òn"ð* ‡�×ÑØˆi×%Ñ% gÑ.Ð1EÑEóð ‡�×Ñ˜¨.Ó9àBDò)$ó :óð)$òXð ‡�×Ñ˜¨.Ó9ñ	,ó :ð	,ò!MòH1ò
<ð< ‡�×Ñ˜ jÓ1ñó 2ðð> ‡�×Ñ˜ jÓ1ñ.ó 2ð.òb?ð  ‡�×Ñ˜ jÓ1ñ+ó 2ð+ð0 ‡�×Ñ˜ jÓ1ñ+ó 2ð+ð6 ‡�×ÑØ‡�×Ñ˜ [°&Ð$9Ó:Ø‡�×Ñ˜ jÓ1ñ6ó 2ó ;ó ð6ò$"ð ‡�×Ñ˜¨.Ó9ñ,ó :ð,ð. ‡�×ÑÐNÓOñ
Có Pð
Cò.ò*+6ð\ ‡�×ÑØ-à	�‰×	Ò	˜2 HÐ	Ó	-¨}¸dÀGÐLØ	�‰�Š˜˜RÓ	  +¨t°WÐ=Ø	�‰�Š˜˜AÓ	 ¨T°7Ð;Ø	�‰�Š˜˜QÓ	 ¨d°IÐ>Ø	�‰�Š˜˜QÓ	 °°a°S¸1±W¨~¸{ÐKØ	�‰�Š˜˜QÓ	 °°gÐ>ðó
ñ.ó
ð.ñ Ð,Ô-Ø‡�×ÑØ‰f‘S˜×0Ñ0°Ñ9Ó:¹SÀ-ÀÓ=QÑQÓRóð ØØØò6
óó .ð6
òr)ò
2ð  ‡�×ÑØà	×	'Ñ	'¨-¸Ð);Ð<Ø	×	&Ñ	&¨¸Ð(:Ð;Ø	×	+Ñ	+¨RÐ0Ø	×	,Ñ	,¨bÐ1Ø	×	(Ò	(¨=¸!Ð*<Ð=Ø	×	-Ò	-°¸#¨Ð?Ø	×	%Ò	%¨°qÐ'9Ð:ðóñ2óð2ò(ò%ò&(ð6 ‡�×ÑØà&ˆ	×&Ñ&°2Ô6Ø+ˆ	×+Ñ+Ó-ðóð ‡�×Ñ˜ jÓ1ñ:ó 2óð:ðB ‡�×ÑØà%ˆ	×%Ñ%°"Ô5Ø*ˆ	×*Ñ*Ó,ðóð ‡�×Ñ˜ jÓ1ñ3ó 2óð3ð6 ‡�×Ñ˜Ð#7Ó8Ø‡�×ÑØ�)×0Ñ0°)×2UÑ2UÐVóñ/óó 9ñ/r9   