Ë
    Ã?ÆiI  ã                  ó–   — d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	­ ddl
mZ dd„Zd	Zdd
„ZdZdZdd„Zdd„Zdd„Zdd„Zdd„Zy)a‡  Bitcoin address.

A Bitcoin address is an identifier that is used as destination in a Bitcoin
transaction. It is based on a hash of the public portion of a key pair.

There are currently three address formats in use:

* P2PKH: pay to pubkey hash
* P2SH: pay to script hash
* Bech32

More information:

* https://en.bitcoin.it/wiki/Address

>>> validate('1NEDqZPvTWRaoho48qXuLLsrYomMXPABfD')
'1NEDqZPvTWRaoho48qXuLLsrYomMXPABfD'
>>> validate('BC1QARDV855YJNGSPVXUTTQ897AQCA3LXJU2Y69JCE')
'bc1qardv855yjngspvxuttq897aqca3lxju2y69jce'
>>> validate('1NEDqZPvTWRaoho48qXuLLsrYomMXPABfX')
Traceback (most recent call last):
    ...
InvalidChecksum: ...
é    )ÚannotationsN)ÚIterable)Úreduce)Ú*)Úcleanc                ó†   — t        | d«      j                  «       } | dd j                  «       dk(  r| j                  «       } | S )zˆConvert the number to the minimal representation. This strips the
    number of any valid separators and removes surrounding whitespace.ú Né   Úbc1)r   ÚstripÚlower©Únumbers    úU/var/www/html/myprovider/mon_projet_qr/lib/python3.12/site-packages/stdnum/bitcoin.pyÚcompactr   8   s@   € ô �6˜3Ó×%Ñ%Ó'€FØˆbˆq€z×ÑÓ˜UÒ"Ø—‘“ˆØ€Mó    Ú:123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyzc                ó:  — t        d„ | d«      }d}|dk\  r.t        |d«      \  }}t        j                  d|«      |z   }|dk\  rŒ.t        j                  d|«      |z   }t        j                  dd«      t	        | «      t	        | j                  d«      «      z
  z  |z   S )z/Decode a Base58 encoded string to a bytestring.c                ó8   — | dz  t         j                  |«      z   S )Né:   )Ú_base58_alphabetÚindex)ÚaÚcs     r   ú<lambda>zb58decode.<locals>.<lambda>G   s   €   B¡Ô)9×)?Ñ)?ÀÓ)BÑ B€ r   r   r   é   ÚBÚ1)r   ÚdivmodÚstructÚpackÚlenÚlstrip)ÚsÚvalueÚresultÚmods       r   Ú	b58decoder(   E   s“   € äÑBÀAÀqÓI€EØ€FØ
�3Š,Ü˜E 3Ó'‰
ˆˆsÜ—‘˜S #Ó&¨Ñ/ˆð �3‹,ô �[‰[˜˜eÓ$ vÑ-€FÜ�;‰;�s˜AÓ¤# a£&¬3¨q¯x©x¸«}Ó+=Ñ"=Ñ>ÀÑGÐGr   Ú qpzry9x8gf2tvdw0s3jn54khce6mua7l))é   i²Wj;)é   imŽP&)é   iú¡)é   iÝ3B=)é   i³b*c                ól   — d}| D ],  }|dz	  }|dz  dz  |z  }t         D ]  \  }}|||z  r|ndz  }Œ Œ. |S )zCalculate the Bech32 checksum.r*   é   iÿÿÿé   r   )Ú_bech32_generator)ÚvaluesÚchkr%   ÚtopÚtestÚvals         r   Úbech32_checksumr8   Z   s^   € à
€CØò ,ˆØ�R‰iˆØ�Y‰ 1Ñ$ uÑ,ˆÜ*ò 	,‰IˆD�#Ø˜# š*‘3¨!Ñ+‰Cñ	,ð,ð
 €Jr   c                óÊ   — d\  }}d}| D ]<  }|dz  |z  dz  }|dz  }|dk\  sŒ|dz  }|t        j                  d||z	  dz  «      z   }Œ> |dk\  s|d|z  dz
  z  r
