
    sgV              
          d dl Z d dlmZ d dlm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mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z& d Z'd Z(ejR                  jU                  d	g e+d
fg de+d
f ejX                  g       e+d
f ejX                  g d      e+d
fejZ                  j[                  d      e+d
fg      d        Z.ejR                  jU                  di dddg      d        Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8ejR                  jU                  dg d ejX                  g d       e9g d      g      d        Z:d Z;d Z<d Z=d  Z>d! Z?d" Z@d# ZAd$ ZBd% ZCejR                  jU                  d&d'd(g      ejR                  jU                  d)g d*      d+               ZDejR                  jU                  d,d(d'g      d-        ZEd. ZFd/ ZGd0 ZHd1 ZId2 ZJd3 ZKd4 ZLy)5    N)defaultdict)partial)make_biclusters
make_blobsmake_checkerboardmake_circlesmake_classificationmake_friedman1make_friedman2make_friedman3make_hastie_10_2make_low_rank_matrix
make_moonsmake_multilabel_classificationmake_regressionmake_s_curvemake_sparse_coded_signalmake_sparse_spd_matrixmake_sparse_uncorrelatedmake_spd_matrixmake_swiss_roll)assert_allcloseassert_allclose_dense_sparseassert_almost_equalassert_array_almost_equalassert_array_equal)assert_all_finitec                  ,   ddg} t        ddddddddd d | d	
      \  }}| ddgk(  sJ |j                  dk(  sJ d       |j                  dk(  sJ d       t        j                  |      j                  dk(  sJ d       t	        |d	k(        dk(  sJ d       t	        |dk(        dk(  sJ d       t	        |dk(        dk(  sJ d       t        dddd	d	ddd	      \  }}|j                  dk(  sJ d       |j                  dk(  sJ d       t        j                  |j                  d|j                  fg|j                  d   z              j                  |j                        j                  d |j                  d         j                  d	   dk(  sJ d!       y )"N皙?      ?d               Fr   )	n_samples
n_featuresn_informativen_redundant
n_repeated	n_classesn_clusters_per_class	hypercubeshiftscaleweightsrandom_stater!   r"   X shape mismatchr!   y shape mismatchr%   Unexpected number of classes
   z(Unexpected number of samples in class #0   z(Unexpected number of samples in class #1   A   z(Unexpected number of samples in class #2     T      ?)r&   r'   r(   r)   r*   r-   r/   r1   )r<   r=   )r<    z Unexpected number of unique rows)r	   shapenpuniquesumviewdtypereshape)r0   Xys      `/var/www/html/venv/lib/python3.12/site-packages/sklearn/datasets/tests/test_samples_generator.pytest_make_classificationrK   (   s   DkGDAq sDk!!!77i3!3377f00099Q<%E'EE%qAv;"HHHqAv;"HHHqAv;"HHH 	DAq 77j 4"44 77g111
		!&&2qww-1771:567	agg	QWWQZ	 	q	 		* **	    c                  P   d} t        t        | dddddd      }ddgdfddgdz  dfdd	gd
z  dfddgdz  dfddd	gdfddgdz  dft        d      dgdffD ]M  \  }}}t        |      }||z  }|dz  }dD ]+  } ||||||||d      \  }	}
|	j                  ||fk(  sJ |
j                  |fk(  sJ t        j                  |	      }|j                  dj                  |j                  d               j                         }t        j                  |d      \  }}t        |      |k(  sJ d       t        t              }t        ||
      D ]  \  }}||   j                  |        |j!                         D ]  }t        |      |k(  rJ d        t        |      |k(  sJ d       t#        t        j$                  |
      t        |
      z  |z  dg|z  d       t'        t        |            D ]  }|	||k(     j)                  d      }|r9t#        t        j*                  |      | z  t        j,                  |      dd       Vt/        j0                  t2              5  t#        t        j*                  |      | z  t        j,                  |      dd       d d d         . P t/        j0                  t4              5   |dddd!       d d d        t/        j0                  t4              5   |dddd!       d d d        y # 1 sw Y   xY w# 1 sw Y   ExY w# 1 sw Y   y xY w)"zTest the construction of informative features in make_classification

    Also tests `n_clusters_per_class`, `n_classes`, `hypercube` and
    fully-specified `weights`.
    g    .Ar   r$   F)	class_sepr)   r*   flip_yr.   r/   shuffler:   gUUUUUU?r%   r       r>         ?r8   @   2   )FT)r&   r+   r0   r'   r(   r,   r-   r1   z|S{0})rF   T)return_inversez6Wrong number of clusters, or not in distinct quadrantsz"Wrong number of clusters per classzWrong number of classesz!Wrong number of samples per classerr_msgaxisr#   z/Clusters are not centered on hypercube vertices)decimalrW   z5Clusters should not be centered on hypercube verticesN)r'   r(   r+   r,   )r   r	   intlenrA   rB   signrE   formatstridesravelrC   r   setzipaddvaluesr   bincountrangemeanabsonespytestraisesAssertionError
