
    >ieQ=                       d dl mZ d dlZ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 d dlmZ d dlmZ d dlmZ  e
j        d	           d
 Zd Zd Zd d d d d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& d' gZe
j                            d(e          d)             Zd* Ze
j                            d(e          e
j                             d+ ee                     d,                         Z!e
j                            d(e          e
j                             d+ ee                     d-                         Z"d. Z#d/ Z$d0 Z%d1 Z&e
j                            d2d3          e
j                            d4g d5          d6                         Z'e
j                            d2d3          e
j                            d4g d5          d7                         Z(e
j                            d4d8d9g          d:             Z)d; Z*d< Z+d= Z,d> Z-e
j                            d?d@dAg          dB             Z.dC Z/dD Z0e
j                            dEg dF          dG             Z1dH Z2dI Z3dS )J    )annotationsN)deepcopy)product)ComplexWarning
_numpy_123)	assert_eq)tokenize)typenamezdask.array.mac                 :   t           j                            g dg dd          } t           j                            g dg dd          }t           j                            g ddd          }t          |           t          |           k    sJ t          |          t          |          k    sJ t          |          t          |          k    sJ t          |           t          |          k    sJ t          |           t          |          k    sJ d S )N         TTF
   mask
fill_valuer   F)npmamasked_arrayr	   )mm2m3s      <lib/python3.11/site-packages/dask/array/tests/test_masked.pytest_tokenize_masked_arrayr      s   
999+>+>+>2NNA			III,?,?,?A		N	NB			IIIEb		A	ABA;;(1++%%%%B<<8B<<''''B<<8B<<''''A;;(2,,&&&&A;;(2,,&&&&&&    c                     t           j                            g dg dd          } t          j        | dd          }t          ||            d S )Nr   r   r   r   )r   Fchunksasarray)r   r   r   da
from_arrayr   )r   dms     r   test_from_array_masked_arrayr%      sU    
999+>+>+>2NNA	qu	5	5	5Bb!r   c                 J   t           j                            ddgddg          } t          j        | | j        d          }|                                }i }t          ||          }t          j                            ddgddg          }t          ||           t          ||            t          |                                t           j        j                  sJ t          ||            t          |                                t           j        j                  sJ d S )	Nr   r   r   r   Fr   )memoT)r   r   r   r"   r#   shapecopyr   masked_wherer   
isinstancecompute)txyr(   y2xxs         r   test_copy_deepcopyr3   %   s    
Aq6A//A
a777A	AD	!$			B			UDMAq6	2	2BaaOOOaiikk25#566666b!bjjllBE$67777777r   c                    | S N r/   s    r   <lambda>r8   7   s    a r   c                *    t          j        |           S r5   )r"   expm1r7   s    r   r8   r8   8   s    bhqkk r   c                    d| z  S Nr   r6   r7   s    r   r8   r8   9   
    a!e r   c                    | dz  S r<   r6   r7   s    r   r8   r8   :   r=   r   c                    | dz  S r<   r6   r7   s    r   r8   r8   ;   s
    ad r   c                    | | z   S r5   r6   r7   s    r   r8   r8   <   r=   r   c                    | | z  S r5   r6   r7   s    r   r8   r8   =   r=   r   c                    | d         S )Nr   r6   r7   s    r   r8   r8   >   s
    ad r   c                    | d d df         S Nr   r6   r7   s    r   r8   r8   ?   s    a1g r   c                     | d dd ddf         S )Nr   r   r6   r7   s    r   r8   r8   @   s    aD!A# r   c                    | j         S r5   )Tr7   s    r   r8   r8   A   s    ac r   c                ,    t          j        | d          S )N)r   r   r   )r"   	transposer7   s    r   r8   r8   B   s    bl1i(( r   c                *    |                                  S r5   sumr7   s    r   r8   r8   C   s    aeegg r   c                f    |                      t          j        | j        d                             S N)dotr   aranger)   r7   s    r   r8   r8   D   s"    aeeBIagbk**++ r   c                f    |                      t          j        | j        d                             S rN   )rP   r   eyer)   r7   s    r   r8   r8   E   s"    aeeBF172;''(( r   c                r    t          j        | t          j        | j        d d                   ddg          S )Nr   )r   r   axes)r"   	tensordotr   onesr)   r7   s    r   r8   r8   F   s0    bl1bgagbqbk22&&9IJJJ r   c                .    |                      d          S Nr   axisrK   r7   s    r   r8   r8   G       aeeemm r   c                .    |                      d          S rZ   )maxr7   s    r   r8   r8   H   r]   r   c                .    |                      d          S )Nr   r   r[   rK   r7   s    r   r8   r8   I   s    aeee   r   c                @    |                      t          j                  S r5   )astyper   
