3 �k�Z� � @ s� d Z ddlZddlZddlZejd dkZer8eZeZ ne ZeZ ee fZy ejZ W n ek rn dd� Z Y nX eedd�r�dd� Znd d� ZdS ) z� The `compat` module provides support for backwards compatibility with older versions of python, and compatibility wrappers around optional packages. � N� c C sL t | �t |�krdS d}x*t| |�D ]\}}|t|�t|�A O }q$W |dkS )z� Returns True if the two strings are equal, False otherwise. The time taken is independent of the number of characters that match. Fr )�len�zip�ord)Zval1Zval2�result�x�y� r �/usr/lib/python3.6/compat.py�constant_time_compare s r �to_bytesc C s6 | }d}x|dkr$|d? }|d7 }q W | j |ddd�S )Nr � � ZbigF)Zsigned)r )�valZ remainingZbyte_lengthr r r �bytes_from_int. s r c C sF g }x | r$t | d�\} }|j|� qW |j� tjdt|� f|�� S )N� z%sB)�divmod�append�reverse�struct�packr )r ZbufZ remainderr r r r 8 s )�__doc__Zhmacr �sys�version_infoZPY3�strZ text_type�bytesZbinary_typeZunicodeZstring_typesZcompare_digestr �AttributeError�getattr�intr r r r r �<module> s"