ValueError)rN   maker(   r0   r,   r+   
n_clustersr&   r-   rH   rI   signsunique_signscluster_indexclusters_by_classclusterclsclusterscentroids                      rJ   -test_make_classification_informative_featuresrx   X   s    I	D 
QC	
UGaK	
UGaK	
UGaK	
UENA	eWq["	R1#q9 G4w 4 L	!55
O	& :	I##(+%9#	DAq 77y-888877yl*** GGAJEJJW^^EMM!4D%EJFLLNE*,))E$*O'L- L!Z/HGH/ !,C 0 #M1 5 4!#&**734-446 8M%9987898 ()Y6Q8QQ6%AQ'72i; !\!23 ]g56;;;C-x(94. ! Q	  ~6 1FF8,y8GGM2$% W Q:	GR 
z	" QaaPQ	z	" QaaPQ Q Q QQ Qs$   9L	?L-LLLL%zweights, err_type, err_msgz:Weights specified but incompatible with number of classes.)r    rR   r   r%   c                 t    t        j                  ||      5  t        |        d d d        y # 1 sw Y   y xY w)Nmatch)r0   )rj   rk   r	   )r0   err_typerW   s      rJ   %test_make_classification_weights_typer}      s/    6 
xw	/ -G,- - -s   .7kwargs)r+   r(   c                     t        dddgdd| \  }}t        dt        j                  ddg      dd| \  }}t        ||       t        ||       y )Nr   g?r   )r0   r1    )r	   rB   arrayr   )r~   X1y1X2y2s        rJ   1test_make_classification_weights_array_or_list_okr      sX     N#s!NvNFB X3*)=AXQWXFBBBrL   c            	         t        dd      D ]  \  } }t        ddddd|       \  }}|j                  d	k(  sJ d
       | s't        |D cg c]  }t        |       c}      dk(  sJ t	        |D cg c]  }t        |       c}      |k(  sJ t        |D cg c]  }t        |       c}      dk  rJ  y c c}w c c}w c c}w )NTFr   r$   r!   r"   r%   r   Fr&   r'   r+   r1   return_indicatorallow_unlabeledr2   r3   r:   )rb   r   rA   maxminr\   )r   
min_lengthrH   YrI   s        rJ   4test_make_multilabel_classification_return_sequencesr      s    '*=&'A -#-"+
1 ww)#7%77#*1A*+q000A&qCF&':555A&qCF&'1,,,- +&&s   B7
/B<
C
c                     t        dd      D ]s  \  } }t        dddd|       \  }}|j                  dk(  sJ d	       |j                  d
k(  sJ d       t        j                  t        j
                  |d      |kD        rsJ  t        dddd d      \  }}}}t        |       t        |       |j                  dk(  sJ t        |j                         d       |j                  dk(  sJ t        |j                  d      dgdz         y )Nr   r   r9   r"   r%   r   )r&   r'   r+   r1   r   r9   r"   r3   r9   r%   Y shape mismatchrX   T)r&   r'   r+   r1   r   return_distributionsr6   r$   )r"   r%   )	rb   r   rA   rB   allrD   r   r   r   )r   r   rH   r   r   Y2p_cp_w_cs           rJ   4test_make_multilabel_classification_return_indicatorr      s   '*=&'A 
