Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_complex.cpython-311.opt-1.pyc
�

�Ke������ddlZddlZddlmZddlmZmZddlmZddlm	Z	m
Z
mZddlZe
d��Ze
d��ZdZGd	�d
ej��Zedkrej��dSdS)�N)�support)�VALID_UNDERSCORE_LITERALS�INVALID_UNDERSCORE_LITERALS)�random)�atan2�isnan�copysign�inf�nan))��?�?�)r�)rr)��?r
)�r
c�z�eZdZd�Zd%d�Zd�Zd%d�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zejd���Zd�Zd�Zd�Zd�Zejd���Zd�Z d�Z!ejd���Z"ejd ���Z#ejd!���Z$ejd"���Z%d#�Z&d$S)&�ComplexTestc��t|t��r�t|t��rXtj�||j|j��tj�||j|j��dStj�||j|��tj�||jd��dSt|t��rNtj�|||j��tj�|d|j��dStj�|||��dS)Nr)�
isinstance�complex�unittest�TestCase�assertAlmostEqual�real�imag��self�a�bs   �;/usr/local/apps/python3/lib/python3.11/test/test_complex.pyrzComplexTest.assertAlmostEquals ���a��!�!�	@��!�W�%�%�
F��!�3�3�D�!�&�!�&�I�I�I��!�3�3�D�!�&�!�&�I�I�I�I�I��!�3�3�D�!�&�!�D�D�D��!�3�3�D�!�&�"�E�E�E�E�E��!�W�%�%�
@��!�3�3�D�!�Q�V�D�D�D��!�3�3�D�"�a�f�E�E�E�E�E��!�3�3�D�!�Q�?�?�?�?�?���&�.>c�
�t|��t|��kr||}}|dkrt|��|kS|dkrt|��|kS|�t||z
|z��|k��dS)z+Return true iff floats x and y "are close".rN)�abs�
assertTrue�r�x�y�epss    r�assertCloseAbszComplexTest.assertCloseAbs(s���q�6�6�C��F�F�?�?��a�q�A���6�6��q�6�6�C�<����6�6��q�6�6�C�<������Q�q�S�!�G���s�*�+�+�+�+�+r c�H�d}t|��st|��r!t|��rt|��rdSn7||kr1|dkrdStd|��td|��krdS|dz
}|�|�||����dS)a#assert that floats x and y are identical, in the sense that:
        (1) both x and y are nans, or
        (2) both x and y are infinities, with the same sign, or
        (3) both x and y are zeros, with the same sign, or
        (4) x and y are both finite and nonzero, and x == y

        z&floats {!r} and {!r} are not identicalNrrz: zeros have different signs)rr	�fail�format)rr&r'�msgs    r�assertFloatsAreIdenticalz$ComplexTest.assertFloatsAreIdentical4s���7����8�8�
	6�u�Q�x�x�
	6��Q�x�x�
�E�!�H�H�
����
�!�V�V��C�x�x����#�q�!�!�X�c�1�%5�%5�5�5����5�5���	�	�#�*�*�Q��"�"�#�#�#�#�#r c��|�|j|j|��|�|j|j|��dS)z.Return true iff complexes x and y "are close".N)r)rrr%s    r�assertClosezComplexTest.assertCloseKs@�����A�F�A�F�C�0�0�0����A�F�A�F�C�0�0�0�0�0r c�D�||z}|dkrF||z}|�||��|�|��}|�||��|dkrH||z}|�||��|�|��}|�||��dSdS)z8Compute complex z=x*y, and check that z/x==y and z/y==x.rN)r0�__truediv__)rr&r'�z�qs     r�	check_divzComplexTest.check_divPs���
��E����6�6��A��A����Q��"�"�"��
�
�a� � �A����Q��"�"�"���6�6��A��A����Q��"�"�"��
�
�a� � �A����Q��"�"�"�"�"�	�6r c	���d�tdd��D����fd��D��}|D]}|D]}|�||����|�tdd��d��|�tdd��d��td��D]d}|�tt��t����tt��t�������e|�t�d	d
��d��dtftdfttffD]t\}}tdd��t||��z}|�t|j	����|�t|j
�����udS)
Nc�,�g|]}t|����S�)�float)�.0�is  r�
<listcomp>z,ComplexTest.test_truediv.<locals>.<listcomp>_s��6�6�6�A�u�Q�x�x�6�6�6r ����c�:��g|]}�D]}t||�����Sr8)r)r:r&r'�simple_reals   �rr<z,ComplexTest.test_truediv.<locals>.<listcomp>`s.���R�R�R�A�k�R�R��'�!�Q�-�-�R�R�R�Rr gZb���ti��?�N�~h�d�@ry�?�r)�ranger5rrrr2�NANr$rrr)	r�simple_complexr&r'r;�
denom_real�
denom_imagr3r@s	        @r�test_truedivzComplexTest.test_truediv^s����6�6��r�1���6�6�6��R�R�R�R��R�R�R���	%�	%�A�#�
%�
%�����q�!�$�$�$�$�
%�
	
