Ë
    íU.jº-  ã                   ó>   — d dl mZ ddlmZmZmZmZ  G d„ de«      Zy)é   )ÚIntegerBaseé    )Úlong_to_bytesÚbytes_to_longÚinverseÚGCDc                   óh  — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d5d„Z
ed6d	„«       Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZeZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd7d„Zd7d„Zd„ Zd7d„Zd„ Zd„ Z d„ Z!d„ Z"d „ Z#d!„ Z$d"„ Z%d#„ Z&d$„ Z'd%„ Z(d&„ Z)d'„ Z*d(„ Z+d)„ Z,d*„ Z-d+„ Z.d,„ Z/d-„ Z0d.„ Z1d/„ Z2d0„ Z3d1„ Z4d2„ Z5e6d3„ «       Z7e6d4„ «       Z8y)8ÚIntegerNativez3A class to model a natural integer (including zero)c                 óŠ   — t        |t        «      rt        d«      ‚	 |j                  | _        y # t        $ r
 || _        Y y w xY w)Nz-A floating point type is not a natural number)Ú
isinstanceÚfloatÚ
ValueErrorÚ_valueÚAttributeError)ÚselfÚvalues     ú\C:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\Crypto/Math/_IntegerNative.pyÚ__init__zIntegerNative.__init__'   s>   € Ü�eœUÔ#ÜÐLÓMÐMð	 ØŸ,™,ˆD�KøÜò 	 ØˆDŽKð	 ús   �/ ¯AÁAc                 ó   — | j                   S ©N©r   ©r   s    r   Ú__int__zIntegerNative.__int__0   s   € Ø�{‰{Ðó    c                 ó*   — t        t        | «      «      S r   )ÚstrÚintr   s    r   Ú__str__zIntegerNative.__str__3   s   € Ü”3�t“9‹~Ðr   c                 ó   — dt        | «      z  S )NzInteger(%s))r   r   s    r   Ú__repr__zIntegerNative.__repr__6   s   € Øœs 4›yÑ(Ð(r   c                 ó,   — t        | j                  «      S r   )Úhexr   r   s    r   Ú__hex__zIntegerNative.__hex__:   ó   € Ü�4—;‘;ÓÐr   c                 ó,   — t        | j                  «      S r   ©r   r   r   s    r   Ú	__index__zIntegerNative.__index__>   r$   r   c                 ó"  — | j                   dk  rt        d«      ‚t        | j                   |«      }t        |«      |cxkD  rdkD  rt        d«      ‚ |dk(  r	 |S |dk(  r(t	        |«      }|j                  «        t        |«      }|S t        d«      ‚)Nr   ú.Conversion only valid for non-negative numberszValue too large to encodeÚbigÚlittleúIncorrect byteorder)r   r   r   ÚlenÚ	bytearrayÚreverseÚbytes)r   Ú
block_sizeÚ	byteorderÚresults       r   Úto_byteszIntegerNative.to_bytesA   s™   € Ø�;‰;˜Š?ÜÐMÓNÐNÜ˜tŸ{™{¨JÓ7ˆÜˆv‹;˜Ô' aÒ'ÜÐ8Ó9Ð9ð (à˜ÒØð ˆð ˜(Ò"Ü˜vÓ&ˆFØ�N‰NÔÜ˜6“]ˆFð ˆô Ð2Ó3Ð3r   c                 óˆ   — |dk(  rn,|dk(  rt        |«      }|j                  «        nt        d«      ‚ | t        |«      «      S )Nr*   r+   r,   )r.   r/   r   r   )ÚclsÚbyte_stringr2   s      r   Ú
from_byteszIntegerNative.from_bytesQ   sG   € à˜ÒØØ˜(Ò"Ü# KÓ0ˆKØ×ÑÕ!äÐ2Ó3Ð3Ù”= Ó-Ó.Ð.r   c                 ó8   — |€y| j                   t        |«      k(  S )NF©r   r   ©r   Úterms     r   Ú__eq__zIntegerNative.__eq__]   s   € Øˆ<ØØ�{‰{œc $›iÑ'Ð'r   c                 ó&   — | j                  |«       S r   )r=   r;   s     r   Ú__ne__zIntegerNative.__ne__b   ó   € Ø—;‘;˜tÓ$Ð$Ð$r   c                 ó2   — | j                   t        |«      k  S r   r:   r;   s     r   Ú__lt__zIntegerNative.__lt__e   s   € Ø�{‰{œS ›YÑ&Ð&r   c                 óJ   — | j                  |«      xs | j                  |«      S r   )rB   r=   r;   s     r   Ú__le__zIntegerNative.__le__h   s   € Ø�{‰{˜4Ó Ò5 D§K¡K°Ó$5Ð5r   c                 ó&   — | j                  |«       S r   )rD   r;   s     r   Ú__gt__zIntegerNative.__gt__k   r@   r   c                 ó&   — | j                  |«       S r   )rB   r;   s     r   Ú__ge__zIntegerNative.__ge__n   r@   r   c                 ó    — | j                   dk7  S ©Nr   r   r   s    r   Ú__nonzero__zIntegerNative.__nonzero__q   s   € Ø�{‰{˜aÑÐr   c                 ó    — | j                   dk  S rJ   r   r   s    r   Úis_negativezIntegerNative.is_negativeu   s   € Ø�{‰{˜Q‰Ðr   c                 ó’   — 	 | j                  | j                  t        |«      z   «      S # t        t        t
        f$ r	 t        cY S w xY wr   ©Ú	__class__r   r   r   r   Ú	TypeErrorÚNotImplementedr;   s     r   Ú__add__zIntegerNative.__add__y   ó?   € ð	"Ø—>‘> $§+¡+´°D³	Ñ"9Ó:Ð:øÜœN¬IÐ6ò 	"Ü!Ò!ð	"úó   ‚&) ©AÁAc                 ó’   — 	 | j                  | j                  t        |«      z
  «      S # t        t        t
        f$ r	 t        cY S w xY wr   rO   r;   s     r   Ú__sub__zIntegerNative.__sub__   rT   rU   c                 ó’   — 	 | j                  | j                  t        |«      z  «      S # t        t        t
        f$ r	 t        cY S w xY wr   rO   )r   Úfactors     r   Ú__mul__zIntegerNative.__mul__…   s?   € ð	"Ø—>‘> $§+¡+´°F³Ñ";Ó<Ð<øÜœN¬IÐ6ò 	"Ü!Ò!ð	"úrU   c                 óP   — | j                  | j                  t        |«      z  «      S r   ©rP   r   r   )r   Údivisors     r   Ú__floordiv__zIntegerNative.__floordiv__‹   s   € Ø�~‰~˜dŸk™k¬S°«\Ñ9Ó:Ð:r   c                 ót   — t        |«      }|dk  rt        d«      ‚| j                  | j                  |z  «      S )Nr   úModulus must be positive)r   r   rP   r   )r   r]   Údivisor_values      r   Ú__mod__zIntegerNative.__mod__Ž   s7   € Ü˜G›ˆØ˜1ÒÜÐ7Ó8Ð8Ø�~‰~˜dŸk™k¨MÑ9Ó:Ð:r   Nc                 óÒ   — t        |«      }|dk  rt        d«      ‚|�+t        |«      }|dk  rt        d«      ‚|dk(  rt        d«      ‚d }t        | j                  ||«      | _        | S )Nr   zExponent must not be negativer`   úModulus cannot be zero)r   r   ÚZeroDivisionErrorÚpowr   )r   ÚexponentÚmodulusÚ	exp_valueÚ	mod_values        r   Úinplace_powzIntegerNative.inplace_pow”   sq   € Ü˜“Mˆ	Ø�qŠ=ÜÐ<Ó=Ð=àÐÜ˜G›ˆIØ˜1Š}Ü Ð!;Ó<Ð<Ø˜AŠ~Ü'Ð(@ÓAÐAàˆIÜ˜$Ÿ+™+ y°)Ó<ˆŒØˆr   c                 óH   — | j                  | «      }|j                  ||«      S r   )rP   rk   )r   rg   rh   r3   s       r   Ú__pow__zIntegerNative.__pow__¤   s#   € Ø—‘ Ó%ˆØ×!Ñ! (¨GÓ4Ð4r   c                 ó,   — t        | j                  «      S r   )Úabsr   r   s    r   Ú__abs__zIntegerNative.__abs__¨   r$   r   c                 óô   — | j                   }|€5|dk  rt        d«      ‚|}|dz   dz  }||k  r|}|||z  z   dz  }||k  rŒ|}n%|dk  rt        d«      ‚| j                  | |z  |«      }| j                  |«      S )Nr   zSquare root of negative valuer   é   r`   )r   r   Ú_tonelli_shanksrP   )r   rh   r   ÚxÚyr3   s         r   ÚsqrtzIntegerNative.sqrt«   s�   € à—‘ˆØˆ?Ø�qŠyÜ Ð!@ÓAÐAð ˆAØ�Q‘˜1‘ˆAØ�a’%Ø�Ø˜ !™‘^¨Ñ)�ð �a“%ð ‰Fà˜!Š|Ü Ð!;Ó<Ð<Ø×)Ñ)¨$°©.¸'ÓBˆFà�~‰~˜fÓ%Ð%r   c                 óB   — | xj                   t        |«      z  c_         | S r   r:   r;   s     r   Ú__iadd__zIntegerNative.__iadd__À   ó   € Ø�Š”s˜4“yÑ �Øˆr   c                 óB   — | xj                   t        |«      z  c_         | S r   r:   r;   s     r   Ú__isub__zIntegerNative.__isub__Ä   ry   r   c                 óB   — | xj                   t        |«      z  c_         | S r   r:   r;   s     r   Ú__imul__zIntegerNative.__imul__È   ry   r   c                 ó†   — t        |«      }|dk(  rt        d«      ‚|dk  rt        d«      ‚| xj                  |z  c_        | S )Nr   zDivision by zeror`   )r   re   r   r   )r   r<   rh   s      r   Ú__imod__zIntegerNative.__imod__Ì   sD   € Ü�d“)ˆØ�aŠ<Ü#Ð$6Ó7Ð7Ø�QŠ;ÜÐ7Ó8Ð8Ø�Š�wÑ�Øˆr   c                 óP   — | j                  | j                  t        |«      z  «      S r   r\   r;   s     r   Ú__and__zIntegerNative.__and__Ö   ó   € Ø�~‰~˜dŸk™k¬C°«IÑ5Ó6Ð6r   c                 óP   — | j                  | j                  t        |«      z  «      S r   r\   r;   s     r   Ú__or__zIntegerNative.__or__Ù   r‚   r   c                 ó’   — 	 | j                  | j                  t        |«      z	  «      S # t        $ r | j                  dk\  rY yY yw xY w©Nr   éÿÿÿÿ)rP   r   r   ÚOverflowError©r   Úposs     r   Ú