6#-+
1 ww("6$66"ww'!5#55!vvbffQQ'*4555
6 8'!BC a$q"99	1%;;'!!!		q	)A373rL   c            	          t        dd      D ]\  \  } }t        ddddd|       \  }}|j                  d	k(  sJ d
       |j                  dk(  sJ d       t        j                  |      r\J  y )Nr   r   r9   r"   r%   r   sparser   r   r3   r   r   )rb   r   rA   spissparse)r   r   rH   r   s       rJ   ;test_make_multilabel_classification_return_indicator_sparser     s    '*=&'A #-%+
1 ww("6$66"ww'!5#55!{{1~~rL   c                      t        dd      \  } }| j                  dk(  sJ d       |j                  dk(  sJ d       t        j                  |      j                  dk(  sJ d	       y )
Nr!   r   )r&   r1   r!   r8   r3   r4   r5   )r:   r7   )r   rA   rB   rC   rH   rI   s     rJ   test_make_hastie_10_2r   !  sd    c:DAq77i3!3377f00099Q<%E'EE%rL   c            
         t        dddddddd	      \  } }}| j                  d
k(  sJ d       |j                  dk(  sJ d       |j                  dk(  sJ d       t        |dk7        dk(  sJ d       t        t	        j
                  |t	        j                  | |      z
        dd       t        dd      \  } }| j                  dk(  sJ y )Nr!   r8   r%   r#   T              ?r   )r&   r'   r(   effective_rankcoefbiasnoiser1   r   r3   r4   r5   r8   coef shape mismatch)Unexpected number of informative featuresr$   rZ   )r&   r'   )r!   r$   )r   rA   rD   r   rB   stddotrH   rI   cs      rJ   test_make_regressionr   (  s    	GAq! 77i3!3377f00077e222qCx=AJJJ q266!Q</0#qA SQ7DAq77hrL   c            	      V   t        ddddddd      \  } }}| j                  dk(  sJ d	       |j                  d
k(  sJ d       |j                  dk(  sJ d       t        t        |dk7        dd       t	        t        j                  |t        j                  | |      z
        dd       y )Nr!   r8   r%   Tr   r   )r&   r'   r(   	n_targetsr   r   r1   r   r3   )r!   r%   r5   )r8   r%   r   r   r   r$   r   )r   rA   r   rD   r   rB   r   r   r   s      rJ    test_make_regression_multitargetr   A  s    GAq! 77i3!3377h2 2277g444s18}a)TU q266!Q</0#qArL   c                     t        j                  g d      } t        j                  ddgddgddgg      }t        ddd||       \  }}|j                  dk(  sJ d	       |j                  d
k(  sJ d       t        j                  |      j                  dk(  sJ d       t        t        ||             D ]-  \  }\  }}t        |||k(     |z
  j                         |dd       / y )Ng?g?g?r   r   r   rT   r:   )r1   r&   r'   centerscluster_std)rT   r:   r3   )rT   r5   r6   zUnexpected number of blobsr$   Unexpected std)	rB   r   r   rA   rC   	enumeraterb   r   r   )cluster_stdscluster_centersrH   rI   ictrr   s          rJ   test_make_blobsr   U  s    88,-Lhhc
S#Jc
CDO DAq 77g11177e///99Q<%C'CC%"3#EF O:CQqAvY_113S!=MNOrL   c                      g d} t        | dd      \  }}|j                  t        |       dfk(  sJ d       t        t	        j
                  |t        |             | k(        sJ d       y )N)rT      r"   r:   r   r&   r'   r1   r3   	minlength$Incorrect number of samples per blobr   rA   rD   r   rB   re   r\   )r&   rH   rI   s      rJ   test_make_blobs_n_samples_listr   g  sk    I	aaHDAq77s9~q))=+==)
AY0I= .-. rL   c                     g d} t        j                  ddgddgddgg      }t        j                  g d      }t        | ||d      \  }}|j                  t	        |       dfk(  sJ d       t        t        j                  |t        |       	      | k(        sJ d
       t        t        ||            D ]-  \  }\  }}t        |||k(     |z
  j                         |dd       / y )Nr"   r"   r"   r   r   r   r   )r&   r   r   r1   r:   r3   r   r   r$   r   )rB   r   r   rA   rD   r   re   r\   r   rb   r   r   )r&   r   r   rH   rI   r   r   r   s           rJ   +test_make_blobs_n_samples_list_with_centersr   q  s    Ihhc