complex128r7   s    r   r8   r8   J   s    ahhr}%% r   c                .    |                      d           S )Nc                    | dz  S r<   r6   r7   s    r   r8   z<lambda>.<locals>.<lambda>K   s
    QU r   )
map_blocksr7   s    r   r8   r8   K   s    all??++ r   c                ,    |                      d          S rD   )roundr7   s    r   r8   r8   L   s    aggajj r   c                x    |                      | j        d         | j        d         z  | j        d         f          S )Nr   r   r   )reshaper)   r7   s    r   r8   r8   M   s.    aiiagaj0!'!*=>> r   c                     t          |           S r5   )absr7   s    r   r8   r8   N   s    c!ff r   c                    | dk    S )N      ?r6   r7   s    r   r8   r8   O   s
    a#g r   c                ,    |                      d          S )N)   rq   rq   rechunkr7   s    r   r8   r8   P       aii	"" r   c                ,    |                      d          S )Nr   r   r   rr   r7   s    r   r8   r8   Q   rt   r   funcc                   t           j                                                            dd          }d||dk     <   t           j                            |d          } | |          } | |          }t          |t           j                            |d                     |j        r5|                                }t          |t          j        j                  sJ d S d S )Nr   r   rq   r   r   r   r    r   皙?)r"   randomdefault_rngr   masked_equalr   filledr)   r-   r,   r   r   )rw   r/   r0   r2   yyzzs         r   
test_basicr   U   s    
	&&y&CCAAa#gJ
1a  A	aB	aBb"%,,r1%%&&&	x 2ZZ\\"be0111112 211r   c            
     R   t           j                                        } |                     dd          }d||dk     <   |                     dd          }d||dk     <   t           j                            |d          }t           j                            |d          }t          t          j        ||d	          t           j                            t          j        ||d	          d                     t          t          j        ||d
	          t           j                            t          j        ||d
	          d                     t          t          j        ||d	          t           j                            t          j        ||d	          d                     d S )Nry   rz   r{   r   r|   )rq   r   r   rv   )r   r   rU   r   r   )ra   )r   r   )r"   r}   r~   r   r   r   rW   r   )rngr/   r0   r2   r   s        r   test_tensordotr   f   su   
)


!
!C

9Y
//AAa#gJ

9Y
//AAa#gJ			Aq	!	!B			Aq	!	!B
Q'''
R\"bv666::   
Q'''
R\"bv666::   
Q 0111
R\"b/?@@@!DD    r   zignore::c                   t           j                                        }|                    dd          }|                    dd          }d||dk     <   t           j                            |d          }t          j        ||gd          }t          j        ||gd          } | |          } | |          }t          ||dd           d S )	Nry   rz   r{   r   r|   r[   F
check_meta
check_type)r"   r}   r~   r   r   concatenater   )	rw   r   r/   r0   r   dsddsss	            r   test_mixed_concatenater   ~   s     )


!
!C

9Y
//A

