OwlCyberSecurity - MANAGER
Edit File: _pydecimal.cpython-35.opt-2.pyc
���]}��������������*���@���s���d��d�d�d�d�d�d�d�d�d �d �d�d�d �d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d �d!�d"�d#�g$�Z��e�Z�d$�Z�d%�Z�d&�Z�d'�d(�l�Z�d'�d(�l�Z�d'�d(�l �Z �y#�d'�d)�l �m�Z�e�d�d*���Z �Wn�e�k �r��d+�d,����Z �Yn�Xd�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z�d-�Z�e �j�d.�d/�d0�k�rUd1�Z�d1�Z�d1�Z�n�d2�Z�d2�Z�d2�Z�e�e�d0�Z�Gd3�d����d�e���Z�Gd4�d����d�e���Z�Gd5�d����d�e���Z �Gd6�d����d�e ���Z!�Gd7�d ����d �e�e"���Z#�Gd8�d����d�e ���Z$�Gd9�d����d�e �e"���Z%�Gd:�d ����d �e���Z&�Gd;�d����d�e ���Z'�Gd<�d����d�e���Z(�Gd=�d����d�e���Z)�Gd>�d ����d �e&�e(���Z*�Gd?�d����d�e&�e(�e)���Z+�Gd@�d����d�e�e,���Z-�e�e#�e&�e*�e(�e+�e �e)�e-�g �Z.�e!�e �e$�e �e%�e �e'�e �i�Z/�e�e�e�e�e�e�e�e�f�Z0�y�d'�d(�l1�Z1�Wn4�e�k �r_GdA�dB����dB�e2���Z3�e3����Z1�[3�Yn�Xy�e1�j4�WnK�e5�k �r�e6�e1�j7����dC���r�e1�j7����`8�dD�d����Z9�dE�d����Z:�YnF�Xe1�j4����Z4�e6�e4�dC���r�e4�`8�e4�dF�d���Z:�e4�dG�d���Z9�[1�[4�d(�dH�d���Z;�GdI�d�����d��e2���Z<�dJ�dK�dL���Z=�e�j>�j?�e<���GdM�dN����dN�e2���Z@�GdO�d����d�e2���ZA�GdP�dQ����dQ�e2���ZB�d'�dR�dS���ZC�eD�jE�ZF�dT�dU����ZG�dV�dW����ZH�dX�dY����ZI�dZ�d[����ZJ�d\�d]�d^���ZK�d_�d`����ZL�da�db����ZM�Gdc�dd����dd�e2���ZN�eN����jO�ZP�d\�de�df���ZQ�dg�dh����ZR�di�dj����ZS�dk�dl�dm�dn�do�dp�dq�dr�ds�dt�du�dv�dw�dx�dy�dz�d{�d|�i �d}�d~���ZT�dJ�dJ�d�d����ZU�dJ�d��d����ZV�eA�d��d��d��e�d��e#�e*�e �g�d��g��d��d��d��d��d��d0�d��d'���ZW�eA�d��d��d��e�d��e#�e*�e �e�e+�g�d��g����ZX�eA�d��d��d��e�d��g��d��g����ZY�d'�d(�lZ�ZZ�eZ�j[�d��eZ�j\�eZ�j]�B��j^�Z_�eZ�j[�d����j^�Z`�eZ�j[�d����j^�Za�eZ�j[�d��eZ�j\�eZ�jb�B��Zc�[Z�y�d'�d(�ld�Ze�Wn�e�k �r�Yn�Xd(�d��d����Zf�d��d�����Zg�d��d�����Zh�d0�d��d����Zi�d��d�����Zj�d��d�����Zk�e<�d����Zl�e<�d����Zm�e<�d����Zn�e<�d'���Zo�e<�d0���Zp�e<�d0���Zq�el�em�f�Zr�e �js�jt�Zu�e �js�jv�Zw�e �js�jx�Zy�ez�dz�eu�d.�eu���Z{�[ �d(�S)��Decimal�Context�DecimalTuple�DefaultContext�BasicContext�ExtendedContext�DecimalException�Clamped�InvalidOperation�DivisionByZero�Inexact�Rounded� Subnormal�Overflow� Underflow�FloatOperation�DivisionImpossible�InvalidContext�ConversionSyntax�DivisionUndefined� ROUND_DOWN� ROUND_HALF_UP�ROUND_HALF_EVEN� ROUND_CEILING�ROUND_FLOOR�ROUND_UP�ROUND_HALF_DOWN� ROUND_05UP� setcontext� getcontext�localcontext�MAX_PREC�MAX_EMAX�MIN_EMIN� MIN_ETINY�HAVE_THREADSZdecimalz1.70z2.4.1�����N)� namedtuplezsign digits exponentc��������������G���s���|��S)N��)�argsr'���r'����//opt/alt/python35/lib64/python3.5/_pydecimal.py�<lambda>����s����r*���T�����?�������l�����N�Zoi@�Tc���������������@���s���e��Z�d��Z�d�d����Z�d�S)r���c�������������G���s���d��S)Nr'���)�self�contextr(���r'���r'���r)����handle����s����zDecimalException.handleN)�__name__� __module__�__qualname__r0���r'���r'���r'���r)���r�������s���c���������������@���s���e��Z�d��Z�d�S)r���N)r1���r2���r3���r'���r'���r'���r)���r�������s��� c���������������@���s���e��Z�d��Z�d�d����Z�d�S)r ���c�������������G���s:���|�r6�t��|�d�j�|�d�j�d�d���}�|�j�|���St�S)Nr%����nT)�_dec_from_triple�_sign�_int�_fix_nan�_NaN)r.���r/���r(����ansr'���r'���r)���r0�������s����# zInvalidOperation.handleN)r1���r2���r3���r0���r'���r'���r'���r)���r �������s���c���������������@���s���e��Z�d��Z�d�d����Z�d�S)r���c�������������G���s���t��S)N)r9���)r.���r/���r(���r'���r'���r)���r0�����s����zConversionSyntax.handleN)r1���r2���r3���r0���r'���r'���r'���r)���r�������s���c���������������@���s���e��Z�d��Z�d�d����Z�d�S)r ���c�������������G���s���t��|�S)N)�_SignedInfinity)r.���r/����signr(���r'���r'���r)���r0�����s����zDivisionByZero.handleN)r1���r2���r3���r0���r'���r'���r'���r)���r �����s��� c���������������@���s���e��Z�d��Z�d�d����Z�d�S)r���c�������������G���s���t��S)N)r9���)r.���r/���r(���r'���r'���r)���r0�����s����zDivisionImpossible.handleN)r1���r2���r3���r0���r'���r'���r'���r)���r�����s���c���������������@���s���e��Z�d��Z�d�d����Z�d�S)r���c�������������G���s���t��S)N)r9���)r.���r/���r(���r'���r'���r)���r0���)��s����zDivisionUndefined.handleN)r1���r2���r3���r0���r'���r'���r'���r)���r���!��s���c���������������@���s���e��Z�d��Z�d�S)r���N)r1���r2���r3���r'���r'���r'���r)���r���,��s��� c���������������@���s���e��Z�d��Z�d�d����Z�d�S)r���c�������������G���s���t��S)N)r9���)r.���r/���r(���r'���r'���r)���r0���C��s����zInvalidContext.handleN)r1���r2���r3���r0���r'���r'���r'���r)���r���8��s���c���������������@���s���e��Z�d��Z�d�S)r���N)r1���r2���r3���r'���r'���r'���r)���r���F��s��� c���������������@���s���e��Z�d��Z�d�S)r ���N)r1���r2���r3���r'���r'���r'���r)���r ���R��s��� c���������������@���s���e��Z�d��Z�d�d����Z�d�S)r���c�������������G���s����|�j��t�t�t�t�f�k�r#�t�|�S|�d�k�rk�|�j��t�k�rF�t�|�St�|�d�|�j�|�j �|�j�d���S|�d�k�r��|�j��t �k�r��t�|�St�|�d�|�j�|�j �|�j�d���Sd��S)Nr%����9r-���)�roundingr���r���r���r���r;���r���r5����prec�Emaxr���)r.���r/���r<���r(���r'���r'���r)���r0���s��s����zOverflow.handleN)r1���r2���r3���r0���r'���r'���r'���r)���r���]��s���c���������������@���s���e��Z�d��Z�d�S)r���N)r1���r2���r3���r'���r'���r'���r)���r������s��� c���������������@���s���e��Z�d��Z�d�S)r���N)r1���r2���r3���r'���r'���r'���r)���r������s��� c���������������@���s���e��Z�d��Z�e�d�d���Z�d�S)� MockThreadingc�������������C���s���|�j��t�S)N)�modules� __xname__)r.����sysr'���r'���r)����local���s����zMockThreading.localN)r1���r2���r3���rD���rE���r'���r'���r'���r)���rA������s���rA����__decimal_context__c�������������C���s>���|��t��t�t�f�k�r+�|��j����}��|��j����|��t�j����_�d��S)N)r���r���r����copy�clear_flags� threading�current_threadrF���)r/���r'���r'���r)���r������s���� c��������������C���sF���y�t��j����j�SWn.�t�k �rA�t����}��|��t��j����_�|��SYn�Xd��S)N)rI���rJ���rF����AttributeErrorr���)r/���r'���r'���r)���r������s���� c�������������C���s:���y�|��j��SWn(�t�k �r5�t����}�|�|��_��|�SYn�Xd��S)N)rF���rK���r���)�_localr/���r'���r'���r)���r������s���� c�������������C���s8���|��t��t�t�f�k�r+�|��j����}��|��j����|��|�_�d��S)N)r���r���r���rG���rH���rF���)r/���rL���r'���r'���r)���r������s���� c�������������C���s���|��d��k�r�t�����}��t�|����S)N)r����_ContextManager)�ctxr'���r'���r)���r������s����$� c���������������@���s���e��Z�d��Z�d��Z�d�d�d�d���Z�e�d �d ������Z�d�d����Z�d �d����Z�d�d�d�d���Z �d�d����Z �d�d����Z�d�d����Z�d�d�d���Z �d�d�d���Z�d�d�d���Z�d�d�d���Z�d�d�d ���Z�d�d!�d"���Z�d#�d$����Z�d%�d&����Z�d'�d(����Z�d)�d�d*�d+���Z�d�d,�d-���Z�d�d.�d/���Z�d�d0�d1���Z�d2�d�d3�d4���Z�d�d5�d6���Z�e�Z�d�d7�d8���Z�d�d9�d:���Z�d�d;�d<���Z�e�Z �d�d=�d>���Z!�d?�d@����Z"�d�dA�dB���Z#�d�dC�dD���Z$�d�dE�dF���Z%�d�dG�dH���Z&�d�dI�dJ���Z'�d�dK�dL���Z(�d�dM�dN���Z)�d�dO�dP���Z*�dQ�dR����Z+�dS�dT����Z,�e,�Z-�dU�dV����Z.�e/�e.���Z.�dW�dX����Z0�e/�e0���Z0�dY�dZ����Z1�d[�d\����Z2�d]�d^����Z3�d_�d`����Z4�da�db����Z5�dc�dd����Z6�de�df����Z7�dg�dh����Z8�di�dj����Z9�dk�dl����Z:�dm�dn����Z;�do�dp����Z<�e=�dq�e5�dr�e6�ds�e7�dt�e8�du�e9�dv�e:�dw�e;�dx�e<���Z>�d�dy�dz���Z?�d{�d|����Z@�d}�d~����ZA�d�d�d����ZB�d�d��d����ZC�d��d�����ZD�d�d�d��d����ZE�d�d��d����ZF�d�d��d����ZG�d�d�d��d����ZH�d�d��d����ZI�d��d�����ZJ�d��d�����ZK�d�d�d��d����ZL�d�d�d��d����ZM�eM�ZN�d�d��d����ZO�d�d��d����ZP�d�d��d����ZQ�d��d�����ZR�d��d�����ZS�d��d�����ZT�d��d�����ZU�d�d��d����ZV�d�d��d����ZW�d�d��d����ZX�d��d�����ZY�d��d�����ZZ�d�d��d����Z[�d�d��d����Z\�d��d�����Z]�d��d�����Z^�d��d�����Z_�d��d�����Z`�d�d��d����Za�d��d�����Zb�d��d�����Zc�d��d�����Zd�d�d��d����Ze�d��d�����Zf�d��d�����Zg�d�d��d����Zh�d��d�����Zi�d�d��d����Zj�d�d��d����Zk�d��d�����Zl�d��d�����Zm�d�d��d����Zn�d�d��d����Zo�d�d��d����Zp�d�d��d����Zq�d�d��d����Zr�d�d��d����Zs�d�d��d����Zt�d�d��d����Zu�d�d��d����Zv�d�d��d����Zw�d��d�����Zx�d�d��d����Zy�d�d��d����Zz�d�d��d����Z{�d��d�����Z|�d��d�����Z}�d��d�����Z~�d�d�d��d����Z�d�S)�r����_expr7���r6����_is_special�0Nc�������������C���s���t��j�|����}�t�|�t���r�t�|�j������}�|�d��k�re�|�d��k�rQ�t����}�|�j�t�d�|���S|�j �d���d�k�r��d�|�_ �n �d�|�_ �|�j �d���}�|�d��k �r|�j �d���p��d�}�t�|�j �d ���p��d ���}�t�t�|�|�����|�_�|�t �|���|�_�d�|�_�n��|�j �d���}�|�d��k �rxt�t�|�p<d �����j�d ���|�_�|�j �d ���rld�|�_�q�d�|�_�n�d �|�_�d�|�_�d�|�_�|�St�|�t���r�|�d�k�r�d�|�_ �n �d�|�_ �d�|�_�t�t�|�����|�_�d�|�_�|�St�|�t���r5|�j�|�_�|�j �|�_ �|�j�|�_�|�j�|�_�|�St�|�t���r�|�j�|�_ �t�|�j���|�_�t�|�j���|�_�d�|�_�|�St�|�t�t�f���r:t �|���d�k�r�t�d�����t�|�d�t���o�|�d�d�k�s�t�d�����|�d�|�_ �|�d�d�k�r"d �|�_�|�d�|�_�d�|�_�ng��} �xk�|�d�D]_�} �t�| �t���r�d�| �k�o_d�k�n�r�| �sv| �d�k�r�| �j�| ���q3t�d�����q3W|�d�d�k�r�d�j�t�t�| �����|�_�|�d�|�_�d�|�_�n\�t�|�d�t���r*d�j�t�t�| �pd�g�����|�_�|�d�|�_�d�|�_�n�t�d�����|�St�|�t���r�|�d��k�r^t����}�|�j�t�d���t�j�|���}�|�j�|�_�|�j �|�_ �|�j�|�_�|�j�|�_�|�St�d�|�����d��S)NzInvalid literal for Decimal: %rr<����-r-���r%����intZfrac���exprQ���F�diag�signal�Nr4����FT����ztInvalid tuple size in creation of Decimal from list or tuple. The list or tuple should have exactly three elements.z|Invalid sign. The first value in the tuple should be an integer; either 0 for a positive number or 1 for a negative number.r+���� ���zTThe second value in the tuple must be composed of integers in the range 0 through 9.zUThe third value in the tuple must be an integer, or one of the strings 'F', 'n', 'N'.z;strict semantics for mixing floats and Decimals are enabledzCannot convert %r to Decimal)r%���r-���)r4���rX���) �object�__new__� isinstance�str�_parser�stripr����_raise_errorr����groupr6���rS���r7����lenrO���rP����lstrip�absr����_WorkRepr<���rU����list�tuple� ValueError�append�join�map�floatr���� from_float� TypeError)�cls�valuer/���r.����m�intpart�fracpartrU���rV����digitsZdigitr'���r'���r)���r]���4��s����� $ # + $ zDecimal.__new__c�������������C���s����t��|�t���r�|��|���St��|�t���s4�t�d�����t�j�|���sR�t�j�|���rb�|��t�|�����St�j�d�|���d�k�r��d�}�n�d�}�t �|���j ����\�}�}�|�j����d�}�t�|�t �|�d�|���|���}�|��t�k�r��|�S|��|���Sd��S)Nzargument must be int or float.g�������?r%���r-�������)r^���rS���rn���rp����_math�isinf�isnan�repr�copysignrf����as_integer_ratio� bit_lengthr5���r_���r���)rq����fr<���r4����d�k�resultr'���r'���r)���ro������s���� !zDecimal.from_floatc�������������C���s6���|��j��r2�|��j�}�|�d�k�r"�d�S|�d�k�r2�d�Sd�S)Nr4���r-���rX���r+���r%���)rP���rO���)r.���rU���r'���r'���r)����_isnan���s���� zDecimal._isnanc�������������C���s$���|��j��d�k�r �|��j�r�d�Sd�Sd�S)NrY���r-���r%������)rO���r6���)r.���r'���r'���r)����_isinfinity��s ���� zDecimal._isinfinityc�������������C���s����|��j�����}�|�d��k�r!�d�}�n�|�j�����}�|�s9�|�r��|�d��k�rN�t����}�|�d�k�rm�|�j�t�d�|����S|�d�k�r��|�j�t�d�|���S|�r��|��j�|���S|�j�|���Sd�S)NFr+����sNaNr%���)r����r���rb���r ���r8���)r.����otherr/����self_is_nan�other_is_nanr'���r'���r)����_check_nans��s"���� zDecimal._check_nansc�������������C���s����|�d��k�r�t�����}�|��j�s'�|�j�r��|��j����rF�|�j�t�d�|����S|�j����re�|�j�t�d�|���S|��j����r��|�j�t�d�|����S|�j����r��|�j�t�d�|���Sd�S)Nzcomparison involving sNaNzcomparison involving NaNr%���)r���rP����is_snanrb���r ����is_qnan)r.���r����r/���r'���r'���r)����_compare_check_nans.��s(���� zDecimal._compare_check_nansc�������������C���s���|��j��p�|��j�d�k�S)NrQ���)rP���r7���)r.���r'���r'���r)����__bool__O��s����zDecimal.__bool__c�������������C���s^��|��j��s�|�j��rN�|��j����}�|�j����}�|�|�k�r:�d�S|�|�k��rJ�d�Sd�S|��sj�|�s^�d�Sd�|�j�S|�s{�d�|��j�S|�j�|��j�k��r��d�S|��j�|�j�k��r��d�S|��j����}�|�j����}�|�|�k�r7|��j�d�|��j�|�j�}�|�j�d�|�j�|��j�}�|�|�k�rd�S|�|�k��r)d�|��j�Sd �|��j�Sn#�|�|�k�rNd �|��j�Sd�|��j�Sd��S)Nr%���r-���rQ���r����r����r����r����r����r����r����r����)rP���r����r6����adjustedr7���rO���)r.���r����Zself_infZ other_inf� self_adjustedZother_adjusted�self_paddedZother_paddedr'���r'���r)����_cmpV��s>����zDecimal._cmpc�������������C���sT���t��|��|�d�d��\�}��}�|�t�k�r+�|�S|��j�|�|���rA�d�S|��j�|���d�k�S)N�equality_opTFr%���)�_convert_for_comparison�NotImplementedr����r����)r.���r����r/���r'���r'���r)����__eq__���s����zDecimal.__eq__c�������������C���sT���t��|��|���\�}��}�|�t�k�r%�|�S|��j�|�|���}�|�rA�d�S|��j�|���d�k��S)NFr%���)r����r����r����r����)r.���r����r/���r:���r'���r'���r)����__lt__���s����zDecimal.__lt__c�������������C���sT���t��|��|���\�}��}�|�t�k�r%�|�S|��j�|�|���}�|�rA�d�S|��j�|���d�k�S)NFr%���)r����r����r����r����)r.���r����r/���r:���r'���r'���r)����__le__���s����zDecimal.__le__c�������������C���sT���t��|��|���\�}��}�|�t�k�r%�|�S|��j�|�|���}�|�rA�d�S|��j�|���d�k�S)NFr%���)r����r����r����r����)r.���r����r/���r:���r'���r'���r)����__gt__���s����zDecimal.__gt__c�������������C���sT���t��|��|���\�}��}�|�t�k�r%�|�S|��j�|�|���}�|�rA�d�S|��j�|���d�k�S)NFr%���)r����r����r����r����)r.���r����r/���r:���r'���r'���r)����__ge__���s����zDecimal.__ge__c�������������C���sY���t��|�d�d��}�|��j�s*�|�rF�|�j�rF�|��j�|�|���}�|�rF�|�St�|��j�|�����S)N�raiseitT)�_convert_otherrP���r����r���r����)r.���r����r/���r:���r'���r'���r)����compare���s����zDecimal.comparec�������������C���s����|��j��rF�|��j����r$�t�d�����n"�|��j����r4�t�S|��j�rB�t�St�S|��j�d�k�rm�t�d�|��j�t ���}�n�t�t �|��j�t ���}�t�|��j���|�t �}�|��d�k�r��|�n�|�}�|�d�k�r��d�S|�S)Nz"Cannot hash a signaling NaN value.r%���� ���r-���r+���r�������) rP���r����rp����is_nan�_PyHASH_NANr6����_PyHASH_INFrO����pow�_PyHASH_MODULUS� _PyHASH_10INVrS���r7���)r.���Zexp_hashZhash_r:���r'���r'���r)����__hash__���s���� zDecimal.__hash__c�������������C���s(���t��|��j�t�t�t�|��j�����|��j���S)N)r���r6���ri���rm���rS���r7���rO���)r.���r'���r'���r)����as_tuple���s����zDecimal.as_tuplec�������������C���s���d�t��|����S)Nz Decimal('%s'))r_���)r.���r'���r'���r)����__repr__���s����zDecimal.__repr__Fc������� ������C���s���d�d�g�|��j��}�|��j�r`�|��j�d�k�r3�|�d�S|��j�d�k�rQ�|�d�|��j�S|�d�|��j�S|��j�t�|��j���}�|��j�d�k�r��|�d�k�r��|�}�nE�|�s��d �}�n6�|��j�d�k�r��|�d �d�d �}�n�|�d �d�d �}�|�d�k�r d�}�d �d�|�|��j�}�nf�|�t�|��j���k�rF|��j�d�|�t�|��j���}�d�}�n*�|��j�d��|���}�d �|��j�|�d����}�|�|�k�r�d�}�n4�|�d��k�r�t����}�d�d�g�|�j�d�|�|�}�|�|�|�|�S)NrT���rR���rY���ZInfinityr4����NaNr����r%�������r-���rQ���rZ����.�e�Ez%+di����)r6���rP���rO���r7���rd���r����capitals) r.����engr/���r<���� leftdigits�dotplacert���ru���rU���r'���r'���r)����__str__���s:���� zDecimal.__str__c�������������C���s���|��j��d�d�d�|���S)Nr����Tr/���)r����)r.���r/���r'���r'���r)���� to_eng_string.��s����zDecimal.to_eng_stringc�������������C���sx���|��j��r%�|��j�d�|���}�|�r%�|�S|�d��k�r:�t����}�|��r_�|�j�t�k�r_�|��j����}�n�|��j����}�|�j�|���S)Nr/���)rP���r����r���r>���r����copy_abs�copy_negate�_fix)r.���r/���r:���r'���r'���r)����__neg__7��s���� zDecimal.__neg__c�������������C���sx���|��j��r%�|��j�d�|���}�|�r%�|�S|�d��k�r:�t����}�|��r_�|�j�t�k�r_�|��j����}�n�t�|����}�|�j�|���S)Nr/���)rP���r����r���r>���r���r����r���r����)r.���r/���r:���r'���r'���r)����__pos__M��s���� zDecimal.__pos__Tc�������������C���si���|�s�|��j�����S|��j�r5�|��j�d�|���}�|�r5�|�S|��j�rS�|��j�d�|���}�n�|��j�d�|���}�|�S)Nr/���)r����rP���r����r6���r����r����)r.����roundr/���r:���r'���r'���r)����__abs__b��s���� zDecimal.__abs__c������� ������C���sb��t��|���}�|�t�k�r�|�S|�d��k�r1�t����}�|��j�sC�|�j�r��|��j�|�|���}�|�r_�|�S|��j����r��|��j�|�j�k�r��|�j����r��|�j�t�d���St �|����S|�j����r��t �|���St �|��j�|�j���}�d�}�|�j�t �k�r��|��j�|�j�k�r��d�}�|��rO|�rOt �|��j�|�j���}�|�r*d�}�t�|�d�|���}�|�j�|���}�|�S|��s�t�|�|�j�|�j�d���}�|�j�|�|�j���}�|�j�|���}�|�S|�s�t�|�|��j�|�j�d���}�|��j�|�|�j���}�|�j�|���}�|�St�|����}�t�|���}�t�|�|�|�j���\�}�}�t����} �|�j�|�j�k�r�|�j�|�j�k�rjt�|�d�|���}�|�j�|���}�|�S|�j�|�j�k��r�|�|�}�}�|�j�d�k�r�d�| �_�|�j�|�j�|�_�|�_�q�d�| �_�n6�|�j�d�k�r�d�| �_�d�\�|�_�|�_�n �d�| �_�|�j�d�k�r$|�j�|�j�| �_�n�|�j�|�j�| �_�|�j�| �_�t �| ���}�|�j�|���}�|�S)Nz -INF + INFr%���r-���rQ���)r%���r%���)r����r����r���rP���r����r����r6���rb���r ���r����minrO���r>���r���r5���r�����maxr?����_rescalerg���� _normalizer<���rS���rU���) r.���r����r/���r:���rU���Znegativezeror<����op1�op2r����r'���r'���r)����__add__x��s|���� ! zDecimal.__add__c�������������C���sf���t��|���}�|�t�k�r�|�S|��j�s.�|�j�rM�|��j�|�d�|��}�|�rM�|�S|��j�|�j����d�|��S)Nr/���)r����r����rP���r����r����r����)r.���r����r/���r:���r'���r'���r)����__sub__���s����zDecimal.__sub__c�������������C���s/���t��|���}�|�t�k�r�|�S|�j�|��d�|��S)Nr/���)r����r����r����)r.���r����r/���r'���r'���r)����__rsub__���s����zDecimal.__rsub__c�������������C���s���t��|���}�|�t�k�r�|�S|�d��k�r1�t����}�|��j�|�j�A}�|��j�sS�|�j�r��|��j�|�|���}�|�ro�|�S|��j����r��|�s��|�j�t�d���St �|�S|�j����r��|��s��|�j�t�d���St �|�S|��j �|�j �}�|��s��|�rt�|�d�|���}�|�j�|���}�|�S|��j �d�k�r=t�|�|�j �|���}�|�j�|���}�|�S|�j �d�k�rtt�|�|��j �|���}�|�j�|���}�|�St�|����}�t�|���}�t�|�t�|�j�|�j���|���}�|�j�|���}�|�S)Nz(+-)INF * 0z0 * (+-)INFrQ����1)r����r����r���r6���rP���r����r����rb���r ���r;���rO���r5���r����r7���rg���r_���rS���)r.���r����r/���Z resultsignr:���Z resultexpr����r����r'���r'���r)����__mul__���sH���� "zDecimal.__mul__c�������������C���sc��t��|���}�|�t�k�r�t�S|�d��k�r1�t����}�|��j�|�j�A}�|��j�sS�|�j�r��|��j�|�|���}�|�ro�|�S|��j����r��|�j����r��|�j�t�d���S|��j����r��t �|�S|�j����r��|�j�t �d���t�|�d�|�j������S|�s|��s��|�j�t �d���S|�j�t�d�|���S|��s+|��j�|�j�}�d�}�nt�|�j���t�|��j���|�j�d�}�|��j�|�j�|�}�t�|����}�t�|���} �|�d�k�r�t�|�j�d�|�| �j���\�}�} �n$�t�|�j�| �j�d�|���\�}�} �| �r�|�d �d�k�r>|�d�7}�nG�|��j�|�j�}�x4�|�|�k��r=|�d�d�k�r=|�d�}�|�d�7}�q Wt�|�t�|���|���}�|�j�|���S) Nz(+-)INF/(+-)INFzDivision by infinityrQ���z0 / 0zx / 0r%���r-���r����rw���)r����r����r���r6���rP���r����r����rb���r ���r;���r���r5����Etinyr���r ���rO���rd���r7���r?���rg����divmodrS���r_���r����)r.���r����r/���r<���r:���rU����coeff�shiftr����r����� remainder� ideal_expr'���r'���r)����__truediv__��sP���� '&$ zDecimal.__truediv__c�������������C���s���|��j��|�j��A}�|�j����r(�|��j�}�n�t�|��j�|�j���}�|��j����|�j����}�|��sr�|�j����sr�|�d�k�r��t�|�d�d���|��j�|�|�j���f�S|�|�j�k�rlt �|����}�t �|���}�|�j �|�j �k�r��|�j�d�|�j �|�j �9_�n�|�j�d�|�j �|�j �9_�t�|�j�|�j���\�}�} �|�d�|�j�k��rlt�|�t �|���d���t�|��j��t �| ���|���f�S|�j�t�d���} �| �| �f�S)Nr+���rQ���r%���r����z%quotient too large in //, % or divmodr����)r6���r����rO���r����r����r5���r����r>���r?���rg���rU���rS���r����r_���rb���r���)r.���r����r/���r<���r�����expdiffr����r�����q�rr:���r'���r'���r)����_divideZ��s*���� zDecimal._dividec�������������C���s/���t��|���}�|�t�k�r�|�S|�j�|��d�|��S)Nr/���)r����r����r����)r.���r����r/���r'���r'���r)����__rtruediv__{��s����zDecimal.__rtruediv__c�������������C���s/��t��|���}�|�t�k�r�|�S|�d��k�r1�t����}�|��j�|�|���}�|�rS�|�|�f�S|��j�|�j�A}�|��j����r��|�j����r��|�j�t�d���}�|�|�f�St�|�|�j�t�d���f�S|�s��|��s��|�j�t �d���}�|�|�f�S|�j�t �d�|���|�j�t�d���f�S|��j�|�|���\�}�}�|�j�|���}�|�|�f�S)Nzdivmod(INF, INF)zINF % xzdivmod(0, 0)zx // 0zx % 0) r����r����r���r����r6���r����rb���r ���r;���r���r ���r����r����)r.���r����r/���r:���r<���Zquotientr����r'���r'���r)���� __divmod__���s0���� zDecimal.__divmod__c�������������C���s/���t��|���}�|�t�k�r�|�S|�j�|��d�|��S)Nr/���)r����r����r����)r.���r����r/���r'���r'���r)����__rdivmod__���s����zDecimal.__rdivmod__c�������������C���s����t��|���}�|�t�k�r�|�S|�d��k�r1�t����}�|��j�|�|���}�|�rM�|�S|��j����ri�|�j�t�d���S|�s��|��r��|�j�t�d���S|�j�t�d���S|��j�|�|���d�}�|�j �|���}�|�S)NzINF % xzx % 0z0 % 0r-���) r����r����r���r����r����rb���r ���r���r����r����)r.���r����r/���r:���r����r'���r'���r)����__mod__���s"���� zDecimal.__mod__c�������������C���s/���t��|���}�|�t�k�r�|�S|�j�|��d�|��S)Nr/���)r����r����r����)r.���r����r/���r'���r'���r)����__rmod__���s����zDecimal.__rmod__c�������������C���sp��|�d��k�r�t�����}�t�|�d�d��}�|��j�|�|���}�|�rC�|�S|��j����r_�|�j�t�d���S|�s��|��r{�|�j�t�d���S|�j�t�d���S|�j����r��t�|����}�|�j�|���St �|��j �|�j ���}�|��s��t�|��j�d�|���}�|�j�|���S|��j ����|�j ����}�|�|�j�d�k�r#|�j�t���S|�d�k�rQ|��j�|�|�j���}�|�j�|���St�|����}�t�|���}�|�j�|�j�k�r�|�j�d �|�j�|�j�9_�n�|�j�d �|�j�|�j�9_�t�|�j�|�j���\�}�} �d�| �|�d�@|�j�k�r| �|�j�8} �|�d�7}�|�d �|�j�k�r%|�j�t���S|��j�} �| �d �k��rKd�| �} �| �} �t�| �t�| ���|���}�|�j�|���S)Nr����Tzremainder_near(infinity, x)zremainder_near(x, 0)zremainder_near(0, 0)rQ���r-���r+���r����r%���r����)r���r����r����r����rb���r ���r���r���r����r����rO���r5���r6���r����r?���r���r����r>���rg���rU���rS���r����r_���)r.���r����r/���r:����ideal_exponentr����r����r����r����r����r<���r'���r'���r)����remainder_near���sZ���� zDecimal.remainder_nearc�������������C���s����t��|���}�|�t�k�r�|�S|�d��k�r1�t����}�|��j�|�|���}�|�rM�|�S|��j����r��|�j����ru�|�j�t�d���St�|��j�|�j�AS|�s��|��r��|�j�t �d�|��j�|�j�A��S|�j�t �d���S|��j�|�|���d�S)Nz INF // INFzx // 0z0 // 0r%���)r����r����r���r����r����rb���r ���r;���r6���r ���r���r����)r.���r����r/���r:���r'���r'���r)����__floordiv__��s$���� zDecimal.__floordiv__c�������������C���s/���t��|���}�|�t�k�r�|�S|�j�|��d�|��S)Nr/���)r����r����r����)r.���r����r/���r'���r'���r)���� __rfloordiv__6��s����zDecimal.__rfloordiv__c�������������C���sR���|��j�����r<�|��j����r$�t�d�����|��j�r3�d�n�d�}�n�t�|����}�t�|���S)Nz%Cannot convert signaling NaN to floatz-nan�nan)r����r����rj���r6���r_���rn���)r.����sr'���r'���r)���� __float__=��s����zDecimal.__float__c�������������C���s����|��j��r<�|��j����r$�t�d�����n�|��j����r<�t�d�����d�|��j�}�|��j�d�k�rt�|�t�|��j���d�|��j�S|�t�|��j�d��|��j���p��d���Sd��S)NzCannot convert NaN to integerz"Cannot convert infinity to integerr-���r%���r����rQ���r����) rP���r����rj���r����� OverflowErrorr6���rO���rS���r7���)r.���r����r'���r'���r)����__int__G��s���� zDecimal.__int__c�������������C���s���|��S)Nr'���)r.���r'���r'���r)����realV��s����zDecimal.realc�������������C���s ���t��d���S)Nr%���)r���)r.���r'���r'���r)����imagZ��s����zDecimal.imagc�������������C���s���|��S)Nr'���)r.���r'���r'���r)���� conjugate^��s����zDecimal.conjugatec�������������C���s���t��t�|������S)N)�complexrn���)r.���r'���r'���r)����__complex__a��s����zDecimal.__complex__c�������������C���sq���|��j��}�|�j�|�j�}�t�|���|�k�rg�|�t�|���|�d����j�d���}�t�|��j�|�|��j�d���St�|����S)NrQ���T) r7���r?����clamprd���re���r5���r6���rO���r���)r.���r/���ZpayloadZmax_payload_lenr'���r'���r)���r8���d��s���� #zDecimal._fix_nanc�������������C���s��|��j��r,�|��j����r"�|��j�|���St�|����S|�j����}�|�j����}�|��s��|�j�|�g�|�j�}�t�t �|��j �|���|���}�|�|��j �k�r��|�j�t���t �|��j�d�|���St�|����St�|��j���|��j �|�j�}�|�|�k�r|�j�t�d�|��j���}�|�j�t���|�j�t���|�S|�|�k��}�|�r+|�}�|��j �|�k��r�t�|��j���|��j �|�} �| �d�k��rt �|��j�d�|�d���}��d�} �|��j�|�j�} �| �|��| ���}�|��j�d��| ���p�d�}�|�d�k�rt�t�|���d���}�t�|���|�j�k�r|�d��d���}�|�d�7}�|�|�k�r/|�j�t�d�|��j���}�n�t �|��j�|�|���}�|�r]|�r]|�j�t���|�rp|�j�t���|�r�|�j�t���|�j�t���|�s�|�j�t���|�S|�r�|�j�t���|�j�d�k�r|��j �|�k�r|�j�t���|��j�d�|��j �|�} �t �|��j�| �|���St�|����S)NrQ���z above Emaxr%���r����r-���r����)rP���r����r8���r���r�����Etopr@���r����r����r����rO���rb���r���r5���r6���rd���r7���r?���r���r���r����_pick_rounding_functionr>���r_���rS���r���r ���)r.���r/���r����r�����exp_maxZnew_expZexp_minr:���Zself_is_subnormalrv���Zrounding_method�changedr����r����r'���r'���r)���r����p��sn���� zDecimal._fixc�������������C���s���t��|��j�|���r�d�Sd�Sd��S)Nr%���r-���r����)� _all_zerosr7���)r.���r?���r'���r'���r)����_round_down���s����zDecimal._round_downc�������������C���s���|��j��|���S)N)r����)r.���r?���r'���r'���r)���� _round_up���s����zDecimal._round_upc�������������C���s5���|��j��|�d�k�r�d�St�|��j��|���r-�d�Sd�Sd��S)NZ56789r-���r%���r����)r7���r����)r.���r?���r'���r'���r)����_round_half_up���s ����zDecimal._round_half_upc�������������C���s'���t��|��j�|���r�d�S|��j�|���Sd��S)Nr-���r����)�_exact_halfr7���r����)r.���r?���r'���r'���r)����_round_half_down���s����zDecimal._round_half_downc�������������C���sJ���t��|��j�|���r9�|�d�k�s5�|��j�|�d�d�k�r9�d�S|��j�|���Sd��S)Nr%���r-����02468r����)r����r7���r����)r.���r?���r'���r'���r)����_round_half_even���s����#zDecimal._round_half_evenc�������������C���s(���|��j��r�|��j�|���S|��j�|���Sd��S)N)r6���r����)r.���r?���r'���r'���r)����_round_ceiling���s���� zDecimal._round_ceilingc�������������C���s(���|��j��s�|��j�|���S|��j�|���Sd��S)N)r6���r����)r.���r?���r'���r'���r)����_round_floor���s���� zDecimal._round_floorc�������������C���s<���|�r*�|��j��|�d�d�k�r*�|��j�|���S|��j�|���Sd��S)Nr-���Z05)r7���r����)r.���r?���r'���r'���r)����_round_05up��s���� zDecimal._round_05upr���r���r���r���r���r���r���r���c�������������C���s����|�d��k �rG�t��|�t���s'�t�d�����t�d�d�|���}�|��j�|���S|��j�rw�|��j����rk�t�d�����n�t�d�����t�|��j �d�t �����S)Nz+Second argument to round should be integralr%���r����zcannot round a NaNzcannot round an infinity)r^���rS���rp���r5����quantizerP���r����rj���r����r����r���)r.���r4���rU���r'���r'���r)���� __round__��s����/ zDecimal.__round__c�������������C���sF���|��j��r0�|��j����r$�t�d�����n�t�d�����t�|��j�d�t�����S)Nzcannot round a NaNzcannot round an infinityr%���)rP���r����rj���r����rS���r����r���)r.���r'���r'���r)���� __floor__W��s ���� zDecimal.__floor__c�������������C���sF���|��j��r0�|��j����r$�t�d�����n�t�d�����t�|��j�d�t�����S)Nzcannot round a NaNzcannot round an infinityr%���)rP���r����rj���r����rS���r����r���)r.���r'���r'���r)����__ceil__f��s ���� zDecimal.__ceil__c�������������C���s���t��|�d�d��}�t��|�d�d��}�|��j�s6�|�j�r7|�d��k�rK�t����}�|��j�d�k�rm�|�j�t�d�|����S|�j�d�k�r��|�j�t�d�|���S|��j�d�k�r��|��}�qy|�j�d�k�r��|�}�qy|��j�d�k�r��|�s��|�j�t�d���St�|��j�|�j�A}�qy|�j�d�k�ry|��s |�j�t�d���St�|��j�|�j�A}�nB�t�|��j�|�j�At �t �|��j���t �|�j�����|��j�|�j���}�|�j�|�|���S) Nr����TrX���r����r4���rY���zINF * 0 in fmaz0 * INF in fma) r����rP���r���rO���rb���r ���r;���r6���r5���r_���rS���r7���r����)r.���r����Zthirdr/����productr'���r'���r)����fmau��s6���� zDecimal.fmac�������������C���s���t��|���}�|�t�k�r�|�St��|���}�|�t�k�r8�|�S|�d��k�rM�t����}�|��j����}�|�j����}�|�j����}�|�s��|�s��|�r|�d�k�r��|�j�t�d�|����S|�d�k�r��|�j�t�d�|���S|�d�k�r��|�j�t�d�|���S|�r��|��j�|���S|�r|�j�|���S|�j�|���S|��j����o4|�j����o4|�j����sG|�j�t�d���S|�d�k��rc|�j�t�d���S|�sy|�j�t�d���S|�j����|�j �k�r�|�j�t�d���S|�r�|��r�|�j�t�d���S|�j ����r�d�}�n �|��j�}�t�t �|�����}�t�|��j������}�t�|�j������} �|�j �|�t�d �|�j�|���|�}�x)�t�| �j���D]�} �t�|�d �|���}�qDWt�|�| �j �|���}�t�|�t�|���d���S) Nr+���r����z@pow() 3rd argument not allowed unless all arguments are integersr%���zApow() 2nd argument cannot be negative when 3rd argument specifiedzpow() 3rd argument cannot be 0zSinsufficient precision: pow() 3rd argument must not have more than precision digitszXat least one of pow() 1st argument and 2nd argument must be nonzero ;0**0 is not definedr����)r����r����r���r����rb���r ���r8���� _isintegerr����r?����_isevenr6���rf���rS���rg����to_integral_valuer����rU����ranger5���r_���)r.���r�����modulor/���r����r����Z modulo_is_nanr<����base�exponent�ir'���r'���r)���� _power_modulo���sl���� $zDecimal._power_moduloc�������������C���s9��t��|����}�|�j�|�j�}�}�x(�|�d�d�k�rI�|�d�}�|�d�7}�q"�Wt��|���}�|�j�|�j�}�}�x(�|�d�d�k�r��|�d�}�|�d�7}�ql�W|�d�k�rs|�|�9}�x(�|�d�d�k�r��|�d�}�|�d�7}�q��W|�d�k��r��d��S|�d�|�} �|�j�d�k�r | �} �|�j����rQ|�j�d�k�rQ|��j�t�|���} �t�| �| �|�d���}�n�d�}�t�d�d�d�|�| �|���S|�j�d�k�rv|�d�}�|�d�k�rF|�|�@|�k�r�d��St �|���d�} �|�d �d�}�|�t �t�|�����k�r�d��St�| �|�|���} �t�|�|�|���}�| �d��k�s%|�d��k�r)d��S| �|�k�r9d��Sd�| �}�n��|�d�k�r=t �|���d �d�} �t �d�| �|���\�}�}�|�r�d��Sx(�|�d�d�k�r�|�d�}�| �d�8} �q�W|�d�d�}�|�t �t�|�����k�r�d��St�| �|�|���} �t�|�|�|���}�| �d��k�s|�d��k�r d��S| �|�k�r0d��Sd�| �}�n�d��S|�d�|�k�rUd��S| �|�}�t�d�t�|���|���S|�d�k�r�|�d�|�d�}�}�n|�d�k�r�t �t�t�|�|�������|�k�r�d��St �|���}�|�d�k�rt �t�t�|���|�����|�k�rd��S|�d�|�}�}�x<�|�d�|�d�k�o@d�k�n�r\|�d�}�|�d�}�q!Wx<�|�d�|�d�k�od�k�n�r�|�d�}�|�d�}�q`W|�d�k�rk|�d�k�r�|�|�k�r�d��St �|�|���\�}�}�|�d�k�r�d��Sd�t �|���|�>}�xG�t �|�|�|�d���\�}�}�|�|�k�r/Pq|�|�d�|�|�}�qW|�|�k�o^|�d�k�sed��S|�}�|�d�k�r�|�|�d�t�|���k�r�d��S|�|�}�|�|�9}�|�d�|�k�r�d��St�|���}�|�j����r|�j�d�k�r|��j�t�|���} �t�|�| �|�t �|�����}�n�d�}�t�d�|�d�|�|�|���S)Nr����r%���r-���r����rQ���r+�������r���������]����A���rw�������rZ����d���)r+���r��r����r��)rg���rS���rU���r<���r����r6���rO���r����r5����_nbitsrd���r_����_decimal_lshift_exactr����rf���� _log10_lb)r.���r�����p�x�xc�xe�y�yc�yer���r����ZzerosZ last_digitr����Zemaxr����rs���r4���Zxc_bits�rem�ar����r����Zstr_xcr'���r'���r)����_power_exact���s�����: //' ' & zDecimal._power_exactc�������������C���s���|�d��k �r�|��j��|�|�|���St�|���}�|�t�k�r;�|�S|�d��k�rP�t����}�|��j�|�|���}�|�rl�|�S|�s��|��s��|�j�t�d���St�Sd�}�|��j�d�k�r��|�j ����r��|�j ����s��d�}�n�|��r��|�j�t�d���S|��j����}��|��s|�j�d�k�r t�|�d�d���St �|�S|��j����rD|�j�d�k�r4t �|�St�|�d�d���S|��t�k�r|�j ����r�|�j�d�k�rtd�}�n'�|�|�j�k�r�|�j�}�n�t�|���}�|��j�|�}�|�d�|�j�k��r�d�|�j�}�|�j�t���n'�|�j�t���|�j�t���d�|�j�}�t�|�d�d�|�|���S|��j����}�|�j����rc|�j�d�k�|�d�k��k�r[t�|�d�d���St �|�Sd��}�d�} �|��j����|�j����} �|�d�k�|�j�d�k�k�r�| �t�t�|�j�����k�rt�|�d�|�j�d���}�n;�|�j����}�| �t�t�|�����k�rt�|�d�|�d���}�|�d��k�rm|��j�|�|�j�d���}�|�d��k �rm|�d�k�rgt�d�|�j�|�j���}�d�} �|�d��k�rN|�j�}�t�|����} �| �j�| �j�}�}�t�|���}�|�j�|�j�}�}�|�j�d�k�r�|�}�d �}�xW�t�|�|�|�|�|�|���\�}�}�|�d �d�t�t�|�����|�d�r(P|�d �7}�q�Wt�|�t�|���|���}�| �r�|�j ����r�t�|�j���|�j�k�r�|�j�d�t�|�j���}�t�|�j�|�j�d�|�|�j�|���}�|�j ����}�|�j!����x�t"�D]�}�d�|�j#�|�<q�W|�j$�|���}�|�j�t���|�j%�t&�r$|�j�t'���|�j%�t(�rG|�j�t(�d�|�j���xI�t'�t&�t�t�t)�f�D] �}�|�j%�|�r]|�j�|���q]Wn�|�j$�|���}�|�S) Nz0 ** 0r%���r-���z+x ** y with x negative and y not an integerrQ���r����FTrZ���rw���r����z above Emax)*r��r����r����r���r����rb���r ����_Oner6���r����r����r����r5���r;���r����r?���rS���rO���r���r���r�����_log10_exp_boundrd���r_���r@���r����r��r7���rg���rU���r<����_dpowerrG���rH����_signals�trapsr�����flagsr ���r���r���r���)r.���r����r����r/���r:���Zresult_signZ multiplierrU���Zself_adj�exactZboundr����r��r ��r��r��r��r��r���extrar����r����Z newcontext� exceptionr'���r'���r)����__pow__���s����� "& zDecimal.__pow__c�������������C���s/���t��|���}�|�t�k�r�|�S|�j�|��d�|��S)Nr/���)r����r����r��)r.���r����r/���r'���r'���r)����__rpow__� ��s����zDecimal.__rpow__c�������������C���s��|�d��k�r�t�����}�|��j�r:�|��j�d�|���}�|�r:�|�S|��j�|���}�|�j����rY�|�S|�sr�t�|�j�d�d���S|�j�|�j����g�|�j �}�t �|�j���}�|�j�}�x;�|�j�|�d�d�k�r��|�|�k��r��|�d�7}�|�d�8}�q��Wt�|�j�|�j�d��|���|���S)Nr/���rQ���r%���r-���) r���rP���r����r����r����r5���r6���r@���r����r����rd���r7���rO���)r.���r/���r:����dupr�����endrU���r'���r'���r)���� normalize� ��s$���� & zDecimal.normalizec�������������C���sA��t��|�d�d��}�|�d��k�r'�t����}�|�d��k�r<�|�j�}�|��j�sN�|�j�r��|��j�|�|���}�|�rj�|�S|�j����s��|��j����r��|�j����r��|��j����r��t�|����S|�j�t�d���S|�j ����|�j �k�o��|�j�k�n�s��|�j�t�d���S|��st�|��j �d�|�j ���}�|�j�|���S|��j����}�|�|�j�k�rB|�j�t�d���S|�|�j �d�|�j�k�rl|�j�t�d���S|��j�|�j �|���}�|�j����|�j�k�r�|�j�t�d���St�|�j���|�j�k�r�|�j�t�d���S|�r�|�j����|�j�k��r�|�j�t���|�j �|��j �k�r.|�|��k�r!|�j�t���|�j�t���|�j�|���}�|�S) Nr����Tzquantize with one INFz)target exponent out of bounds in quantizerQ���z9exponent of quantize result too large for current contextr-���z7quantize result has too many digits for current context)r����r���r>���rP���r����r����r���rb���r ���r����rO���r@���r5���r6���r����r����r?���r����rd���r7����Eminr ���r���r���)r.���rU���r>���r/���r:���r����r'���r'���r)���r����� ��sT���� ( zDecimal.quantizec�������������C���sb���t��|�d�d��}�|��j�s$�|�j�rR�|��j����r<�|�j����pQ�|��j����oQ�|�j����S|��j�|�j�k�S)Nr����T)r����rP���r�����is_infiniterO���)r.���r����r/���r'���r'���r)����same_quantum ��s ���� zDecimal.same_quantumc�������������C���s��|��j��r�t�|����S|��s,�t�|��j�d�|���S|��j�|�k�r`�t�|��j�|��j�d�|��j�|�|���St�|��j���|��j�|�}�|�d�k��r��t�|��j�d�|�d���}��d�}�|��j�|�}�|�|��|���}�|��j�d��|���p��d�}�|�d�k�r��t�t �|���d���}�t�|��j�|�|���S)NrQ���r%���r����r-���) rP���r���r5���r6���rO���r7���rd���r����r_���rS���)r.���rU���r>���rv���Z this_functionr����r����r'���r'���r)���r����' ��s"���� zDecimal._rescalec�������������C���s����|�d�k�r�t��d�����|��j�s(�|��r2�t�|����S|��j�|��j����d�|�|���}�|�j����|��j����k�r��|�j�|�j����d�|�|���}�|�S)Nr%���z'argument should be at least 1 in _roundr-���)rj���rP���r���r����r����)r.����placesr>���r:���r'���r'���r)����_roundI ��s���� zDecimal._roundc�������������C���s����|��j��r/�|��j�d�|���}�|�r%�|�St�|����S|��j�d�k�rH�t�|����S|��sa�t�|��j�d�d���S|�d��k�rv�t����}�|�d��k�r��|�j�}�|��j�d�|���}�|�|��k�r��|�j �t ���|�j �t���|�S)Nr/���r%���rQ���)rP���r����r���rO���r5���r6���r���r>���r����rb���r���r���)r.���r>���r/���r:���r'���r'���r)����to_integral_exact` ��s$���� zDecimal.to_integral_exactc�������������C���s����|�d��k�r�t�����}�|�d��k�r*�|�j�}�|��j�rY�|��j�d�|���}�|�rO�|�St�|����S|��j�d�k�rr�t�|����S|��j�d�|���Sd��S)Nr/���r%���)r���r>���rP���r����r���rO���r����)r.���r>���r/���r:���r'���r'���r)���r����} ��s���� zDecimal.to_integral_valuec�������������C���sv��|�d��k�r�t�����}�|��j�r_�|��j�d�|���}�|�r:�|�S|��j����r_�|��j�d�k�r_�t�|����S|��s��t�|��j�d�|��j�d���}�|�j�|���S|��j�d�k�r��|�j �t �d���S|�j�d�}�t�|����}�|�j �d�?}�|�j �d�@r|�j�d�}�t�|��j���d�?d�}�n �|�j�}�t�|��j���d�d�?}�|�|�}�|�d�k�rT|�d�|�9}�d �} �n!�t�|�d�|���\�}�} �| �} �|�|�8}�d�|�}�x,�|�|�}�|�|�k�r�Pq�|�|�d�?}�q�W| �o�|�|�|�k�} �| �r |�d�k�r�|�d�|�}�n�|�d�|�9}�|�|�7}�n�|�d �d�k�r'|�d�7}�t�d�t�|���|���}�|�j����}�|�j�t���} �|�j�|���}�| �|�_�|�S)Nr/���r%���rQ���r+���r-���zsqrt(-x), x > 0r����r��Trw���)r���rP���r����r����r6���r���r5���rO���r����rb���r ���r?���rg���rU���rS���rd���r7���r����r_���� _shallow_copy� _set_roundingr���r>���)r.���r/���r:���r?����opr�����c�lr����r��r����r4���r����r>���r'���r'���r)����sqrt� ��s`���� zDecimal.sqrtc�������������C���s ��t��|�d�d��}�|�d��k�r'�t����}�|��j�s9�|�j�r��|��j����}�|�j����}�|�s]�|�r��|�d�k�r��|�d�k�r��|��j�|���S|�d�k�r��|�d�k�r��|�j�|���S|��j�|�|���S|��j�|���}�|�d�k�r��|��j�|���}�|�d�k�r��|�}�n�|��}�|�j�|���S)Nr����Tr-���r%���r����)r����r���rP���r����r����r����r����� compare_total)r.���r����r/����sn�onr-��r:���r'���r'���r)���r����� ��s&���� zDecimal.maxc�������������C���s ��t��|�d�d��}�|�d��k�r'�t����}�|��j�s9�|�j�r��|��j����}�|�j����}�|�s]�|�r��|�d�k�r��|�d�k�r��|��j�|���S|�d�k�r��|�d�k�r��|�j�|���S|��j�|�|���S|��j�|���}�|�d�k�r��|��j�|���}�|�d�k�r��|��}�n�|�}�|�j�|���S)Nr����Tr-���r%���r����)r����r���rP���r����r����r����r����r0��)r.���r����r/���r1��r2��r-��r:���r'���r'���r)���r������s&���� zDecimal.minc�������������C���sJ���|��j��r �d�S|��j�d�k�r �d�S|��j�|��j�d����}�|�d�t�|���k�S)NFr%���TrQ���)rP���rO���r7���rd���)r.����restr'���r'���r)���r����?��s���� zDecimal._isintegerc�������������C���s2���|��s�|��j��d�k�r�d�S|��j�d�|��j��d�k�S)Nr%���Tr-���r����r����)rO���r7���)r.���r'���r'���r)���r����H��s����zDecimal._isevenc�������������C���s9���y�|��j��t�|��j���d�SWn�t�k �r4�d�SYn�Xd��S)Nr-���r%���)rO���rd���r7���rp���)r.���r'���r'���r)���r����N��s���� zDecimal.adjustedc�������������C���s���|��S)Nr'���)r.���r'���r'���r)���� canonicalV��s����zDecimal.canonicalc�������������C���sA���t��|�d�d��}�|��j�|�|���}�|�r.�|�S|��j�|�d�|��S)Nr����Tr/���)r����r����r����)r.���r����r/���r:���r'���r'���r)����compare_signal^��s ����zDecimal.compare_signalc�������������C���s���t��|�d�d��}�|��j�r)�|�j�r)�t�S|��j�r@�|�j�r@�t�S|��j�}�|��j����}�|�j����}�|�sm�|�rj|�|�k�r��t�|��j���|��j�f�}�t�|�j���|�j�f�}�|�|�k��r��|�r��t�St�S|�|�k�r��|�r��t�St�St�S|�r*|�d�k�r��t�S|�d�k�rt�S|�d�k�rt�S|�d�k�rjt�Sn@�|�d�k�r:t�S|�d�k�rJt�S|�d�k�rZt�S|�d�k�rjt�S|��|�k��rzt�S|��|�k�r�t�S|��j�|�j�k��r�|�r�t�St�S|��j�|�j�k�r�|�r�t�St�St�S)Nr����Tr-���r+���) r����r6����_NegativeOner��r����rd���r7����_ZerorO���)r.���r����r/���r<���Zself_nanZ other_nanZself_keyZ other_keyr'���r'���r)���r0��j��sf���� zDecimal.compare_totalc�������������C���s7���t��|�d�d��}�|��j����}�|�j����}�|�j�|���S)Nr����T)r����r����r0��)r.���r����r/���r�����or'���r'���r)����compare_total_mag���s����zDecimal.compare_total_magc�������������C���s���t��d�|��j�|��j�|��j���S)Nr%���)r5���r7���rO���rP���)r.���r'���r'���r)���r�������s����zDecimal.copy_absc�������������C���sE���|��j��r%�t�d�|��j�|��j�|��j���St�d�|��j�|��j�|��j���Sd��S)Nr%���r-���)r6���r5���r7���rO���rP���)r.���r'���r'���r)���r�������s���� zDecimal.copy_negatec�������������C���s1���t��|�d�d��}�t�|�j�|��j�|��j�|��j���S)Nr����T)r����r5���r6���r7���rO���rP���)r.���r����r/���r'���r'���r)���� copy_sign���s����zDecimal.copy_signc�������������C���s���|�d��k�r�t�����}�|��j�d�|���}�|�r1�|�S|��j����d �k�rG�t�S|��sQ�t�S|��j����d�k�rm�t�|����S|�j�}�|��j����}�|��j�d�k�r��|�t �t �|�j�d�d�����k�r��t�d�d�|�j�d���}�n�|��j�d�k�r%|�t �t �|�j ����d�d�����k�r%t�d�d�|�j ����d���}�n+|��j�d�k�rg|�|�k��rgt�d�d�d�|�d�d�|���}�n��|��j�d�k�r�|�|�d�k��r�t�d�d�|�d�|�d���}�n��t�|����}�|�j�|�j�}�}�|�j�d�k�r�|�}�d�}�xQ�t�|�|�|�|���\�} �} �| �d�d �t �t �| �����|�d�r*P|�d�7}�q�Wt�d�t �| ���| ���}�|�j����}�|�j�t���}�|�j�|���}�|�|�_�|�S)Nr/���r-���r%���rZ���r����rQ���r=���rw���r����r����)r���r����r����r7��r��r���r?���r����r6���rd���r_���r@���r5���r����rg���rS���rU���r<����_dexpr*��r+��r���r����r>���)r.���r/���r:���r���adjr,��r-��r����r��r����rU���r>���r'���r'���r)���rU������sJ���� 26& "& zDecimal.expc�������������C���s���d�S)NTr'���)r.���r'���r'���r)����is_canonical��s����zDecimal.is_canonicalc�������������C���s���|��j��S)N)rP���)r.���r'���r'���r)���� is_finite"��s����zDecimal.is_finitec�������������C���s ���|��j��d�k�S)NrY���)rO���)r.���r'���r'���r)���r%��*��s����zDecimal.is_infinitec�������������C���s ���|��j��d�k�S)Nr4���rX���)r4���rX���)rO���)r.���r'���r'���r)���r����.��s����zDecimal.is_nanc�������������C���s<���|��j��s�|��r�d�S|�d��k�r)�t����}�|�j�|��j����k�S)NF)rP���r���r$��r����)r.���r/���r'���r'���r)���� is_normal2��s ���� zDecimal.is_normalc�������������C���s ���|��j��d�k�S)Nr4���)rO���)r.���r'���r'���r)���r����:��s����zDecimal.is_qnanc�������������C���s ���|��j��d�k�S)Nr-���)r6���)r.���r'���r'���r)���� is_signed>��s����zDecimal.is_signedc�������������C���s ���|��j��d�k�S)NrX���)rO���)r.���r'���r'���r)���r����B��s����zDecimal.is_snanc�������������C���s<���|��j��s�|��r�d�S|�d��k�r)�t����}�|��j����|�j�k��S)NF)rP���r���r����r$��)r.���r/���r'���r'���r)����is_subnormalF��s ���� zDecimal.is_subnormalc�������������C���s���|��j��o�|��j�d�k�S)NrQ���)rP���r7���)r.���r'���r'���r)����is_zeroN��s����zDecimal.is_zeroc�������������C���s����|��j��t�|��j���d�}�|�d�k�rB�t�t�|�d�d�����d�S|�d�k�rn�t�t�d�|�d�d�����d�St�|����}�|�j�|�j�}�}�|�d�k�r��t�|�d�|���}�t�|���}�t�|���t�|���|�|�k��S|�t�t�d�|�|�����d�S)Nr-�������r����r+���r%���r����r����)rO���rd���r7���r_���rg���rS���rU���)r.���r<��r,��r-��r�����num�denr'���r'���r)���� _ln_exp_boundR��s���� zDecimal._ln_exp_boundc������� ������C���sn��|�d��k�r�t�����}�|��j�d�|���}�|�r1�|�S|��s;�t�S|��j����d�k�rQ�t�S|��t�k�ra�t�S|��j�d�k�r��|�j�t �d���St �|����}�|�j�|�j�}�}�|�j �}�|�|��j����d�}�xM�t�|�|�|���}�|�d�d�t�t�t�|�������|�d�r��P|�d�7}�q��Wt�t�|�d�k����t�t�|�����|���}�|�j����}�|�j�t���} �|�j�|���}�| �|�_�|�S) Nr/���r-���zln of a negative valuer+���rw���r����rZ���r%���)r���r�����_NegativeInfinityr����� _Infinityr��r7��r6���rb���r ���rg���rS���rU���r?���rF���_dlogrd���r_���rf���r5���r*��r+��r���r����r>���) r.���r/���r:���r,��r-��r����r��r'��r����r>���r'���r'���r)����lnk��s:���� ,+ z Decimal.lnc�������������C���s��|��j��t�|��j���d�}�|�d�k�r:�t�t�|�����d�S|�d�k�r^�t�t�d�|�����d�St�|����}�|�j�|�j�}�}�|�d�k�r��t�|�d�|���}�t�d�|���}�t�|���t�|���|�|�k��d�St�d�|�|���}�t�|���|�|�d�k��d�S) Nr-���r+���r%���r���������Z231r����r����)rO���rd���r7���r_���rg���rS���rU���)r.���r<��r,��r-��r����rD��rE��r'���r'���r)���r�����s����"zDecimal._log10_exp_boundc������� ������C���s���|�d��k�r�t�����}�|��j�d�|���}�|�r1�|�S|��s;�t�S|��j����d�k�rQ�t�S|��j�d�k�rp�|�j�t�d���S|��j�d�d�k�r��|��j�d�d����d�t �|��j���d�k�r��t �|��j�t �|��j���d���}�n��t�|����}�|�j �|�j�}�}�|�j�}�|�|��j����d�}�xM�t�|�|�|���}�|�d�d �t �t�t�|�������|�d�rNP|�d �7}�qWt�t �|�d�k����t�t�|�����|���}�|�j����}�|�j�t���} �|�j�|���}�| �|�_�|�S)Nr/���r-���zlog10 of a negative valuer%���r����rQ���r+���rw���r����rZ���)r���r����rG��r����rH��r6���rb���r ���r7���rd���r���rO���rg���rS���rU���r?���r���_dlog10r_���rf���r5���r*��r+��r���r����r>���) r.���r/���r:���r,��r-��r����r��r'��r����r>���r'���r'���r)����log10���s:���� =# ,+ z Decimal.log10c�������������C���sy���|��j��d�|���}�|�r�|�S|�d��k�r1�t����}�|��j����rA�t�S|��sZ�|�j�t�d�d���St�|��j������}�|�j�|���S)Nr/���zlogb(0)r-���) r����r���r����rH��rb���r ���r���r����r����)r.���r/���r:���r'���r'���r)����logb���s���� zDecimal.logbc�������������C���sJ���|��j��d�k�s�|��j�d�k�r"�d�Sx!�|��j�D]�}�|�d�k�r,�d�Sq,�Wd�S)Nr%���FZ01T)r6���rO���r7���)r.����digr'���r'���r)���� _islogical ��s����zDecimal._islogicalc�������������C���s����|�j��t�|���}�|�d�k�r0�d�|�|�}�n �|�d�k��rP�|�|�j��d����}�|�j��t�|���}�|�d�k�r��d�|�|�}�n �|�d�k��r��|�|�j��d����}�|�|�f�S)Nr%���rQ���)r?���rd���)r.���r/����opa�opbZdifr'���r'���r)���� _fill_logical ��s����zDecimal._fill_logicalc�������������C���s����|�d��k�r�t�����}�t�|�d�d��}�|��j����sA�|�j����rN�|�j�t���S|��j�|�|��j�|�j���\�}�}�d�j�d�d����t�|�|���D����}�t �d�|�j �d���p��d�d���S)Nr����TrT���c�������������S���s2���g��|��](�\�}�}�t��t�|���t�|���@����q�Sr'���)r_���rS���)�.0r���br'���r'���r)���� <listcomp>5 ��s��� �z'Decimal.logical_and.<locals>.<listcomp>r%���rQ���)r���r����rP��rb���r ���rS��r7���rl����zipr5���re���)r.���r����r/���rQ��rR��r����r'���r'���r)����logical_and' ��s���� !%zDecimal.logical_andc�������������C���s8���|�d��k�r�t�����}�|��j�t�d�d�|�j�d���|���S)Nr%���r����)r����logical_xorr5���r?���)r.���r/���r'���r'���r)����logical_invert8 ��s���� zDecimal.logical_invertc�������������C���s����|�d��k�r�t�����}�t�|�d�d��}�|��j����sA�|�j����rN�|�j�t���S|��j�|�|��j�|�j���\�}�}�d�j�d�d����t�|�|���D����}�t �d�|�j �d���p��d�d���S)Nr����TrT���c�������������S���s2���g��|��](�\�}�}�t��t�|���t�|���B����q�Sr'���)r_���rS���)rT��r��rU��r'���r'���r)���rV��M ��s��� �z&Decimal.logical_or.<locals>.<listcomp>r%���rQ���)r���r����rP��rb���r ���rS��r7���rl���rW��r5���re���)r.���r����r/���rQ��rR��r����r'���r'���r)���� logical_or? ��s���� !%zDecimal.logical_orc�������������C���s����|�d��k�r�t�����}�t�|�d�d��}�|��j����sA�|�j����rN�|�j�t���S|��j�|�|��j�|�j���\�}�}�d�j�d�d����t�|�|���D����}�t �d�|�j �d���p��d�d���S)Nr����TrT���c�������������S���s2���g��|��](�\�}�}�t��t�|���t�|���A����q�Sr'���)r_���rS���)rT��r��rU��r'���r'���r)���rV��^ ��s��� �z'Decimal.logical_xor.<locals>.<listcomp>r%���rQ���)r���r����rP��rb���r ���rS��r7���rl���rW��r5���re���)r.���r����r/���rQ��rR��r����r'���r'���r)���rY��P ��s���� !%zDecimal.logical_xorc�������������C���s��t��|�d�d��}�|�d��k�r'�t����}�|��j�s9�|�j�r��|��j����}�|�j����}�|�s]�|�r��|�d�k�r��|�d�k�r��|��j�|���S|�d�k�r��|�d�k�r��|�j�|���S|��j�|�|���S|��j����j�|�j������}�|�d�k�r��|��j�|���}�|�d�k�r|�}�n�|��}�|�j�|���S)Nr����Tr-���r%���r����) r����r���rP���r����r����r����r����r����r0��)r.���r����r/���r1��r2��r-��r:���r'���r'���r)����max_maga ��s&���� zDecimal.max_magc�������������C���s��t��|�d�d��}�|�d��k�r'�t����}�|��j�s9�|�j�r��|��j����}�|�j����}�|�s]�|�r��|�d�k�r��|�d�k�r��|��j�|���S|�d�k�r��|�d�k�r��|�j�|���S|��j�|�|���S|��j����j�|�j������}�|�d�k�r��|��j�|���}�|�d�k�r|��}�n�|�}�|�j�|���S)Nr����Tr-���r%���r����) r����r���rP���r����r����r����r����r����r0��)r.���r����r/���r1��r2��r-��r:���r'���r'���r)����min_mag ��s&���� zDecimal.min_magc�������������C���s����|�d��k�r�t�����}�|��j�d�|���}�|�r1�|�S|��j����d�k�rG�t�S|��j����d�k�rv�t�d�d�|�j�|�j������S|�j����}�|�j�t ���|�j ����|��j�|���}�|�|��k�r��|�S|��j�t�d�d�|�j ����d���|���S)Nr/���r-���r%���r=���r����r����)r���r����r����rG��r5���r?���r����rG���r+��r����_ignore_all_flagsr����r����r����)r.���r/���r:����new_selfr'���r'���r)���� next_minus� ��s"���� zDecimal.next_minusc�������������C���s����|�d��k�r�t�����}�|��j�d�|���}�|�r1�|�S|��j����d�k�rG�t�S|��j����d�k�rv�t�d�d�|�j�|�j������S|�j����}�|�j�t ���|�j ����|��j�|���}�|�|��k�r��|�S|��j�t�d�d�|�j ����d���|���S)Nr/���r-���r=���r%���r����r����)r���r����r����rH��r5���r?���r����rG���r+��r���r^��r����r����r����)r.���r/���r:���r_��r'���r'���r)���� next_plus� ��s"���� zDecimal.next_plusc�������������C���s7��t��|�d�d��}�|�d��k�r'�t����}�|��j�|�|���}�|�rC�|�S|��j�|���}�|�d�k�rk�|��j�|���S|�d�k�r��|��j�|���}�n�|��j�|���}�|�j����r��|�j�t �d�|�j ���|�j�t���|�j�t���n\�|�j ����|�j�k��r3|�j�t���|�j�t���|�j�t���|�j�t���|�s3|�j�t���|�S)Nr����Tr%���r-���z Infinite result from next_towardr����)r����r���r����r����r:��ra��r`��r����rb���r���r6���r���r���r����r$��r���r ���r���)r.���r����r/���r:���Z comparisonr'���r'���r)����next_toward� ��s4���� zDecimal.next_towardc�������������C���s����|��j�����r�d�S|��j����r �d�S|��j����}�|�d�k�r<�d�S|�d �k�rL�d�S|��j����ri�|��j�re�d�Sd�S|�d��k�r~�t����}�|��j�d�|���r��|��j�r��d �Sd �S|��j�r��d�Sd�Sd��S)Nr����r����r-���z +Infinityz -Infinityz-Zeroz+Zeror/���z -Subnormalz +Subnormalz-Normalz+Normalr����)r����r����r����rB��r6���r���rA��)r.���r/����infr'���r'���r)����number_class� ��s,���� zDecimal.number_classc�������������C���s ���t��d���S)Nr����)r���)r.���r'���r'���r)����radix#��s����z Decimal.radixc�������������C���sP��|�d��k�r�t�����}�t�|�d�d��}�|��j�|�|���}�|�rC�|�S|�j�d�k�r_�|�j�t���S|�j�t�|���k�o��|�j�k�n�s��|�j�t���S|��j����r��t �|����St�|���}�|��j �}�|�j�t�|���}�|�d�k�r��d�|�|�}�n�|�d�k��r |�|�d����}�|�|�d����|�d��|���}�t�|��j �|�j�d���pFd�|��j���S)Nr����Tr%���rQ���)r���r����r����rO���rb���r ���r?���rS���r����r���r7���rd���r5���r6���re���)r.���r����r/���r:����torot�rotdig�topadZrotatedr'���r'���r)����rotate'��s,���� ) zDecimal.rotatec�������������C���s��|�d��k�r�t�����}�t�|�d�d��}�|��j�|�|���}�|�rC�|�S|�j�d�k�r_�|�j�t���Sd�|�j�|�j�}�d�|�j�|�j�}�|�t�|���k�o��|�k�n�s��|�j�t���S|��j ����r��t �|����St�|��j�|��j �|��j�t�|�����}�|�j�|���}�|�S)Nr����Tr%���r+���r����)r���r����r����rO���rb���r ���r@���r?���rS���r����r���r5���r6���r7���r����)r.���r����r/���r:���ZliminfZlimsupr����r'���r'���r)����scalebH��s"���� " %zDecimal.scalebc�������������C���ss��|�d��k�r�t�����}�t�|�d�d��}�|��j�|�|���}�|�rC�|�S|�j�d�k�r_�|�j�t���S|�j�t�|���k�o��|�j�k�n�s��|�j�t���S|��j����r��t �|����St�|���}�|��j �}�|�j�t�|���}�|�d�k�r��d�|�|�}�n�|�d�k��r |�|�d����}�|�d�k��r,|�d��|���}�n"�|�d�|�}�|�|�j�d����}�t�|��j �|�j�d���pid�|��j���S)Nr����Tr%���rQ���)r���r����r����rO���rb���r ���r?���rS���r����r���r7���rd���r5���r6���re���)r.���r����r/���r:���rf��rg��rh��Zshiftedr'���r'���r)���r����a��s2���� ) z Decimal.shiftc�������������C���s���|��j��t�|����f�f�S)N)� __class__r_���)r.���r'���r'���r)���� __reduce__���s����zDecimal.__reduce__c�������������C���s)���t��|����t�k�r�|��S|��j�t�|������S)N)�typer���rk��r_���)r.���r'���r'���r)����__copy__���s����zDecimal.__copy__c�������������C���s)���t��|����t�k�r�|��S|��j�t�|������S)N)rm��r���rk��r_���)r.����memor'���r'���r)����__deepcopy__���s����zDecimal.__deepcopy__c�������������C���s��|�d��k�r�t�����}�t�|�d�|��}�|��j�r~�t�|��j�|���}�t�|��j������}�|�d�d�k�rn�|�d�7}�t�|�|�|���S|�d�d��k�r��d�d�g�|�j�|�d�<|�d�d�k�r��t �|��j�|��j �|��j�d���}��|�j�}�|�d�}�|�d��k �ry|�d�d�k�r|��j �|�d �|���}��n]�|�d�d �k�rB|��j�|�|���}��n7�|�d�d�k�ryt�|��j ���|�k�ry|��j �|�|���}��|��r�|��j�d�k�r�|�d�d �k�r�|��j�d�|���}��|��j�t�|��j ���} �|�d�d�k�r�|��r�|�d��k �r�d �|�} �qSd �} �nS�|�d�d �k�r| �} �n:�|�d�d�k�rS|��j�d�k�rM| �d�k�rM| �} �n�d �} �| �d�k��rzd�}�d�| �|��j �}�nh�| �t�|��j ���k�r�|��j �d�| �t�|��j ���}�d�}�n,�|��j �d��| ���p�d�}�|��j �| �d����}�| �| �} �t�|��j�|�|�| �|���S)N�_localeconvrm���%�g�Gr+���� precision�eEr-���zfF%ZgGr%���r����rQ���rT���i����)r����_parse_format_specifierrP����_format_signr6���r_���r����� _format_alignr����r5���r7���rO���r>���r(��r����rd����_format_number)r.���Z specifierr/���rq���specr<����bodyr>���ru��r����r����rt���ru���rU���r'���r'���r)���� __format__���sZ���� %& zDecimal.__format__)rO���r7���r6���rP���)�r1���r2���r3���� __slots__r]����classmethodro���r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r�����__radd__r����r����r�����__rmul__r����r����r����r����r����r����r����r����r����r����r����r����� __trunc__r�����propertyr����r����r����r8���r����r����r����r����r����r����r����r����r�����dictr����r����r����r����r����r��r��r��r ��r#��r����r&��r����r(��r)��r�����to_integralr/��r����r����r����r����r����r4��r5��r0��r9��r����r����r:��rU���r=��r>��r%��r����r?��r����r@��r����rA��rB��rF��rJ��r��rM��rN��rP��rS��rX��rZ��r[��rY��r\��r]��r`��ra��rb��rd��re��ri��rj��r����rl��rn��rp��r}��r'���r'���r'���r)���r���+��s���( !@ 4 V7;!$K f >,U��="c*" IK23 .*!'Fc�������������C���s7���t��j�t���}�|��|�_�|�|�_�|�|�_�|�|�_�|�S)N)r\���r]���r���r6���r7���rO���rP���)r<���Zcoefficientr���Zspecialr.���r'���r'���r)���r5������s���� r5���c���������������@���s4���e��Z�d��Z�d�d����Z�d�d����Z�d�d����Z�d�S)rM���c�������������C���s���|�j�����|��_�d��S)N)rG����new_context)r.���r���r'���r'���r)����__init__��s����z_ContextManager.__init__c�������������C���s ���t�����|��_�t�|��j���|��j�S)N)r���� saved_contextr���r���)r.���r'���r'���r)���� __enter__ ��s���� z_ContextManager.__enter__c�������������C���s���t��|��j���d��S)N)r���r���)r.����t�v�tbr'���r'���r)����__exit__ ��s����z_ContextManager.__exit__N)r1���r2���r3���r���r���r���r'���r'���r'���r)���rM�����s���rM���c���������������@���s��e��Z�d��Z�d�d�d�d�d�d�d�d�d�d�d�� �Z�d�d����Z�d�d����Z�d�d ����Z�d �d����Z�d�d ����Z�d�d����Z �d�d����Z �d�d����Z�d�d����Z�d�d����Z �e �Z�d�d�d���Z�d�d����Z�d�d����Z�d�d����Z�d�Z�d �d!����Z�d"�d#����Z�d$�d%����Z�d&�d'�d(���Z�d)�d*����Z�d+�d,����Z�d-�d.����Z�d/�d0����Z�d1�d2����Z�d3�d4����Z�d5�d6����Z�d7�d8����Z�d9�d:����Z �d;�d<����Z!�d=�d>����Z"�d?�d@����Z#�dA�dB����Z$�dC�dD����Z%�dE�dF����Z&�dG�dH����Z'�dI�dJ����Z(�dK�dL����Z)�dM�dN����Z*�dO�dP����Z+�dQ�dR����Z,�dS�dT����Z-�dU�dV����Z.�dW�dX����Z/�dY�dZ����Z0�d[�d\����Z1�d]�d^����Z2�d_�d`����Z3�da�db����Z4�dc�dd����Z5�de�df����Z6�dg�dh����Z7�di�dj����Z8�dk�dl����Z9�dm�dn����Z:�do�dp����Z;�dq�dr����Z<�ds�dt����Z=�du�dv����Z>�dw�dx����Z?�dy�dz����Z@�d{�d|����ZA�d}�d~����ZB�d�d�����ZC�d��d�����ZD�d��d�����ZE�d��d�����ZF�d�d��d����ZG�d��d�����ZH�d��d�����ZI�d��d�����ZJ�d��d�����ZK�d��d�����ZL�d��d�����ZM�d��d�����ZN�d��d�����ZO�d��d�����ZP�d��d�����ZQ�d��d�����ZR�d��d�����ZS�d��d�����ZT�d��d�����ZU�eU�ZV�d�S)�r���Nc ����������������s���y �t��} �Wn�t�k �r�Yn�X|�d��k �r1�|�n�| �j�|��_�|�d��k �rO�|�n�| �j�|��_�|�d��k �rm�|�n�| �j�|��_�|�d��k �r��|�n�| �j�|��_�|�d��k �r��|�n�| �j�|��_�|�d��k �r��|�n�| �j�|��_�| �d��k�r��g��|��_�n �| �|��_���d��k�r| �j �j ����|��_ �nA�t���t���sMt���f�d�d����t ���D����|��_ �n ���|��_ ����d��k�rzt�j�t �d���|��_�nA�t����t���s�t����f�d�d����t ����D����|��_�n ����|��_�d��S)Nc�������������3���s'���|��]�}�|�t��|����k���f�Vq�d��S)N)rS���)rT��r����)r��r'���r)���� <genexpr><��s����z#Context.__init__.<locals>.<genexpr>r%���c�������������3���s'���|��]�}�|�t��|����k���f�Vq�d��S)N)rS���)rT��r����)r��r'���r)���r���C��s����)r���� NameErrorr?���r>���r$��r@���r����r�����_ignored_flagsr��rG���r^���r���r���fromkeysr��)r.���r?���r>���r$��r@���r����r����r��r��r���Zdcr'���)r��r��r)���r���#��s.���� ) )zContext.__init__c�������������C���s����t��|�t���s�t�d�|�����|�d�k�rV�|�|�k�r��t�d�|�|�|�|�f�����nk�|�d�k�r��|�|�k��r��t�d�|�|�|�|�f�����n4�|�|�k��s��|�|�k�r��t�d�|�|�|�|�f�����t�j�|��|�|���S)Nz%s must be an integerz-infz%s must be in [%s, %d]. got: %src��z%s must be in [%d, %s]. got: %sz%s must be in [%d, %d]. got %s)r^���rS���rp���rj���r\����__setattr__)r.����namerr���ZvminZvmaxr'���r'���r)����_set_integer_checkG��s����zContext._set_integer_checkc�������������C���s����t��|�t���s�t�d�|�����x*�|�D]"�}�|�t�k�r&�t�d�|�����q&�Wx*�t�D]"�}�|�|�k�rS�t�d�|�����qS�Wt�j�|��|�|���S)Nz%s must be a signal dictz%s is not a valid signal dict)r^���r���rp���r���KeyErrorr\���r���)r.���r���r�����keyr'���r'���r)����_set_signal_dictU��s���� zContext._set_signal_dictc�������������C���s@��|�d�k�r"�|��j��|�|�d�d���S|�d�k�rD�|��j��|�|�d�d���S|�d�k�rf�|��j��|�|�d�d���S|�d�k�r��|��j��|�|�d�d���S|�d �k�r��|��j��|�|�d�d���S|�d �k�r��|�t�k�r��t�d�|�����t�j�|��|�|���S|�d�k�s��|�d �k�r |��j�|�|���S|�d�k�r,t�j�|��|�|���St�d�|�����d��S)Nr?���r-���rc��r$��z-infr%���r@���r����r����r>���z%s: invalid rounding moder��r��r���z.'decimal.Context' object has no attribute '%s')r����_rounding_modesrp���r\���r���r���rK���)r.���r���rr���r'���r'���r)���r���`��s(����zContext.__setattr__c�������������C���s���t��d�|�����d��S)Nz%s cannot be deleted)rK���)r.���r���r'���r'���r)����__delattr__y��s����zContext.__delattr__c���������� ���C���so���d�d����|��j��j����D��}�d�d����|��j�j����D��}�|��j�|��j�|��j�|��j�|��j�|��j�|��j �|�|�f�f�S)Nc�������������S���s"���g��|��]�\�}�}�|�r�|���q�Sr'���r'���)rT���sigr���r'���r'���r)���rV��~��s��� �z&Context.__reduce__.<locals>.<listcomp>c�������������S���s"���g��|��]�\�}�}�|�r�|���q�Sr'���r'���)rT��r���r���r'���r'���r)���rV����s��� �) r���itemsr��rk��r?���r>���r$��r@���r����r����)r.���r��r��r'���r'���r)���rl��}��s ����zContext.__reduce__c�������������C���s����g��}�|�j��d�t�|������d�d����|��j�j����D��}�|�j��d�d�j�|���d���d�d����|��j�j����D��}�|�j��d�d�j�|���d���d�j�|���d �S) NzrContext(prec=%(prec)d, rounding=%(rounding)s, Emin=%(Emin)d, Emax=%(Emax)d, capitals=%(capitals)d, clamp=%(clamp)dc�������������S���s%���g��|��]�\�}�}�|�r�|�j����q�Sr'���)r1���)rT��r���r���r'���r'���r)���rV�����s��� �z$Context.__repr__.<locals>.<listcomp>zflags=[z, �]c�������������S���s%���g��|��]�\�}�}�|�r�|�j����q�Sr'���)r1���)rT��r���r���r'���r'���r)���rV�����s��� �ztraps=[�))rk����varsr��r���rl���r��)r.���r�����namesr'���r'���r)���r�������s���� zContext.__repr__c�������������C���s%���x�|��j��D]�}�d�|��j��|�<q �Wd��S)Nr%���)r��)r.����flagr'���r'���r)���rH������s����zContext.clear_flagsc�������������C���s%���x�|��j��D]�}�d�|��j��|�<q �Wd��S)Nr%���)r��)r.���r���r'���r'���r)����clear_traps���s����zContext.clear_trapsc���������� ���C���sC���t��|��j�|��j�|��j�|��j�|��j�|��j�|��j�|��j�|��j �� �}�|�S)N) r���r?���r>���r$��r@���r����r����r��r��r���)r.����ncr'���r'���r)���r*�����s����zContext._shallow_copyc���������� ���C���sO���t��|��j�|��j�|��j�|��j�|��j�|��j�|��j�j����|��j �j����|��j �� �}�|�S)N)r���r?���r>���r$��r@���r����r����r��rG���r��r���)r.���r���r'���r'���r)���rG������s ����zContext.copyc�������������G���sq���t��j�|�|���}�|�|��j�k�r4�|����j�|��|���Sd�|��j�|�<|��j�|�sa�|����j�|��|���S|�|�����d��S)Nr-���)�_condition_map�getr���r0���r��r��)r.���Z conditionZexplanationr(����errorr'���r'���r)���rb������s���� zContext._raise_errorc�������������C���s ���|��j��t����S)N)� _ignore_flagsr��)r.���r'���r'���r)���r^�����s����zContext._ignore_all_flagsc�������������G���s ���|��j��t�|���|��_��t�|���S)N)r���rh���)r.���r��r'���r'���r)���r������s����zContext._ignore_flagsc�������������G���sN���|�r)�t��|�d�t�t�f���r)�|�d�}�x�|�D]�}�|��j�j�|���q0�Wd��S)Nr%���)r^���ri���rh���r����remove)r.���r��r���r'���r'���r)���� _regard_flags���s���� zContext._regard_flagsc�������������C���s���t��|��j�|��j�d���S)Nr-���)rS���r$��r?���)r.���r'���r'���r)���r�������s����z Context.Etinyc�������������C���s���t��|��j�|��j�d���S)Nr-���)rS���r@���r?���)r.���r'���r'���r)���r�������s����zContext.Etopc�������������C���s���|��j��}�|�|��_��|�S)N)r>���)r.���rm��r>���r'���r'���r)���r+�����s���� zContext._set_roundingrQ���c�������������C���s����t��|�t���r1�|�|�j����k�r1�|��j�t�d���St�|�d�|���}�|�j����r~�t�|�j���|��j �|��j �k�r~�|��j�t�d���S|�j�|����S)Nz/no trailing or leading whitespace is permitted.r/���zdiagnostic info too long in NaN)r^���r_���ra���rb���r���r���r����rd���r7���r?���r����r����)r.���rD��r����r'���r'���r)����create_decimal���s����! + zContext.create_decimalc�������������C���s���t��j�|���}�|�j�|����S)N)r���ro���r����)r.���r���r����r'���r'���r)����create_decimal_from_float��s����z!Context.create_decimal_from_floatc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����r����)r.���r��r'���r'���r)���rf�����s����zContext.absc�������������C���sN���t��|�d�d��}�|�j�|�d�|���}�|�t�k�rF�t�d�|�����n�|�Sd��S)Nr����Tr/���zUnable to convert %s to Decimal)r����r����r����rp���)r.���r��rU��r����r'���r'���r)����add)��s ����zContext.addc�������������C���s���t��|�j�|������S)N)r_���r����)r.���r��r'���r'���r)����_apply>��s����zContext._applyc�������������C���s%���t��|�t���s�t�d�����|�j����S)Nz,canonical requires a Decimal as an argument.)r^���r���rp���r4��)r.���r��r'���r'���r)���r4��A��s���� zContext.canonicalc�������������C���s%���t��|�d�d��}�|�j�|�d�|���S)Nr����Tr/���)r����r����)r.���r��rU��r'���r'���r)���r����N��s����!zContext.comparec�������������C���s%���t��|�d�d��}�|�j�|�d�|���S)Nr����Tr/���)r����r5��)r.���r��rU��r'���r'���r)���r5��r��s���� zContext.compare_signalc�������������C���s���t��|�d�d��}�|�j�|���S)Nr����T)r����r0��)r.���r��rU��r'���r'���r)���r0�����s����zContext.compare_totalc�������������C���s���t��|�d�d��}�|�j�|���S)Nr����T)r����r9��)r.���r��rU��r'���r'���r)���r9�����s����zContext.compare_total_magc�������������C���s���t��|�d�d��}�|�j����S)Nr����T)r����r����)r.���r��r'���r'���r)���r�������s���� zContext.copy_absc�������������C���s���t��|�d�d��}�t�|���S)Nr����T)r����r���)r.���r��r'���r'���r)����copy_decimal���s���� zContext.copy_decimalc�������������C���s���t��|�d�d��}�|�j����S)Nr����T)r����r����)r.���r��r'���r'���r)���r�������s���� zContext.copy_negatec�������������C���s���t��|�d�d��}�|�j�|���S)Nr����T)r����r:��)r.���r��rU��r'���r'���r)���r:�����s����zContext.copy_signc�������������C���sN���t��|�d�d��}�|�j�|�d�|���}�|�t�k�rF�t�d�|�����n�|�Sd��S)Nr����Tr/���zUnable to convert %s to Decimal)r����r����r����rp���)r.���r��rU��r����r'���r'���r)����divide���s ����zContext.dividec�������������C���sN���t��|�d�d��}�|�j�|�d�|���}�|�t�k�rF�t�d�|�����n�|�Sd��S)Nr����Tr/���zUnable to convert %s to Decimal)r����r����r����rp���)r.���r��rU��r����r'���r'���r)���� divide_int��s ����zContext.divide_intc�������������C���sN���t��|�d�d��}�|�j�|�d�|���}�|�t�k�rF�t�d�|�����n�|�Sd��S)Nr����Tr/���zUnable to convert %s to Decimal)r����r����r����rp���)r.���r��rU��r����r'���r'���r)���r����5��s ����zContext.divmodc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����rU���)r.���r��r'���r'���r)���rU���J��s����zContext.expc�������������C���s(���t��|�d�d��}�|�j�|�|�d�|���S)Nr����Tr/���)r����r����)r.���r��rU��r-��r'���r'���r)���r����b��s����zContext.fmac�������������C���s%���t��|�t���s�t�d�����|�j����S)Nz/is_canonical requires a Decimal as an argument.)r^���r���rp���r=��)r.���r��r'���r'���r)���r=��y��s���� zContext.is_canonicalc�������������C���s���t��|�d�d��}�|�j����S)Nr����T)r����r>��)r.���r��r'���r'���r)���r>�����s����zContext.is_finitec�������������C���s���t��|�d�d��}�|�j����S)Nr����T)r����r%��)r.���r��r'���r'���r)���r%�����s����zContext.is_infinitec�������������C���s���t��|�d�d��}�|�j����S)Nr����T)r����r����)r.���r��r'���r'���r)���r�������s���� zContext.is_nanc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����r?��)r.���r��r'���r'���r)���r?�����s����zContext.is_normalc�������������C���s���t��|�d�d��}�|�j����S)Nr����T)r����r����)r.���r��r'���r'���r)���r�������s����zContext.is_qnanc�������������C���s���t��|�d�d��}�|�j����S)Nr����T)r����r@��)r.���r��r'���r'���r)���r@�����s����zContext.is_signedc�������������C���s���t��|�d�d��}�|�j����S)Nr����T)r����r����)r.���r��r'���r'���r)���r�������s���� zContext.is_snanc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����rA��)r.���r��r'���r'���r)���rA����s����zContext.is_subnormalc�������������C���s���t��|�d�d��}�|�j����S)Nr����T)r����rB��)r.���r��r'���r'���r)���rB����s����zContext.is_zeroc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����rJ��)r.���r��r'���r'���r)���rJ��)��s����z Context.lnc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����rM��)r.���r��r'���r'���r)���rM��?��s����z Context.log10c�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����rN��)r.���r��r'���r'���r)���rN��[��s����zContext.logbc�������������C���s%���t��|�d�d��}�|�j�|�d�|���S)Nr����Tr/���)r����rX��)r.���r��rU��r'���r'���r)���rX��u��s����zContext.logical_andc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����rZ��)r.���r��r'���r'���r)���rZ�����s����zContext.logical_invertc�������������C���s%���t��|�d�d��}�|�j�|�d�|���S)Nr����Tr/���)r����r[��)r.���r��rU��r'���r'���r)���r[�����s����zContext.logical_orc�������������C���s%���t��|�d�d��}�|�j�|�d�|���S)Nr����Tr/���)r����rY��)r.���r��rU��r'���r'���r)���rY�����s����zContext.logical_xorc�������������C���s%���t��|�d�d��}�|�j�|�d�|���S)Nr����Tr/���)r����r����)r.���r��rU��r'���r'���r)���r�������s����zContext.maxc�������������C���s%���t��|�d�d��}�|�j�|�d�|���S)Nr����Tr/���)r����r\��)r.���r��rU��r'���r'���r)���r\�����s����zContext.max_magc�������������C���s%���t��|�d�d��}�|�j�|�d�|���S)Nr����Tr/���)r����r����)r.���r��rU��r'���r'���r)���r������s����zContext.minc�������������C���s%���t��|�d�d��}�|�j�|�d�|���S)Nr����Tr/���)r����r]��)r.���r��rU��r'���r'���r)���r]�� ��s����zContext.min_magc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����r����)r.���r��r'���r'���r)����minus1��s����z Context.minusc�������������C���sN���t��|�d�d��}�|�j�|�d�|���}�|�t�k�rF�t�d�|�����n�|�Sd��S)Nr����Tr/���zUnable to convert %s to Decimal)r����r����r����rp���)r.���r��rU��r����r'���r'���r)����multiplyB��s ����zContext.multiplyc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����r`��)r.���r��r'���r'���r)���r`��b��s����zContext.next_minusc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����ra��)r.���r��r'���r'���r)���ra��v��s����zContext.next_plusc�������������C���s%���t��|�d�d��}�|�j�|�d�|���S)Nr����Tr/���)r����rb��)r.���r��rU��r'���r'���r)���rb�����s���� zContext.next_towardc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����r#��)r.���r��r'���r'���r)���r#�����s����zContext.normalizec�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����rd��)r.���r��r'���r'���r)���rd�����s����/zContext.number_classc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����r����)r.���r��r'���r'���r)����plus���s����zContext.plusc�������������C���sQ���t��|�d�d��}�|�j�|�|�d�|���}�|�t�k�rI�t�d�|�����n�|�Sd��S)Nr����Tr/���zUnable to convert %s to Decimal)r����r��r����rp���)r.���r��rU��r����r����r'���r'���r)����power��s ����Iz Context.powerc�������������C���s%���t��|�d�d��}�|�j�|�d�|���S)Nr����Tr/���)r����r����)r.���r��rU��r'���r'���r)���r����X��s����7zContext.quantizec�������������C���s ���t��d���S)Nr����)r���)r.���r'���r'���r)���re�����s����z Context.radixc�������������C���sN���t��|�d�d��}�|�j�|�d�|���}�|�t�k�rF�t�d�|�����n�|�Sd��S)Nr����Tr/���zUnable to convert %s to Decimal)r����r����r����rp���)r.���r��rU��r����r'���r'���r)���r�������s ����zContext.remainderc�������������C���s%���t��|�d�d��}�|�j�|�d�|���S)Nr����Tr/���)r����r����)r.���r��rU��r'���r'���r)���r�������s����zContext.remainder_nearc�������������C���s%���t��|�d�d��}�|�j�|�d�|���S)Nr����Tr/���)r����ri��)r.���r��rU��r'���r'���r)���ri�����s����zContext.rotatec�������������C���s���t��|�d�d��}�|�j�|���S)Nr����T)r����r&��)r.���r��rU��r'���r'���r)���r&�����s����zContext.same_quantumc�������������C���s%���t��|�d�d��}�|�j�|�d�|���S)Nr����Tr/���)r����rj��)r.���r��rU��r'���r'���r)���rj����s����zContext.scalebc�������������C���s%���t��|�d�d��}�|�j�|�d�|���S)Nr����Tr/���)r����r����)r.���r��rU��r'���r'���r)���r����*��s����z Context.shiftc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����r/��)r.���r��r'���r'���r)���r/��H��s����zContext.sqrtc�������������C���sN���t��|�d�d��}�|�j�|�d�|���}�|�t�k�rF�t�d�|�����n�|�Sd��S)Nr����Tr/���zUnable to convert %s to Decimal)r����r����r����rp���)r.���r��rU��r����r'���r'���r)����subtracth��s ����zContext.subtractc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����r����)r.���r��r'���r'���r)���r������s����zContext.to_eng_stringc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����r����)r.���r��r'���r'���r)���� to_sci_string���s����zContext.to_sci_stringc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����r)��)r.���r��r'���r'���r)���r)�����s����zContext.to_integral_exactc�������������C���s"���t��|�d�d��}�|�j�d�|����S)Nr����Tr/���)r����r����)r.���r��r'���r'���r)���r�������s����zContext.to_integral_value)Wr1���r2���r3���r���r���r���r���r���rl��r����rH���r���r*��rG���rn��rb���r^��r���r���r����r����r����r+��r���r���rf���r���r���r4��r����r5��r0��r9��r����r���r����r:��r���r���r����rU���r����r=��r>��r%��r����r?��r����r@��r����rA��rB��rJ��rM��rN��rX��rZ��r[��rY��r����r\��r����r]��r���r���r`��ra��rb��r#��rd��r���r���r����re��r����r����ri��r&��rj��r����r/��r���r����r���r)��r����r���r'���r'���r'���r)���r�����s����" $# % #2P:&" c���������������@���s7���e��Z�d��Z�d �Z�d�d�d���Z�d�d����Z�e�Z�d�S) rg���r<���rS���rU���Nc�������������C���s����|�d��k�r*�d��|��_��d�|��_�d��|��_�nc�t�|�t���rf�|�j�|��_��t�|�j���|��_�|�j�|��_�n'�|�d�|��_��|�d�|��_�|�d�|��_�d��S)Nr%���r-���r+���)r<���rS���rU���r^���r���r6���r7���rO���)r.���rr���r'���r'���r)���r������s���� z_WorkRep.__init__c�������������C���s���d�|��j��|��j�|��j�f�S)Nz(%r, %r, %r))r<���rS���rU���)r.���r'���r'���r)���r�������s����z_WorkRep.__repr__)r<���rS���rU���)r1���r2���r3���r~��r���r����r����r'���r'���r'���r)���rg������s���rg���c�������������C���s����|��j��|�j��k��r!�|�}�|��}�n�|��}�|�}�t�t�|�j�����}�t�t�|�j�����}�|�j��t�d�|�|�d���}�|�|�j��d�|�k��r��d�|�_�|�|�_��|�j�d�|�j��|�j��9_�|�j��|�_��|��|�f�S)Nr-���r+���r����r����)rU���rd���r_���rS���r����)r����r����r?����tmpr����Ztmp_lenZ other_lenrU���r'���r'���r)���r�������s���� r����c�������������C���s{���|��d�k�r�d�S|�d�k�r(�|��d�|�St��t�|������}�t�|���t�|�j�d�����}�|�|�k��rj�d��S|��d�|�Sd��S)Nr%���r����rQ���)r_���rf���rd����rstrip)r4���r����Zstr_nZval_nr'���r'���r)���r ����s����r ��c�������������C���s[���|��d�k�s�|�d�k�r$�t��d�����d�}�x*�|�|�k�rV�|�|�|��|�d�?}�}�q-�W|�S)Nr%���z3Both arguments to _sqrt_nearest should be positive.r-���)rj���)r4���r��rU��r'���r'���r)���� _sqrt_nearest2��s����r���c�������������C���s7���d�|�>|��|�?}�}�|�d�|��|�d�@|�d�@|�k�S)Nr-���r+���r'���)r ��r����rU��r����r'���r'���r)����_rshift_nearestA��s����r���c�������������C���s/���t��|��|���\�}�}�|�d�|�|�d�@|�k�S)Nr+���r-���)r����)r��rU��r����r����r'���r'���r)����_div_nearestI��s����r���r��c������� ��� ���C���s7��|��|�}�d�}�x��|�|�k�r9�t��|���|�|�>|�k�s_�|�|�k�r��t��|���|�|�?|�k�r��t�|�|�d�>|�t�|�|�t�|�|���|�����}�|�d�7}�q�Wt�d�t�t�|�����d�|���}�t�|�|���}�t�|�|���}�x>�t�|�d�d�d���D]&�}�t�|�|���t�|�|�|���}�q��Wt�|�|�|���S)Nr%���r-���r����rZ���i����r����)rf���r���r���r���rS���rd���r_���r����) r ���M�Lr���R�TZyshift�wr����r'���r'���r)����_ilogQ��s���� )&'%$r���c������� ������C���s����|�d�7}�t��t�|������}�|�|�|�|�d�k�}�|�d�k�r��d�|�}�|�|�|�}�|�d�k�ru�|��d�|�9}��n�t�|��d�|���}��t�|��|���}�t�|���}�t�|�|�|���}�|�|�} �n�d�}�t�|�d�|���} �t�| �|�d���S)Nr+���r-���r%���r����r��)rd���r_���r���r���� _log10_digits) r-��r����r��r.��r���r���r�����log_dZlog_10Zlog_tenpowerr'���r'���r)���rL�����s ���� rL��c������� ������C���s��|�d�7}�t��t�|������}�|�|�|�|�d�k�}�|�d�k�r��|�|�|�}�|�d�k�rk�|��d�|�9}��n�t�|��d�|���}��t�|��d�|���}�n�d�}�|�r��t��t�t�|�������d�}�|�|�d�k�r��t�|�t�|�|���d�|���}�q�d�}�n�d�}�t�|�|�d���S)Nr+���r-���r%���r����r��)rd���r_���r���r���rf���r���) r-��r����r��r.��r���r����r���r��Z f_log_tenr'���r'���r)���rI�����s"���� $ rI��c���������������@���s(���e��Z�d��Z�d�d����Z�d�d����Z�d�S)� _Log10Memoizec�������������C���s ���d�|��_��d��S)NZ/23025850929940456840179914546843642076011014886)rv���)r.���r'���r'���r)���r������s����z_Log10Memoize.__init__c�������������C���s����|�d�k��r�t��d�����|�t�|��j���k�r��d�}�x^�d�|�|�d�}�t�t�t�d�|�|���d�����}�|�|�d����d�|�k�r��P|�d�7}�q6�W|�j�d���d��d ���|��_�t�|��j�d��|�d�����S) Nr%���zp should be nonnegativerZ���r����r+���r��rQ���r-���r����)rj���rd���rv���r_���r���r���r���rS���)r.���r��r��r���rv���r'���r'���r)���� getdigits���s���� "z_Log10Memoize.getdigitsN)r1���r2���r3���r���r���r'���r'���r'���r)���r������s���r���c������� ������C���s����t��|��|�>|���}�t�d�t�t�|�����d�|���}�t�|��|���}�|�|�>}�x9�t�|�d�d�d���D]!�}�t�|��|�|�|�|���}�qi�WxC�t�|�d�d�d ���D]+�}�|�|�d�>}�t�|�|�|�|���}�q��W|�|�S) Nr����rZ���r-���r%���r+���i����r����r����r����)r ��rS���rd���r_���r���r����) r ��r���r���r���r���r��ZMshiftr��r����r'���r'���r)����_iexp���s����% r���c������� ������C���s����|�d�7}�t��d�|�t�t�|������d���}�|�|�}�|�|�}�|�d�k�r^�|��d�|�}�n�|��d�|�}�t�|�t�|�����\�}�}�t�|�d�|���}�t�t�|�d�|���d���|�|�d�f�S)Nr+���r%���r-���r����i���rZ���)r����rd���r_���r����r���r���r���) r-��r����r��r��r����r����ZcshiftZquotr��r'���r'���r)���r;����s���� # r;��c�������������C���s*��t��t�t�|�������|�}�t�|��|�|�|�d���}�|�|�}�|�d�k�ra�|�|�d�|�}�n�t�|�|�d�|���}�|�d�k�r��t��t�|������|�d�k�|�d�k�k�r��d�|�d�d�d�|�} �} �q d�|�d�|�} �} �n:�t�|�|�d�|�d���\�} �} �t�| �d���} �| �d�7} �| �| �f�S)Nr-���r%���r����)rd���r_���rf���rI��r���r;��)r��r��r��r��r��rU��Zlxcr����Zpcr����rU���r'���r'���r)���r��=��s���� ( ! r��r����r���2�F����3�5����4�(����5�����6rC���7�����8r����r=���rw���c�������������C���s>���|��d�k�r�t��d�����t�|����}�d�t�|���|�|�d�S)Nr%���z0The argument to _log10_lb should be nonnegative.r��)rj���r_���rd���)r-��Z correctionZstr_cr'���r'���r)���r��g��s����r��c�������������C���sh���t��|��t���r�|��St��|��t���r,�t�|����S|�rN�t��|��t���rN�t�j�|����S|�rd�t�d�|������t�S)NzUnable to convert %s to Decimal)r^���r���rS���rn���ro���rp���r����)r����r����Zallow_floatr'���r'���r)���r����r��s���� r����c�������������C���s���t��|�t���r�|��|�f�St��|�t�j���ru�|��j�sb�t�|��j�t�t�|��j ���|�j ���|��j���}��|��t�|�j���f�S|�r��t��|�t�j ���r��|�j�d�k�r��|�j�}�t��|�t���r��t����}�|�r��d�|�j�t�<n�|�j�t�d���|��t�j�|���f�St�t�f�S)Nr%���r-���z;strict semantics for mixing floats and Decimals are enabled)r^���r����_numbersZRationalrP���r5���r6���r_���rS���r7����denominatorrO���� numeratorZComplexr����r����rn���r���r��r���rb���ro���r����)r.���r����r����r/���r'���r'���r)���r�������s$���� ' r����r?���r��r>���r��r��r@���i?B�r$��r����r����r[���a��� # A numeric string consists of: # \s* (?P<sign>[-+])? # an optional sign, followed by either... ( (?=\d|\.\d) # ...a number (with at least one digit) (?P<int>\d*) # having a (possibly empty) integer part (\.(?P<frac>\d*))? # followed by an optional fractional part (E(?P<exp>[-+]?\d+))? # followed by an optional exponent, or... | Inf(inity)? # ...an infinity, or... | (?P<signal>s)? # ...an (optionally signaling) NaN # NaN (?P<diag>\d*) # with (possibly empty) diagnostic info. ) # \s* \Z z0*$z50*$z�\A (?: (?P<fill>.)? (?P<align>[<>=^]) )? (?P<sign>[-+ ])? (?P<alt>\#)? (?P<zeropad>0)? (?P<minimumwidth>(?!0)\d+)? (?P<thousands_sep>,)? (?:\.(?P<precision>0|(?!0)\d+))? (?P<type>[eEfFgGn%])? \Z c�������������C���s ��t��j�|����}�|�d��k�r+�t�d�|������|�j����}�|�d�}�|�d�}�|�d�d��k �|�d�<|�d�r��|�d��k �r��t�d�|������|�d��k �r��t�d�|������|�p��d�|�d�<|�p��d�|�d�<|�d �d��k�r��d �|�d �<t�|�d�p��d���|�d�<|�d �d��k �rt�|�d ���|�d �<|�d �d�k�rS|�d�d��k�sI|�d�d�k�rSd�|�d �<|�d�d�k�r�d�|�d�<|�d��k�r�t�j����}�|�d�d��k �r�t�d�|������|�d�|�d�<|�d�|�d�<|�d�|�d�<n4�|�d�d��k�r�d�|�d�<d�d�g�|�d�<d�|�d�<|�S)NzInvalid format specifier: �fill�align�zeropadz7Fill character conflicts with '0' in format specifier: z2Alignment conflicts with '0' in format specifier: � �>r<���rR����minimumwidthrQ���ru��r%���rm��ZgGnr-���r4���rs��� thousands_sepzJExplicit thousands separator conflicts with 'n' type in format specifier: �grouping� decimal_pointrT���rZ���r����)�_parse_format_specifier_regex�matchrj���� groupdictrS����_locale� localeconv)�format_specrq��rs���Zformat_dictr���r���r'���r'���r)���rw����sN���� rw��c������� ������C���s����|�d�}�|�d�}�|�|�t��|����t��|���}�|�d�}�|�d�k�rY�|��|�|�}�n��|�d�k�rv�|�|��|�}�nn�|�d�k�r��|��|�|�}�nQ�|�d�k�r��t��|���d�}�|�d��|���|��|�|�|�d����}�n�t�d �����|�S) Nr���r���r����<r����=�^r+���zUnrecognised alignment field)rd���rj���) r<���r|��r{��r���r���Zpaddingr���r����Zhalfr'���r'���r)���ry��b��s���� )ry��c�������������C���s����d�d�l��m�}�m�}�|��s �g��S|��d�d�k�rc�t�|����d�k�rc�|�|��d��d���|�|��d�����S|��d �t�j�k�r��|��d��d ���St�d�����d��S)Nr%���)�chain�repeatr-���r+���z unrecognised format for groupingr����r����r����r����r����)� itertoolsr���r���rd���r����CHAR_MAXrj���)r���r���r���r'���r'���r)����_group_lengths}��s���� "!r���c�������������C���s(��|�d�}�|�d�}�g��}�x��t��|���D]��}�|�d�k�rE�t�d�����t�t�t�|����|�d���|���}�|�j�d�|�t�|����|��|�d������|��d��|���}��|�|�8}�|��r��|�d�k�r��P|�t�|���8}�q'�Wt�t�|����|�d���}�|�j�d�|�t�|����|��|�d������|�j�t�|�����S)Nr���r���r%���zgroup length should be positiver-���rQ���)r���rj���r����r����rd���rk���rl����reversed)rv���r{��� min_width�sepr����groupsr.��r'���r'���r)����_insert_thousands_sep���s ���� !* *r���c�������������C���s*���|��r �d�S|�d�d�k�r"�|�d�Sd�Sd��S)NrR���r<���z +rT���r'���)�is_negativer{��r'���r'���r)���rx�����s ����rx��c�������������C���s����t��|��|���}�|�s�|�d�r-�|�d�|�}�|�d�k�sI�|�d�d�k�r��d�d�d�d�d�d�d �d�i�|�d�}�|�d �j�|�|���7}�|�d�d�k�r��|�d�7}�|�d�r��|�d �t�|���t�|���}�n�d�}�t�|�|�|���}�t�|�|�|�|���S)NZaltr���r%���rm��rv��r����r����rt��rs��z{0}{1:+}rr��r���r���)rx���formatrd���r���ry��)r���rt���ru���rU���r{��r<���Zecharr���r'���r'���r)���rz�����s����& !rz��ZInfz-Infr����)|�__all__r1���rC����__version__Z__libmpdec_version__�mathrx���Znumbersr���rD����collectionsr&���Z_namedtupler����ImportErrorr���r���r���r���r���r���r���r���r$����maxsizer ���r!���r"���r#����ArithmeticErrorr���r���r ���r����ZeroDivisionErrorr ���r���r���r���r���r���r ���r���r���rp���r���r��r���r���rI���r\���rA���rE���rK����hasattrrJ���rF���r���r���r���r���r5����Number�registerrM���r���rg���r����rS���r~���r ��r ��r���r���r���r���rL��rI��r���r���r���r���r;��r��r��r����r����r���r���r����re�compile�VERBOSE� IGNORECASEr���r`���r����r�����DOTALLr����localer���rw��ry��r���r���rx��rz��rH��rG��r9���r7��r��r6��r;���� hash_info�modulusr����rc��r����r����r����r����r����r'���r'���r'���r)����<module>u���sT�� & .�������������������������������������� 0",#%$+' * P% )