S#Jc
;<G88,-LW,UVDAq 77s9~q))=+==)
AY0I= .-.  #3w#=> O:CQqAvY_113S!=MNOrL   r&   )r#   r%   r   c                     d }t        | |d      \  }}|j                  t        |       dfk(  sJ d       t        t	        j
                  |t        |             | k(        sJ d       y )Nr   )r&   r   r1   r:   r3   r   r   r   )r&   r   rH   rI   s       rJ   &test_make_blobs_n_samples_centers_noner     sm     G	7KDAq77s9~q))=+==)
AY0I= .-. rL   c                  n    ddg} d}t        | |dd      \  }}}|j                  t        |       |fk(  sJ y )Nr8   r"   r%   Tr   )r&   r'   return_centersr1   )r   rA   r\   )r&   r'   rH   rI   r   s        rJ   test_make_blobs_return_centersr     sG    RIJ
4VWMAq' ==S^Z8888rL   c                     g d} t        j                  ddgddgddgg      }t        j                  g d      }t        j                  d|  d|d d        }t	        j
                  t        |      5  t        | |d d 	       d d d        t        j                  d
| d|d d        }t	        j
                  t        |      5  t        | ||d d        d d d        dj                  d      }t	        j
                  t        |      5  t        | d	       d d d        y # 1 sw Y   xY w# 1 sw Y   XxY w# 1 sw Y   y xY w)Nr   r   r   r   zMLength of `n_samples` not consistent with number of centers. Got n_samples = z and centers = r@   rz   )r   zNLength of `clusters_std` not consistent with number of centers. Got centers = z and cluster_std = )r   r   z8Parameter `centers` must be array-like. Got {!r} insteadr%   )	rB   r   reescaperj   rk   rm   r   r^   )r&   r   r   wrong_centers_msgwrong_std_msgwrong_type_msgs         rJ   test_make_blobs_errorr     sH   Ihhc
S#Jc
;<G88,-L			$+_WSb\N	D 
z):	; 49gcrl34II	 	!4\#25F4G	IM 
z	7 N9g<;LMNOVV	N 
z	8 )9a() )4 4N N
) )s$   3D"D.D:"D+.D7:Ec            
      b   t        dddd      \  } }| j                  dk(  sJ d       |j                  dk(  sJ d	       t        |dt        j                  t        j
                  | d d df   z  | d d d
f   z        z  d| d d df   dz
  dz  z  z   d| d d df   z  z   d| d d df   z  z          y )Nr#   r8   r   r   )r&   r'   r   r1   r#   r8   r3   r#   r5   r$   r"   r:   r>   r%   rQ   )r
   rA   r   rB   sinpir   s     rJ   test_make_friedman1r     s    A"CaPDAq77g11177d?...?	
RVVBEEAadGOa1g-..
!Q$#!#
#	$
qAw,	 a1g+	rL   c            
         t        ddd      \  } }| j                  dk(  sJ d       |j                  dk(  sJ d       t        || d d df   d	z  | d d d
f   | d d d	f   z  d
| d d d
f   | d d df   z  z  z
  d	z  z   dz         y )Nr#   r   r   r&   r   r1   r#   rQ   r3   r   r5   r:   r$   r%   r>   )r   rA   r   r   s     rJ   test_make_friedman2r     s    ASqADAq77f00077d?...?	AadGqLAadGa1g-Qq!tWqAw5F0GGAMMRUUrL   c                      t        ddd      \  } }| j                  dk(  sJ d       |j                  dk(  sJ d       t        |t        j                  | d d d	f   | d d d
f   z  d	| d d d	f   | d d df   z  z  z
  | d d df   z               y )Nr#   r   r   r   r   r3   r   r5   r$   r:   r%   )r   rA   r   rB   arctanr   s     rJ   test_make_friedman3r     s    ASqADAq77f00077d?...?	299a1g!Q$'!qAw1a4/@*AAQq!tWLMrL   c                      t        ddddd      } | j                  dk(  sJ d       dd	lm}  ||       \  }}}t	        |      dz
  d