���w�u�e�,�,�d�3�3�3����w�v�v�.�.��5�5�5��s���	8�	8�A��N�N�7�6�8�8�V�X�X�6�6�"�6�8�8�V�X�X�6�6�
8�
8�
8�
8�	
���w�2�2�4��>�>��E�E�E�()�3�x�#�q��C��:�&F�	+�	+�"�J�
���1�
�
��
�J� ?� ?�?�A��O�O�E�!�&�M�M�*�*�*��O�O�E�!�&�M�M�*�*�*�*�	+�	+r c��tD]<\}}|�t��5||zddd��n#1swxYwY�=dS�N)�
ZERO_DIVISION�assertRaises�ZeroDivisionErrorrs   r�test_truediv_zero_divisionz&ComplexTest.test_truediv_zero_divisionvs���!�	�	�D�A�q��"�"�#4�5�5�
�
��A���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	�	�
�9�=	�=	c�.�|�t��5ddzddd��n#1swxYwY|�t��5ddzddd��n#1swxYwY|�t��5ddzddd��n#1swxYwY|�t��5ddzddd��n#1swxYwY|�t��5ddzddd��dS#1swxYwYdS�NrrArr�rN�	TypeError�rs r�
test_floordivzComplexTest.test_floordiv{sM��
�
�
�y�
)�
)�	�	�
�t���	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	�
�c�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	�
�a�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	��D�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	�
�$�K�K�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	�T�-�1�1�A$�$A(�+A(�	B�B�"B�C�C�C�7D
�
D�Dc��tD]<\}}|�t��5||zddd��n#1swxYwY�=dSrL�rMrNrUrs   r�test_floordiv_zero_divisionz'ComplexTest.test_floordiv_zero_division�s���!�	�	�D�A�q��"�"�9�-�-�
�
��Q���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	�	rQc	�V�|�t�dddz��d��|�t�dd��t��|�t�dd��d��|�t�dd��d��|�t�dd��d��|�t�dd��d��t
dd��D]�}|dz}|�t�|d	z|��d��|�t�|d	z|��d��|�t�t||��|��d��|�t�t||��|��d����|�t�dd��t��|�t�dd��t��|�t�dd��t��|�t�	dd��t��|�
ttj
dd��|�
ttjdd��|�
ttjdd��|�
ttjdd��|�tjdd��d��|�tjdd��d��|�tjdd��d��|�tjdd��d��dS)
Nrri'FTy@@rCgY@r
)�assertIsr�__eq__�__lt__�NotImplemented�__ne__rE�__le__�__gt__�__ge__rNrU�operator�lt�le�gt�ge�eq�ne)rr;�fs   r�test_richcomparezComplexTest.test_richcompare�s���
�
�g�n�n�T�1�e�8�4�4�e�<�<�<��
�
�g�n�n�T�4�0�0�.�A�A�A��
�
�g�n�n�T�4�0�0�$�7�7�7��
�
�g�n�n�T�4�0�0�%�8�8�8��
�
�g�n�n�T�4�0�0�%�8�8�8��
�
�g�n�n�T�4�0�0�$�7�7�7��q�#���	B�	B�A��E�	�A��M�M�'�.�.��2��q�1�1�4�8�8�8��M�M�'�.�.��2��q�1�1�5�9�9�9��M�M�'�.�.���A����:�:�E�B�B�B��M�M�'�.�.���A����:�:�D�A�A�A�A��
�
�g�n�n�T�4�0�0�.�A�A�A��
�
�g�n�n�T�4�0�0�.�A�A�A��
�
�g�n�n�T�4�0�0�.�A�A�A��
�
�g�n�n�T�4�0�0�.�A�A�A����)�X�[�$��=�=�=����)�X�[�$��=�=�=����)�X�[�$��=�=�=����)�X�[�$��=�=�=��
�
�h�k�$��-�-�t�4�4�4��
�
�h�k�$��-�-�u�5�5�5��
�
�h�k�$��-�-�u�5�5�5��
�
�h�k�$��-�-�t�4�4�4�4�4r c	�$���d�fd�	}tdd��D]Z}d|z}d|z�|d|ztdd���fd���|d|ztdd��d	�t|�����[|d
tdd��d
���dS)Nrc���|D]�}||z}t||��}��t�||��||������t�||��||������dSrL)rr]r^ra)�n�deltas�is_equalr�deltar;r3rs       �r�checkz6ComplexTest.test_richcompare_boundaries.<locals>.check�s�����
I�
I����I���A�t�$�$���
�
�g�n�n�Q��2�2�H�H�U�O�O�D�D�D��
�
�g�n�n�Q��2�2������4G�H�H�H�H�	
I�
Ir r�
�4��ec���|�zdkS)Nrr8)rs�mults �r�<lambda>z9ComplexTest.test_richcompare_boundaries.<locals>.<lambda>�s�������9J�r c��dS)NFr8�rss rr{z9ComplexTest.test_richcompare_boundaries.<locals>.<lambda>�s���r li����rc��dS)NTr8r}s rr{z9ComplexTest.test_richcompare_boundaries.<locals>.<lambda>�s��T�r )r)rEr9)rrtr;�powrzs`   @r�test_richcompare_boundariesz'ComplexTest.test_richcompare_boundaries�s�����	I�	I�	I�	I�	I�	I��q�"���	J�	J�A��q�&�C���6�D��E�!�s�(�E�!�S�M�M�+J�+J�+J�+J�K�K�K��E�!�s�(�E�!�S�M�M�+>�+>��a���I�I�I�I�
��g�u�T�1�~�~�'9�'9�:�:�:�:�:r c�.�|�t��5ddzddd��n#1swxYwY|�t��5ddzddd��n#1swxYwY|�t��5ddzddd��n#1swxYwY|�t��5ddzddd��n#1swxYwY|�t��5ddzddd��dS#1swxYwYdSrSrTrVs r�test_modzComplexTest.test_mod�sK��
�
�
�y�
)�
)�	�	�
�d�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	�
�S�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	�
�Q�J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	��4�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	�
��J�J�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rXc��tD]<\}}|�t��5||zddd��n#1swxYwY�=dSrLrZrs   r�test_mod_zero_divisionz"ComplexTest.test_mod_zero_division�s���!�	�	�D�A�q��"�"�9�-�-�
�
��A���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	�	rQc�Z�|�ttdd��|�ttdd��|�ttdd��|�ttdd��|�ttdd��dSrS)rNrU�divmodrVs r�test_divmodzComplexTest.test_divmod�s������)�V�T�4�8�8�8����)�V�T�3�7�7�7����)�V�T�1�5�5�5����)�V�S�$�7�7�7����)�V�Q��5�5�5�5�5r c�d�tD]'\}}|�tt||���(dSrL)rMrNrUr�rs   r�test_divmod_zero_divisionz%ComplexTest.test_divmod_zero_division�s<��!�	7�	7�D�A�q����i���A�6�6�6�6�	7�	7r c��|�tdd��d��|�tdd��d��|�ttdd��|�tdd��d��|�tdd	��d
��|�ttddd��|�t
tdd��d}|�|dzd
��|�|dzdzd
��|�d
d
��|�d
d
��	d|z|�d��n#t$rYnwxYw	ddz|�d��n#t$rYnwxYw|�|dz|dz��|�|dz|dz��|�|dz|dz��|�d
d
��d}|�tt||d��tj	tj	d
ztj	d
z
tj	tj	d
ztj	d
zf}|D]t}|D]o}|�
||���5t||��}	||zn#t
$rYnwxYw	||zn#t
$rYnwxYwddd��n#1swxYwY�p�udS)Nrr
rrDr��?���y���ryZb���ti�?y�p=
ף
@���Q�@rAz,should fail 0.0 to negative or complex powery@��ii�������yffffff@ffffff@r�rr)rrrNrO�
ValueError�
OverflowError�assertEqualr+�sys�maxsize�subTestr)rrr�valuesrr�cs       r�test_powzComplexTest.test_pow�s������s�4�����4�4�4����s�4�����4�4�4����+�S�$��;�;�;����s�2�r�{�{�D�1�1�1����s�2�s�|�|�Q�/�/�/����*�c�4��t�<�<�<����-��h��A�A�A�������b��!�$�$�$�����b����a�(�(�(�����1�%�%�%�����!�$�$�$�	F��!�G�G�
�I�I�D�E�E�E�E��!�	�	�	��D�	����
	F��4�L�L�
�I�I�D�E�E�E�E��!�	�	�	��D�	����	
����c��1��8�,�,�,�����d��A��I�.�.�.�����c��1��8�,�,�,�����A�&�&�&������*�c�1�a��3�3�3��+�s�{�1�}�c�k�!�m��;�,����Q�����Q��@���	�	�D��

�

���\�\�t�$�\�7�7�	�	���d�+�+�A���T�	�	�	��(������������Q�����(����������	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��

�	�	s~�E7�7
F�F�F#�#
F0�/F0�4K?�K�K?�
K	�K?�K	�K?�K#�"K?�#
K0	�-K?�/K0	�0K?�?L�Lc	��tdd��tdd��tdt��ttd��g}gd�}|D]�}|D]�}|�||���5	||z}n#t$rd	}YnwxYw	|t	|��z}n#t$rd	}YnwxYw	|t|��z}n#t$rd	}YnwxYw|�t
|��t
|����|�t
|��t
|����ddd��n#1swxYwY����dS)
Ng@g(@g\�n��Tg;%_��n�Tg�r)i��r=������r�rrrw���)�value�exponent�overflow)r�INFr�r�r9r��str)rr��	exponentsr�r��int_pow�	float_pow�complex_pows        r�%test_pow_with_small_integer_exponentsz1ComplexTest.test_pow_with_small_integer_exponentss���
�C�����G�X�&�&��D�#����C����	
��=�<�<�	��	E�	E�E�%�
E�
E���\�\���\�A�A�E�E�-�"'��/����(�-�-�-�",����-����/�$)�5��?�?�$:�	�	��(�/�/�/�$.�	�	�	�/����1�&+�W�X�->�->�&>����(�1�1�1�&0����1�����$�$�S��^�^�S��\�\�B�B�B��$�$�S��%5�%5�s�7�|�|�D�D�D�E�E�E�E�E�E�E�E�E�E�E����E�E�E�E��
E�	E�	Es�,D>�.A4�3D>�4B	�D>�B	�D>�B�D>�B)	�&D>�(B)	�)D>�-C�?D>�C	�D>�C	�A#D>�>E�Ec���td��D]C}|�tt��dzt��dz�����D|�tdd����dS)NrCg���ư>r)rEr$rr)rr;s  r�test_boolcontextzComplexTest.test_boolcontext,sm���s���	G�	G�A��O�O�G�F�H�H�t�O�V�X�X��_�E�E�F�F�F�F����G�C��-�-�-�.�.�.�.�.r c�r�|�tdd�����d��dS)Ng333333@g������#@y333333@������#�)r0r�	conjugaterVs r�test_conjugatezComplexTest.test_conjugate1s4�������c�*�*�4�4�6�6��A�A�A�A�Ar c	� ��Gd�d��}|�t|d����d��|�tt|d����|�tti��|�tt|d����|�tt|d����|�td��d��|�td��d��|�td	��d��|�td��d��|�td��d��|�tdd��d��|�tdd��d��|�tdd	��d��|�tdd��d��|�tdd��d��|�tdd	��d��|�td
d��d��|�td
d��d��|�td
d	��d��|�td��d��|�td��d��|�td
��d��|�td
��d��|�tdd��d��|�tdd��d��|�td
d��d��|�td
d��d��|�tdd��d��|�tdd��d��|�tdd��d��|�tdd��d��|�td��d��|�td��d��|�t��d��|�td��d��|�td��d��|�td��d��|�td��d��|�td��d ��|�td!��d"��|�td#��d$��|�td%��d ��|�td&��d��|�td'��d��|�td(��d��|�td)��d*��|�td+��d��|�td,��d��|�td-��d��Gd.�d/t��}|�t|d0����d0��|�td1d2�3��d4��|�td4�5��d4��|�td4d2�3��d6��|�tdd7�3��d8��d9�}|�|td
d��j��|d����|�|td
d:��j��|d:����|�|tdd
��j��|d����|�|td:d
��j��|d:����d }|�t|��|u��~|�ttdd��|�ttdd��|�ttd;��|�ttd<��|�ttd<��|�ttd<��|�ttd=��|�ttd��|�td>td��|�ttd?��|�ttd@��|�ttddA��|�ttddB��|�ttddA��|�ttdC��|�ttdD��|�ttdE��|�ttdF��|�ttdG��|�ttdH��|�ttdI��|�ttdJ��|�ttdK��|�ttdL��|�ttdM��|�ttdN��|�tdOtddPid��|�tdQtdddPi��|�ttdR��|�ttdS��|�ttdT��|�ttdU����t��|�tdV��d0��|�ttdW��GdX�dYt���G�fdZ�d[��}|��t|����Gd\�d]��}|�t|d^����dB��|�t|d_��|d`���3��d4��|�tt|d����Gda�db��}|�t|dB����dc��|�tdd|dB����de��|�tt|dPdfz����|�ttdd|dPdfz����Gdg�dh��}|�tt|����|�ttdd|����Gdi�djt��}	Gdk�dlt��}
Gdm�d/t��}|�t|	d����dn��|�t ��5|�t|
d����do��ddd��n#1swxYwY|�tt|d����dS)pNc��eZdZd�Zd�ZdS)�(ComplexTest.test_constructor.<locals>.NSc��||_dSrL�r��rr�s  r�__init__z1ComplexTest.test_constructor.<locals>.NS.__init__6s��E�t�z�z�zr c��|jSrLr�rVs r�__complex__z4ComplexTest.test_constructor.<locals>.NS.__complex__7s	��$�*�#4r N)�__name__�
__module__�__qualname__r�r�r8r r�NSr�5s"������9�9�9�4�4�4�4�4r r�y�?$@g�?rz1+10jruy$@g$@ry��Q�	@g��Q�	@i:y�s@r
rry��Q�	@y��Q�	��1rA�1jr�z-1r�z+1z(1+2j)��?@z
(1.3+2.2j)y�������?������@z3.14+1Jy��Q�	@�?z
 ( +3.14-6J )y��Q�	@�z ( +3.14-J )y��Q�	@�z ( +3.14+j )�Jz( j )z+Jz( -j)y��z1e-500z-1e-500jz-1e-500+1e-500jc��eZdZdS)�.ComplexTest.test_constructor.<locals>.complex2N�r�r�r�r8r r�complex2r�ks�������r r�r��r�y1@7@)ry1@G@�@@y�@c�"�t|d��S)z7Function that produces different results for 0. and -0.��)r)r&s r�split_zerosz1ComplexTest.test_constructor.<locals>.split_zerosus����C�=�=� r ��z1+1jjy@@�znot 'NoneType'�z39�2�*z1+z1+1j+1jz--z(1+2jz1+2j)z1+(2j)z	(1+2j)123r&z1j+2�1e1ejz1e++1ejz)1+2j(z7first argument must be a string or a number, not 'dict'rwz,second argument must be a number, not 'dict'z1..1jz1.11.1jz1e1.1j��11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111u ( 1+1j ) uこんにちはc��eZdZdS)�-ComplexTest.test_constructor.<locals>.EvilExcNr�r8r r�EvilExcr����������Dr r�c���eZdZ�fd�ZdS)�1ComplexTest.test_constructor.<locals>.evilcomplexc�����rLr8)rr�s �rr�z=ComplexTest.test_constructor.<locals>.evilcomplex.__complex__�s����
