
    `i`                       d dl mZ ddlmZmZmZmZmZmZ ddl	m
Z
 d dlZdCd	ZdCd
ZdCdZdDdZdCdZdCdZdCdZdDdZdCdZdDdZdDdZdCdZdDdZdDdZdDdZdCdZdCdZdCdZdDdZdDdZ dCdZ!dCd Z"dCd!Z#dDd"Z$dDd#Z%dDd$Z&dCd%Z'dCd&Z(dCd'Z)dDd(Z*dDd)Z+dCd*Z,dCd+Z-dCd,Z.dCd-Z/dDd.Z0dDd/Z1dCd0Z2dDd1Z3dDd2Z4dDd3Z5dCd4Z6dDd5Z7dCd6Z8dDd7Z9dDd8Z:dCd9Z;dCd:Z<dCd;Z=dCd<Z>dCd=Z?dCd>Z@dDd?ZAdCd@ZBdCdAZCdCdBZDdS )E    )annotations   )_boolean_dtypes_floating_dtypes_integer_dtypes_integer_or_boolean_dtypes_numeric_dtypes_result_type)ArrayNxr   returnc                   | j         t          vrt          d          t          j        t          j        | j                            S )zv
    Array API compatible wrapper for :py:func:`np.abs <numpy.abs>`.

    See its docstring for more information.
    z&Only numeric dtypes are allowed in abs)dtyper	   	TypeErrorr   _newnpabs_arrayr   s    y/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/cupy/array_api/_elementwise_functions.pyr   r      s<     	wo%%@AAA:bfQX&&'''    c                   | j         t          vrt          d          t          j        t          j        | j                            S )z|
    Array API compatible wrapper for :py:func:`np.arccos <numpy.arccos>`.

    See its docstring for more information.
    z.Only floating-point dtypes are allowed in acos)r   r   r   r   r   r   arccosr   r   s    r   acosr      =     	w&&&HIII:bi))***r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )z~
    Array API compatible wrapper for :py:func:`np.arccosh <numpy.arccosh>`.

    See its docstring for more information.
    z/Only floating-point dtypes are allowed in acosh)r   r   r   r   r   r   arccoshr   r   s    r   acoshr   (   =     	w&&&IJJJ:bj**+++r   x1x2c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )zv
    Array API compatible wrapper for :py:func:`np.add <numpy.add>`.

    See its docstring for more information.
    z&Only numeric dtypes are allowed in add)
r   r	   r   r
   r   _normalize_two_argsr   r   addr   r    r!   s     r   r$   r$   3   sv     
x&&"(/*I*I@AAA28$$$&r2..FB:bfRY	22333r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )z|
    Array API compatible wrapper for :py:func:`np.arcsin <numpy.arcsin>`.

    See its docstring for more information.
    z.Only floating-point dtypes are allowed in asin)r   r   r   r   r   r   arcsinr   r   s    r   asinr(   B   r   r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )z~
    Array API compatible wrapper for :py:func:`np.arcsinh <numpy.arcsinh>`.

    See its docstring for more information.
    z/Only floating-point dtypes are allowed in asinh)r   r   r   r   r   r   arcsinhr   r   s    r   asinhr+   N   r   r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )z|
    Array API compatible wrapper for :py:func:`np.arctan <numpy.arctan>`.

    See its docstring for more information.
    z.Only floating-point dtypes are allowed in atan)r   r   r   r   r   r   arctanr   r   s    r   atanr.   Z   r   r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z~
    Array API compatible wrapper for :py:func:`np.arctan2 <numpy.arctan2>`.

    See its docstring for more information.
    z/Only floating-point dtypes are allowed in atan2)
r   r   r   r
   r   r#   r   r   arctan2r   r%   s     r   atan2r1   f   sx     
x'''28;K+K+KIJJJ28$$$&r2..FB:bjBI66777r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )z~
    Array API compatible wrapper for :py:func:`np.arctanh <numpy.arctanh>`.

    See its docstring for more information.
    z/Only floating-point dtypes are allowed in atanh)r   r   r   r   r   r   arctanhr   r   s    r   atanhr4   u   r   r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z
    Array API compatible wrapper for :py:func:`np.bitwise_and <numpy.bitwise_and>`.

    See its docstring for more information.
    z9Only integer or boolean dtypes are allowed in bitwise_and)