k  sJ d       y )NrT   r9   r#   g{Gz?r   )r&   r'   r   tail_strengthr1   )rT   r9   r3   )svdr   zX rank is not approximately 5)r   rA   numpy.linalgr   rD   )rH   r   usvs        rJ   test_make_low_rank_matrixr     sc    	A 77h2 22 !fGAq!q6A:<<<rL   c                     t        ddddd      \  } }}| j                  dk(  sJ d       |j                  d	k(  sJ d
       |j                  dk(  sJ d       |D ]*  }t        t        j                  |            dk(  r%J d        t        | ||z         t        t        j                  |dz  j                  d            t        j                  |j                  d                y )Nr#      r8   r%   r   )r&   n_componentsr'   n_nonzero_coefsr1   r   r   )r   r8   zD shape mismatch)r#   r   r3   zNon-zero coefs mismatchr:   r$   rX   )	r   rA   r\   rB   flatnonzeror   sqrtrD   ri   )r   DrH   rows       rJ   test_make_sparse_coded_signalr     s    &GAq! 77g11177g11177f000 H2>>#&'1,G.GG,HAq1uBGGQTJJAJ./1DErL   c                  ~    t        ddd      \  } }| j                  dk(  sJ d       |j                  dk(  sJ d       y )	Nr#   r8   r   r   r   r3   r   r5   )r   rA   r   s     rJ   test_make_sparse_uncorrelatedr     sB    #aBQODAq77g11177d?...?rL   c                      t        dd      } | j                  dk(  sJ d       t        | | j                         ddlm}  ||       \  }}t        j                  |dkD        sJ d       y )Nr#   r   )n_dimr1   )r#   r#   r3   eigX is not positive-definite)r   rA   r   Tr   r   rB   r   )rH   r   eigenvalues_s       rJ   test_make_spd_matrixr    s`    aa0A77f000a% VNK66+/"@$@@"rL   	norm_diagTFsparse_format)Nbsrcoocsccsrdiadoklilc                    d}t        || ||      }|j                  ||fk(  sJ d       |0t        j                  |      rJ t	        ||j
                         |}nLt        j                  |      r|j                  |k(  sJ t        ||j
                         |j                         }ddl	m
}  ||      \  }}t        j                  |dkD        sJ d       | r.t        |j                         t        j                  |             y y )Nr#   )r   r  r  r1   r3   r   r   r   )r   rA   r   r   r   r   r^   r   toarrayr   r   rB   r   r   diagonalri   )	r  r  global_random_seedr   rH   Xarrr   r   r  s	            rJ   test_make_sparse_spd_matrixr  	  s    
 E#'		A 77uen$8&88$;;q>!!133{{1~!((m";;;$Q,yy{  YNK66+/"@$@@"!$--/2775>B rL   holec                    t        ddd|       \  }}|j                  dk(  sJ |j                  dk(  sJ t        |d d df   |t        j                  |      z         t        |d d df   |t        j
                  |      z         y )Nr#   r   r   )r&   r   r1   r  r#   r%   r   r:   )r   rA   r   rB   cosr   )r  rH   ts      rJ   test_make_swiss_rollr  +  st    QcMDAq77f77d??a1gq266!9}5a1gq266!9}5rL   c                  H   t        ddd      \  } }| j                  dk(  sJ d       |j                  dk(  sJ d       t        | d d df   t        j                  |             t        | d d d	f   t        j
                  |      t        j                  |      d
z
  z         y )Nr#   r   r   r   r  r3   r   zt shape mismatchr:   r$   )r   rA   r   rB   r   r]   r  )rH   r  s     rJ   test_make_s_curver  5  s    !3Q?DAq77f00077d?...?a1grvvay1a1grwwqzRVVAY]'CDrL   c                  .   t        dddd      \  } }}| j                  dk(  sJ d       |j                  dk(  sJ d       |j                  dk(  sJ d	       t        |        t        |       t        |       t        dddd      \  }}}t        | |       y )
