Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 3.144.76.238
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : test_float.cpython-310.pyc
o

`b	�@sddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZmZddl
mZmZmZmZed�Zed�Zeed�Ze�ed�Ze�eed	�d
�Zej�e�p^ejZej�ed�Z Gdd
�d
e�Z!Gdd�de�Z"Gdd�dej#�Z$eGdd�dej#��Z%dZ&e'e(e&��Z)dZ*e'e(e*��Z+dZ,e'e(e,��Z-dZ.e'e(e.��Z/eGdd�dej#��Z0Gdd�dej#�Z1Gdd�dej#�Z2Gdd�dej#�Z3e	j4Gd d!�d!ej#��Z5Gd"d#�d#ej#�Z6ej7Z8ej9Z:Gd$d%�d%ej#�Z;e<d&kr�e�=�dSdS)'�N)�support)�VALID_UNDERSCORE_LITERALS�INVALID_UNDERSCORE_LITERALS)�isinf�isnan�copysign�ldexp�inf�nan�
__getformat__zrequires __getformat__�
__setformat__zrequires __setformat__zformatfloat_testcases.txtc@�eZdZdS)�
FloatSubclassN��__name__�
__module__�__qualname__�rr�8/usr/local/python-3.10/lib/python3.10/test/test_float.pyr�rc@r
)�OtherFloatSubclassNrrrrrrrrc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	�
d
dd�dd��Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Ze	jd"d#��Ze	jd$d%��Zd&d'�Zd(d)�Zd*S)+�GeneralFloatCasescCsT|�td�d�|�td�d�|�td�d�|�ttd�|�ttd�|�ttd�|�ttd�|�ttd	�|�ttd
�|�ttd�|�ttd�|�ttd
�|�ttd�|�ttd�|�tti�|�tdti�|�ttd�|�ttd�|�ttd�|�td�d�|�td�d�td�td�|�ttd�dS)N���Q�	@i:g�s@�  3.14  �	  0x3.1  �  -0x3.p-1  �  +0x3.p-1  z++3.14z+-3.14z-+3.14z--3.14z.nanz+.inf�.z-.z
not 'dict'u�z-1.7d29z3D-14u  ٣.١٤  u
 3.14 s�.1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111a�.1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111uこんにちは)�assertEqual�float�assertRaises�
ValueError�	TypeError�assertRaisesRegex��selfrrr�
test_float$s0zGeneralFloatCases.test_floatcCs|�t�d�dS)N�)rrr$rrr�test_noargsCszGeneralFloatCases.test_noargsc	s�tD]%�t�fdd�dD��s'|�t��t���|�t��t��dd���qtD]��dvr1q*t�fdd�dD��sC|�tt��q*|�ttd�|�ttd	�|�ttd
�|�ttd�|�ttd�|�ttd
�dS)Nc3��|]}|�vVqdS�Nr��.0Zch�Zlitrr�	<genexpr>H��z5GeneralFloatCases.test_underscores.<locals>.<genexpr>ZjJxXoObB�_�)Z0_7Z09_99c3r)r*rr+r-rrr.Nr/Z_NaNZNa_NZIN_Fz-_INFz-INF_s0_.�9)	r�anyrr�eval�replacerr r!r$rr-r�test_underscoresFs"��z"GeneralFloatCases.test_underscoresc
s
Gdd�dt��Gdd�dt�}Gdd�dt�}tt�fdd�||tg}zd	d
lm�Wn	ty5Yn
w|��fdd��|D]A}|d�}|�t|���,|�	t
|�d
�|�td��t
|d��Wd�n1snwYWd�n1s}wYqAdS)Nc@r
)zAGeneralFloatCases.test_non_numeric_input_types.<locals>.CustomStrNrrrrr�	CustomStr^�r6c@r
)zCGeneralFloatCases.test_non_numeric_input_types.<locals>.CustomBytesNrrrrr�CustomBytes_r7r8c@r
)zGGeneralFloatCases.test_non_numeric_input_types.<locals>.CustomByteArrayNrrrrr�CustomByteArray`r7r9cs�|���Sr*)�decode��b)r6rr�<lambda>er7z@GeneralFloatCases.test_non_numeric_input_types.<locals>.<lambda>r��arraycs
�d|�S)N�Brr;r>rrr=os
s 3.14  rzcould not convertsAAAAAAAAAAAAAAAA)
�str�bytes�	bytearray�
memoryviewr?�ImportError�appendZsubTest�typerrr#r!)r%r8r9Z	factories�f�xr)r6r?r�test_non_numeric_input_types[s6
�������z.GeneralFloatCases.test_non_numeric_input_typescCs�|�ttd�dd��d�|�ttd�dd��d�|�ttd�dd��d�|�ttd�dd��d�|�ttd�dd��d�dS)	Ns12.3��gffffff@s12.3s12.3 s12.3As12.34)rrrDr$rrr�test_float_memoryviewxs
 z'GeneralFloatCases.test_float_memoryviewcs`�fdd�}|d�|d�|d�|d�|d�|d�|d	�|d
�|d�|d�dS)
NcsX�jtd|fd��}t|�Wd�n1swY��t|j�d|f�dS)Nz	float(%r))�msgz%could not convert string to float: %r)r r!rrrA�	exception)�s�cmr$rr�check�s
��z3GeneralFloatCases.test_error_message.<locals>.check�½u123½z  123 456  s  123 456  u٣١٤!z123z123 245z123245s123s123�r)r%rRrr$r�test_error_messagesz$GeneralFloatCases.test_error_message�
LC_NUMERIC�fr_FR�de_DEcCs*ddl}|��ddks|�d�|�td�d�|�td�d�|�td�d	�|�td
�d�|�td�d
�|�td�d�|�td�d�|�td�d�|�td�d�|�ttd�|�ttd�|�ttd�|�ttd�|�ttd�|�ttd�|�td�d�|�td�d�dS) Nr�
decimal_point�,zdecimal_point is not ","rrz+3.14  z-3.14  g��Q�	�z.14  g�Q���?z3.  �@z3.e3  gp�@z3.2e3  g�@z2.5e-1  ��?z5e-1��?z  3,14  z	  +3,14  z	  -3,14  rrrz
  25.e-1  �@z
  .25e-1  g�������?)�locale�
