
    YhК                     D   d dl Z d dlZd dlmZmZmZ d dlZd dlm	Z	 d dl
mZmZmZ ddlmZmZ d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej         !                    dg d          de"fd            Z#ej         !                    d e$g dg d                    de%e"e"f         fd            Z&ej         !                    dg d          de"fd            Z'd Z(d Z)d Z*d  Z+d! Z,d" Z-d# Z.d$ Z/ej         !                    d%g d&          d'             Z0ej         !                    d%g d&          d(             Z1ej         !                    d%g d&          d)             Z2ej         !                    d%g d&          d*             Z3d+ Z4ej         !                    d,g d-          d.             Z5ej         !                    d%g d&          d/             Z6ej         !                    d%g d&          d0             Z7ej         !                    d1g d2          d3             Z8d4 Z9d5 Z:ej         !                    d%g d&          d6             Z;ej         !                    d%g d&          d7             Z<d8 Z=ej         !                    d9g d:          d;             Z>ej         !                    d%g d&          d<             Z?ej         !                    d%g d&          d=             Z@d> ZAej         !                    d9g d:          d?             ZBg d@ZCej         !                    dAeC          dB             ZDg dCZEej         !                    dDeE          dE             ZFdF ZGdG ZHdH ZIdI ZJdJ ZKg dKZLej         !                    d9eL          dL             ZMdMdNdOgd gffdPdQdRgd gffdSdTd gdgffdUdVd dRgdRdgffdWdXg dYg dZffd[d\d]d]g dYg dYffgZNej         !                    d^eN          d_             ZOd` ZPej         !                    dag db          dc             ZQej         !                    d%g dd          de             ZRej         !                    d%g dd          df             ZSg dgZTej         !                    d9eT          dh             ZUej         !                    d9eT          di             ZVg djZWej         !                    dkeW          dl             ZXg dmZYej         !                    dkeY          dn             ZZdo Z[dpdqdrdsdtdudWd  ej\        dv          fdwdPdO ej\        dx          fdydzd{d|d}d~dddd ej\        d          fdddd ej\        d          fdddY ej\        dS          fdgZ]ej         !                    de]          d             Z^ej         !                    de]          d             Z_d Z`g dgZaej         !                    d9ea          d             Zbd Zcej         !                    d9ea          d             Zdd Zeej         !                    d9ea          d             Zfd Zgej         !                    d9ea          d             Zhej         !                    d9ea          d             Zid Zjd ZkdS )    N)assert_equalassert_allclosesuppress_warnings)
block_diag)	coo_arrayrandom_arraySparseEfficiencyWarning   )_block_diag_extract_block_diagc                     t          d          } | j        dk    sJ t          |                                 t	          j        d                     t          d          }|j        dk    sJ t          |                                t	          j        d                     t          d          }|j        dk    sJ t          |                                t	          j        d                     d S )N   r   r
   )r
   r            r   shaper   toarraynpzeros)empty1dempty2dempty_nds      m/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/scipy/sparse/tests/test_coo.pytest_shape_constructorr   
   s    ooG=D    ""BHTNN333G=F""""""BHV$4$4555%%H>[((((!!##RXk%:%:;;;;;    c                  d   t          g d          } | j        dk    sJ t          |                                 t	          j        g d                     t          g dg dg          }|j        dk    sJ t          |                                t	          j        g dg dg                     t	          j        ddgddggd	d
gddgggddgddggdd
gdd	gggddgddggddgddgggg          }t          |          }|j        dk    sJ t          |                                |           t          j                            d           t          j                            ddddd	d
ddd	  	        }t          |          }|j        dk    sJ t          |                                |           t          dt          j	        ggddggd
d	ggg          }|j        dk    sJ t          |                                t	          j        dt          j	        ggddggd
d	ggg                     d S )N   r
   r   r   r      r   r
   r   r   r   r!   r   r   r#   	   r
   r      )r   r
   r
   r
      )	r
   r   r   r   r   r#   r   r
   r   )r   r!   r
   )
r   r   r   r   r   arrayrandomseedrandnnan)res1dres2darr4dres4darr9dres9dnan_3ds          r   test_dense_constructorr4      sU   iii  E;$"(999"5"5666 yyy))),--E;&    "(IIIyyy+A"B"BCCC HAA'1a&1a&)9:AA'1a&1a&)9:AA'1a&1a&)9:< = =E eE;,&&&&%((( INN2IOOAa!Aa!A..EeE;-----%((( !RVAx1a&:;;F<9$$$$!!28q"&k]aVH1vh,O#P#PQQQQQr   c            	      2   t          g dd          } | j        dk    sJ t          |                                 t	          j        g d                     t          g dg dgd          }|j        dk    sJ t          |                                t	          j        g dg dg                     t          dggdgggd          }|j        dk    sJ t          |                                t	          j        dggdggg                     t          j                            d	           t          j                            d
dddddd
          }t          |d          }|j        dk    sJ t          |                                |           d S )Nr    r   r   r"   r$   r   r   )r
   r!   r!   r'   r
   r!   r   r#   )r
   r   r!   r   r#   r   r
   )	r   r   r   r   r   r(   r)   r*   r+   )r-   r.   res3darr7dres7ds        r   !test_dense_constructor_with_shaper:   8   s   iiit,,,E;$"(999"5"5666yyy))),F;;;E;&    "(IIIyyy+A"B"BCCCusenI666E;)####"(aSEQC5>":":;;;INN2IOOAa!Aa**Eu_555E;/))))%(((((r   c                     t          j        t          d          5  t          g dd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          g dd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          g dgd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          dggd	gggd
           d d d            n# 1 swxY w Y   t          j        t          d          5  t          dgdgffd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          ddgddgddgddgffd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          dgdgff           d d d            n# 1 swxY w Y   t          j        t          d          5  t          dgdgdgdgff           d d d            d S # 1 swxY w Y   d S )Ninconsistent shapesmatchr    r   r6   r   r!   r   r   r   r!   r!   r!   z)axis 0 index 2 exceeds matrix dimension 2r!   r
   )r
   z)axis 1 index 3 exceeds matrix dimension 3r   )r
   r   r
   znegative axis 0 index: -1znegative axis 2 index: -1)pytestraises