r N)r�r�r�r�)r�s�r�evilcomplexr��s.�������
�
�
�
�
�
�
r r�c��eZdZd�Zd�ZdS)�,ComplexTest.test_constructor.<locals>.float2c��||_dSrLr�r�s  rr�z5ComplexTest.test_constructor.<locals>.float2.__init__��
��"��
�
�
r c��|jSrLr�rVs r�	__float__z6ComplexTest.test_constructor.<locals>.float2.__float__��
���z�!r N)r�r�r�r�r�r8r r�float2r���2������
#�
#�
#�
"�
"�
"�
"�
"r r�gE@g1@g7@c��eZdZd�Zd�ZdS)�-ComplexTest.test_constructor.<locals>.MyIndexc��||_dSrLr�r�s  rr�z6ComplexTest.test_constructor.<locals>.MyIndex.__init__�r�r c��|jSrLr�rVs r�	__index__z7ComplexTest.test_constructor.<locals>.MyIndex.__index__�r�r N)r�r�r�r�r�r8r r�MyIndexr��r�r r�yE@�{y�^@E@i�c��eZdZd�ZdS)�+ComplexTest.test_constructor.<locals>.MyIntc��dS)Nr�r8rVs r�__int__z3ComplexTest.test_constructor.<locals>.MyInt.__int__�s���rr N)r�r�r�r�r8r r�MyIntr��s#������
�
�
�
�
r r�c��eZdZdZd�ZdS)�.ComplexTest.test_constructor.<locals>.complex0z:Test usage of __complex__() when inheriting from 'complex'c��dS)N�E@r8rVs rr�z:ComplexTest.test_constructor.<locals>.complex0.__complex__�s���sr N�r�r�r��__doc__r�r8r r�complex0r��s)������L�L�
�
�
�
�
r r�c� �eZdZdZdd�Zd�ZdS)�.ComplexTest.test_constructor.<locals>.complex1z3Test usage of __complex__() with a __new__() methodr
c�>�t�|d|z��S)Nrw)r�__new__r�s  rr�z6ComplexTest.test_constructor.<locals>.complex1.__new__�s�����t�Q�u�W�5�5�5r c��|SrLr8rVs rr�z:ComplexTest.test_constructor.<locals>.complex1.__complex__�s���r N)r
)r�r�r�r�r�r�r8r r�complex1r��s=������E�E�
6�
6�
6�
6�
�
�
�
�
r r�c��eZdZdZd�ZdS)r�z`Make sure that __complex__() calls fail if anything other than a
            complex is returnedc��dSrLr8rVs rr�z:ComplexTest.test_constructor.<locals>.complex2.__complex__�s���tr Nr�r8r rr�z.ComplexTest.test_constructor.<locals>.complex2�s-������
#�
#�
�
�
�
�
r r��@)r�rrNrUrrrr$r��intr9�assertRaisesRegex�type�	Exceptionr��assertWarns�DeprecationWarning)rr�r�r�r�r�r�r�r�r�r�r�s           @r�test_constructorzComplexTest.test_constructor4s����	5�	5�	5�	5�	5�	5�	5�	5�	
������E���+�+�U�3�3�3����)�W�b�b��h�h�7�7�7����)�W�b�1�1�1����)�W�b�b��g�g�6�6�6����)�W�b�b��e�e�4�4�4����w�w�/�/��7�7�7����w�r�{�{�E�2�2�2����w�t�}�}�e�4�4�4����w�r�{�{�E�2�2�2����w�u�~�~�u�5�5�5����w�q��}�}�e�4�4�4����w�q��}�}�e�4�4�4����w�q�����6�6�6����w�q��}�}�e�4�4�4����w�q��}�}�e�4�4�4����w�q�����6�6�6����w�s�2����6�6�6����w�s�2����6�6�6����w�s�4�0�0�%�8�8�8����w�w�/�/��9�9�9����w�t�}�}�g�6�6�6����w�s�|�|�X�6�6�6����w�s�|�|�X�6�6�6����w�w��3�3�W�=�=�=����w�t�S�1�1�7�;�;�;����w�s�A����9�9�9����w�s�A����9�9�9����w�r�5�1�1�8�<�<�<����w�s�E�2�2�H�=�=�=����w�r�4�0�0�%�8�8�8����w�s�D�1�1�5�9�9�9����w�s�|�|�T�2�2�2����w�t�}�}�b�1�1�1����w�y�y�1�-�-�-����w�t�}�}�b�1�1�1����w�t�}�}�b�1�1�1����w�x�0�0�$�7�7�7����w�|�4�4�h�?�?�?����w�y�1�1�7�;�;�;����w��7�7��A�A�A����w�~�6�6��@�@�@����w�~�6�6��@�@�@����w�s�|�|�R�0�0�0����w�w�/�/��4�4�4����w�t�}�}�b�1�1�1����w�w�/�/��5�5�5����w�x�0�0�*�=�=�=����w�z�2�2�J�?�?�?����w�'8�9�9�;�G�G�G�%�%�%�%�%�w�%�%�%����w�x�x��~�~�6�6��=�=�=����w�B�R�8�8�8�&�A�A�A����w�F�3�3�3�V�<�<�<����w�F��<�<�<�f�E�E�E����w�D�t�<�<�<�e�D�D�D�
	!�	!�	!�	
�����W�R��_�_�%9�:�:�K�K��O�O�L�L�L������W�R��%5�%5�%:�;�;�[�[��=M�=M�N�N�N������W�R��_�_�%9�:�:�K�K��O�O�L�L�L������W�S�"�%5�%5�%:�;�;�[�[��=M�=M�N�N�N��������
�
�a��(�(�(�
����)�W�c�3�7�7�7����)�W�a��5�5�5�	
���*�g�y�9�9�9����)�S�$�/�/�/����)�S�$�/�/�/����)�U�D�1�1�1����*�g�r�2�2�2����)�W�d�3�3�3����y�*:�G�T�J�J�J����*�g�t�4�4�4����*�g�v�6�6�6����)�W�c�3�7�7�7����)�W�c�2�6�6�6����)�W�a��5�5�5����*�g�t�4�4�4����*�g�y�9�9�9����*�g�t�4�4�4����*�g�w�7�7�7����*�g�w�7�7�7����*�g�x�8�8�8����*�g�{�;�;�;����*�g�s�3�3�3����*�g�v�6�6�6����*�g�w�7�7�7����*�g�y�9�9�9����*�g�x�8�8�8�����E��a��U�A�	�	�	�	
����:��Q��1��	�	�	�
	
���*�g�w�7�7�7����*�g�y�9�9�9����*�g�x�8�8�8�	
����g�g�.�.�/�/��9�9�9�����!C�D�D�d�K�K�K�	
���*�g�/O�P�P�P�	�	�	�	�	�i�	�	�	�	�	�	�	�	�	�	�	�	�	�	
���'�7�K�K�M�M�:�:�:�	"�	"�	"�	"�	"�	"�	"�	"�	
���w�v�v�c�{�{�3�3�R�8�8�8����w�F�F�3�K�K�f�f�S�k�k�J�J�J�F�S�S�S����)�W�f�f�T�l�l�;�;�;�	"�	"�	"�	"�	"�	"�	"�	"�	
���w�w�w�r�{�{�3�3�Y�?�?�?����w�s�G�G�B�K�K�8�8�+�F�F�F����-��'�'�!�T�'�2B�2B�C�C�C����-��#�w�w�q�$�w�7G�7G�H�H�H�	�	�	�	�	�	�	�	�	
���)�W�e�e�g�g�6�6�6����)�W�c�5�5�7�7�;�;�;�	�	�	�	�	�w�	�	�	�
	�	�	�	�	�w�	�	�	�	�	�	�	�	�w�	�	�	�	
������"���.�.��4�4�4�
�
�
�0�
1�
1�	8�	8����W�X�X�b�\�\�2�2�B�7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8����)�W�h�h�r�l�l�;�;�;�;�;s�-A@�@A@�@A@c���d}|�|���|��|�t|�����t��Gd�dt��}|d��}|�|���d��|�t|�����t��dS)Nr�c��eZdZdS)�6ComplexTest.test___complex__.<locals>.complex_subclassNr�r8r r�complex_subclassr�r�r r)r�r�rr)rr3rs   r�test___complex__zComplexTest.test___complex__�s�������������!�,�,�,�����a�m�m�o�o�.�.��8�8�8�	�	�	�	�	�w�	�	�	�
��V�$�$����������&�1�1�1�����a�m�m�o�o�.�.��8�8�8�8�8r c	�"�Gd�dt��}ddtttfD�]�}ddtttfD�]�}|�||���5t||��}|�|j|��|�|j|��|||��}|�t|��|��|�|j|��|�|j|��t|||����}|�t|��t��|�|j|��|�|j|��|t||����}|�t|��|��|�|j|��|�|j|��ddd��n#1swxYwY��Ȑ��dS)Nc��eZdZdS)�>ComplexTest.test_constructor_special_numbers.<locals>.complex2Nr�r8r rr�r�r�r r�rr�)r&r')	rr�rFr�r.rrr]r)rr�r&r'r3s     r� test_constructor_special_numbersz,ComplexTest.test_constructor_special_numbers�s7��	�	�	�	�	�w�	�	�	��d�C�#��s�*�	=�	=�A��$��c�T�3�.�
=�
=���\�\�A��\�+�+�=�=���1�
�
�A��1�1�!�&�!�<�<�<��1�1�!�&�!�<�<�<� ���A���A��M�M�$�q�'�'�8�4�4�4��1�1�!�&�!�<�<�<��1�1�!�&�!�<�<�<�����A���/�/�A��M�M�$�q�'�'�7�3�3�3��1�1�!�&�!�<�<�<��1�1�!�&�!�<�<�<� ����A���/�/�A��M�M�$�q�'�'�8�4�4�4��1�1�!�&�!�<�<�<��1�1�!�&�!�<�<�<�=�=�=�=�=�=�=�=�=�=�=����=�=�=�=��
=�	=�	=s�FH�H�Hc
����tD]��t�fd�dD����st|�t���t	�����|�t���t��dd��������tD]C��dvr�t�fd�dD����s!|�tt����DdS)Nc3� �K�|]}|�vV��	dSrLr8�r:�ch�lits  �r�	<genexpr>z/ComplexTest.test_underscores.<locals>.<genexpr>�'�����4�4�R�r�S�y�4�4�4�4�4�4r �xXoObB�_r�)�0_7�09_99c3� �K�|]}|�vV��	dSrLr8rs  �rrz/ComplexTest.test_underscores.<locals>.<genexpr>rr )	r�anyr�r�eval�replacerrNr�)rrs @r�test_underscoreszComplexTest.test_underscoress����,�	N�	N�C��4�4�4�4�8�4�4�4�4�4�
N�� � �����t�C�y�y�9�9�9�� � �����w�s�{�{�3��7K�7K�/L�/L�M�M�M��.�	<�	<�C��&�&�&���4�4�4�4�8�4�4�4�4�4�
<��!�!�*�g�s�;�;�;��		<�	<r c
�.�tdd��D]�}|�t|��tt|d������|dz}|�t|��tt|d��������dS)Nr��r�@r)rEr��hashr)rr&s  r�	test_hashzComplexTest.test_hash s����s�B���	<�	<�A����T�!�W�W�d�7�1�a�=�=�&9�&9�:�:�:�
��H�A����T�!�W�W�d�7�1�b�>�>�&:�&:�;�;�;�;�	<�	<r c��d�tdd��D��}|D];}|�|jdz|jdzzdzt	|�����<dS)Nc�`�g|]+}tdd��D]}t|dz|dz�����,S)����	r g@)rEr)r:r&r's   rr<z(ComplexTest.test_abs.<locals>.<listcomp>'s?��N�N�N��%��1�+�+�N�N�Q���"��a��d�#�#�N�N�N�Nr r%r&rwg�?)rErrrr#)r�nums�nums   r�test_abszComplexTest.test_abs&so��N�N�U�2�a�[�[�N�N�N���	R�	R�C��"�"�C�H�a�K�#�(�A�+�$=�3�#F��C���Q�Q�Q�Q�	R�	Rr c�v�|jfd�}|dd��|dd��|dd|j���|td	t��d
��|td	t��d��|ttd��d
��|ttt��d��|ttd��d��|tdt��d��|ttt��d��|tdt��d��|tdt��d��|tdt��d��|�dttd������|�dttd������|�dttd������|�dttd������dS)Nc�j�|t|��|��|t|��|��dSrL��reprr���v�expected�test_fns   r�testz'ComplexTest.test_repr_str.<locals>.test,�8���G�D��G�G�X�&�&�&��G�C��F�F�H�%�%�%�%�%r y�?@z(1+6j)y�?�z(1-6j)y��z(-1+-0j))r1rz(1+infj)z(1-infj)rz(inf+1j)z(-inf+infj)z(nan+1j)z(1+nanj)z
(nan+nanj)r�infjz-infj�nanjy��y@)r��assertNotEqualrr�rFr-�rr2s  r�
test_repr_strzComplexTest.test_repr_str+s��&*�&6�	&�	&�	&�	&�	
��T�8������T�8������W�j�$�*=�>�>�>�>���W�R��
�
�z�*�*�*���W�R�#��
�
�
�+�+�+���W�S�!�_�_�j�)�)�)���W�c�T�3�
�
��/�/�/���W�S�!�_�_�j�)�)�)���W�Q��_�_�j�)�)�)���W�S�#�
�
��-�-�-���W�Q��_�_�f�%�%�%���W�Q���
�
�w�'�'�'���W�Q��_�_�f�%�%�%�����g�d�4�j�j�1�1�2�2�2�����g�d�4�j�j�1�1�2�2�2�����W�T�#�Y�Y�/�/�0�0�0�����G�D��H�H�-�-�.�.�.�.�.r c��|jfd�}|tdd��d��|tdd��d��|tdd��d��|tdd��d	��|tdd��d
��|tdd��d��|tdd��d��|tdd��d
��dS)Nc�j�|t|��|��|t|��|��dSrLr,r.s   rr2z5ComplexTest.test_negative_zero_repr_str.<locals>.testHr3r rrr�r�z(-0+1j)r�z-1jz(-0-1j)�0jz-0jz(-0+0j)z(-0-0j))r�rr7s  r�test_negative_zero_repr_strz'ComplexTest.test_negative_zero_repr_strFs��&*�&6�	&�	&�	&�	&�	
��W�R��_�_��%�%�%���W�S�"�
�
�	�*�*�*���W�R��
�
��&�&�&���W�S�#�
�
�	�*�*�*���W�R��_�_��%�%�%���W�R��
�
��&�&�&���W�S�"�
�
�	�*�*�*���W�S�#�
�
�	�*�*�*�*�*r c�2�|�dd��dS)Ny��)r�rVs r�test_negzComplexTest.test_negVs������%�(�(�(�(�(r c�N�|�d���d��|�d���d��|�d���d��|�d���d��|�td	t�����d
tf��|�ttd	�����td
f��dS)Nr�)r�@y�?�)rg�r�)rr@���)rr�rr)r��__getnewargs__rr�rVs r�test_getnewargszComplexTest.test_getnewargsYs������$�.�.�0�0�*�=�=�=����$�.�.�0�0�+�>�>�>����"�,�,�.�.�
�;�;�;����#�-�-�/�/��=�=�=������C���7�7�9�9�C��:�F�F�F������a���7�7�9�9�C��:�F�F�F�F�Fr c���d\}}|�t|jd��tdd����|�t|jd��tdd����dS)N)r
rAr�rr�)r�rr)r�z1�z2s   r�test_plus_minus_0jzComplexTest.test_plus_minus_0jasg�����B�����r�w��,�,�e�B��n�n�=�=�=�����r�w��,�,�e�C��o�o�>�>�>�>�>r c�b�d}d}d}|�|jd��|�|jd��|�|jd��|�|jd��|�|jd��|�|jt��dS)NrAy��y��r�g�)r.rrr�)r�z0rErFs    r�test_negated_imaginary_literalz*ComplexTest.test_negated_imaginary_literalhs���
��
��
��
	