localeconvZskipTestrrr r!ZassertAlmostEqual)r%r^rrr�test_float_with_comma�s(
z'GeneralFloatCases.test_float_with_commac
CsXGdd�dt�}Gdd�dt�}Gdd�dt�}Gdd�dt�}Gd	d
�d
t�}|�t|��d�|�t|��d�|�t��|�t|d��d�Wd�n1sTwY|�tt|d
��|�t|d��d�Gdd�d�}|�ttj	|��Gdd�d�}|�t��|�t|��d�Wd�n1s�wY|�t��|�
tt|���t�Wd�n1s�wY|�t��|�t|��d�Wd�n1s�wY|�t��|�
tt|���t�Wd�n1s�wYGdd�d�}|�t|d
��d�|�t
t|dd��Gdd�d�}	|�tt|	��dS)Nc@�eZdZdd�ZdS)z4GeneralFloatCases.test_floatconversion.<locals>.Foo1cS�dS�N�E@rr$rrr�	__float__��z>GeneralFloatCases.test_floatconversion.<locals>.Foo1.__float__N�rrrrerrrr�Foo1��rhc@ra)z4GeneralFloatCases.test_floatconversion.<locals>.Foo2cSrbrcrr$rrrre�rfz>GeneralFloatCases.test_floatconversion.<locals>.Foo2.__float__Nrgrrrr�Foo2�rirjc@seZdZddd�Zdd�ZdS)z4GeneralFloatCases.test_floatconversion.<locals>.Foo3r'cSst�|d|�S)N��r�__new__��cls�valuerrrrm��z<GeneralFloatCases.test_floatconversion.<locals>.Foo3.__new__cSs|Sr*rr$rrrre�rfz>GeneralFloatCases.test_floatconversion.<locals>.Foo3.__float__N)r')rrrrmrerrrr�Foo3�s
rrc@ra)z4GeneralFloatCases.test_floatconversion.<locals>.Foo4cSrb�N�*rr$rrrre�rfz>GeneralFloatCases.test_floatconversion.<locals>.Foo4.__float__Nrgrrrr�Foo4�riruc@ra)z6GeneralFloatCases.test_floatconversion.<locals>.FooStrcSstt|��dS�NrK)rrAr$rrrre�rqz@GeneralFloatCases.test_floatconversion.<locals>.FooStr.__float__Nrgrrrr�FooStr�rirwrd�rt�8g"@c@ra)z4GeneralFloatCases.test_floatconversion.<locals>.Foo5cSrb)Nr1rr$rrrre�rfz>GeneralFloatCases.test_floatconversion.<locals>.Foo5.__float__Nrgrrrr�Foo5�rirzc@ra)z1GeneralFloatCases.test_floatconversion.<locals>.FcSstd�Src)rr$rrrre�sz;GeneralFloatCases.test_floatconversion.<locals>.F.__float__Nrgrrrr�F�rir{c@seZdZdd�Zdd�ZdS)z7GeneralFloatCases.test_floatconversion.<locals>.MyIndexcSs
||_dSr*�rp�r%rprrr�__init__��
z@GeneralFloatCases.test_floatconversion.<locals>.MyIndex.__init__cSs|jSr*r|r$rrr�	__index__�szAGeneralFloatCases.test_floatconversion.<locals>.MyIndex.__index__N)rrrr~r�rrrr�MyIndex�sr�rki�c@ra)z5GeneralFloatCases.test_floatconversion.<locals>.MyIntcSrbrsrr$rrr�__int__�rfz=GeneralFloatCases.test_floatconversion.<locals>.MyInt.__int__N)rrrr�rrrr�MyInt�rir�)�objectrrArZassertWarns�DeprecationWarningr r"�time�sleep�assertIsrGr�
OverflowError)
r%rhrjrrrurwrzr{r�r�rrr�test_floatconversion�s@�����z&GeneralFloatCases.test_floatconversioncCs<|�td��tdd�Wd�dS1swYdS)Nzkeyword argumentz3.14�rI)r#r"rr$rrr�test_keyword_args�s"�z#GeneralFloatCases.test_keyword_argscCsD|�d���|�d���|�td����|�td����dS)Ng�������?��?r
r	)ZassertFalse�
is_integer�
assertTruerr$rrr�test_is_integer�sz!GeneralFloatCases.test_is_integercCs^dD]\}}|�|��|�qtd�D]!}t��}|dt�dd�9}|��\}}|�t|��|�|�qtj}|�|dd�|td�����|�|d	d
�|td�����|�|dd
�|td�����|�|d
d�|td�����|�|dd�|td�����|�|dd�|td�����|�	t
td�j�|�	t
td�j�|�	ttd�j�dS)N))g�?)��)g�)i����r�)r')rrK)g'@)�rk�'�
i�����drrKr'�rkr]r\l�L�33�l@g������@l�����L�33�g�������i���gh��r	�-infr
)r�as_integer_ratio�range�random�randintr�__truediv__�	fractionsZFractionr r�r!)r%rHZratio�i�n�d�Rrrr�test_floatasratio�s:������z#GeneralFloatCases.test_floatasratiocCsjttddtf}|D]2}|�||g�|�||f�|�||h�|�||di�|�|g�|�dd|�|�||�q
|D]s}|�|g|gkd||f�|�|f|fkd||f�|�|h|hkd||f�|�|di|dikd||f�|g|f|h|dif\}}}}|�||kd	|�|�||kd
|�|�||kd|�|�||kd|�q?dS)
Nr'r�rKz[].count('%r') != 1z[%r] != [%r]z(%r,) != (%r,)z{%r} != {%r}z{%r : None} != {%r : None}z[%r] not equal to itselfz(%r,) not equal to itselfz{%r} not equal to itselfz{%r : None} not equal to itself)�INF�NAN�assertInr�countr�)r%ZfloatsrH�l�trPr�rrr�test_float_containments*��z(GeneralFloatCases.test_float_containmentcCs$|�|td|�f|td|�f�dS)Nr�)rr)r%�ar<rrr�assertEqualAndEqualSign8s$z)GeneralFloatCases.assertEqualAndEqualSigncCs�|�td���t�|�td���d�|�td���d�|�td���d�|�td���d�|�td���d�|�td	���d
�|�td���d�|�td���d�|�ttd
�j�|�ttd�j�|�ttd�j�dS)Nr\rr�rK��?���������������Nݯ�b��Nݯ��r
r	r�)�assertIsInstancer�	__floor__�intrr r!r�r$rrr�test_float_floor>�z"GeneralFloatCases.test_float_floorcCs�|�td���t�|�td���d�|�td���d�|�td���d�|�td���d�|�td���d	�|�td
���d	�|�td���d�|�td���d�|�ttd
�j�|�ttd�j�|�ttd�j�dS)Nr\rKr�r�rkr�rr�r�r�r�r�r
r	r�)r�r�__ceil__r�rr r!r�r$rrr�test_float_ceilLr�z!GeneralFloatCases.test_float_ceilcCs�tj}|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�dS)Nr�r�r'�0��.�+����0��.�++)�operator�modr�)r%r�rrr�test_float_modZsz GeneralFloatCases.test_float_modcCs�	ttjfD�]�}|�t|tt���|�t|dt���|�t|dt���|�t|dt���|�t|dt���|�t|dt���|�t|dt���|�t|dt���|�t|tt���|�t|tt���|�t|tt���|�t|td���|�t|td���|�t|td���|�t|td���|�t|td���|�t|td���|�t|tt���|�t|dd�|�t|dd�|�t|dd�|�t|dd�|�t|dd�|�t|dd�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dt�d�|�|dt�d�|�|dt�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dt�d�|�|dt�d�|�|td�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|td�d�|�|td�d�|�|td�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|td�d�|�|td�d�|�	t
|dd��t�|�	t
|dd��t�|�	t
|dd��t�|�	t
|dd��t�|�	t
|dd��t�|�	t
|dd��t�|�|dt�t�|�|dt�t�|�|dt�t�|�|dt�t�|�|tt�d�|�|dt�d�|�|dt�d�|�|tt�d�|�|dt�d�|�|dt�d�|�|dt�d�|�|dt�d�|�|tt�t�|�|dt�t�|�|dt�t�|�|tt�t�|�|td�d�|�|td�d�|�|td�d�|�|td�t�|�|td�t�|�|td�t�|�|td�t�|�|td�t�|�|td�t�|�|td�d�|�|td�d�|�|td�d�|�|dd�d	�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d
�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d	�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d
�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd
�d�|�	t
|dd��t�|�|dd�d�|�|dd
�d�|�|dd�d�|�|dd�d�|�|dd�d�|�	t
|dd��t�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�qdS)Ng�r�r�r�r'r\�@r�r[g@�}Ô%�I���}Ô%�I�Tg@��gB��gD��g@�@gB�@gD�@)�powr�r�rr�r�r �ZeroDivisionErrorr�rrG�complex)r%Zpow_oprrr�test_float_powns��z GeneralFloatCases.test_float_powcCs�tdd�D]}|�tt|��t|��q|�tttjj��tttjj���|�ttd��tjj	�|�ttd��tjj	�dS)Ni���r	r�)
r�r�hashr�sys�
float_info�maxr��	hash_infor	�r%rIrrr�	test_hash7s�zGeneralFloatCases.test_hashcCs`td�}|�t|�t�|��Gdd�d�}Gdd�dt|�}|d�}|�t|�t�|��dS)Nr
c@ra)z*GeneralFloatCases.test_hash_nan.<locals>.HcSrbrsrr$rrr�__hash__Crfz3GeneralFloatCases.test_hash_nan.<locals>.H.__hash__N)rrrr�rrrr�HBrir�c@r
)z*GeneralFloatCases.test_hash_nan.<locals>.FNrrrrrr{Err{)rrr�r�r�)r%rpr�r{rrr�
test_hash_nan?szGeneralFloatCases.test_hash_nanN)rrrr&r(r5rJrMrTrZrun_with_localer`r�r�r�r�r�r�r�r��requires_IEEE_754r�r�r�r�rrrrr"s0
C!

