a
    ãzeô  ã                   @   sp   g d ¢Z ddlZddlZddlmZ ddlmZ eƒ ZejZ	ej
Z
dd„ ZdZddd	„Zdd
d„Zddd„ZdS ))ÚchoiceÚ	randbelowÚrandbitsÚSystemRandomÚtoken_bytesÚ	token_hexÚtoken_urlsafeÚcompare_digesté    N)r   )r   c                 C   s   | dkrt dƒ‚t | ¡S )Nr	   zUpper bound must be positive.)Ú
ValueErrorÚ_sysrandÚ
_randbelow)Zexclusive_upper_bound© r   ú/usr/lib/python3.9/secrets.pyr      s    r   é    c                 C   s   | d u rt } t | ¡S )N)ÚDEFAULT_ENTROPYr   Ú	randbytes©Únbytesr   r   r   r   "   s    
r   c                 C   s   t  t| ƒ¡ d¡S )NÚascii)ÚbinasciiZhexlifyr   Údecoder   r   r   r   r   0   s    r   c                 C   s   t | ƒ}t |¡ d¡ d¡S )Nó   =r   )r   Úbase64Zurlsafe_b64encodeÚrstripr   )r   Útokr   r   r   r   =   s    
r   )N)N)N)Ú__all__r   r   Úhmacr   Úrandomr   r   Úgetrandbitsr   r   r   r   r   r   r   r   r   r   r   Ú<module>	   s   

