Ë
    òT•jã  ã                   ó8  — d Z ddlZd„ Zd„ Zd„ Zd„ Zd„ ZdZd	„ Zd
„ Z	d„ Z
d„ Zd„ Zd„ Zd„ Z G d„ dej                  «      Z G d„ dej                   «      Z G d„ dej"                  «      Z G d„ deej$                  «      Z G d„ deej&                  «      Zd„ Zy)uY    Codec for the Punicode encoding, as specified in RFC 3492

Written by Martin v. LÃ¶wis.
é    Nc                 óÜ   — t        «       }t        «       }| D ]<  }t        |«      dk  r|j                  t        |«      «       Œ,|j	                  |«       Œ> t        |«      }t        |«      |fS )z 3.1 Basic code point segregationé€   )Ú	bytearrayÚsetÚordÚappendÚaddÚsortedÚbytes)ÚstrÚbaseÚextendedÚcs       ú)/usr/lib/python3.12/encodings/punycode.pyÚ	segregater   
   s`   € ä‹;€DÜ‹u€HØò ˆÜˆq‹6�CŠ<Ø�K‰Kœ˜A›Õà�L‰L˜�Oð	ô
 �hÓ€HÜ�‹;˜Ð Ð ó    c                 ó@   — d}| D ]  }t        |«      |k  sŒ|dz  }Œ |S )z@Return the length of str, considering only characters below max.r   é   )r   )r   ÚmaxÚresr   s       r   Úselective_lenr      s1   € à
€CØò ˆÜˆq‹6�C‹<Ø�1‰H‰Cðð €Jr   c                 óh   — t        | «      }	 |dz  }||k(  ry| |   }||k(  r|dz   |fS ||k  r|dz  }Œ')a  Return a pair (index, pos), indicating the next occurrence of
    char in str. index is the position of the character considering
    only ordinals up to and including char, and pos is the position in
    the full string. index/pos is the starting position in the full
    string.r   )éÿÿÿÿr   )Úlen)r   ÚcharÚindexÚposÚlr   s         r   Úselective_findr      sV   € ô 	ˆC‹€AØ
Øˆq‰ˆØ�!Š8ØØ�‰HˆØ�Š9Ø˜‘7˜C�<ÐØ�ŠXØ�Q‰JˆEð r   c                 óâ   — d}g }d}|D ]c  }dx}}t        |«      }t        | |«      }	|	dz   ||z
  z  }
	 t        | |||«      \  }}|dk(  rn!|
||z
  z  }
|j                  |
dz
  «       |}d}
Œ8|}Œe |S )ú3.2 Insertion unsort codingr   r   r   r   )r   r   r   r   )r   r   ÚoldcharÚresultÚoldindexr   r   r   r   ÚcurlenÚdeltas              r   Úinsertion_unsortr'   0   s®   € à€GØ€FØ€HØò ˆØÐˆ�Ü�1‹vˆÜ˜s DÓ)ˆØ˜‘˜d W™nÑ-ˆØÜ& s¨1¨U°3Ó7‰IˆE�#Ø˜Š{ØØ�U˜XÑ%Ñ%ˆEØ�M‰M˜% ™'Ô"ØˆHØˆEð ð ‰ðð €Mr   c                 ó4   — d| dz   z  |z
  }|dk  ry|dkD  ry|S )Né$   r   é   © )ÚjÚbiasr   s      r   ÚTr.   F   s+   € à
��A‘‰,˜Ñ
€CØ
ˆQ‚w�qØ
ˆR‚x˜Ø€Jr   s$   abcdefghijklmnopqrstuvwxyz0123456789c                 óî   — t        «       }d}	 t        ||«      }| |k  r#|j                  t        |    «       t	        |«      S |j                  t        || |z
  d|z
  z  z      «       | |z
  d|z
  z  } |dz  }Œi)ú(3.3 Generalized variable-length integersr   r   r)   )r   r.   r   Údigitsr   )ÚNr-   r#   r,   Úts        r   Úgenerate_generalized_integerr4   N   s€   € ä‹[€FØ	€AØ
Üˆa�‹JˆØˆqŠ5Ø�M‰Mœ& ™)Ô$Ü˜“=Ð Ø�‰”f˜Q 1 q¡5¨R°!©VÑ"4Ñ5Ñ6Ô7Ø�‰U˜˜Q™ÑˆØ	ˆQ‰ˆð r   c                 óz   — |r| dz  } n| dz  } | | |z  z  } d}| dkD  r| dz  } |dz  }| dkD  rŒ|d| z  | dz   z  z   }|S )Ni¼  é   r   iÇ  é#   r)   é&   r+   )r&   ÚfirstÚnumcharsÚ	divisionsr-   s        r   Úadaptr<   [   sk   € ÙØ�#‰‰à�!‰ˆØ	ˆU�hÑÑ€Eà€IØ
�#Š+Ø˜‘ˆØ�R‰ˆ	ð �#‹+ð ˜˜U™
 u¨r¡zÑ2Ñ3€DØ€Kr   c                 ó¼   — t        «       }d}t        |«      D ]8  \  }}t        ||«      }|j                  |«       t	        ||dk(  | |z   dz   «      }Œ: t        |«      S )z3.4 Bias adaptationéH   r   r   )r   Ú	enumerater4   Úextendr<   r   )ÚbaselenÚdeltasr#   r-   Úpointsr&   Úss          r   Úgenerate_integersrE   j   sg   € ô ‹[€FØ€DÜ" 6Ó*ò 9‰ˆ�Ü(¨°Ó5ˆØ�‰�aÔÜ�U˜F A™I w¨v¡~°aÑ'7Ó8‰ð9ô �‹=Ðr   c                 óx   — t        | «      \  }}t        | |«      }t        t        |«      |«      }|r|dz   |z   S |S )Nó   -)r   r'   rE   r   )Útextr   r   rB   s       r   Úpunycode_encoderI   u   sB   € Ü˜t“_�N€Dˆ(Ü˜d HÓ-€FÜ ¤ T£¨FÓ3€HÙØ�d‰{˜XÑ%Ð%Ø€Or   c                 ód  — d}d}d}	 	 t        | |   «      }|dz  }d|cxk  rdk  r	n n|dz
  }n1d|cxk  rd	k  r	n n|d
z
  }n|dk(  rt        d| |dz
     z  «      ‚|dfS t        ||«      }	|||z  z  }||	k  r||fS |d|	z
  z  }|dz  }Œ„# t        $ r |dk(  rt        d«      ‚|dz   dfcY S w xY w)r0   r   r   Ústrictzincomplete punicode stringNéA   éZ   é0   é9   é   z Invalid extended code point '%s'r)   )r   Ú
IndexErrorÚUnicodeErrorr.   )
r   Úextposr-   Úerrorsr#   Úwr,   r   Údigitr3   s
             r   Údecode_generalized_numberrW      s  € à€FØ	€AØ	€AØ
ð	$Ü�x Ñ'Ó(ˆDð
 	�!‰ˆØ�4Ô˜4ÕØ˜4‘K‰EØ�TÔ!˜TÕ!Ø˜2‘I‰EØ�xÒÜÐAØ!)¨&°©(Ñ!3ñ 4ó 5ð 5ð ˜4�<ÐÜˆa�‹JˆØ�%˜!‘)ÑˆØ�1Š9Ø˜6�>Ð!Ø��a‘‰LˆØ	ˆQ‰ˆð- øô ò 	$Ø˜Ò!Ü"Ð#?Ó@Ð@Ø˜A‘:˜tÐ#Ò#ð	$ús   ‰B Â B/Â.B/c                 ó~  — d}d}d}d}|t        |«      k  r¦t        ||||«      \  }}|€| S ||dz   z  }||t        | «      dz   z  z  }|dkD  r|dk(  rt        d	|z  «      ‚t        d
«      }|t        | «      dz   z  }| d| t	        |«      z   | |d z   } t        ||dk(  t        | «      «      }|}|t        |«      k  rŒ¦| S )r!   r   r   r>   r   Nr   iÿÿ rK   zInvalid character U+%xú?)r   rW   rR   r   Úchrr<   )	r   r   rT   r   r   r-   rS   Únewposr&   s	            r   Úinsertion_sortr\   �   sô   € à€DØ
€CØ€DØ€FØ
”3�x“=Ò
 Ü1°(¸FØ26¸ó@‰ˆ�àˆ=ð ˆKØˆu�Q‰w‰ˆØ�œ˜D›	 A™Ñ&Ñ&ˆØ�(Š?Ø˜Ò!Ü"Ð#;¸dÑ#BÓCÐCÜ�s“8ˆDØ”S˜“Y ‘]Ñ#ˆØ�D�SˆzœC ›IÑ%¨¨S¨T¨
Ñ2ˆÜ�U˜V q™[¬3¨t«9Ó5ˆØˆð! ”3�x“=Ó
 ð" €Kr   c                 óZ  — t        | t        «      r| j                  d«      } t        | t        «      rt	        | «      } | j                  d«      }|dk(  rd}t        | d«      j                  «       }n0t        | d | d|«      }t        | |dz   d  d«      j                  «       }t        |||«      S )NÚasciirG   r   Ú r   )Ú
isinstancer   ÚencodeÚ
memoryviewr   ÚrfindÚupperr\   )rH   rT   r   r   r   s        r   Úpunycode_decodere   ¶   sž   € Ü�$œÔØ�{‰{˜7Ó#ˆÜ�$œ
Ô#Ü�T‹{ˆØ
�*‰*�TÓ
€CØ
ˆb‚yØˆÜ�t˜WÓ%×+Ñ+Ó-‰ä�4˜˜�:˜w¨Ó/ˆÜ�t˜C ™E˜F�| WÓ-×3Ñ3Ó5ˆÜ˜$ ¨&Ó1Ð1r   c                   ó   — e Zd Zdd„Zdd„Zy)ÚCodecc                 ó2   — t        |«      }|t        |«      fS ©N)rI   r   ©ÚselfÚinputrT   r   s       r   ra   zCodec.encodeÈ   s   € Ü˜eÓ$ˆØ”C˜“JˆÐr   c                 óX   — |dvrt        d|z   «      ‚t        ||«      }|t        |«      fS ©N)rK   ÚreplaceÚignorezUnsupported error handling )rR   re   r   rj   s       r   ÚdecodezCodec.decodeÌ   s6   € ØÐ8Ñ8ÜÐ<¸VÑCÓDÐDÜ˜e VÓ,ˆØ”C˜“JˆÐr   N)rK   )Ú__name__Ú
__module__Ú__qualname__ra   rq   r+   r   r   rg   rg   Æ   s   „ óôr   rg   c                   ó   — e Zd Zdd„Zy)ÚIncrementalEncoderc                 ó   — t        |«      S ri   )rI   ©rk   rl   Úfinals      r   ra   zIncrementalEncoder.encodeÓ   s   € Ü˜uÓ%Ð%r   N©F)rr   rs   rt   ra   r+   r   r   rv   rv   Ò   s   „ ô&r   rv   c                   ó   — e Zd Zdd„Zy)ÚIncrementalDecoderc                 óz   — | j                   dvrt        d| j                   z   «      ‚t        || j                   «      S rn   )rT   rR   re   rx   s      r   rq   zIncrementalDecoder.decode×   s5   € Ø�;‰;Ð=Ñ=ÜÐ<¸T¿[¹[ÑHÓIÐIÜ˜u d§k¡kÓ2Ð2r   Nrz   )rr   rs   rt   rq   r+   r   r   r|   r|   Ö   s   „ ô3r   r|   c                   ó   — e Zd Zy)ÚStreamWriterN©rr   rs   rt   r+   r   r   r   r   Ü   ó   „ Ør   r   c                   ó   — e Zd Zy)ÚStreamReaderNr€   r+   r   r   rƒ   rƒ   ß   r�   r   rƒ   c            	      ó¢   — t        j                  dt        «       j                  t        «       j                  t
        t        t        t        ¬«      S )NÚpunycode)Únamera   rq   ÚincrementalencoderÚincrementaldecoderÚstreamwriterÚstreamreader)	ÚcodecsÚ	CodecInforg   ra   rq   rv   r|   r   rƒ   r+   r   r   Úgetregentryr�   ä   s6   € Ü×ÑØÜ‹w�~‰~Ü‹w�~‰~Ü-Ü-Ü!Ü!ôð r   )Ú__doc__r‹   r   r   r   r'   r.   r1   r4   r<   rE   rI   rW   r\   re   rg   rv   r|   r   rƒ   r�   r+   r   r   ú<module>r�      s³   ðñó
 ò
!òòò$ò,ð 
1€òòò	òòò<ò22ô 
ˆF�L‰Lô 
ô&˜×2Ñ2ô &ô3˜×2Ñ2ô 3ô	�5˜×,Ñ,ô 	ô	�5˜×,Ñ,ô 	ó
	r   