r   r   r   r
   r   r#   r   r   bitwise_andr   r%   s     r   r6   r6      y     	2228555STTT28$$$&r2..FB:bnRY	::;;;r   c               v   | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t          j        |j        dk               rt          d          t	          j
        t          j        | j        |j                            S )z
    Array API compatible wrapper for :py:func:`np.left_shift <numpy.left_shift>`.

    See its docstring for more information.
    z5Only integer dtypes are allowed in bitwise_left_shiftr   z6bitwise_left_shift(x1, x2) is only defined for x2 >= 0)r   r   r   r
   r   r#   r   anyr   
ValueErrorr   
left_shiftr%   s     r   bitwise_left_shiftr<      s     
x&&"(/*I*IOPPP28$$$&r2..FB	vbi!m SQRRR:bmBIry99:::r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )z|
    Array API compatible wrapper for :py:func:`np.invert <numpy.invert>`.

    See its docstring for more information.
    z<Only integer or boolean dtypes are allowed in bitwise_invert)r   r   r   r   r   r   invertr   r   s    r   bitwise_invertr?      s=     	w000VWWW:bi))***r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z
    Array API compatible wrapper for :py:func:`np.bitwise_or <numpy.bitwise_or>`.

    See its docstring for more information.
    z8Only integer or boolean dtypes are allowed in bitwise_or)
r   r   r   r
   r   r#   r   r   
bitwise_orr   r%   s     r   rA   rA      sy     	2228555RSSS28$$$&r2..FB:bmBIry99:::r   c               v   | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t          j        |j        dk               rt          d          t	          j
        t          j        | j        |j                            S )z
    Array API compatible wrapper for :py:func:`np.right_shift <numpy.right_shift>`.

    See its docstring for more information.
    z6Only integer dtypes are allowed in bitwise_right_shiftr   z7bitwise_right_shift(x1, x2) is only defined for x2 >= 0)r   r   r   r
   r   r#   r   r9   r   r:   r   right_shiftr%   s     r   bitwise_right_shiftrD      s     
x&&"(/*I*IPQQQ28$$$&r2..FB	vbi!m TRSSS:bnRY	::;;;r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z
    Array API compatible wrapper for :py:func:`np.bitwise_xor <numpy.bitwise_xor>`.

    See its docstring for more information.
    z9Only integer or boolean dtypes are allowed in bitwise_xor)
r   r   r   r
   r   r#   r   r   bitwise_xorr   r%   s     r   rF   rF      r7   r   c                   | j         t          vrt          d          | j         t          v r| S t	          j        t          j        | j                            S )zx
    Array API compatible wrapper for :py:func:`np.ceil <numpy.ceil>`.

    See its docstring for more information.
    z'Only numeric dtypes are allowed in ceil)	r   r	   r   r   r   r   r   ceilr   r   s    r   rH   rH      sN     	wo%%ABBBw/!!:bgah''(((r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zv
    Array API compatible wrapper for :py:func:`np.cos <numpy.cos>`.

    See its docstring for more information.
    z-Only floating-point dtypes are allowed in cos)r   r   r   r   r   r   cosr   r   s    r   rJ   rJ      =     	w&&&GHHH:bfQX&&'''r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zx
    Array API compatible wrapper for :py:func:`np.cosh <numpy.cosh>`.

    See its docstring for more information.
    z.Only floating-point dtypes are allowed in cosh)r   r   r   r   r   r   coshr   r   s    r   rM   rM      =     	w&&&HIII:bgah''(((r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z|
    Array API compatible wrapper for :py:func:`np.divide <numpy.divide>`.

    See its docstring for more information.
    z0Only floating-point dtypes are allowed in divide)
r   r   r   r
   r   r#   r   r   divider   r%   s     r   rP   rP     sx     
x'''28;K+K+KJKKK28$$$&r2..FB:bi	2955666r   c                   t          | j        |j                   t          j        | |          \  } }t          j        t          j        | j        |j                            S )zz
    Array API compatible wrapper for :py:func:`np.equal <numpy.equal>`.

    See its docstring for more information.
    )r
   r   r   r#   r   r   equalr   r%   s     r   rR   rR     sN     28$$$&r2..FB:bhry")44555r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zv
    Array API compatible wrapper for :py:func:`np.exp <numpy.exp>`.

    See its docstring for more information.
    z-Only floating-point dtypes are allowed in exp)r   r   r   r   r   r   expr   r   s    r   rT   rT   !  rK   r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zz
    Array API compatible wrapper for :py:func:`np.expm1 <numpy.expm1>`.

    See its docstring for more information.
    z/Only floating-point dtypes are allowed in expm1)r   r   r   r   r   r   expm1r   r   s    r   rV   rV   ,  =     	w&&&IJJJ:bhqx(()))r   c                   | j         t          vrt          d          | j         t          v r| S t	          j        t          j        | j                            S )zz
    Array API compatible wrapper for :py:func:`np.floor <numpy.floor>`.

    See its docstring for more information.
    z(Only numeric dtypes are allowed in floor)	r   r	   r   r   r   r   r   floorr   r   s    r   rY   rY   7  N     	wo%%BCCCw/!!:bhqx(()))r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z
    Array API compatible wrapper for :py:func:`np.floor_divide <numpy.floor_divide>`.

    See its docstring for more information.
    z/Only numeric dtypes are allowed in floor_divide)