�%�%�b�g�t�4�4�4��%�%�b�g�t�4�4�4��%�%�b�g�t�4�4�4��%�%�b�g�t�4�4�4��%�%�b�g�t�4�4�4��%�%�b�g��t�4�4�4�4�4r c�X�|�td��ttd����|�td��tdt����|�td��ttt����dS)N�1e500rz-1e500jz-1e500+1.8e308j)r�rr�rVs r�
test_overflowzComplexTest.test_overflowxs��������)�)�7�3��+<�+<�=�=�=������+�+�W�S�3�$�-?�-?�@�@�@�����!2�3�3�W�c�T�3�5G�5G�H�H�H�H�Hr c	��dddddddttg	}|d�|D��z
}|D]s}|D]n}t||��}tt|����}|�|j|j��|�|j|j���o�ttd��td	��}}td|��td|��}	}|D]}|D]z}t||��}tt|����}|�d|jzd|jz��|�d|jzd|jz���{��dS)
Nrg�irBg�(�
�0�?go���!	@g�d~�QJc��g|]}|��Sr8r8)r:r/s  rr<z3ComplexTest.test_repr_roundtrip.<locals>.<listcomp>�s��"�"�"��!��"�"�"r r
r)	r�rFrr-r.rrr9r)
r�valsr&r'r3�	roundtripr
rr4r5s
          r�test_repr_roundtripzComplexTest.test_repr_roundtrip~s����V�V�V�V�V�T�3��L���"�"�T�"�"�"�"���	F�	F�A��
