o
    b<                     @   s   d dl Z d dlZd dlZd dlZe jd  dkZer"eZeZ	eefZ
neZeZ	efZ
dddZdddZdd
dZdd ZdddZdd Zdd Zdd Zdd Zdd ZdS )    N   utf-8strictc                 C   sV   | d u rd S t | tr| S t | tr| ||S t | ttfr't| ||S t| S N)
isinstance	byte_typeunicode_typeencodeintfloatstrxcharseterrors r   V/var/www/secure340b-portal/env/lib/python3.10/site-packages/authlib/common/encoding.pyto_bytes   s   

r   c                 C   s4   | d u s	t | tr| S t | tr| ||S t| S r   )r   r   r   decoder   r   r   r   
to_unicode   s
   
r   asciic                 C   s&   t | tr| S tr| |S | |S r   )r   r   is_py2r	   r   )r   encodingr   r   r   	to_native&   s
   


r   c                 C   s
   t | S r   )jsonloadssr   r   r   
json_loads.   s   
r   Fc                 C   s   t j| |ddS )N),:)ensure_ascii
separators)r   dumps)datar!   r   r   r   
json_dumps2      r%   c                 C   s    | dt |  d  7 } t| S )N   =   )lenbase64urlsafe_b64decoder   r   r   r   r+   6   s   
r+   c                 C   s   t | dS )Nr'   )r*   urlsafe_b64encoderstripr   r   r   r   r,   ;   r&   r,   c                 C   s>   t t| dd}tdt| |}tddd |D dS )Nr   )r   %sB c                 S   s   g | ]}d | qS )z%02xr   ).0byter   r   r   
<listcomp>B   s    z!base64_to_int.<locals>.<listcomp>   )r+   r   structunpackr)   r
   join)r   r$   bufr   r   r   base64_to_int?   s   r8   c                 C   s   | dk rt dttdr| j|  d d ddd}n#g }| r.t| d	\} }|| | s |  tj	d
t
| g|R  }tt|S )Nr   zMust be a positive integerr         bigF)signed   r.   )
ValueErrorhasattrr
   r   
bit_lengthdivmodappendreverser4   packr)   r   r,   )numr   r7   	remainderr   r   r   int_to_base64E   s   

rG   c                 C   s   t | tr	t| } tt| S r   )r   dictr%   r,   r   )textr   r   r   json_b64encodeU   s   
rJ   )r   r   )r   )F)sysr   r*   r4   version_infor   unicoder   r   r   Z
text_typesbytesr   r   r   r   r%   r+   r,   r8   rG   rJ   r   r   r   r   <module>   s,    