r   r	   r   r
   r   r#   r   r   floor_divider   r%   s     r   r\   r\   E  sv     
x&&"(/*I*IIJJJ28$$$&r2..FB:bobi;;<<<r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z~
    Array API compatible wrapper for :py:func:`np.greater <numpy.greater>`.

    See its docstring for more information.
    z*Only numeric dtypes are allowed in greater)
r   r	   r   r
   r   r#   r   r   greaterr   r%   s     r   r^   r^   S  sv     
x&&"(/*I*IDEEE28$$$&r2..FB:bjBI66777r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z
    Array API compatible wrapper for :py:func:`np.greater_equal <numpy.greater_equal>`.

    See its docstring for more information.
    z0Only numeric dtypes are allowed in greater_equal)
r   r	   r   r
   r   r#   r   r   greater_equalr   r%   s     r   r`   r`   a  sw     
x&&"(/*I*IJKKK28$$$&r2..FB:b&ry")<<===r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )z
    Array API compatible wrapper for :py:func:`np.isfinite <numpy.isfinite>`.

    See its docstring for more information.
    z+Only numeric dtypes are allowed in isfinite)r   r	   r   r   r   r   isfiniter   r   s    r   rb   rb   o  <     	wo%%EFFF:bk!(++,,,r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zz
    Array API compatible wrapper for :py:func:`np.isinf <numpy.isinf>`.

    See its docstring for more information.
    z(Only numeric dtypes are allowed in isinf)r   r	   r   r   r   r   isinfr   r   s    r   re   re   z  <     	wo%%BCCC:bhqx(()))r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zz
    Array API compatible wrapper for :py:func:`np.isnan <numpy.isnan>`.

    See its docstring for more information.
    z(Only numeric dtypes are allowed in isnan)r   r	   r   r   r   r   isnanr   r   s    r   rh   rh     rf   r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )zx
    Array API compatible wrapper for :py:func:`np.less <numpy.less>`.

    See its docstring for more information.
    z'Only numeric dtypes are allowed in less)
r   r	   r   r
   r   r#   r   r   lessr   r%   s     r   rj   rj     sv     
x&&"(/*I*IABBB28$$$&r2..FB:bgbi33444r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z
    Array API compatible wrapper for :py:func:`np.less_equal <numpy.less_equal>`.

    See its docstring for more information.
    z-Only numeric dtypes are allowed in less_equal)
r   r	   r   r
   r   r#   r   r   