t        «       ‚|S )	z/Decode a list of Base32 values to a bytestring.)r   r   r   r1   iÿ  r-   r   éÿ   r*   )r    r!   ÚInvalidComponent)ÚdataÚaccÚbitsr&   r%   s        r   Ú	b32decoder?   e   s‘   € à�I€CˆØ€FØò EˆØ�q‘˜EÑ! UÑ*ˆØ�‰	ˆØ�1‹9Ø�A‰IˆDØœfŸk™k¨#°°t±¸tÑ/CÓDÑD‰FðEð ˆq‚y�C˜A ™I¨™?Ò+ÜÓ Ð Ø€Mr   c                ó�   — | D �cg c]  }t        |«      dz	  ‘Œ c}dgz   | D �cg c]  }t        |«      dz  ‘Œ c}z   S c c}w c c}w )zCConvert the human-readable part to format for checksum calculation.r1   r   é   )Úord)Úhrpr   s     r   Ú_expand_hrprD   t   s@   € à!$Ö%˜AŒC�‹F�a‹KÒ%¨¨Ñ+ÀCÖ.H¸q¬s°1«v¸«{Ò.HÑHÐHùÒ%ùÒ.Hs	   …>¤Ac                óº  — t        | «      } | j                  d«      s| j                  d«      r›t        d„ | D «       «      s
t        «       ‚t	        | «      }t        |«      dk7  r
t        «       ‚t        j                  t        j                  |dd «      j                  «       «      j                  «       dd |dd k7  r
t        «       ‚| S | j                  d«      rôt        d	„ | d
d D «       «      s
t        «       ‚t        | «      dk  st        | «      dkD  r
t        «       ‚| d
d D �cg c]  }t        j                  |«      ‘Œ }}t        t        d«      |z   «      dk7  r
t        «       ‚|d   }t        |dd «      }|dkD  r
t!        «       ‚t        |«      dk  st        |«      dkD  r
t        «       ‚|dk(  rt        |«      dvr
t        «       ‚| S t!        «       ‚c c}w )úRCheck if the number provided is valid. This checks the length and
    check digit.r   Ú3c              3  ó,   K  — | ]  }|t         v –— Œ y ­w©N)r   ©Ú.0Úxs     r   ú	<genexpr>zvalidate.<locals>.<genexpr>   s   è ø€ Ò9¨Q�1Ô(Ô(Ñ9ùó   ‚r0   Néüÿÿÿr,   r   c              3  ó,   K  — | ]  }|t         v –— Œ y ­wrI   )Ú_bech32_alphabetrJ   s     r   rM   zvalidate.<locals>.<genexpr>ˆ   s   è ø€ Ò=¨Q�1Ô(Ô(Ñ=ùrN   r
   é   éZ   Úbcr*   r   iúÿÿÿr.   r+   é(   )é   é    )r   Ú
startswithÚallÚInvalidFormatr(   r"   ÚInvalidLengthÚhashlibÚsha256ÚdigestÚInvalidChecksumrQ   r   r8   rD   r?   r;   )r   ÚaddressrL   r<   Úwitness_versionÚwitness_programs         r   Úvalidaterc   y   s½  € ô �V‹_€FØ×Ñ˜Ô ×!2Ñ!2°3Ô!7äÑ9°&Ô9Ô9Ü“/Ð!Ü˜FÓ#ˆÜˆw‹<˜2ÒÜ“/Ð!Ü�>‰>œ'Ÿ.™.¨°°"¨Ó6×=Ñ=Ó?Ó@×GÑGÓIÈ"È1ÐMÐQXÐY[ÐY\ÐQ]Ò]Ü!Ó#Ð#ð( €Mð' 
×	Ñ	˜5Ô	!äÑ=°&¸¸°*Ô=Ô=Ü“/Ð!Üˆv‹;˜Òœs 6›{¨RÒ/Ü“/Ð!Ø39¸!¸"°:Ö>¨aÔ ×&Ñ& qÕ)Ð>ˆÐ>Üœ; tÓ,¨tÑ3Ó4¸Ò9Ü!Ó#Ð#Ø˜q™'ˆÜ# D¨¨2 JÓ/ˆØ˜RÒÜ"Ó$Ð$ÜˆÓ !Ò#¤s¨?Ó';¸bÒ'@Ü“/Ð!Ø˜aÒ¤C¨Ó$8ÀÑ$HÜ“/Ð!ð €Mô Ó Ð ùò ?s   Ä&Gc                óJ   — 	 t        t        | «      «      S # t        $ r Y yw xY w)rF   F)Úboolrc   ÚValidationErrorr   s    r   Úis_validrg   œ   s)   € ðÜ”H˜VÓ$Ó%Ð%øÜò Ùðús   ‚ –	"¡")r   ÚstrÚreturnrh   )r$   rh   ri   Úbytes)r3   úIterable[int]ri   Úint)r<   rk   ri   rj   )rC   rh   ri   z	list[int])r   rh   ri   re   )Ú__doc__Ú
__future__r   r\   r    Úcollections.abcr   Ú	functoolsr   Ústdnum.exceptionsÚstdnum.utilr   r   r   r(   rQ   r2   r8   r?   rD   rc   rg   © r   r   ú<module>rt      s`   ðñ(õ2 #ã Û Ý $Ý ä Ý óð PÐ óHð 6Ð ð0Ð ó
óóIó
 ôFr   