+
    œº<jj  ã                   óR   € R t ^ RIt^ RIHtHt R R ltR R ltR R ltR	 R
 ltR# )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)).
N)ÚListÚTuplec                ó`   € V ^8„  d   QhR\         \        ,          R\        \        R3,          /# )é   Úlist_Úreturn.)r   Úintr   )Úformats   "ÚO/opt/headortail/venv/lib/python3.14/site-packages/pip/_vendor/idna/intranges.pyÚ__annotate__r      s&   € ÷ ñ œt¤Cyð ¬U´3¸°8­_ñ ó    c                óh  € \        V 4      p. pRp\        \        V4      4       F  pV^,           \        V4      8  d$   W,          W^,           ,          ^,
          8X  d   K=  W^,           V^,            pVP                  \	        V^ ,          VR,          ^,           4      4       TpKƒ  	  \        V4      # )a  Represent 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.
éÿÿÿÿ)ÚsortedÚrangeÚlenÚappendÚ_encode_rangeÚtuple)r   Úsorted_listÚrangesÚ
last_writeÚiÚcurrent_ranges   &     r
   Úintranges_from_listr      sš   € ô ˜“-€KØ€FØ€JÜ”3{Ó#Ö$ˆØˆq5”3{Ó#Ô#Ø~ °­UÕ!3°aÕ!7Ô7ÙØ#°¥N°Q¸µUÐ;ˆØ‰”m M°!Õ$4°mÀBÕ6GÈ!Õ6KÓLÔMØŠ
ñ %ô ‹=Ðr   c                ó<   € V ^8„  d   QhR\         R\         R\         /# )r   ÚstartÚendr   )r   )r	   s   "r
   r   r   "   s!   € ÷ ñ œð ¤3ð ¬3ñ r   c                 ó"   € V ^ ,          V,          # )é    © )r   r   s   &&r
   r   r   "   s   € ØRK˜3ÕÐr   c                óR   € V ^8„  d   QhR\         R\        \         \         3,          /# )r   Úrr   )r   r   )r	   s   "r
   r   r   &   s"   € ÷ ,ñ ,”Sð ,œU¤3¬ 8_ñ ,r   c                 ó&   € V ^ ,	          V R,          3# )r   l   ÿÿ r    )r"   s   &r
   Ú_decode_ranger$   &   s   € ØGq˜MÕ*Ð+Ð+r   c                óV   € V ^8„  d   QhR\         R\        \         R3,          R\        /# )r   Úint_r   .r   )r   r   Úbool)r	   s   "r
   r   r   *   s)   € ÷ ñ œCð ¬¬s°C¨x­ð ¼Tñ r   c                ó  € \        V ^ 4      p\        P                  ! W4      pV^ 8”  d-   \        W^,
          ,          4      w  rEY@u;8:  d
   V8  d    R#  V\	        V4      8  d   \        W,          4      w  rFW@8X  d   R# R# )z=Determine if `int_` falls into one of the ranges in `ranges`.TF)r   ÚbisectÚbisect_leftr$   r   )r&   r   Útuple_ÚposÚleftÚrightÚ_s   &&     r
   Úintranges_containr0   *   ss   € ä˜4 Ó#€FÜ
×
Ò
˜VÓ
,€Cð ˆQ„wÜ# F°­7¥OÓ4‰ˆØÖ˜%ÕÙð  ð ŒS‹[ÔÜ ¥Ó,‰ˆØŒ<ÙÙr   )	Ú__doc__r)   Útypingr   r   r   r   r$   r0   r    r   r
   Ú<module>r3      s&   ðñó ß õõ,õ,÷r   