ValueErrorr    r   r   .test_dense_constructor_with_inconsistent_shaperG   L   s   	z)>	?	?	? ) ))))4(((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
z)>	?	?	? + +)))6****+ + + + + + + + + + + + + + + 
z)>	?	?	? + +999+T****+ + + + + + + + + + + + + + + 
z)>	?	?	? 3 3QC5A3%.	22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
zH
J 
J 
J - -A3!-t,,,,- - - - - - - - - - - - - - - 
zH
J 
J 
J F FAa5Aq6Aq6Aq6239EEEEF F F F F F F F F F F F F F F 
z)D	E	E	E " "A3".!!!" " " " " " " " " " " " " " " 
z)D	E	E	E + +A3!qcB4()***+ + + + + + + + + + + + + + + + + +s   <A A "BB	B(C		CC/DDD9EE #E F--F14F1G44G8;G8I  IIc                      t          d          } t          |           }|j        dk    sJ t          |                                t	          j        d                     d S )Nr   r   )r   ress     r   test_1d_sparse_constructorrJ   h   sS    ooG
G

C9/////r   c                      t          ddgddgff          } | j        dk    sJ t          |                                 t	          j        g d                     d S )Nr%   r&   r!   r
   r   )r   r%   r&   r   r   r   r   r   r(   rI   s    r   test_1d_tuple_constructorrN   o   s]    
aUaUH%
&
&C9 3 344444r   c                      t          ddgddgffd          } | j        dk    sJ t          |                                 t	          j        g d                     d S )Nr%   r&   r!   r
   r?   r6   )r   r%   r&   r   rL   rM   s    r   $test_1d_tuple_constructor_with_shaperP   u   sb    
aUaUH%T
2
2
2C9 6 677777r   c                     t          d          } t          j        t          d          5  d| d<   d d d            n# 1 swxY w Y   t          j        t          d          5  | dd d f          d d d            d S # 1 swxY w Y   d S )N)r
   r
   z3'coo_array' object does not support item assignmentr=   r!   r   r   z''coo_array' object is not subscriptabler   )r   rC   rD   	TypeError)coo_2ds    r   test_non_subscriptabilityrU   z   s"   vF	yS
U 
U 
U  t               
yF
H 
H 
H  q!!!t                 s!   =AA#A==BBc                  "   d\  } }t          j        | dz
  gd          t          j        |dz
  gd          f}t          dg|f| |f          }|                    | |z  df          }|j        d         j        t          j        d          k    sJ |j        d         d         | |z  dz
  k    sJ |                    ||           }|j        d         j        t          j        d          k    sJ |j        d         d         |dz
  k    sJ d S )	N)i i r!   int32)dtypegffffff
@r6   r   int64)r   r(   r   reshapecoordsrX   )MNr[   ABCs         r   test_reshape_overflowra      s   DAqhAwg...!a%0P0P0PQFC5&/!Q000A 	
		1q5!*A8A; 1 111118A;q>a!eq[(((( 	
		!QA8A; 1 111118A;q>QU""""""r   c            	         t          g d          } | j        dk    sJ |                     d          }|j        dk    sJ t          |                                t          j        dgdgdgg                     |                     d          }|j        dk    sJ t          |                                t          j        g dg                     t          j        t          d	          5  |                     d
           d d d            n# 1 swxY w Y   t          j        t          d	          5  |                     d           d d d            n# 1 swxY w Y   t          g dg dg          }|j        dk    sJ |                    d          }|j        dk    sJ t          |                                t          j        g d                     |                    d          }|j        dk    sJ t          |                                t          j        dgdgdggdgdgdggg                     t          j        t          d	          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr!   r   r   r   r@   r!   r   r   r!   r   zcannot reshape arrayr=   r   r   r   r   r!   r
   r   r   r   r   r$   )r   )r!   r
   r   r   r   r   )r
   r   r!   r
   )