F�
F���A�q�M�M��#�D��G�G�,�,�	��-�-�a�f�i�n�E�E�E��-�-�a�f�i�n�E�E�E�E�	
F���<�<��u���S���S�#�&�&���S�(9�(9�d���	D�	D�A��
D�
D���A�q�M�M�� ��a���M�M�	��-�-�c�A�F�l�.1�I�N�.B�D�D�D��-�-�c�A�F�l�.1�I�N�.B�D�D�D�D�

D�	D�	Dr c�,�|�tdd��td����|�tdd��td����|�tdd��td����|�tdd��td����|�tdd��td����|�tdd��td����|�tdd��td����|�tdd	��td����d
}|�t|d��t|����|�t|d��t|����|�t|d	��t|����|�t|d��t|����tdd
��}|�t|d��t|����|�t|d��t|����|�t|d	��t|����|�t|d��t|����tdd��}|�t|d��t|����|�t|d��t|����|�t|d	��t|����|�t|d��t|����|�tdd��d��|�tdd��d��|�tdd��d��|�tdd��d��|�tdd��d��|�tdd��d��|�tdd��d��|�tdd��d��|�tdd��d ��|�td!d��d"��|�td#d��d$��|�td!d%��d&��|�td!d'��d&��|�td!d(��d)��|�td!d*��d+��|�td!d,��d-��|�td.d/��d0��|�td1d2��d3��|�td1d4��d5��|�td1d6��d7��|�td1d8��d9��|�td1d:��d;��|�td1d<��d=��|�td1d>��d?��|�td@dA��dB��|�td1dC��dD��|�td1dE��dD��|�td1dF��dG��|�tdHdF��dI��|�tdHdJ��dK��|�tdHdL��dM��|�tdNdL��dO��|�tdPdQ��dR��|�tdSdT��dU��|�tdSdV��dW��|�tdSdX��dY��|�tdSdZ��d[��|�td\d��d]��|�td\d^��d_��|�tdSd`��da��|�tdSdb��da��|�tdSdc��dd��|�tdSde��dd��|�tdfdg��dh��|�tdfdZ��di��|�tdfdj��dk��|�tdfdV��dl��|�tdfd^��dm��|�tdfdn��do��|�tdfdp��dq��|�t
drjds��|�t
d1jdt��duD]#}|�t
drj|���$|�dv�dw��dx��|�tttt��d%��dy��|�ttdzt��d%��d{��|�tttdz��d%��d|��|�tttd}��d%��d~��|�tttt��d'��d��|�ttdzt��d'��d���|�tttdz��d'��d���|�tttd}��d'��d���|�tttt��d%��d���|�ttdzt��d%��d���|�tttdz��d%��d���|�tttd}��d%��d���|�tttt��d'��d���|�ttdzt��d'��d���|�tttdz��d'��d���|�tttd}��d'��d���dS)�Ny�?@r�y�?@y@y������	@y@y������	@�-�<y�$I�$I�?%I�$I�,��10rr r�r�r@�3�gz1+3jz0+3jz1.5+3.5jz+gz	+1.5+3.5jy�?�z	+1.5-3.5jz-gz1.5-3.5jz gz	 1.5+3.5jz	 1.5-3.5jy��@z	-1.5+3.5jy���z	-1.5-3.5jy�������z
-1.5-3.5e-20jrlz-1.500000-3.500000j�F�ez-1.500000e+00-3.500000e+00jz.2ez-1.50e+00-3.50e+00jz.2Ez-1.50E+00-3.50E+00jy�����\�z.2Gz-1.5E+10-3.5E+05jy�?@z<20gz1.5+3j              z*<20gz1.5+3j**************z>20gz              1.5+3jz^20gz       1.5+3j       z<20z(1.5+3j)            z>20z            (1.5+3j)z^20z      (1.5+3j)      y+����?�C�l��z^20.2z     (1.1-3.1j)     z20.2fz          1.50+3.00jz>20.2fz<20.2fz1.50+3.00j          y0)�VC D@z150000000000000000000.00+3.00jz>40.2fz(          150000000000000000000.00+3.00jz^40,.2fz(  150,000,000,000,000,000,000.00+3.00j  y|3*�+TTD@z( 1,500,000,000,000,000,000,000.00+3.00j y|3*�+TTDp�@z,.2fz*1,500,000,000,000,000,000,000.00+3,000.00jrz.0ez1e+00+1e+00jz#.0ez1.e+00+1.e+00jz.0fz1+1jz#.0fz1.+1.jy�������?�������?z1.1+1.1jz#gz1.10000+1.10000jz.1ez1.0e+00+1.0e+00jz#.1ez.1fz1.0+1.0jz#.1fy���?z#fz-1.500000+0.500000jz-2.+0.jz#ez-1.500000e+00+5.000000e-01jz-2.e+00+5.e-01jz-1.50000+0.500000jz.0gz-2+0.5jz#.0gz-2.+0.5jy�?�?�010fz=20�bcdoxXz	*{0:.3f}*yn��!	@����	�@z*3.142+2.718j*znan+nanjrz
1.000000+nanjz
nan+1.000000jr�z
nan-1.000000jzNAN+NANjz
1.000000+NANjz
NAN+1.000000jz
NAN-1.000000jzinf+infjz
1.000000+infjz
inf+1.000000jz
inf-1.000000jzINF+INFjz
1.000000+INFjz
INF+1.000000jz
INF-1.000000j)	r�r,r�rrNr��
__format__rFr�)rr3�ts   r�test_formatzComplexTest.test_format�s��������b�)�)�3�t�9�9�5�5�5������"�-�-�s�8�}�}�=�=�=������B����R���1�1�1������b�)�)�3�t�9�9�5�5�5������b�)�)�3�t�9�9�5�5�5�������+�+�S��[�[�9�9�9�	
������,�,�c�&�k�k�:�:�:�������,�,�c�&�k�k�:�:�:��������2����A���/�/�/������3����Q���0�0�0������3����Q���0�0�0������4���#�a�&�&�1�1�1��C����������2����A���/�/�/������3����Q���0�0�0������3����Q���0�0�0������3����Q���0�0�0��D�#���������2����A���/�/�/������3����Q���0�0�0������3����Q���0�0�0������3����Q���0�0�0������c�*�*�F�3�3�3������C���&�1�1�1������#�.�.�
�;�;�;������$�/�/��=�=�=������$�/�/��=�=�=������$�/�/��<�<�<������$�/�/��=�=�=������$�/�/��=�=�=�����	�4�0�0�+�>�>�>�����	�4�0�0�+�>�>�>�����
�s�3�3�_�E�E�E�����	�3�/�/�1F�G�G�G�����	�3�/�/�1F�G�G�G�����	�3�/�/�1N�O�O�O�����	�5�1�1�3H�I�I�I�����	�5�1�1�3H�I�I�I�������6�6�8K�L�L�L�������/�/�2H�I�I�I�������0�0�2H�I�I�I�������/�/�2H�I�I�I�������/�/�2H�I�I�I�������.�.�2H�I�I�I�������.�.�2H�I�I�I�������.�.�2H�I�I�I������g�6�6�8N�O�O�O�������0�0�2H�I�I�I�������1�1�3I�J�J�J�������1�1�3I�J�J�J�����	�8�4�4�6V�W�W�W�����	�8�4�4�6`�a�a�a�����	�9�5�5�7a�b�b�b�����	�9�5�5�7a�b�b�b������f�5�5�7c�d�d�d�	
�����e�,�,�n�=�=�=������f�-�-�/?�@�@�@������e�,�,�f�5�5�5������f�-�-�x�8�8�8������#�.�.�
�;�;�;������$�/�/�1C�D�D�D�	
�����e�,�,�/A�B�B�B������f�-�-�/A�B�B�B������e�,�,�z�:�:�:������f�-�-�z�:�:�:�	
�����T�2�2�4I�J�J�J������V�4�4�i�@�@�@������T�2�2�4Q�R�R�R������V�4�4�6G�H�H�H������T�2�2�4H�I�I�I������U�3�3�Y�?�?�?������V�4�4�j�A�A�A�	
���*�x�&;�V�D�D�D�	
���*�v�&9�5�A�A�A��	D�	D�A����j�8�*?��C�C�C�C�	
����+�+�,<�=�=�?O�P�P�P�	
������S� 1� 1�3�7�7��D�D�D�������3����5�5��G�G�G�������Q����5�5��G�G�G�������R� 0� 0�#�6�6��H�H�H�������S� 1� 1�3�7�7��D�D�D�������3����5�5��G�G�G�������Q����5�5��G�G�G�������R� 0� 0�#�6�6��H�H�H�������S� 1� 1�3�7�7��D�D�D�������3����5�5��G�G�G�������Q����5�5��G�G�G�������R� 0� 0�#�6�6��H�H�H�������S� 1� 1�3�7�7��D�D�D�������3����5�5��G�G�G�������Q����5�5��G�G�G�������R� 0� 0�#�6�6��H�H�H�H�Hr N)r!)'r�r�r�rr)r.r0r5rJrPrWr[rmr�r�r�r�r�r�r�r�r�rr	r�requires_IEEE_754r
rr"r)r8r<r>rCrGrJrMrRr_r8r rrrs�������
@�
@�
@�
,�
,�
,�
,�$�$�$�.1�1�1�1�
#�#�#�+�+�+�0���

�
�
����
5�5�5�4;�;�;�"������
6�6�6�7�7�7�:�:�:�xE�E�E�8/�/�/�
B�B�B�{<�{<�{<�z
9�
9�
9�
��=�=���=�,
<�
<�
<�<�<�<�R�R�R�
/�/�/�6
��
+�
+���
+�)�)�)�G�G�G�
��?�?���?�
��
5�
5���
5�
��I�I���I�

��D�D���D�6wI�wI�wI�wI�wIr r�__main__)rr�r2r�test.test_grammarrrr�mathrrr	rer9r�rFrMrrr��mainr8r r�<module>res������
�
�
�
�������<�<�<�<�<�<�<�<�������'�'�'�'�'�'�'�'�'�'������e�E�l�l���e�E�l�l���
�zI�zI�zI�zI�zI�(�#�zI�zI�zI�z�z����H�M�O�O�O�O�O��r