__rshift__zIntegerNative.__rshift__Ü   sD   € ð	Ø—>‘> $§+¡+´°S³Ñ"9Ó:Ð:øÜò 	Ø�{‰{˜aÒÙáð		ús   ‚&) ©AÁAc                 ó„   — 	 | xj                   t        |«      z  c_         | S # t        $ r | j                   dk\  rY yY yw xY wr†   )r   r   rˆ   r‰   s     r   Ú__irshift__zIntegerNative.__irshift__å   sC   € ð	Ø�KŠKœC ›HÑ$�Kð ˆøô ò 	Ø�{‰{˜aÒÙáð		ús   ‚" ¢?¾?c                 ó‚   — 	 | j                  | j                  t        |«      z  «      S # t        $ r t	        d«      ‚w xY w©NzIncorrect shift count)rP   r   r   rˆ   r   r‰   s     r   Ú
__lshift__zIntegerNative.__lshift__ï   s>   € ð	6Ø—>‘> $§+¡+´°S³Ñ"9Ó:Ð:øÜò 	6ÜÐ4Ó5Ð5ð	6ús   ‚&) ©>c                 ót   — 	 | xj                   t        |«      z  c_         | S # t        $ r t        d«      ‚w xY wr�   )r   r   rˆ   r   r‰   s     r   Ú__ilshift__zIntegerNative.__ilshift__õ   s=   € ð	6Ø�KŠKœC ›HÑ$�Kð ˆøô ò 	6ÜÐ4Ó5Ð5ð	6ús   ‚" ¢7c                 ó4  — | j                   dk  rt        d«      ‚	 	 | j                   |j                   z	  dz  }|j                   dk  rt        d«      ‚	 |S # t        $ r& | j                   |z	  dz  }|dk  rt        d«      ‚Y |S w xY w# t        $ r d}Y |S w xY w)Nr   z)no bit representation for negative valuesr   znegative bit count)r   r   r   rˆ   )r   Únr3   s      r   Úget_bitzIntegerNative.get_bitü   sº   € Ø�;‰;˜Š?ÜÐHÓIÐIð
	ð;ØŸ+™+¨¯©Ñ1°QÑ6�Ø—8‘8˜a’<Ü$Ð%9Ó:Ð:ð  ð ˆøô "ò ;ØŸ+™+¨Ñ*¨aÑ/�Ø�q’5Ü$Ð%9Ó:Ð:ð ð ˆð;ûô ò 	Ø‰FØˆð	ús)   �6A Á+BÂB ÂBÂB ÂBÂBc                 ó&   — | j                   dz  dk(  S )Nr   r   r   s    r   Úis_oddzIntegerNative.is_odd  ó   € Ø—‘˜a‘ AÑ%Ð%r   c                 ó&   — | j                   dz  dk(  S )Nr   r   r   r   s    r   Úis_evenzIntegerNative.is_even  r˜   r   c                 óŠ   — | j                   dk  rt        d«      ‚| j                   dk(  ry| j                   j                  «       S )Nr   r)   r   )r   r   Ú