Irc@�,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�FormatFunctionsTestCasecCst�d�t�d�d�|_dS)N�doubler�r�r)rr�save_formatsr$rrr�setUpNs�zFormatFunctionsTestCase.setUpcC�(t�d|jd�t�d|jd�dS�Nr�r�rrr�r$rrr�tearDownR�z FormatFunctionsTestCase.tearDowncCsP|�t�d�gd��|�t�d�gd��|�ttjd�|�ttjd�dS)Nr�)�unknown�IEEE, big-endian�IEEE, little-endianr�chickenrK)r�rrr r!r"r$rrr�test_getformatVs��z&FormatFunctionsTestCase.test_getformatcCs�dD]E}t�|d�|j|dkr|�ttj|d�n#|j|dkr,|�ttj|d�n|�ttj|d�|�ttj|d�|�ttj|d�q|�ttjdd�dS)Nr�r�r�r�r�)rrr�r r!)r%r�rrr�test_setformat^s,
�
�
�
�
�
�z&FormatFunctionsTestCase.test_setformatN)rrrr�r�r�r�rrrrr�Ks
r�s�s�s�s�c@r�)
�UnknownFormatTestCasecCs4t�d�t�d�d�|_t�dd�t�dd�dS)Nr�rr�r�)rrr�rr$rrrr��s
�zUnknownFormatTestCase.setUpcCr�r�r�r$rrrr��r�zUnknownFormatTestCase.tearDowncC�<dtfdtfdtfdtffD]
\}}|�ttj||�qdS�Nz>dz<d)�
BE_DOUBLE_INF�
BE_DOUBLE_NAN�
LE_DOUBLE_INF�
LE_DOUBLE_NANr r!�struct�unpack�r%�fmt�datarrr� test_double_specials_dont_unpack����z6UnknownFormatTestCase.test_double_specials_dont_unpackcCr��Nz>f�<f)�BE_FLOAT_INF�BE_FLOAT_NAN�LE_FLOAT_INF�LE_FLOAT_NANr r!r�r�r�rrr�test_float_specials_dont_unpack�r�z5UnknownFormatTestCase.test_float_specials_dont_unpackN)rrrr�r�r�r�rrrrr�~s
r�c@s6eZdZejdd��Zejdd��Zejdd��ZdS)�IEEEFormatTestCasecC�6dtfdtfdtfdtffD]
\}}t�||�qdSr�)r�r�r�r�r�r�r�rrr�test_double_specials_do_unpack����z1IEEEFormatTestCase.test_double_specials_do_unpackcCr�r�)r�r�r�r�r�r�r�rrr�test_float_specials_do_unpack�r�z0IEEEFormatTestCase.test_float_specials_do_unpackcCsJddlm}|�t�dd�t�d|��|�t�dd�t�d|��dS)Nr)�FLT_MAXr�gn���Ggn����)Z	_testcapirrr��pack)r%rrrr�test_serialized_float_rounding�s"z1IEEEFormatTestCase.test_serialized_float_roundingN)rrrrr�r�r�rrrrrr��s