less_equalr   r%   s     r   rl   rl     v     
x&&"(/*I*IGHHH28$$$&r2..FB:bmBIry99:::r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zv
    Array API compatible wrapper for :py:func:`np.log <numpy.log>`.

    See its docstring for more information.
    z-Only floating-point dtypes are allowed in log)r   r   r   r   r   r   logr   r   s    r   ro   ro     rK   r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zz
    Array API compatible wrapper for :py:func:`np.log1p <numpy.log1p>`.

    See its docstring for more information.
    z/Only floating-point dtypes are allowed in log1p)r   r   r   r   r   r   log1pr   r   s    r   rq   rq     rW   r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zx
    Array API compatible wrapper for :py:func:`np.log2 <numpy.log2>`.

    See its docstring for more information.
    z.Only floating-point dtypes are allowed in log2)r   r   r   r   r   r   log2r   r   s    r   rs   rs     rN   r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zz
    Array API compatible wrapper for :py:func:`np.log10 <numpy.log10>`.

    See its docstring for more information.
    z/Only floating-point dtypes are allowed in log10)r   r   r   r   r   r   log10r   r   s    r   ru   ru     rW   r   c                   | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z
    Array API compatible wrapper for :py:func:`np.logaddexp <numpy.logaddexp>`.

    See its docstring for more information.
    z3Only floating-point dtypes are allowed in logaddexp)
r   r   r   r
   r   r#   r   r   	logaddexpr   r%   s     r   rw   rw     sx     