bit_lengthr   s    r   Úsize_in_bitszIntegerNative.size_in_bits  s;   € à�;‰;˜Š?ÜÐMÓNÐNà�;‰;˜!ÒØà�{‰{×%Ñ%Ó'Ð'r   c                 ó4   — | j                  «       dz
  dz  dz   S )Nr   é   )r�   r   s    r   Úsize_in_byteszIntegerNative.size_in_bytes  s    € Ø×!Ñ!Ó# aÑ'¨AÑ-°Ñ1Ð1r   c                 óþ   — | j                   dk  ry| j                   dv ry| j                   dz  }|dz  }|| j                   kD  r*|| j                   z   d|z  z  }|dz  }|| j                   kD  rŒ*| j                   |dz  k(  S )Nr   F)r   r   Trr   r   )r   rt   Úsquare_xs      r   Úis_perfect_squarezIntegerNative.is_perfect_square   s…   € Ø�;‰;˜Š?ØØ�;‰;˜&Ñ Øà�K‰K˜1ÑˆØ˜‘6ˆà˜Ÿ™Ò$Ø˜DŸK™KÑ'¨Q°©UÑ3ˆAØ˜A‘vˆHð ˜Ÿ™Ó$ð �{‰{˜a 1™fÑ$Ð$r   c                 óP   — | j                   t        |«      z  dk(  rt        d«      ‚y )Nr   zValue is composite)r   r   r   )r   Úsmall_primes     r   Úfail_if_divisible_byz"IntegerNative.fail_if_divisible_by/  s)   € Ø�K‰Kœ#˜kÓ*Ñ*¨qÒ0ÜÐ1Ó2Ð2ð 1r   c                 óZ   — | xj                   t        |«      t        |«      z  z  c_         | S r   r:   )r   ÚaÚbs      r   Úmultiply_accumulatez!IntegerNative.multiply_accumulate3  s!   € Ø�Š”s˜1“v¤ A£‘Ñ&�Øˆr   c                 ó$   — t        |«      | _        y r   r&   )r   Úsources     r   ÚsetzIntegerNative.set7  s   € Ü˜&“kˆ�r   c                 óN   — t        | j                  t        |«      «      | _        | S r   )r   r   r   )r   rh   s     r   Úinplace_inversezIntegerNative.inplace_inverse:  s   € Ü˜dŸk™k¬3¨w«<Ó8ˆŒØˆr   c                 óJ   — | j                  | «      }|j                  |«       |S r   )rP   r¯   )r   rh   r3   s      r   r   zIntegerNative.inverse>  s#   € Ø—‘ Ó%ˆØ×Ñ˜wÔ'Øˆr   c           
      ó‚   — | j                  t        t        | j                  «      t        t	        |«      «      «      «      S r   )rP   r   ro   r   r   r;   s     r   ÚgcdzIntegerNative.gcdC  s)   € Ø�~‰~œc¤# d§k¡kÓ"2´C¼¸D»	³NÓCÓDÐDr   c                 óè   — t        |«      }| j                  dk(  s|dk(  r| j                  d«      S | j                  t        | j                  |z  | j	                  |«      j                  z  «      «      S rJ   )r   r   rP   ro   r²   r;   s     r   ÚlcmzIntegerNative.lcmF  s\   € Ü�4‹yˆØ�;‰;˜!Ò˜t qšyØ—>‘> !Ó$Ð$Ø�~‰~œc 4§;¡;°Ñ#5¸$¿(¹(À4».×:OÑ:OÑ"OÓPÓQÐQr   c                 ón  — t        | «      } t        |«      }|dk  rt        d«      ‚|dz  dk(  rt        d«      ‚| |z  } | dk(  s|dk(  ry| dk(  ryd}| }|dz  dk(  r|dz  }|dz  }|dz  dk(  rŒ|dz  dk(  rd}n|dz  dv rd}nd}|dz  d	k(  r|dz  d	k(  r| }||z  }|t        j                  ||«      z  S )