r�c@s2eZdZdd�Zejdd��Zdd�Zdd�Zd	S)
�FormatTestCasecCs<|�tdd�d�|�tdd�d�|�tdd�d�|�tdd�d�d	}|�t|d�t|��|�t|d
�t|��|�t|d�t|��|�t|d�t|��|�td
d�d�|�tdd�d�|�td
d�d�|�tdd�d�|�td
d�d�|�tdd�d�|�tdd�d�|�ttdd�dd�ttd�td�d�D�dd�ttd�td �d�D�D]>}|d!vr�|�ttd|�|�ttd
|�|�ttd|�|�ttd"|�|�ttd#|�|�ttd$|�|�ttd%|�q�|�ttd�d&�|�ttd'�d(�|�ttd�d)�|�ttd'�d*�dS)+Nr'rHz0.000000r1�0.0g{�G�z�?�0.01�gg%I�$I�,@�-�>�2r�z1.000000r�z	-1.000000z fz	 1.000000z+fz	+1.000000�%z-100.000000%rZrPcS�g|]}t|��qSr��chr�r,rIrrr�
<listcomp>��z.FormatTestCase.test_format.<locals>.<listcomp>r��zrKcSrrrrrrrr�r�A�ZzeEfFgGn%r�r�r�r�r
r{r�r	r�)	r�formatrAr r!r��ordr�r�)r%rI�format_specrrr�test_format�sB��zFormatTestCase.test_formatcCs�ttdd��C}|D]7}|�d�rq	|��}|sq	ttj|�d��\}}|��\}}|�|t|�|�|�|t|�d|�q	Wd�dS1sLwYdS)N�utf-8��encodingz--z->r)	�open�format_testfile�
startswith�strip�maprA�splitrr)r%Ztestfile�lineZlhsZrhsr��argrrr�test_format_testfile�s
�"�z#FormatTestCase.test_format_testfilecCs:|�tdd�d�|�tdd�d�|�tdd�d�dS)N�w��/�^@z.4z123.5g
ףp=J�@z	1.235e+03g������@z	1.235e+04�rrr$rrr�test_issue5864�szFormatTestCase.test_issue5864cCs$|�tdd�d�|�tdd�d�|�tdd�d�|�tdd	�d
�|�tdd�d�|�tdd
�d�|�tdd�d
�|�tdd�d�|�tdd�d�|�tdd�d�|�tdd�d�|�tdd	�d�|�tdd�d�|�tdd�d�|�tdd
�d�|�tdd�d�dS)Ng�^@Z00z123.0g�(\���^@Z00fz
123.340000Z00ez1.233400e+02Z00gz123.34z00.10fz123.3400000000z00.10ez1.2334000000e+02z00.10gZ01fg�^�z-123.0g�(\���^�z-123.340000z
-1.233400e+02z-123.34z-123.3400000000z-1.2334000000e+02r%r$rrr�test_issue35560s zFormatTestCase.test_issue35560N)	rrrrrr�r#r&r'rrrrr�s5
rc@s4eZdZdd�Ze�eedd�dkd�dd��Zd	S)
�ReprTestCasecCs�ttj�tj�t�dd�dd��(}|D]}|��}|r!|�d�r"qt|�}|�	|tt
|���qWd�dS1s<wYdS)Nrzfloating_points.txtrr�#)r�os�path�joinr �__file__rrr3r�repr)r%Zfloats_filer!�vrrr�	test_reprs���"�zReprTestCase.test_repr�float_repr_styler1�short�.applies only when using short float repr stylecCs~gd�}|D]6}d|}|�|tt|���|�|tt|���|�tt|��tt|���|�tt|��tt|���qdS)N)r�1.0rz0.02z0.03z0.04z0.05z
1.23456789z10.0z100.0z1000000000000000.0z9999999999999990.0z1e+16z1e+17z0.001z0.001001z0.00010000000000001z0.0001z9.999999999999e-05z1e-05z8.72293771110361e+25z7.47005307342313e+26z2.86438000439698e+28z8.89142905246179e+28z3.08578087079232e+35r)rr.rrA)r%Ztest_stringsrPZnegsrrr�test_short_reprs
"�zReprTestCase.test_short_reprN)	rrrr0�unittest�
skipUnless�getattrr�r5rrrrr(s
�r(c@s|eZdZdd�Zdd�Zdd�Zdd�Ze�e	e
d	d
�dkd�d
d��Ze�e	e
d	d
�dkd�dd��Zdd�Z
dd�ZdS)�
RoundTestCasecCsr|�ttt�|�ttt�|�ttt�|�tttd�|�tttd�|�tttd�|�ttdd�dS)Nr'r�zceci n'est pas un integerr�y�?)r r��roundr�r!r�r"r$rrr�test_inf_nanVszRoundTestCase.test_inf_nancCs�ddddddddfD]&}|�td	|�d	�|�td
|�d
�|�td|�d�|�td|�d�q|�td
d�d
�|�tdd�d�|�tdd�d�|�td
d�d
�|�tdd�d�dS)NiDiEi�i���llrkr�r$�w��/�^��u�<�7~��g��P.5�_i,i3go���!	�i4i5gS��i;g�i�rr:�r%r�rrr�test_large_n_szRoundTestCase.test_large_ncCsjddddddddfD]&}|�td	|�d
�|�td|�d�|�td
|�d
�|�td|�d
�qdS)N����i���ip���i�i�l����rkr�r$r'r<r�r=r>r?r@rrr�test_small_nks�zRoundTestCase.test_small_ncCs$|�ttdd�|�ttdd�dS)Ng3t�<{�rBgv;w0�B�)r r�r:r$rrr�
test_overflowrszRoundTestCase.test_overflowr1r1r2r3cCs�|�tdd�d�|�tdd�d�|�tdd�d�|�tdd�d	�|�td
d�d	�|�tdd�d�|�td
d�d�|�tdd�d�|�tdd�d�|�tdd�d�dS)NgCrKg�������B�g9@r�g4@g�A@gD@g�F@g�K@gN@g@P@g�R@gT@g@U@g�W@gY@r?r$rrr�test_previous_round_bugsvs��z&RoundTestCase.test_previous_round_bugscCs�td�D]>}|d}|�tt|d��t|d��|�tt|d��t|d��|�tt|d��t|d��|�tt|d	��t|d
��qtddd
�D]>}|d}|�tt|d��t|d��|�tt|d��t|d��|�tt|d��t|d��|�tt|d	��t|d
��qItd�D]>}t��}|�tt|d��t|d��|�tt|d��t|d��|�tt|d��t|d��|�tt|d	��t|d
��q�dS)Ni�g@�@z.0frz.1frKz.2frkz.3frEr�i�r�)r�rrrr:r�)r%r�rIrrr�test_matches_float_format�s&�z'RoundTestCase.test_matches_float_formatcs��fdd�}dD]`}d|dd�}d|dd�}||td�||td�||td	�||td	�||td
�||td�||td�||td�||td�||td�||td
�||td
�qdS)Ncs6��||||�|dd�}��t||�||�dSrvr%)r�rp�expectedr$rr�test�sz0RoundTestCase.test_format_specials.<locals>.test)z%ez%fz%gz%.0ez%.6fz%.20gz%#ez%#fz%#gz%#.20ez%#.15fz%#.3gz%+rKz% r	r�r
�+inf�+nanz infz nan)r�r�)r%rIr�ZpfmtZsfmtrr$r�test_format_specials�s"�z"RoundTestCase.test_format_specialscCsxtd�tdd�tddd�fD]}|�|d�|�|t�qtd�tdd�tddd�fD]}|�|d�|�|t�q+dS)Ng�G�z��?)ZndigitsrKg{�G�z�?rk)r:rr�r�r�rrr�test_None_ndigits�s  �zRoundTestCase.test_None_ndigitsN)rrrr;rArCrDr6r7r8r�rFrGrLrMrrrrr9Ss	�
�
r9c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Ze�	e
edd�d
kd�dd��ZdS)�
InfNanTestcCs�|�ttd���|�ttd���|�ttd���|�ttd���|�ttd���|�ttd���|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd	��d�|�ttd
��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd
�|�ttd�|�ttd�|�ttd�|�ttd�|�ttd�|�ttd�|�ttd�|�ttd�|�ttd�|�ttd�|�ttd�|�ttd�|�ttd�dS)Nr	rJr�Zinfinityz	+infinity�	-infinityr��+Infz-iNF�Infinityz	+iNfInItYz	-INFINITY�infoz+infoz-info�inz+inz-inZinfinitz+Infinz-INFIZ	infinitysz++Infz-+infz
+-infinityz
--Infinity)r�rrrr.rAr r!r$rrr�test_inf_from_str�sLzInfNanTest.test_inf_from_strcCsD|�td�d�|�td�d�|�td�d�|�td�d�dS)Ng�r	g�r��rr.rAr$rrr�test_inf_as_str��zInfNanTest.test_inf_as_strcCsz|�ttd���|�ttd���|�ttd���|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd��d�|�ttd�|�ttd�|�ttd	�|�ttd
�|�ttd�|�ttd�|�ttd
�|�ttd�|�ttd�|�ttd�dS)Nr
rK�-nanr�z+NAn�-NaNZnanaz+nanaz-nanaZnaz+naz-naz++nanz-+NAN�+-NaNz--nAn)r�rrrr.rAr r!r$rrr�test_nan_from_str�s,zInfNanTest.test_nan_from_strcCsD|�td�d�|�td�d�|�td�d�|�td�d�dS)Ng��r
g��g��g��rUr$rrr�test_nan_as_strrWzInfNanTest.test_nan_as_strcC�0|�tdtd��d�|�tdtd��d�dS)Nr�r	r�r��rrrr$rrr�test_inf_signs#szInfNanTest.test_inf_signsr1r1r2r3cCr])Nr�r
rXr�r^r$rrr�test_nan_signs'szInfNanTest.test_nan_signsN)
rrrrTrVr[r\r_r6r7r8r�r`rrrrrN�s-�rNc@sdeZdZed�Zed�Zed�Zed�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�ZdS)�HexFloatTestCasez0x.fffffffffffff8p+1024z	0x1p-1022z0x0.0000000000001p-1022z0x0.0000000000001p0cCsdt|�st|�rt|�t|�krdSn||kr'|dks%td|�td|�kr'dS|�d||f�dS)Nr'r�z%r not identical to %r)rr�fail)r%rI�yrrr�	identical8s�$zHexFloatTestCase.identicalcCsb|�|jtdd��|�|jtdd��|�|jtdd��|�|jdtdd�tdd��dS)Nr�i���i���i���r�i�i�)rd�MINr�TINY�EPS�MAXr$rrr�	test_endsBs&zHexFloatTestCase.test_endsc	CsHgd�}|D]}zt|�}Wn	tyYqw|�d||f�qdS)N)3Zinfiz-Infinitz++infz-+Infz--nanrZZsnanZNaNsZnnaZanZnfZnfinityZinityZiinityZ0xnanr1� zx1.0p0z0xX1.0p0z	+ 0x1.0p0z	- 0x1.0p0z0 x1.0p0z0x 1.0p0z	0x1 2.0p0z	+0x1 .0p0z0x1. 0p0z
-0x1.0 1p0z	-0x1.0 p0z
+0x1.0p +0z	0x1.0p -0z0x1.0p 0z
+0x1.0p+ 0z
-0x1.0p- 0z
++0x1.0p-0z	--0x1.0p0z
+-0x1.0p+0z	-+0x1.0p0z	0x1.0p++0z
+0x1.0p+-0z
-0x1.0p-+0z	0x1.0p--0z0x1.0.p0z0x.p0z0x1,p0Z0x1pau0x1p0u0x1p0u0x1p0u	0x1.0p0z
0x1p0 
 0x2p0z0x1p0 0x1p0z>Expected float.fromhex(%r) to raise ValueError; got %r instead)�fromHexr!rb)r%Zinvalid_inputsrI�resultrrr�test_invalid_inputsHs5���z$HexFloatTestCase.test_invalid_inputscCshdtfdtfdtfdddg}gd�}|D]\}}|D]}|D]}t|||�}|�||�qqqdS)Nr	z	-Infinityr
)r4r�)z-0x.2g��)z-0.0r�)r1rj�	�
z
 	���
)r�r�rkrd)r%Zvalue_pairs�
whitespace�inprHZlead�trailZgotrrr�test_whitespace�s �
���z HexFloatTestCase.test_whitespacecCs\|j}|j}|j}|j}|�td�t�|�td�t�|�td�t�|�td�t�|�td�t�|�td�t�|�td�t�|�td�t�|�td	�t�|�td
�t�|�td�t�|�td�t�|�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�|�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+�|�td-�d+�|�td.�d+�|�td/�d0�|�td1�d0�|�td2�d0�|�td3�d0�|�td4�d0�|�td5�d0�|�td6�d0�|�td7�d0�td8�}|�td9�|�|�td:�|�|�td;�|�|�td<�|�|�td=�|�|�td>�|�|�td?�|�|�td@�|�|�tdA�|�|�tdB�|�|�td8�|�|�tdC�|�|�tdD�|�|�tdE�|�|�tdF�|�|�tdG�|�|�tdH�|�|�tdI�|�|�tdJ�|�|�tdK�|�|�tdL�|�|�tdM�|�|�tdN�|�|�tdO�|�|�tdP�|�|�tdQ�|�|�tdR�|�|�tdS�|�|�tdT�|�|�tdU�|�|�tdV�|�|�tdW�|�|�t	tdX�|�t	tdY�|�t	tdZ�|�t	td[�|�t	td\�|�t	td]�|�t	td^�|�t	td_�|�t	td`�|�t	tda�|�t	tdb�|�t	tdc�|�t	tdd�|�t	tde�|�t	tdf�|�t	tdg�|�t	tdh�|�t	tdi�|�t	tdj�|�tdk�|�|�tdl�|�|�tdm�|�|�tdn�do�|�tdp�do�|�tdq�dr�|�tds�do�|�tdt�dr�|�tdu�do�|�tdv�do�|�tdw�dr�|�tdx�dr�|�tdy�do�|�tdz�dr�|�td{�dr�|�td|�dr�|�td}�do�|�td~�dr�|�td�do�|�td��do�|�td��dr�|�td��dr�|�td��do�|�td��dr�|�td��dr�|�td��|�|�td��|�|�td��|�|�td��do�|�td��do�|�td��|�|�td��|�|�td��|�|�td��d�|�|�td��d�|�|�td��d�|�|�td��d�|�|�td��d�|�|�td��d�|�|�td��d�|�|�td��d�|�|�td��d�|�|�td��d�|�|�td��d�|�|�td��dr�|�td��dr�|�td��|�|�td��|�|�td��|�|�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�|�|�td��|d�|�|�td��|d�|�|�td��|d�|�|�td��|d�|�|�td��|d�|�|�td��|d�|�|�td��||�|�td��||�|�td��||�|�td��||�|�td��||�|�td��||�|�td��||�|�td��|�|�td��|�|�tdƒ|�|�tdÃ|�|�tdă|�|�tdŃ|�|�tdƃ|�|�tdǃ|�|�tdȃ|�|�tdɃ||�|�tdʃ||�|�td˃||�|�td̃||�|�td̓||�|�td΃||�|�tdσ||�|�tdЃ|d�|�|�tdуd|�|�td҃d|�|�tdӃd|�|�tdԃd|�|�tdՃd|�|�tdփd|d��|�td׃d|d��|�td؃d|d��|�tdكd|d��|�tdڃd|d��|�tdۃd|d��|�td܃d|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�|�|�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|�|�td��d|�|�td��dd�|�|�td��dd�|�|�td��dd�|�|�t�d�dd�|�|�t�d�dd�|�|�t�d�dd�|�|�t�d�dd�|�|�t�d�dd�|�|�t�d�dd�|�|�t�d�dd�|�|�t�d�do�|�t�d�do�|�t�d	�|�|�t�d
�do�|�t�d�do�|�t�d�|�|�t�d
�do�|�t�d�|�|�t�d�do�|�t�d�do�|�t�d�dr�|�t�d�do�dS(Nr	rPz-INFZiNfrQz	+INFINITYrOz	-iNFiNitYr
z+NaNrYz-nAN�1r�z+1z1.r4z1.0p0Z01z01.Z0x1z0x1.z0x1.0z+0x1.0Z0x1p0Z0X1p0Z0X1P0Z0x1P0z0x1.p0z0x1.0p0z0x.1p4z0x.1p04z0x.1p004z0x1p+0z0x1P-0z+0x1p0Z0x01p0Z0x1p00z 0x1p0 z
 0x1p0z0x1p0 	Z0xap0g$@Z0xAp0Z0xaP0Z0xAP0Z0xbep0g�g@Z0xBep0Z0xbEp0z0XBE0P-4Z0xBEp0z0xB.Ep4z0x.BEp8z	0x.0BEp12z0x1.921fb54442d18p1z0x.006487ed5110b46p11z0x.00c90fdaa22168cp10z0x.01921fb54442d18p9z0x.03243f6a8885a3p8z0x.06487ed5110b46p7z0x.0c90fdaa22168cp6z0x.1921fb54442d18p5z0x.3243f6a8885a3p4z0x.6487ed5110b46p3z0x.c90fdaa22168cp2z0x3.243f6a8885a3p0z0x6.487ed5110b46p-1z0xc.90fdaa22168cp-2z0x19.21fb54442d18p-3z0x32.43f6a8885a3p-4z0x64.87ed5110b46p-5z0xc9.0fdaa22168cp-6z0x192.1fb54442d18p-7z0x324.3f6a8885a3p-8z0x648.7ed5110b46p-9z0xc90.fdaa22168cp-10z0x1921.fb54442d18p-11z0x1921fb54442d1.8p-47z0x3243f6a8885a3p-48z0x6487ed5110b46p-49z0xc90fdaa22168cp-50z0x1921fb54442d18p-51z0x3243f6a8885a30p-52z0x6487ed5110b460p-53z0xc90fdaa22168c0p-54z0x1921fb54442d180p-55z	-0x1p1024z	0x1p+1025z	+0X1p1030z
-0x1p+1100Z0X1p123456789123456789z+0X.8p+1025z+0x0.8p1025z-0x0.4p1026z	0X2p+1023z	0x2.p1023z-0x2.0p+1023z
+0X4p+1022z0x1.ffffffffffffffp+1023z-0X1.fffffffffffff9p1023z0X1.fffffffffffff8p1023z+0x3.fffffffffffffp1022z0x3fffffffffffffp+970Z0x10000000000000000p960z-0Xffffffffffffffffp960z+0x1.fffffffffffffp+1023z-0X1.fffffffffffff7p1023z$0X1.fffffffffffff7fffffffffffffp1023Z0x0p0r'Z0x0p1000z	-0x0p1023r�Z0X0p1024z	-0x0p1025Z0X0p2000Z0x0p123456789123456789z-0X0p-0z
-0X0p-1000z	0x0p-1023z
-0X0p-1024z
-0x0p-1025z
-0x0p-1072z	0X0p-1073z
-0x0p-1074z	0x0p-1075z	0X0p-1076z
-0X0p-2000z-0x0p-123456789123456789z	0X1p-1075z
-0X1p-1075z-0x1p-123456789123456789z0x1.00000000000000001p-1075z-0x1.1p-1075z0x1.fffffffffffffffffp-1075z	0x1p-1076z	0X2p-1076z	0X3p-1076z	0x4p-1076z	0X5p-1076z	0X6p-1076rkz	0x7p-1076z	0X8p-1076z	0X9p-1076z	0xap-1076z	0Xbp-1076rEz	0xcp-1076z	0Xdp-1076z	0Xep-1076rLz	0xfp-1076z
0x10p-1076z
-0x1p-1076z
-0X2p-1076z
-0x3p-1076z
-0X4p-1076z
-0x5p-1076z
-0x6p-1076r�z
-0X7p-1076z
-0X8p-1076z
-0X9p-1076z
-0Xap-1076z
-0xbp-1076���z
-0xcp-1076z
-0Xdp-1076z
-0xep-1076���z
-0Xfp-1076z-0X10p-1076z0x0.ffffffffffffd6p-1022z0x0.ffffffffffffd8p-1022z0x0.ffffffffffffdap-1022z0x0.ffffffffffffdcp-1022z0x0.ffffffffffffdep-1022z0x0.ffffffffffffe0p-1022z0x0.ffffffffffffe2p-1022z0x0.ffffffffffffe4p-1022z0x0.ffffffffffffe6p-1022z0x0.ffffffffffffe8p-1022z0x0.ffffffffffffeap-1022z0x0.ffffffffffffecp-1022z0x0.ffffffffffffeep-1022z0x0.fffffffffffff0p-1022z0x0.fffffffffffff2p-1022z0x0.fffffffffffff4p-1022z0x0.fffffffffffff6p-1022z0x0.fffffffffffff8p-1022z0x0.fffffffffffffap-1022z0x0.fffffffffffffcp-1022z0x0.fffffffffffffep-1022z0x1.00000000000000p-1022z0x1.00000000000002p-1022z0x1.00000000000004p-1022z0x1.00000000000006p-1022z0x1.00000000000008p-1022z0x1.0000000000000ap-1022z0x1.0000000000000cp-1022z0x1.0000000000000ep-1022z0x1.00000000000010p-1022z0x1.00000000000012p-1022z0x1.00000000000014p-1022z0x1.00000000000016p-1022z0x1.00000000000018p-1022z0x0.fffffffffffff0p0z0x0.fffffffffffff1p0z0X0.fffffffffffff2p0z0x0.fffffffffffff3p0z0X0.fffffffffffff4p0z0X0.fffffffffffff5p0z0X0.fffffffffffff6p0z0x0.fffffffffffff7p0z0x0.fffffffffffff8p0z0X0.fffffffffffff9p0z0X0.fffffffffffffap0z0x0.fffffffffffffbp0z0X0.fffffffffffffcp0z0x0.fffffffffffffdp0z0X0.fffffffffffffep0z0x0.ffffffffffffffp0z0X1.00000000000000p0z0X1.00000000000001p0z0x1.00000000000002p0z0X1.00000000000003p0z0x1.00000000000004p0z0X1.00000000000005p0z0X1.00000000000006p0z0X1.00000000000007p0z(0x1.00000000000007ffffffffffffffffffffp0z0x1.00000000000008p0z&0x1.00000000000008000000000000000001p0rKz0X1.00000000000009p0z0x1.0000000000000ap0z0x1.0000000000000bp0z0X1.0000000000000cp0z0x1.0000000000000dp0z0x1.0000000000000ep0z0X1.0000000000000fp0z0x1.00000000000010p0z0X1.00000000000011p0z0x1.00000000000012p0z0X1.00000000000013p0z0X1.00000000000014p0z0x1.00000000000015p0z0x1.00000000000016p0z0X1.00000000000017p0z(0x1.00000000000017ffffffffffffffffffffp0z0x1.00000000000018p0z&0X1.00000000000018000000000000000001p0z0x1.00000000000019p0z0X1.0000000000001ap0z0X1.0000000000001bp0z0x1.0000000000001cp0z0x1.0000000000001dp0z0x1.0000000000001ep0z0X1.0000000000001fp0z0x1.00000000000020p0z
0x.8p-1074z0x.80p-1074z0x.81p-1074z	0x8p-1078z0x8.0p-1078z0x8.1p-1078z
0x80p-1082z
0x81p-1082z.8p-1074z8p-1078z	-.8p-1074z+8p-1078)
rerhrfrgrdrkr�r�r r�)r%rerhrfrg�pirrr�
test_from_hex�s&
�
�
�

�zHexFloatTestCase.test_from_hexc	Cs�dd�}tt|j|j|j|j|jdfD]}|�|||��|�|||��qddl}td�D]0}|�dd�}|��}|�	dd	g�}z	|t
||�}Wn	tyVYq1w|�|tt
|���q1dS)
NcSstt|��Sr*)rk�toHexr�rrr�	roundtrip�sz2HexFloatTestCase.test_roundtrip.<locals>.roundtripr'rr�iP���i�r�r�)r�r�rhrerfrdr�r��	randrange�choicerr�rkr|)r%r}rIr�r��e�mrPrrr�test_roundtrip�s $��zHexFloatTestCase.test_roundtripcCs�Gdd�dt�}|�d���}|�t|�|�|�|d�Gdd�dt�}|�d���}|�t|�|�|�|d�|�t|dd�d	�dS)
Nc@ra)z)HexFloatTestCase.test_subclass.<locals>.FcSst�||d�Srvrlrnrrrrm�rqz1HexFloatTestCase.test_subclass.<locals>.F.__new__N)rrrrmrrrrr{�rir{r�r]c@ra)z*HexFloatTestCase.test_subclass.<locals>.F2cSs
d|_dS)N�bar)�foor}rrrr~�rz3HexFloatTestCase.test_subclass.<locals>.F2.__init__N)rrrr~rrrr�F2�rir�r�Znoner�)r�fromhex�hexr�rGrr8)r%r{rHr�rrr�
test_subclass�szHexFloatTestCase.test_subclassN)rrrrkrhrerfrgrdrirmrvr{r�r�rrrrra2s
@-ra�__main__)>r�r�r*r�r�r�r�r6rIrZtest.test_grammarrr�mathrrrrrr�r��hasattrZhave_getformatr7Zrequires_getformatZrequires_setformatr+�dirnamer-�curdirZtest_dirr,rrrZTestCaserr�r�rB�reversedr�r�r�r�r�r�r�r�r�rr(r�r9rNr�rkr�r|rar�mainrrrr�<module>sp
��-%^?vfF�
© 2025 GrazzMean