U ��.e��@s0dZddlZdd�Zdd�Zdd�Zd d �ZdS) a  Given a list of integers, made up of (hopefully) a small number of long runs of consecutive integers, compute a representation of the form ((start1, end1), (start2, end2) ...). Then answer the question "was x present in the original list?" in time O(log(# runs)). �NcCs�t|�}g}d}tt|��D]b}|dt|�krJ||||ddkrJq||d|d�}|�t|d|dd��|}qt|�S)aRepresent a list of integers as a sequence of ranges: ((start_0, end_0), (start_1, end_1), ...), such that the original integers are exactly those x such that start_i <= x < end_i for some i. Ranges are encoded as single integers (start << 32 | end), not as tuples. ������r)�sorted�range�len�append� _encode_range�tuple)Zlist_Z sorted_list�rangesZ last_write�iZ current_range�r �>/usr/lib/python3.8/site-packages/pip/_vendor/idna/intranges.py�intranges_from_list srcCs |d>|BS)N� r )�start�endr r r rsrcCs|d?|d@fS)Nrl��r )�rr r r � _decode_range"srcCszt|d�}t�||�}|dkrNt||d�\}}||krF|krNnndS|t|�krvt||�\}}||krvdSdS)z=Determine if `int_` falls into one of the ranges in `ranges`.rrTF)r�bisectZ bisect_leftrr)Zint_r Ztuple_�pos�left�right�_r r r �intranges_contain&s   r)�__doc__rrrrrr r r r �s