Nr   zn must be a positive integerr   z#n must be odd for the Jacobi symbolrŸ   )r   é   r‡   é   é   )r   r   r
   Újacobi_symbol)r¨   r”   ÚeÚa1ÚsÚn1s         r   r¹   zIntegerNative.jacobi_symbolL  sû   € ä�‹FˆÜ�‹Fˆà�Š6ÜÐ;Ó<Ð<à�‰E�aŠ<ÜÐBÓCÐCð �‰Eˆà�Š6�Q˜!’VØà�Š6ØàˆØˆØ�A‰v˜!ŠmØ�1‰HˆBØ�‰FˆAð �A‰v˜!‹mð �‰E�aŠ<Ø‰AØ�‰U�f‰_Ø‰AàˆAàˆq‰5�AŠ:˜"˜q™& Aš+Ø�ˆAà�‰Vˆà”=×.Ñ.¨r°2Ó6Ñ6Ð6r   c                 ó´   — |dk  rt        d«      ‚|dk(  rt        d«      ‚|dz  dk(  rt        d«      ‚t        t        |«      «      }t        | |z  |z  |«      S )Nr   r`   rd   r   zOdd modulus is required)r   re   r-   r   )Úterm1Úterm2rh   Ú
number_lens       r   Ú_mult_modulo_bytesz IntegerNative._mult_modulo_bytest  se   € à�QŠ;ÜÐ7Ó8Ð8Ø�aŠ<Ü#Ð$<Ó=Ð=Ø�a‰K˜AÒÜÐ6Ó7Ð7äœ wÓ/Ó0ˆ
Ü˜e e™m¨wÑ6¸
ÓCÐCr   )r   r*   )r*   r   )9Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r    r#   r'   r4   Úclassmethodr8   r=   r?   rB   rD   rF   rH   rK   Ú__bool__rM   rS   rW   rZ   r^   rb   rk   rm   rp   rv   rx   r{   r}   r   r�   r„   r‹   r�   r�   r’   r•   r—   rš   r�   r    r£   r¦   rª   r­   r¯   r   r²   r´   Ústaticmethodr¹   rÂ   © r   r   r
   r
   $   s6  „ Ù=ò òòò)ò ò óð  ò/ó ð/ò(ò
%ò'ò6ò%ò%ò à€Hòò"ò"ò"ò;ò;óó 5ò ó&ò*òòòò7ò7òòò6òòò"&ò&ò(ò2ò%ò3òò"òòò
EòRð ñ%7ó ð%7ðN ñ	Dó ñ	Dr   r
   N)Ú_IntegerBaser   ÚCrypto.Util.numberr   r   r   r   r
   rÊ   r   r   Ú<module>rÍ      s    ðõ> &ç IÓ IôZD�Kõ ZDr   