Nr!   r!   rQ   Tr   rA   ro   rP   r1   r3   )rQ   r!   rows shape mismatchcolumns shape mismatch)r   rA   r   r   )rH   rowscolsr   r  s        rJ   test_make_biclustersr!  >  s    #Q1MAtT 77j 4"44 ::!8#88!::         addQ1HB1 a$rL   c                  z   t        dddd      \  } }}| j                  dk(  sJ d       |j                  dk(  sJ d       |j                  dk(  sJ d       t        dd	dd      \  } }}t        |        t        |       t        |       t        dd	dd      \  }}}t        dd	dd      \  }}}t        ||       y )
Nr  )r"   r#   Tr   r  r3   r  r  r:   )r   rA   r   r   )rH   r  r   r   r  r   s         rJ   test_make_checkerboardr#  R  s    %WdMAtT 77j 4"44 ::#:%::#::        
 &Q1MAtT add Q1HB1 !Q1HB1 b"%rL   c                      t        dd      \  } }t        | |      D ]6  \  }}|dk(  rddgnddg}||z
  dz  j                         }t        |dd	
       8 y )Nr%   F)rP   r   r   r   r>   r:   z$Point is not on expected unit circlerV   )r   rb   rD   r   )rH   rI   xlabelcenterdist_sqrs         rJ   test_make_moonsr)  m  sg    a'DAq1I 
5$z#sSzZA%**,c#I	

rL   c                  l   t        d      \  } }t        j                  |dk(        dk(  rt        j                  |dk(        dk(  sJ d       | j                  dk(  sJ d	       |j                  d
k(  sJ d       t	        j
                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)N)   r#   r&   r   r+  r$   r#   z$Number of samples in a moon is wrong)   r:   r3   )r-  r5   z8`n_samples` can be either an int or a two-element tuple.rz   r   )r   rB   rD   rA   rj   rk   rm   r   s     rJ   test_make_moons_unbalancedr.  w  s    'DAq
qAv!qAv! 3.-.377g11177e///	M
 $ 	U#	$ $ $s   B**B3c                     d} dD ]  \  }}}t        |dd |       \  }}|j                  |dfk(  sJ d       |j                  |fk(  sJ d       ddg}t        ||      D ]A  \  }}||z
  dz  j                         }	|d	k(  rd
n| dz  }
|d	k(  rd
n| dz  }
t	        |	|
d       C ||d	k(     j                  |dfk(  sJ d       ||dk(     j                  |dfk(  rJ d        y )Ng333333?))r+  r%   rQ   )r   rQ   rQ   F)rP   r   factorr:   r3   r5   r   r   r   zPoint is not on expected circlerV   z1Samples not correctly distributed across circles.r$   )r   rA   rb   rD   r   )r0  r&   n_outern_innerrH   rI   r'  r%  r&  r(  dist_exps              rJ   test_make_circlesr4    s>   F'= ?#	7G IuDP1ww9a.(<*<<(ww9,&:(::&sAq	 	HAuV)..0H#qjsfaiH#qjsfaiH(,M		 ay#
 
 	? ?	? 
 ay#
 
 	? ?	? 
'?rL   c                  z   t        d      \  } }t        j                  |dk(        dk(  sJ d       t        j                  |dk(        dk(  sJ d       | j                  d	k(  sJ d
       |j                  dk(  sJ d       t	        j
                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)N)r:   r   r,  r   r:   z*Number of samples in inner circle is wrongr$   r   z*Number of samples in outer circle is wrong)r8   r:   r3   r   r5   z7When a tuple, n_samples must have exactly two elements.rz   )r   rB   rD   rA   rj   rk   rm   r   s     rJ   test_make_circles_unbalancedr6    s    &)DAq66!q&>QL LL66!q&>QL LL77g11177e///	G
 & 	u%	& & &s   B11B:)Mr   collectionsr   	functoolsr   numpyrB   rj   scipy.sparser   r   sklearn.datasetsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   sklearn.utils._testingr   r   r   r   r   sklearn.utils.validationr   rK   rx   markparametrizerm   r   randomr}   r   r   r   r   r   r   r   r   r   r   tupler   r   r   r   r   r   r   r   r   r  r  r  r  r!  r#  r)  r.  r4  r6  r   rL   rJ   <module>rB     sO   	 #         *  7-*``QF  	ZUVH	
 BHHRLH	
 BHH&'H	
 IIQH	
#4-54-
 Ba!(L#MN  O -"4>F2B(O$.O  )XRXXi0%	2BC..9).="F"/	A tUm4LC 5C< %/6 06E%(&6
$?8&rL   