9Y
//AAa#gJ			Aq	!	!B
1vA&&&A
2wQ'''A	aB	aBb"5999999r   c                    t           j                                                            dd          }d||dk     <   d }|                    |          } | |          } | |          }t	          ||dd           d S )	N)rq   r   rq   rz   r{   r   r|   c                t    t          j                     dk     r t          j                            | d          n| S )Nro   r   )r}   r   r   r   r7   s    r   r8   z#test_mixed_random.<locals>.<lambda>   s-    v}/D/D25%%a+++! r   Fr   )r"   r}   r~   rg   r   )rw   r   fnr   r   r   s         r   test_mixed_randomr      s     		&&y&CCAAa#gJ	K	KB	RA	aB	aBb"5999999r   c                    t           j                                                            dd          } d| | dk     <   t           j                            | d          } t          j        dd          }t          j        || gd	          }|j        d
k    sJ |                                }t          |t          j        j                  sJ d S )Nr   r      r   r{   r   r|   )r   r   )r   r   r   r[   )r      )r"   r}   r~   r   r   zerosr   r)   r-   r,   r   r   )r0   r/   zr   s       r   test_mixed_output_typer      s    
	&&x&??AAa#gJ
1a  A
(((A
1vA&&&A7h	
Bb"%,-------r   c                    t          j        g ddz                                d          } t          j        g ddz            }t          j        | d          }t          j        |d          }t           j                            | |          }t          || g||g          D ]3\  }}t          t          j                            ||          |           4t          t          j                            |d	          t           j                            | d	                     t          t          j        	                    |d	          t           j        	                    | d	                     t          t          j        
                    |d	          t           j        
                    | d	                     t          t          j                            |d	          t           j                            | d	                     t          t          j                            |d	          t           j                            | d	                     t          t          j                            |d	          t           j                            | d	                     t          t          j                            d
|          t           j                            d
|                      t          t          j                            |dk    |          t           j                            | dk    |                      t          j        t"                    5  t          j                            |dk    d d d	f         |           d d d            n# 1 swxY w Y   t          t          j                            |dd          t           j                            | dd                     t          t          j                            |dd          t           j                            | dd                     t          t          j                            |d          t           j                            | d                     t          j        t*                    5  t          j                            ||           d d d            n# 1 swxY w Y   t          j        t*                    5  t          j                            ||           d d d            n# 1 swxY w Y   |                     d          }t           j        x|d<   |d<   t          j        |d          }t          t          j                            |          t           j                            |                     t           j                            |d	          }t          j                            |d	          }t          t          j                            |d	          t           j                            |d	                     d S )NrO   r   r   r      r   )r   r   r   r   r   r   r   r{   rq   r   FrO   r   f8r   r   )   r   r   )r   arrayrk   r"   r#   r   masked_greaterr   r   masked_greater_equalmasked_lessmasked_less_equalr   masked_not_equalr+   pytestraises
IndexErrormasked_insidemasked_outsidemasked_values
ValueErrorrc   nanmasked_invalidfix_invalid)	r/   r0   dxdysolabmydmys	            r   test_creation_functionsr      s   
"""R'((00::A
!!!A%&&A	q	#	#	#B	q	#	#	#B
%

q!
$
$CQ"a)) 3 31"%&&q!,,c2222 be""2q))25+?+?1+E+EFFFbe((Q//1K1KAq1Q1QRRRbeA&&(9(9!Q(?(?@@@be%%b!,,be.E.Ea.K.KLLLbe  Q''););Aq)A)ABBBbe$$R++RU-C-CAq-I-IJJJ be  ++RU-?-?q-I-IJJJbe  a,,be.@.@Q.J.JKKK	z	"	" / /
BFAAAqD>2.../ / / / / / / / / / / / / / / be!!"b!,,be.A.A!R.K.KLLLbe""2r1--ru/C/CAr1/M/MNNNbe!!"b))25+>+>q"+E+EFFF
 
z	"	" # #
2r"""# # # # # # # # # # # # # # # 
z	"	" $ $
B###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 	
AAdGag	q	#	#	#Bbe""2&&(<(<Q(?(?@@@			a	#	#B
%

r1
%
%Cbe22BE4E4EbUV4E4W4WXXXXXs6   /NNN"!SSS3!T  T$'T$c                 6   t          j        g ddz                                d          } t          j        | d          }t           j                            | d          }t          j                            |d          }t          t          j                            |          t           j                            |                     t          t          j                            |d          t           j                            |d                     d S )Nr   r   r   r   r{   r   )	r   r   rk   r"   r#   r   r   r   r   )r/   r   mxmdxs       r   test_filledr      s    
"""R'((00::A	q	#	#	#B			Aq	!	!B
%

R
#
#Cbell3b!1!1222bell3##RU\\"b%9%9:::::r   c                   |                                  }|t          j        j        u r||u sJ d S t	          |          t	          |          k    sJ t          |d          rht          j                            |j        |j                   t          j        
                    |           } t          j        
                    |          }t          | |d           d S )Nr   T)	equal_nan)r-   r   r   maskedtypehasattrtestingassert_equalr   r"   r   r   )r   r   ress      r   assert_eq_mar      s    
))++C
belaxxxxxxCyyDGG####3 	 J##CHaf555QAQA!Q$''''''r   dtype)i8r   	reduction)	rL   prodmeanvarstdminr_   anyallc                   t           j                            d                              d          dz                      |           }t	          j        |d          }t           j                            |d          }t          j                            |d          }t          t          |          }t          t           |          }t           ||           ||                     t           ||d           ||d                     t           ||d	d
           ||d	                     t           ||dd           ||d                     t           ||dd	d           ||dd	                     t           ||dd           ||d                     t           ||dd	d           ||dd	                     d S )N*   )r   r   r   rq   rq   r{   r   r   r[   Trq   )keepdimssplit_everyr   r   )r\   r   )r\   r   r   )r\   r   r   )
r   r}   r~   rc   r"   r#   r   r   getattrr   )r   r   r/   r   r   r   dfuncrw   s           r   test_reductionsr      s   
 
		r	"	"	)	)(	3	3b	8@@GGA	q	(	(	(B			a	#	#B
%

r1
%
%CB	""E2y!!DsTT"XX&&&s###TT"1%5%5%5666sTq99944T;R;R;RSSSs222DD!4D4D4DEEEcDa888Ra$'''   s222DD!4D4D4DEEEcDa888Ra$'''    r   c                   t           j                            ddgd          }t          j        |d          }t          t          |          }t          t           |          }t           ||           ||                     d S )Nr   r   Tr'   F)r!   )r   r   r   r"   r#   r   r   )r   r   r/   r   r   rw   s         r   test_reductions_allmaskedr     sz    
 	Aq6--A	q%	(	(	(BB	""E2y!!DrDDGG$$$$$r   argminargmaxc                   t           j                                                            d          }t          j        |d          }t           j                            |d          }t          j                            |d          }t          t          |           }t          t           |           }t           ||           ||                     t           ||d           ||d                     t           ||d           ||d                     t           ||d           ||d                     d S )N)r   r   r   )r   rq   r   r{   r|   r   r   r   )	r   r}   r~   r"   r#   r   r   r   r   )r   r/   r   r   dmxr   rw   s          r   test_arg_reductionsr      s   
	&&|44A	q	+	+	+B			a	%	%B
%

r3
'
'CB	""E2y!!DsTT"XX&&&sAR,,,sAR,,,sAR,,,,,r   c                     t           j                            d                              d          } t          j        | d          }t           j                            | d          }t          j                            |d          }dD ]r}t          |                    |          |                    |                     t          |	                    |          |	                    |                     sd S )Nr   )r         )   r   rq   r{   r|   )r   r   r   r[   )
r   r}   r~   r"   r#   r   r   r   cumsumcumprod)r/   r   r   r   r\   s        r   test_cumulativer   0  s    
	a  ''55A	q	+	+	+B			a	%	%B
%

r3
'
'C D DSZZTZ**BII4I,@,@AAAS[[d[++RZZTZ-B-BCCCCD Dr   c                 d   t           j                                                            d          } t          j        | d          }t           j                            | d          }t          j                            |d          }t          t          j                            |          t           j                            |                     t          t          j                            |          t           j                            |                      t          t          j        	                    |          t           j        	                    |                     t          t          j        	                    |          t           j        	                    |                      d S )Nr   r   rq   r{   r|   )
r   r}   r~   r"   r#   r   r   r   getmaskarraygetdatar/   r   r   r   s       r   test_accessorsr   ;  s#   
	&&x00A	q	(	(	(B			a	%	%B
%

r3
'
'Cbe  %%ru'9'9"'='=>>>be  $$be&8&8&;&;<<<bemmC  "%--"3"3444bemmBq!1!122222r   c            	     d   t           j                                                            d                              d          } t	          j        | d          }t	          j        t          j        d          d          }ddd|fg}t          | |g|          D ]W\  }\  }}t          t          j	        
                    ||	          t           j	        
                    | |	                     t          t          j	        
                    ||d
k    |          t           j	        
                    | | d
k    |                     t          t          j	        
                    ||d
k    |          t           j	        
                    | | d
k    |                     t          t          j	        
                    ||d          t           j	        
                    | |d                     Yt          j        t                    5  t          j	        
                    ||	           d d d            n# 1 swxY w Y   t          j        t           j	        j                  5  t          j	        
                    ||d dd df                    d d d            d S # 1 swxY w Y   d S )Nr   f4r   r{   r   r6   )NN)ro   ro   r   r|   r   r   )r   r   r   r'   )r   r}   r~   rc   r"   r#   r   r   r   r   r   r   r   r   	MaskError)r/   r   f1fill_valuesdatadffs          r   test_masked_arrayr   G  s   
	&&x0077==A	q	(	(	(B	rx{{2	.	.	.BaW5K !R+66 
 
gr1Et33RU5G5GVW5G5X5X	
 	
 	
 	Et$*DDEqq3w1==	
 	
 	
 	Et$*DDEqq3w1==	
 	
 	
 	Et$??EqQd;;	
 	
 	
 	

 
z	"	" . .
2"---. . . . . . . . . . . . . . . 
ru	'	' 0 0
2Brr2A2vJ///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s$   "H<<I I *.J%%J),J)c                    t           j                                                            ddd          } t	          j        | d          }t           j                            | d          }t          j                            |d          }t          j                            |d           t           j                            |d           t          ||           t          j                            |d           t           j                            | d           t          ||            t          j        t                    5  t          j                            |d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j                            ||           d d d            d S # 1 swxY w Y   d S )	Nr   r   r   r   r{   r   ig@xD)r   r}   r~   integersr"   r#   r   r   set_fill_valuer   r   r   	TypeErrorr   r   s       r   test_set_fill_valuer   e  s   
	((B99A	q	(	(	(B			a	#	#B
%

r1
%
%CEc"""ES!!!bES!!!EC   Q	y	!	! ( (
S$'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 
z	"	" & &
S"%%%& & & & & & & & & & & & & & & & & &s$   !E00E47E4!GG	Gr   FTc           	        t          j        ddgddgddgg          }t          j        d                              d          }t           j                            ||          }t
          j                            ||d          }t          j        dd	g          }t          j        |d
          }t
          j                            ||d|           }t          r3t          |t           j                            ||d|                      d S | s2t          |t           j                            ||d                     d S d S )NTFr   r   r   r'   r   r   r   r    g      ?g      ?r{   r   )weightsr\   r   )r  r\   )r   r   rQ   rk   r   r"   r   r#   averager   r   )r   r   r   r   d_ar  	d_weightsda_avgs           r   &test_average_weights_with_masked_arrayr	  z  s(   8dE]T4L5$-@AAD9Q<<''D
Dt$$A
%

$T!

<
<Chd|$$Gga000IU]]3	H]MMF E&"%--7X-VVWWWWW E&"%--7-CCDDDDDE Er   c                    t          j        ddgddgddgg          } t          j        d                              d          }t           j                            ||           }t          j        |d          }||z   }||z   }t          ||           t          |	                                t           j        j
                  sJ d S )NTFr   r  r'   )r   r   r{   )r   r   rQ   rk   r   r"   r#   r   r,   r-   r   )r   r/   r   r   r   r   s         r   !test_arithmetic_results_in_maskedr    s    8dE]T4L5$-@AAD
	!V$$AU[[[&&F	q	(	(	(B
v+C
f*Cc3ckkmmRU%78888888r   c                 ~   t          j        d                              d          } | dz  dk    | dz  dk    z  }t           j                            ||           }t          j        |d          }dD ]T}t
          j                            ||	          }t           j                            ||	          }t          ||           Ut
          j                            |d
          }t           j                            |d
          }t          ||           t           j        	                    d          }t          j        |d          }t          t
          j                            |          t           j                            |                     t          j        d                              d          }t          j        | d          }dD ]d}t
          j                            ||	          }t           j                            ||	          }t          ||t          j        dk               ed S )Nx   )   r   r   r   rq   )r   r   r{   )Nr   r   r[   Tr   win32)check_dtype)r   rQ   rk   r   r+   r"   r#   countr   
masked_allsysplatform)r   r   r/   r   r\   r   r   s          r   
test_countr    s   9S>>!!(++D1HMdQh!m,D
4&&A	q	(	(	(B  ekk"4k((ekk!$k''#s
%++b4+
(
(C
%++a$+
'
'Cc3 	""A	q	(	(	(Bbekk"ooru{{1~~... 		#x((A	tF	+	+	+B A Aekk"4k((ekk!$k''#s(?@@@@@A Ar   funcname)	ones_like
zeros_like
empty_likec                r   t          j        ddgddgddgg          }t          j        d                              d          }t           j                            ||          }t
          j                            ||d          }t          t
          j        |           }t          t           j        j        |           } ||          } ||          }d| v rLt          t
          j        
                    |          t           j        
                    |                     d S t          ||           d S )	NTFr   r  r'   r   r  empty)r   r   rQ   rk   r   r"   r   r   corer   r   )	r  r   r   r   r  da_funcnp_funcr   r   s	            r   test_like_funcsr    s   8dE]T4L5$-@AAD9Q<<''D
Dt$$A
%

$T!

<
<CbeX&&Gbej(++G
'#,,C
'!**C("%$$S))25+=+=c+B+BCCCCC#sr   c                    t          j        d                              d          } t          j        g dg dg dg          }t           j                            | |          }t
          j                            | |d          }|d	k    |d	k    f||f|d
k    |d
k    f|dk    |dk    ffD ]\  }}t           j                            |          }t
          j                            |          }t          |t          |                    sJ t          |          t          |          k    sJ t          t          |                    D ]}t          ||         ||                    d S )N	   )r   r   )TFFr   )TFTr'   r   r  rq   r   r   )r   rQ   rk   r   r   r"   r   nonzeror,   r   lenranger   )	r   r   r   r  c1c2r   r   is	            r   test_nonzeror(    so   9Q<<''D8)))+>+>+>@S@S@STUUD
Dt$$A
%

$T!

<
<C 
Qa	
C	
b#)	
a	 & &B emmBemmB#tCyy)))))3xx3s88####s3xx 	& 	&Ac!fc!f%%%%	&& &r   c            
     h   t           j                                        } |                     dd          }|                     ddgdddg          }dx|d	<   |d
<   t
          j                            ||d          }t           j                            ||          }|                     dd          	                    t           j
                  }t          j        |d          }t           j                            |          }t
          j                            |          }t          t          |                    D ]}t          ||         ||                    |dk    |dk    f||fdd	dt           j        t           j        fddt           j        t           j        ff	D ]\  }	}
d|d d d f          |d d d f          f|d d         |d d         ffD ]W\  }}t
          j                            |	||          }t           j                            |
||          }t          ||           Xd S )Nr   )      )sizeFTro   )r   r,  pr   r   r   )rq   r   )r   r    r'   r*  )rq   r{   r   r   )TTr   )FFr+  )r   r}   r~   r   choicer"   r   r   r   rc   uint8r#   wherer$  r#  r   True_False_)r   r/   r   r   r0   er   r   r'  r%  r&  b1b2w1w2s                  r   
test_wherer8    s   
)


!
!CRh''A::Hc
:CCDAdGag
1477A
AD!!ARb!!((22A
a%%%A %++a..C
%++a..C3s88__ " "#a&#a&!!!! 
QA	
A	28	BI
  B 111d7a4j[9AcrcFAcrcF;KL 	 	FBRB''BRB''Bb"	 r   )4
__future__r   r}   r  r*   r   	itertoolsr   numpyr   r   
dask.arrayr   r"   dask.array.numpy_compatr   r   dask.array.utilsr   	dask.baser	   
dask.utilsr
   importorskipr   r%   r3   	functionsmarkparametrizer   r   filterwarningsr   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r  r  r(  r8  r6   r   r   <module>rF     s   " " " " " "  



                        > > > > > > > > & & & & & &              O $ $ $' ' '  8 8 8$ KOONOONM((++((JJ  %%++>>""""7	> ++2 2 ,+2   0 ++Axx'?'?AABB: : CB ,+:  ++Axx'?'?AABB
: 
: CB ,+
:
. 
. 
./Y /Y /Yd; ; ;
( 
( 
( ,//RRR    0/0 ,//RRR % %  0/% x&:;;- - <;-D D D	3 	3 	30 0 0<& & &* eT]33E E 43E"	9 	9 	9A A A: %N%N%NOO  PO$& & &,    r   