r   r   rZ   r   r   r   r(   rC   rD   rE   )arr1dcol_vecrow_vecarr2dflat	to_3d_arrs         r   test_reshapero      s9   iii  E;$mmF##G=F""""""BHqcA3_$=$=>>>mmF##G=F""""""BHiii[$9$9::: 
z)?	@	@	@  e               
z)?	@	@	@  e               yyy))),--E;&    ==D:*<*<*<!=!=>>> i((I?i''''""$$bh!qcA31#sQC/Q&R&RSSS 
z)?	@	@	@  e                 s6   /DDD7EE EJ  JJc                      t          g d          } | j        dk    sJ | j        dk    sJ t          g dg dg          }|j        dk    sJ |j        dk    sJ d S )Nrc   r   r
   rg   rh   r$   r   )r   r   nnzri   rl   s     r   test_nnzrs      su    iii  E;$9>>>>yyy))),--E;&    9>>>>>>r   c            	         t          g d          j        } | j        dk    sJ t          |                                 t          j        g d                     t          g dg dg          j        }|j        dk    sJ t          |                                t          j        ddgddgdd	gg                     d S )
Nrc   r   rg   rh   r   r!   r   r
   r   )r   Tr   r   r   r   r(   rr   s     r   test_transposerv      s    iii  "E;$"(999"5"5666yyy))),--/E;&    "(QFQFQF+C"D"DEEEEEr   c                      t          g d                              d          } | j        dk    sJ t          |                                 t          j        g d                     t          g dg dg                              d          }|j        dk    sJ t          |                                t          j        g dg dg                     t          j        t          d	
          5  t          g d                              d           d d d            n# 1 swxY w Y   t          j        t          d
          5  t          g dg dg                              d           d d d            d S # 1 swxY w Y   d S )Nrc   r   axesr   rg   rh   r   r!   r$   "axes don't match matrix dimensionsr=   repeated axis in transposer!   r!   )
r   	transposer   r   r   r   r(   rC   rD   rE   rr   s     r   test_transpose_with_axisr      s   iii  ***55E;$"(999"5"5666yyy))),--77V7DDE;&    "(IIIyyy+A"B"BCCC	z)M	N	N	N 4 4)))&&F&3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 
z)E	F	F	F A A999iii())333@@@A A A A A A A A A A A A A A A A A As$   4&D&&D*-D**FF
Fc                  ~   t          g d          } t          | j        t          j        g d                     t          | j        t          j        | j                             | j        j        | j        j        k    sJ | j        j        j	        du sJ g d| _        t          | j                  dk    sJ t          | j        t          j        g d                     | j        j        | j        j        k    sJ t          j        t          d          5  g d| _        d d d            d S # 1 swxY w Y   d S )Nr!   r   r!   r
   Fr    r!   zcannot set row attributer=   )r   r   colr   r(   row
zeros_likerX   flags	writeablelenr[   rC   rD   rE   rM   s    r   test_1d_row_and_colr      sd   
KKK
 
 C"(999--..."-001117=CGM))))7="e++++iiCGsz??a"(999--...7=CGM))))	z)C	D	D	D  ))                 s   
D22D69D6c                     t          g d          } | j        | j        | j        | j        fD ]?}t          j        t          d          5   |             d d d            n# 1 swxY w Y   @| j        | j	        | j
        fD ]>}t           |                                            |                                            ?d S )Nr   zCannot convertr=   )r   tobsrtocsctodiatolilrC   rD   rE   tocootocsrtodokr   r   )rI   fs     r   test_1d_toformatsr      s    
KKK
 
 CiCIsy9  ]:-=>>> 	 	ACCC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	iCI. 3 3QQSS[[]]CKKMM22223 3s   	A  A$	'A$	arg)r!   r
   r   r#   r&   c                    t          j        g d          }t          |          }|                    | d           |                    |            |j        |j        k    sJ t          |                                |           d S )Nr   Frefcheckr   r(   r   resizer   r   r   r   denrI   s      r   test_1d_resizer      sx    
(;;;

C
C..CJJsUJ###JJsOOO9	!!!!$$$$$r   r!   r
   r   r   c                    t          j        g d          }t          |          }|                    | d           |                    |            |j        |j        k    sJ t          |                                |           d S )Nrc   Fr   r   r   s      r   test_1d_to_2d_resizer     sx    
(999

C
C..CJJsUJ###JJsOOO9	!!!!$$$$$r   )r!   r   r   r&   c                    t          j        g dg dg          }t          |          }|                    | d           |                    |            |j        |j        k    sJ t          |                                |           d S )Nrc   r   r   r   Fr   r   r   s      r   test_2d_to_1d_resizer     s    
(IIIyyy)
*
*C
C..CJJsUJ###JJsOOO9	!!!!$$$$$r   c            	         t          g dg dff          } | j        dk    sJ t          |                                 t	          j        ddg                     |                                  | j        dk    sJ t          |                                 t	          j        ddg                     t          g dg dg dg dg dff          }|j        dk    sJ t	          j        d	d	gd	d	gd	d	ggd	d	gd	d	gd	d	ggd	d	gd	d	gdd	gggd	d	gd	d
gd	d	ggd	d	gd	d	gd	d	ggd	d	gd	d	gd	d	gggg          }t          |                                |           |                                 |j        dk    sJ t          |                                |           t          g dg dff          }|j        dk    sJ |                                 |j        dk    sJ d S )N)r
   r
   r
   r!   r   r!   r   r
   r   )r
   r   r   )r   r
   r   )r!   r
   r!   r   r%   r   r   r!   r
   r   )r   rq   r   r   r   r(   sum_duplicates)ri   r/   expected
arr_nodupss       r   test_sum_duplicatesr     s*   yyy999,/00E9>>>>"(Aq6"2"2333	9>>>>"(Aq6"2"2333 yyy999iiiIII"NOPPE9>>>>xq6Aq6Aq6
"aVaVaV$<1v1vPQSTv>V	Wq6Aq6Aq6
"aVaVaV$<1v1vPQSTv>V	W	Y H (+++	9>>>>(+++ LLL<<</:;;J>Q>Qr   c                  n   t          g dg dff          } | j        dk    sJ |                                 dk    sJ t          |                                 t          j        ddg                     |                                  | j        dk    sJ |                                 dk    sJ t          |                                 t          j        ddg                     t          | j        t          j        dg                     t          | j	        t          j        dg                     d S )N)r   r   r!   r   r   r!   r   )
r   rq   count_nonzeror   r   r   r(   eliminate_zerosr   r   )ri   s    r   test_eliminate_zerosr   2  s   yyy999,/00E9>>>>  A%%%%"(Aq6"2"2333	9>>>>  A%%%%"(Aq6"2"2333BHaSMM***BHaSMM*****r   c                      t          j        g d          } t          j        g d          }| |z   }t          |           |z   }t          |          t          |          u sJ t	          ||           d S Nr   r   r   r   r   )r   r(   r   typer   den_aden_bexprI   s       r   test_1d_add_denser   ?  sv    H^^^$$EH\\\""E
%-C
E

U
"C99S		!!!!cr   c                      t          j        g d          } t          j        g d          }| |z   }t          |           t          |          z   }t          ||                                           d S r   )r   r(   r   r   r   r   r   	dense_sum
sparse_sums       r   test_1d_add_sparser   H  sm    H^^^$$EH\\\""EI5!!Ie$4$44JJ..0011111r   c                      t          j        g d          } t          j        g d          }| |z  }t          |           |z  }t          j        |          dk    sJ t	          ||           d S )Nr   r   r   )r   r(   r   ndimr   r   s       r   test_1d_matmul_vectorr   Q  sr    H^^^$$EH\\\""E
%-C
E

U
"C73<<1cr   c                      t          j        g d          } t          j        g dg dg          j        }| |z  }t          |           |z  }t	          |          t	          |          u sJ t          ||           d S )Nr   r   r   r
   r!   r   )r   r(   ru   r   r   r   )r   otherr   rI   s       r   test_1d_matmul_multivectorr   Z  s    
(>>>
"
"CHlllLLL1224E
+C
C..5
 C99S		!!!!cr   c                  0   t          j        g dg dg          } t          |           }| | j        z  }||j        z  }t	          |                                |           t          j        g dg dg          } t          |           }| | j        z  }|| j        z  }t	          ||           t          j        g dg dg          }t          j        g d          }t          |          }||j        z  }||j        z  }t	          ||           t          j        g d          }t          j        dgdgd	gg          }||z  }t          |          |z  }t	          ||           t          |          t          |          z  }t	          ||           d S )
Nr   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   ru   r   r   list)r   rl   r   rI   r   r   ri   s          r   test_2d_matmul_multivectorr   c  s   
(LLL,,,/
0
0CcNNE
+C
%'/C$$$ (OOO___5
6
6CcNNE
+C
#%-Cc Hooo788EH___%%EeE
%'/C
%'/Cc HYYYEHqcA3_%%E
%-C
E

U
"Cc
E

T%[[
(Ccr   c                      t          j        g d          } t          j        t          d          5  t          |                                            d d d            d S # 1 swxY w Y   d S )Nr   z diagonal requires two dimensionsr=   )r   r(   rC   rD   rE   r   diagonal)r   s    r   test_1d_diagonalr     s    
(>>>
"
"C	z)K	L	L	L " "#!!!" " " " " " " " " " " " " " " " " "s   "A!!A%(A%r   )rx   r   )r   r   r   r   r   )r   r   r
   rc   )r   r%   r   r
   r   r#   c                     t           j                            d           t           j                            dd|           }t	          t          |                                          |           d S )Nr'   r   r#   )lowhighsize)r   r)   r*   randintr   r   todense)r   arrs     r   test_nd_todenser     s\     INN2
)



6
6C3''))3/////r   c                     t          |           }t          |          }|j        | k    sJ t          |                                t	          j        |                      d S Nr   )r   	empty_arrrI   s      r   test_nd_sparse_constructorr     sW     %  I
I

C900000r   c                     t           j                            d           t          j        j        |  }t	          |          }|j        | k    sJ t          |                                |           d S )Nr'   r   r)   r*   r+   r   r   r   r   r   r   rI   s      r   test_nd_tuple_constructorr     sb     INN2
)/5
!C
C..C9$$$$$r   c                     t           j                            d           t          j        j        |  }t	          ||           }|j        | k    sJ t          |                                |           d S )Nr'   r6   r   r   s      r   $test_nd_tuple_constructor_with_shaper     si     INN2
)/5
!C
Cu
%
%
%C9$$$$$r   c                  >   t          j        t          d          5  t          ddgddgddgddgffd	           d d d            n# 1 swxY w Y   t          g g g g g ffd
	          } t	          |                                 t          j        d
                     d S )Nzexceeds matrix dimensionr=   r%   r&   r!   r
   r   )r   r   r   r6   )r   r   r
   r   )rC   rD   rE   r   r   r   r   empty)r   s    r   (test_tuple_constructor_for_dim_size_zeror     s    	z)C	D	D	D E EAq6QFQFQF34GDDDDE E E E E E E E E E E E E E E 2BB/0	BBBI""$$bhy&9&9:::::s   AAA)r   	new_shape))r   r%   r   r#   )r   r      r   )r   )$      )r   )i8  )r   )r
   r   r
   r
   r   r#   r   c                 h   t           j                            d          }t          | d|t                    }|j        | k    sJ |                                }|                    |          }|                    |          }|j        |k    sJ t          |                                |           d S N4e333333?densityrngrX   )	r   r)   default_rngr   intr   r   rZ   r   )r   r   r   r/   den4dexp_arrres_arrs          r   test_nd_reshaper     s     )


)
)CC@@@E;%MMOOEmmI&&GmmI&&G=I%%%%""G,,,,,r   c                     t           j                            d          }t          | d|t                    }|j        t          j        |                                          k    sJ d S r   )r   r)   r   r   r   rq   r   r   )r   r   r   s      r   test_nd_nnzr     s[     )


)
)C
ucs#
>
>
>C7b&s{{}}55555555r   c                 >   t           j                            d          }t          | d|t                    }|                                j        }|                                }|j        | d d d         k    sJ t          ||                                           d S )Nr   r   r   rB   )
r   r)   r   r   r   r   ru   r   r   r   )r   r   r   r   	trans_arrs        r   test_nd_transposer     s     )


)
)C
ucs#
>
>
>CkkmmoGI?eDDbDk)))))++--.....r   )r   	axis_perm))r   rx   )r$   r{   ))r
   r   r   r   r#   r   )r!   r
   r   r#   r   r   c                 0   t           j                            d          }t          | d|t                    }|                    |          }t          |                                t          j        |                                |                     d S )Nr   r   r   ry   )r   r)   r   r   r   r   r   r   )r   r   r   r   r   s        r   test_nd_transpose_with_axisr     s{     )


)
)C
ucs#
>
>
>C9--I""$$bl3;;==y&Q&Q&QRRRRRr   c                  p   t          j        t          d          5  t          g d                              d           d d d            n# 1 swxY w Y   t          j        t          d          5  t          g dg dg                              d	           d d d            d S # 1 swxY w Y   d S )
Nr|   r=   rc   r{   ry   r}   rg   rh   r~   )rC   rD   rE   r   r   rF   r   r   %test_transpose_with_inconsistent_axisr     sL   	z)M	N	N	N 4 4)))&&F&3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 
z)E	F	F	F A A999iii())333@@@A A A A A A A A A A A A A A A A A As#   &AAA4*B++B/2B/c            
         t          g dg dg dg dff          } | j        dk    sJ |                                 dk    sJ t          |                                 t          j        g dg dgg dg dgg dg d	gg                     |                                  | j        dk    sJ |                                 dk    sJ t          |                                 t          j        g dg dgg dg dgg dg d	gg                     g dg dg dg d
g df}t          g d|f          }|j        dk    sJ |                                dk    sJ |                                 |j        dk    sJ |                                dk    sJ t          |j        t          j        g                      t          |j	        t          j        g                      t          |j
        g g g g g f           d S )N)r!   r   r   r   )r   r!   r!   r
   )r   r!   r   r!   )r!   r!   r
   r   r   r
   )r   r!   r   r   r   )r   r   r
   r   )r!   r   r   r
   )r   r   r   r   r   )r   rq   r   r   r   r   r(   r   r   r   r[   )arr3dr[   arr5ds      r   test_nd_eliminate_zerosr    sX   |||lllLLL,,,%OPQQE9>>>>  A%%%%"(YYY			,B%.YY			$:YYY			<R,T #U #U V V V	9>>>>  A%%%%"(YYY			,B%.YY			$:YYY			<R,T #U #U V V V llLLL,,,lllSF|||V,--E9>>>>  A%%%%	9>>>>  A%%%%BHRLL)))BHRLL)))BB344444r   c                 h   t           j                            d          }t          | d|t                    }t          | d|t                    }|                                |                                }}||z   }||z   }t          |          t          |          u sJ t          ||           d S r   r   r)   r   r   r   r   r   r   r   r   sp_xsp_yden_xden_yr   rI   s           r   test_nd_add_denser
         )


)
)Cs3???Ds3???D<<>>4<<>>5E
%-C
,C99S		!!!!cr   c                 L   t           j                            d          }t          | d|t                    }t          | d|t                    }|                                |                                }}||z   }||z   }t          ||                                           d S r   r   r)   r   r   r   r   r   r   r   r  r  r  r	  r   r   s           r   test_nd_add_sparser    s     )


)
)C#SAAAD#SAAAD<<>>4<<>>5EIJJ..0011111r   c                     t          j        dgt           j        ggdgdggg          } t          j        dgdggdgdggg          }| |z   }t          |           t          |          z   }t	          ||                                           d S Nr   r   r!   r
   r   )r   r(   infr   r   r   r   s       r   test_add_sparse_with_infr  &      HsRVHoqc{344EHsQCjA3*-..EI5!!Ie$4$44JJ..0011111r   )a_shapeb_shape))r   )r'   )r   r   )r   r#   )r#   r%   r   r
   )r%   r#   r
   r   c                    t           j                            d          }t          | d|t                    }t          |d|t                    }t          j        t          d          5  ||z    d d d            d S # 1 swxY w Y   d S Nr   r   r   r<   r=   r   r)   r   r   r   rC   rD   rE   r  r  r   arr_aarr_bs        r   +test_nd_add_sparse_with_inconsistent_shapesr  /       )


)
)C'CSDDDE'CSDDDE	z)>	?	?	?                      +A>>BBc                 h   t           j                            d          }t          | d|t                    }t          | d|t                    }|                                |                                }}||z
  }||z
  }t          |          t          |          u sJ t          ||           d S r   r  r  s           r   test_nd_sub_denser#  ;  r  r   c                 L   t           j                            d          }t          | d|t                    }t          | d|t                    }|                                |                                }}||z
  }||z
  }t          ||                                           d S r   r  r  s           r   test_nd_sub_sparser%  H  s     )


)
)Cs3???Ds3???D<<>>4<<>>5EIJJ..0011111r   c                     t          j        dgt           j        ggdgdggg          } t          j        dgdggdgdggg          }| |z
  }t          |           t          |          z
  }t	          ||                                           d S r  )r   r(   r,   r   r   r   r   s       r   test_nd_sub_sparse_with_nanr'  V  r  r   c                    t           j                            d          }t          | d|t                    }t          |d|t                    }t          j        t          d          5  ||z
   d d d            d S # 1 swxY w Y   d S r  r  r  s        r   +test_nd_sub_sparse_with_inconsistent_shapesr)  _  r   r!  )	)r
   r   r   r#   r#   rR   rx   ))r
   r   r   r   r&   )r&   )r   r   r
   r   rx   )r   r#   r   r
   r   r   r!   )r
   r#   r+  r0  )r#   r!   )r   r@   )r?   r?   )	mat_shape	vec_shapec                 l   t           j                            d          }t          | d|t                    }t          |d|t                    }|                                |                                }}||z  }||z  }t          ||           |t          |          z  }t          ||           d S r   r   r)   r   r   r   r   r   r   )	r2  r3  r   r  r  r  r	  r   rI   s	            r   test_nd_matmul_vectorr6  v  s    
)


)
)C	3CsCCCD	3CsCCCD<<>>4<<>>5E
%-C
,CS
e
CSr   ))r*  )r
   r   r#   r   r,  r-  )r   r&   r   r   )r7  r@   )r.  r   r   ))r!   r   r
   r   )r   r#   r!   r   r   ))r   r!   r!   r
   r   )r!   r   r   r   )r?   )r
   r   r   )r   )r#   r   r   r   r
   )r?   r8  r1  )
mat_shape1
mat_shape2c                    t           j                            d          }t          | d|t                    }t          |d|t                    }|                                |                                }}||z  }||z  }t          |                                |           ||z  }t          ||           |t          |          z  }t          ||           ||z  }t          ||           d S Nr   r   r   random_staterX   r5  )	r9  r:  r   r  r  r  r	  r   rI   s	            r   test_nd_matmulr?    s    
)


)
)C
CcMMMD
CcMMMD<<>>4<<>>5E
%-C
+C$$$
,Cc
e
Cc $,Ccr   c                     t           j                            d          } t          dd| t                    }t          dd| t                    }t          j        t          d          5  ||z   d d d            n# 1 swxY w Y   t          j        t          d          5  ||                                z   d d d            n# 1 swxY w Y   t          dd| t                    }t          j        t          d	          5  ||z   d d d            n# 1 swxY w Y   t          j        t          d	          5  ||                                z   d d d            d S # 1 swxY w Y   d S )
Nr   )r   r#   r   r   r   r   r=  )r!   r#   r   r
   r#   z)matmul: dimension mismatch with signaturer=   )r!   r#   r   r
   z&Batch dimensions are not broadcastable)	r   r)   r   r   r   rC   rD   rE   r   )r   r  r  sp_zs       r   .test_nd_matmul_sparse_with_inconsistent_arraysrB    sN   
)


)
)CSs#NNNDSs#NNND	z)T	U	U	U  t              	z)T	U	U	U                                  	3SLLLD	z)Q	R	R	R  t              	z)Q	R	R	R                                       sH   +A==BB#CCCDDD=E""E&)E&c                  t   t          g d          } t          g d          }t          j        |                                 |                                          }|                     |          }t	          ||           |                     |                                          }t	          ||           d S )Nr    r"   )r   r   dotr   r   )abr   rI   s       r   test_dot_1d_1drG    s    '''A'''A
&aiikk
*
*C
%%((Cc
%%		

Ccr   c                      t          ddgddgddgg          } d}|                     |          }t          j        |                                 |          }t	          |                                |           d S )Nr!   r
   r   r   r#   r   )r   rD  r   r   r   )rE  rF  rI   r   s       r   test_dot_sparse_scalarrI    sm    Aq6Aq6Aq6*++A	A
%%((C
&a
 
 C$$$$$r   c                      t          ddggddggg          } t          g d          }t          j        t          d          5  |                     |           d d d            d S # 1 swxY w Y   d S )Nr!   r
   r   r   r"   znot aligned for n-D dotr=   )r   rC   rD   rE   rD  )r  r  s     r   !test_dot_with_inconsistent_shapesrK    s    Ax1a&*++Eiii  E	z)B	C	C	C  		%                 s   A''A+.A+c                  2   t          ddgddgg          } t          j        t          d          5  |                     d            d d d            n# 1 swxY w Y   t          j        t          d          5  |                     d            d d d            n# 1 swxY w Y   t          j        t          d          5  | d z   d d d            n# 1 swxY w Y   t          j        t          d          5  d | z   d d d            d S # 1 swxY w Y   d S )	Nr!   r
   r   r   zargument not supported typer=   zarg not supported typezunsupported operand type)r   rC   rD   rS   rD  	tensordot)r  s    r   test_matmul_dot_not_implementedrN    s
   1v1v&''E	y(E	F	F	F  		$              	y(@	A	A	A                	y(B	C	C	C                	y(B	C	C	C  u                 sG   AAA9BB"BCCC9DDD)
)re   re   )r   r   r   r   ))r!   r   r/  )r   r
   r   r   r   )r+  r   r   r#   r
   )rQ  )r   r!   ))r!   r#   rR  )rO  r   r
   r   r   )r
   r&   r   )r   r#   r   r   r
   )r   r#   r   r   rS  c                 z   t           j                            d          }t          | d|t                    }t          |d|t                    }t          j        |                                |                                          }|                    |                                          }t          ||           |                    t          |                                                    }t          ||           |                    |          }t          |                                |           d S r<  )	r   r)   r   r   r   rD  r   r   r   )r  r  r   r  r  r   rI   s          r   test_dot_ndrW    s    
)


)
)C#CsKKKE#CsKKKE
&%--//
2
2C
))EMMOO
$
$Cc
))D))
*
*Cc
))E

C$$$$$r   rO  rP  r!   rQ  r   r   r+  rR  rU  rS  rT  r   r#   r   r&   r
   r   )r   r   r
   ))r   r#   r   r
   r   )r   r
   r   r   r&   r   ))r   r#   r   )r   r   r   r!   )r
   r   r   )r  r  rz   c                    t           j                            d          }t          | d|t                    }t          |d|t                    }t          j        |                                |                                |          }|                    |                                |          }t          ||           |                    t          |                                          |          }t          ||           |                    ||          }t          |          t          u r$t          |                                |           d S t          ||           d S )Nr   r   r=  ry   )r   r)   r   r   r   rM  r   r   r   r   r   )r  r  rz   r   r  r  r   rI   s           r   test_tensordotrZ    s)   
)


)
)C#CsKKKE#CsKKKE
,u}}d
C
C
CC //%--///
5
5Cc
//$u}}//d/
;
;Cc //%d/
+
+CCyyIS[[]]C(((((S#r   c                  J   t           j                            d          } t          dd| t                    }t          dd| t                    }dgdgf}t          j        t          d          5  |                    ||	           d d d            n# 1 swxY w Y   t          d
d| t                    }t          dd| t                    }g dddgf}t          j        t          d          5  |                    ||	           d d d            d S # 1 swxY w Y   d S )Nr   )r   r   r#   r   r=  r   r   r   r
   z*sizes of the corresponding axes must matchr=   ry   )r#   r   r
   r   r   )r   r   r   r
   )r
   r   r!   r!   r   z,axes lists/tuples must be of the same length)	r   r)   r   r   r   rC   rD   rE   rM  )r   r  r  rz   s       r    test_tensordot_with_invalid_argsr]    s   
)


)
)C#CsKKKE#CsKKKEC!:D	z)U	V	V	V * *D)))* * * * * * * * * * * * * * * c3OOOECcMMMEGGaUD	z *& 
' 
' 
' * *D)))* * * * * * * * * * * * * * * * * *s$   1BBB3DDD)actual_shapebroadcast_shape)	))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   r#   r   ))r   r&   r!   )r   r&   r#   )r@   r   r   ))r!   r+  )rA   r"   ))r!   r   r!   r#   r   )r&   r
   r   r%   r#   r   c                 0   t           j                            d          }t          | d|t                    }|                    |          }t          j        |                                |          }t          |                                |           d S r<  )	r   r)   r   r   r   _broadcast_tobroadcast_tor   r   )r^  r_  r   r   rI   r   s         r   test_broadcast_tord  +  sy     )


)
)C
|Ss#
N
N
NC


O
,
,C
/#++--
9
9C$$$$$r   ))r   r#   r   r   r&   r  r  )r%   r#   r
   r   r   c                    t           j                            d          }t          | d|t                    }|                                }t	          t          j        |j        d d                             }|                    |f|j        dd          z             fdt          |          D             }t          | }t          |          }t          |                                |           d S )Nr   r   r=  r   c                 .    g | ]}|d d d d f         S r   rF   ).0ireshaped_arrays     r   
<listcomp>z#test_block_diag.<locals>.<listcomp>D  s,    CCCAq!!!QQQw'CCCr   )r   r)   r   r   r   r   prodr   rZ   ranger   r   r   )	r   r   r  r  
num_slicesmatricesr   rI   ri  s	           @r   test_block_diagro  9  s     )


)
)CsCHHHDLLNNE RWU["-..//J]]J=5;rss3C#CDDNCCCCz1B1BCCCH
h
C
d

C$$$$$r   c                    t           j                            d          }t          | d|t                    }t          t          |          |           }t          |                                |                                           d S r<  )	r   r)   r   r   r   r   r   r   r   )r   r   r  rI   s       r   test_extract_block_diagrq  L  sl     )


)
)CsCHHHD
k$//
7
7C/////r   ))r`  r`  )r\  r\  )r   r   r#   rr  c                    t           j                            d          }t          | d|t                    }t          |d|t                    }||z   }t          j        |                                |                                          }t          |                                |           ||                                z   }t          ||           d S r<  )r   r)   r   r   r   addr   r   r  r  r   rE  rF  rI   r   s          r   test_add_no_broadcastingrv  Y  s    
)


)
)CWc3GGGAWc3GGGA
a%C
&aiikk
*
*C$$$
aiikk/Ccr   c                    t           j                            d          }t          | d|t                    }t          |d|t                    }||z
  }t          j        |                                |                                          }t          |                                |           ||                                z
  }t          ||           d S r<  )r   r)   r   r   r   subtractr   r   ru  s          r   test_sub_no_broadcastingry  e  s    
)


)
)CWc3GGGAWc3GGGA
a%C
+aiikk199;;
/
/C$$$
aiikk/Ccr   )r   Nr   r   rO  r!   r   r   r   r   r#   NrT  r
   rT  r   )r
   r   r   ))r   r   r   r
   r   rQ  NrQ  r!   rQ  r   rQ  r
   )rQ  r   rX  r   )rX  r   )r   axisc                    t           j                            d          }t          | d|t                    }|                    |          }t          j        |                                |          }t          ||           |                    |          }t          j        |                                |          }t          ||           d S Nr   r   r=  r  )	r   r)   r   r   r   argmaxr   r   argmin)r   r  r   rE  rI   r   s         r   test_argmax_argminr  z  s    
)


)
)CUCcEEEA
(((

C
)AIIKKd
+
+
+Cc
(((

C
)AIIKKd
+
+
+Ccr   )rz  r{  r|  r}  r  r  r  r  r  r  r  r  )r   r#   r&   r!   r   )rO  rx   )rO  r{   )r   r   r
   r
   )r  r   r
   )rf   r   )r   r   r&   r#   r{   )r  r
   r!   )r  r  )r  r   r   )r  rB   r
   )r  r   )r  r   )r  r   c                 J   t           j                            d          }t          | d|t                    }|                    |          }t          j        |                                |          }|                    |          }t          j        |                                |          }|                    |          }t          j        |                                |          }	|	                    |          }
t          j	        |                                |          }||f||f||	f|
|ffD ]d\  }}t          j
        t          |          t           j                  rt          ||           Bt          |                                |           ed S r  )r   r)   r   r   r   minr   maxnanminnanmax
issubdtyper   numberr   )r   r  r   rE  res_minexp_minres_maxexp_max
res_nanmin
exp_nanmin
res_nanmax
exp_nanmaxrI   r   s                 r   test_min_maxr    sq   
)


)
)CUCcEEEAeeeGfQYY[[t,,,GeeeGfQYY[[t,,,Gt$$J199;;T222Jt$$J199;;T222Jw''7); *-
J/GI - -S=cBI.. 	-c"""",,,,- -r   c                      t          g dgg          t          g dg          fD ]7} |                                 dk    sJ |                                  dk    sJ 8d S )Nr   r!   rB   )r   r  r  )rE  s    r   test_min_max_fullr    sr    ,,,())9lll^+D+DE    uuww!||||xxzzR   r   )r   NN)r   r   N)rO  r!   N)r~  r   N)r  NN)rT  r
   N)r&   r   )rQ  NN)r   r   r   )rQ  r   N)rX  r   N)r  r   N)rO  rx   N)rO  r{   N)r  r
   N)r  r  N)rf   r   Nr  r{   )r&   r#   )r  r  N)r  r  Nr  )r   r   )r  r   N)r  r   N)r   r  outc                 ~   t           j                            d          }t          | d|t                    }|                    ||          }t          j        |                                |          }t          ||           |2t          ||           t          |          t          |          k    sJ d S d S Nr   r   r=  )r  r  r  )	r   r)   r   r   r   sumr   r   idr   r  r  r   rE  rI   r   s          r   test_sumr    s    
)


)
)CUCcEEEA
%%Ts%
#
#C
&4
(
(
(Cc
S##ww"S''!!!! !!r   c                 ~   t           j                            d          }t          | d|t                    }|                    ||          }t          j        |                                |          }t          ||           |4t          |          t          |          k    sJ t          ||           d S d S r  )	r   r)   r   r   r   meanr   r   r  r  s          r   	test_meanr    s    
)


)
)CUCcEEEA
&&d&
$
$C
'!))++D
)
)
)CC
#ww"S''!!!!S!!!!! r   c                     t           j                            d          } t          dd| t                    }t          |dz                                  t          j        |                                d                     t          |dz                                  t          j        |                                d                     t          t          |                                          t          j        |                                                     t          t          |                                          t          j	        |                                                     d S )Nr   )r   r   r#   r
   r   r   r=  r   r   )
r   r)   r   r   r   r   r   powerroundabs)r   rE  s     r   test_pow_abs_roundr    s    
)


)
)C[#CsKKKAQTNN$$bhqyy{{A&>&>???QTNN$$bhqyy{{A&>&>???E!HH$$&&(=(=>>>CFFNN$$bfQYY[[&9&9:::::r   c                    t           j                            d          }t                      }|                    t
                     t          | d|t                    }t          |d|t                    }|5  t          ||k    	                                |	                                |	                                k               t          ||k    	                                |	                                |	                                k               t          ||k    	                                |	                                |	                                k               t          ||k    	                                |	                                |	                                k               t          ||k    	                                |	                                |	                                k               t          ||k     	                                |	                                |	                                k                t          ||k    	                                t          j
        ||k    	                                                     t          ||k    	                                t          j
        ||k     	                                                     t          ||k    	                                t          j
        ||k    	                                                     d d d            d S # 1 swxY w Y   d S r<  )r   r)   r   r   filterr	   r   r   r   r   bitwise_not)r  r  r   suprE  rF  s         r   test_boolean_comparisonsr    s   
)


)
)C


CJJ&'''Wc3GGGAWc3GGGA	 	H 	Had^^%%qyy{{AIIKK'?@@@ad^^%%qyy{{AIIKK'?@@@ad^^%%qyy{{AIIKK'?@@@ad^^%%qyy{{AIIKK'?@@@ac]]__aiikk!))++&=>>>ac]]__aiikk!))++&=>>>ad^^%%r~q!tnn6F6F'G'GHHHad^^%%r~qsmmoo'F'FGGGad^^%%r~qsmmoo'F'FGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs   :J?MM
M
c                     t           j                            d          } t                      }|                    t
                     t          dd| t                    }|5  t          |dk    	                                |	                                dk               t          |dk    	                                |	                                dk               t          |dk    	                                |	                                dk               t          |dk    	                                |	                                dk               t          |dk    	                                |	                                dk               t          |dk     	                                |	                                dk                d d d            d S # 1 swxY w Y   d S )Nr   )r#   r   r&   r   r   r=  r   r!   )