x'''28;K+K+KMNNN28$$$&r2..FB:bl29bi88999r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z
    Array API compatible wrapper for :py:func:`np.logical_and <numpy.logical_and>`.

    See its docstring for more information.
    z.Only boolean dtypes are allowed in logical_and)
r   r   r   r
   r   r#   r   r   logical_andr   r%   s     r   ry   ry     v     
x&&"(/*I*IHIII28$$$&r2..FB:bnRY	::;;;r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )z
    Array API compatible wrapper for :py:func:`np.logical_not <numpy.logical_not>`.

    See its docstring for more information.
    z.Only boolean dtypes are allowed in logical_not)r   r   r   r   r   r   logical_notr   r   s    r   r|   r|     s<     	wo%%HIII:bnQX..///r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z
    Array API compatible wrapper for :py:func:`np.logical_or <numpy.logical_or>`.

    See its docstring for more information.
    z-Only boolean dtypes are allowed in logical_or)
r   r   r   r
   r   r#   r   r   
logical_orr   r%   s     r   r~   r~     rm   r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z
    Array API compatible wrapper for :py:func:`np.logical_xor <numpy.logical_xor>`.

    See its docstring for more information.
    z.Only boolean dtypes are allowed in logical_xor)
r   r   r   r
   r   r#   r   r   logical_xorr   r%   s     r   r   r     rz   r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z
    Array API compatible wrapper for :py:func:`np.multiply <numpy.multiply>`.

    See its docstring for more information.
    z+Only numeric dtypes are allowed in multiply)
r   r	   r   r
   r   r#   r   r   multiplyr   r%   s     r   r   r     v     
x&&"(/*I*IEFFF28$$$&r2..FB:bk")RY77888r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )z
    Array API compatible wrapper for :py:func:`np.negative <numpy.negative>`.

    See its docstring for more information.
    z+Only numeric dtypes are allowed in negative)r   r	   r   r   r   r   negativer   r   s    r   r   r   )  rc   r   c                   t          | j        |j                   t          j        | |          \  } }t          j        t          j        | j        |j                            S )z
    Array API compatible wrapper for :py:func:`np.not_equal <numpy.not_equal>`.

    See its docstring for more information.
    )r
   r   r   r#   r   r   	not_equalr   r%   s     r   r   r   4  sN     28$$$&r2..FB:bl29bi88999r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )z
    Array API compatible wrapper for :py:func:`np.positive <numpy.positive>`.

    See its docstring for more information.
    z+Only numeric dtypes are allowed in positive)r   r	   r   r   r   r   positiver   r   s    r   r   r   @  rc   r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )zz
    Array API compatible wrapper for :py:func:`np.power <numpy.power>`.

    See its docstring for more information.
    z&Only numeric dtypes are allowed in pow)
r   r	   r   r
   r   r#   r   r   powerr   r%   s     r   powr   L  sv     
x&&"(/*I*I@AAA28$$$&r2..FB:bhry")44555r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z
    Array API compatible wrapper for :py:func:`np.remainder <numpy.remainder>`.

    See its docstring for more information.
    z,Only numeric dtypes are allowed in remainder)
r   r	   r   r
   r   r#   r   r   	remainderr   r%   s     r   r   r   Z  sv     
x&&"(/*I*IFGGG28$$$&r2..FB:bl29bi88999r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zz
    Array API compatible wrapper for :py:func:`np.round <numpy.round>`.

    See its docstring for more information.
    z(Only numeric dtypes are allowed in round)r   r	   r   r   r   r   roundr   r   s    r   r   r   h  rf   r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zx
    Array API compatible wrapper for :py:func:`np.sign <numpy.sign>`.

    See its docstring for more information.
    z'Only numeric dtypes are allowed in sign)r   r	   r   r   r   r   signr   r   s    r   r   r   s  s<     	wo%%ABBB:bgah''(((r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zv
    Array API compatible wrapper for :py:func:`np.sin <numpy.sin>`.

    See its docstring for more information.
    z-Only floating-point dtypes are allowed in sin)r   r   r   r   r   r   sinr   r   s    r   r   r   ~  rK   r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zx
    Array API compatible wrapper for :py:func:`np.sinh <numpy.sinh>`.

    See its docstring for more information.
    z.Only floating-point dtypes are allowed in sinh)r   r   r   r   r   r   sinhr   r   s    r   r   r     rN   r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )z|
    Array API compatible wrapper for :py:func:`np.square <numpy.square>`.

    See its docstring for more information.
    z)Only numeric dtypes are allowed in square)r   r	   r   r   r   r   squarer   r   s    r   r   r     s<     	wo%%CDDD:bi))***r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zx
    Array API compatible wrapper for :py:func:`np.sqrt <numpy.sqrt>`.

    See its docstring for more information.
    z.Only floating-point dtypes are allowed in sqrt)r   r   r   r   r   r   sqrtr   r   s    r   r   r     rN   r   c                  | j         t          vs|j         t          vrt          d          t          | j         |j                    t	          j        | |          \  } }t	          j        t          j        | j	        |j	                            S )z
    Array API compatible wrapper for :py:func:`np.subtract <numpy.subtract>`.

    See its docstring for more information.
    z+Only numeric dtypes are allowed in subtract)
r   r	   r   r
   r   r#   r   r   subtractr   r%   s     r   r   r     r   r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zv
    Array API compatible wrapper for :py:func:`np.tan <numpy.tan>`.

    See its docstring for more information.
    z-Only floating-point dtypes are allowed in tan)r   r   r   r   r   r   tanr   r   s    r   r   r     rK   r   c                   | j         t          vrt          d          t          j        t          j        | j                            S )zx
    Array API compatible wrapper for :py:func:`np.tanh <numpy.tanh>`.

    See its docstring for more information.
    z.Only floating-point dtypes are allowed in tanh)r   r   r   r   r   r   tanhr   r   s    r   r   r     rN   r   c                   | j         t          vrt          d          | j         t          v r| S t	          j        t          j        | j                            S )zz
    Array API compatible wrapper for :py:func:`np.trunc <numpy.trunc>`.

    See its docstring for more information.
    z(Only numeric dtypes are allowed in trunc)	r   r	   r   r   r   r   r   truncr   r   s    r   r   r     rZ   r   )r   r   r   r   )r    r   r!   r   r   r   )E
__future__r   _dtypesr   r   r   r   r	   r
   _array_objectr   cupyr   r   r   r   r$   r(   r+   r.   r1   r4   r6   r<   r?   rA   rD   rF   rH   rJ   rM   rP   rR   rT   rV   rY   r\   r^   r`   rb   re   rh   rj   rl   ro   rq   rs   ru   rw   ry   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   <module>r      s   " " " " " "                !              ( ( ( (+ + + +, , , ,4 4 4 4+ + + +, , , ,+ + + +8 8 8 8, , , ,< < < <$; ; ; ;$+ + + +; ; ; ;$< < < <"< < < <") ) ) )( ( ( () ) ) )7 7 7 7	6 	6 	6 	6( ( ( (* * * ** * * *= = = =8 8 8 8> > > >- - - -* * * ** * * *5 5 5 5; ; ; ;( ( ( (* * * *) ) ) )* * * *: : : :< < < <0 0 0 0; ; ; ;< < < <9 9 9 9- - - -	: 	: 	: 	:- - - -6 6 6 6: : : :* * * *) ) ) )( ( ( () ) ) )+ + + +) ) ) )9 9 9 9( ( ( () ) ) )* * * * * *r   