r   r)   r   r   r  r	   r   r   r   r   )r   r  rE  s      r   $test_boolean_comparisons_with_scalarr    s   
)


)
)C


CJJ&'''Y#SIIIA	 5 5ad^^%%qyy{{A~666ad^^%%qyy{{A~666ad^^%%qyy{{A~666ad^^%%qyy{{A~666ac]]__aiikk!m444ac]]__aiikk!m4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   "E)GGGc                 d   t           j                            d          }t          | d|t                    }t          |d|t                    }||z  }t          j        |                                |                                          }t          |                                |           d S r<  r   r)   r   r   r   multiplyr   r   ru  s          r   test_multiplyr  	  s    
)


)
)CWc3GGGAWc3GGGA
a%C
+aiikk199;;
/
/C$$$$$r   c                     t           j                            d          } t          dd| t                    }|dz  }t          j        |                                d          }t          |                                |           d S Nr   )r   r#   r   r   r=  r   r  r   rE  rI   r   s       r   test_multiply_with_scalarr    sm    
)


)
)CWc3GGGA
a%C
+aiikk1
%
%C$$$$$r   c                    t           j                            d          }t          | d|t                    }t          j        ddt          j        |          z                                 |          }||z  }|	                                |z  }t          |	                                |           ||z  }t          |	                                |           d S )Nr   r   r=  r!   )r   r)   r   r   r   arangemathrk  rZ   r   r   ru  s          r   test_divider    s    
)


)
)CWc3GGGA
	!Q7+++,,44W==A
a%C
))++/CCKKMM3'''
a%CCKKMM3'''''r   c                      t           j                            d          } t          dd| t                    }|dz  }|                                dz  }t          |                                |           d S r  )r   r)   r   r   r   r   r   r  s       r   test_divide_with_scalarr  (  se    
)


)
)CWc3GGGA
a%C
))++/CCKKMM3'''''r   c                 
   t           j                            d          }t                      }|                    t
                     t          | d|t                    }t          |d|t                    }|5  |                    |          }t          j        |	                                |	                                          }t          |	                                |           d d d            d S # 1 swxY w Y   d S r<  )r   r)   r   r   r  r	   r   r   maximumr   r   r  r  r   r  rE  rF  rI   r   s           r   test_maximumr  0     
)


)
)C


CJJ&'''Wc3GGGAWc3GGGA	 ) )iilljaiikk22S[[]]C((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )   :A1C88C<?C<c                 
   t           j                            d          }t                      }|                    t
                     t          | d|t                    }t          |d|t                    }|5  |                    |          }t          j        |	                                |	                                          }t          |	                                |           d d d            d S # 1 swxY w Y   d S r<  )r   r)   r   r   r  r	   r   r   minimumr   r   r  s           r   test_minimumr  <  r  r  c                  T   t                      } |                     t                     t          g d          }t          ddgddgddgg          }t          ddgdd	ggd
dgddgggddgddggddgddgggg          }| 5  t	          |                    d                                          t          j        |                                d                     t	          |                    d                                          t          j        |                                d                     t	          |                    d                                          t          j        |                                d                     d d d            d S # 1 swxY w Y   d S N)r   r!   r   r   r      r#   ir   r
   r   r&   r%   r   r'   r   i)r   r  r	   r   r   r  r   r   r  rE  rF  cs       r   test_maximum_with_scalarr  I     


CJJ&''''''AB7RGaX.//AaUQqENaURG$45UQqENaUQrFO46 	7 	7A	 I IQYYq\\))++RZ		Q-G-GHHHQYYq\\))++RZ		Q-G-GHHHQYYq\\))++RZ		Q-G-GHHHI I I I I I I I I I I I I I I I I I   DFF!$F!c                  T   t                      } |                     t                     t          g d          }t          ddgddgddgg          }t          ddgdd	ggd
dgddgggddgddggddgddgggg          }| 5  t	          |                    d                                          t          j        |                                d                     t	          |                    d                                          t          j        |                                d                     t	          |                    d                                          t          j        |                                d                     d d d            d S # 1 swxY w Y   d S r  )r   r  r	   r   r   r  r   r   r  s       r   test_minimum_with_scalarr  U  r  r  )lr  numpyr   numpy.testingr   r   r   rC   scipy.linalgr   scipy.sparser   r   r	   _coor   r   r   r4   r:   rG   rJ   rN   rP   rU   ra   ro   rs   rv   r   r   r   markparametrizer   r   ziptupler   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)  mat_vec_shapesr6  mat_mat_shapesr?  rB  rG  rI  rK  rN  
dot_shapesrW  tensordot_shapes_and_axesrZ  r]  rd  ro  rq  add_sub_shapesrv  ry  argmax_argmin_shapes_axisr  max_min_shapes_axisr  r  r   sum_mean_paramsr  r  r  bitwise_op_and_compare_shapesr  r  r  r  r  r  r  r  r  r  rF   r   r   <module>r     s        J J J J J J J J J J  # # # # # # I I I I I I I I I I 3 3 3 3 3 3 3 3< < <R R R@) ) )(+ + +80 0 05 5 58 8 8
	 	 	# # # " " "J  F F FA A A    3 3 3 00% % % % 10% LLL,,, ? ?@@%eCHo % % % A@% --%c % % % .-%  8
+ 
+ 
+  2 2 2      B" " "  #; #; #; < <0 0< <0  #; #; #; < <1 1< <1  #; #; #; < <% %< <%  #; #; #; < <% %< <%; ; ; / 2Q 2Q 2Q R R- -	R R-  #; #; #; < <6 6< <6  #; #; #; < </ /< </ / 2S 2S 2S T TS ST TSA A A5 5 54  #; #; #; < < < <  #; #; #; < <2 2< <22 2 2 / 2K 2K 2K L L L L  #; #; #; < < < <  #; #; #; < <	2 	2< <	22 2 2 / 2K 2K 2K L L L L
 
 
 3^DD
 
 ED
   5~FF  GF*     "  % % %  	 	 	  
 /<<% % =<%$ EQC!:sQCj!	9sQCj!	QFQF+,kIIIyyy12!g			999-.	  79RSS  TS,* * *& <M M MN N
% %N N
% ' %> %> %> ? ?% %? ?%" ' %> %> %> ? ?0 0? ?0   /@@	 	 A@	 /@@
 
 A@
    *,EFF
 
 GF

 
 
  *,?@@- - A@-*      &(;!XRXe__5iHBHW,=,=>0-/C.0@xrx')A	6828E??CY$@  1?CC	" 	" DC	" 1?CC	" 	" DC	"; ; ;! ! !  /1NOOH H POH$5 5 5 /1NOO% % PO%% % % /1NOO	( 	( PO	(( ( ( /1NOO	) 	) PO	) /1NOO	) 	) PO	)
I 
I 
I
I 
I 
I 
I 
Ir   