+
    ŒvjOZ  ã                   ó¢  € ^ RI t ^ RIt^ RIt^ RIt^ RIHtHt ^RIHt ^RI	H
t
 ^	tRt]P                  ! R4      t]! RR04      t]! 0 R9m4      t]! 0 R:m4      t]! 0 R;m4      t]! R	R
04      t]! 0 R<m4      t]! RR
04      t]! ]! R4      ]! R4      04      t]! ]! R4      ]! R4      04      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      tR R ltR R lt R R lt!R R lt"R R lt#R R  lt$R=R! R" llt%R# R$ lt&R% R& lt'R' R( lt(R) R* lt)R=R+ R, llt*R- R. lt+R/ R0 lt,R1 R2 lt-R>R3 R4 llt.R?R5 R6 llt/R@R7 R8 llt0R# )Aé    N)ÚOptionalÚUnion)Úidnadata)Úintranges_contains   xn--u   [.ã€‚ï¼Žï½¡]ÚRÚALÚANÚENÚLÚDc                   ó   € ] tR t^tRtRtR# )Ú	IDNAErrorz5Base exception for all IDNA-encoding related problems© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    ÚM/var/www/html/daimler-pipeline/venv/lib/python3.14/site-packages/idna/core.pyr   r      s   † Ù?ãr   r   c                   ó   € ] tR t^!tRtRtR# )ÚIDNABidiErrorz;Exception when bidirectional requirements are not satisfiedr   Nr   r   r   r   r   r   !   s   † ÙEãr   r   c                   ó   € ] tR t^'tRtRtR# )ÚInvalidCodepointz<Exception when a disallowed or unallocated codepoint is usedr   Nr   r   r   r   r   r   '   s   † ÙFãr   r   c                   ó   € ] tR t^-tRtRtR# )ÚInvalidCodepointContextzCException when the codepoint is not valid in the context it is usedr   Nr   r   r   r   r   r   -   s   † ÙMãr   r   c                ó0   € V ^8„  d   QhR\         R\         /# )é   ÚcpÚreturn)Úint)Úformats   "r   Ú__annotate__r%   3   s   € ÷ ñ œð ¤ñ r   c                 ó²   € \         P                  ! \        V 4      4      pV^ 8X  d1   \         P                  ! \        V 4      4      '       g   \	        R4      hV# )r   z Unknown character in unicodedata)ÚunicodedataÚ	combiningÚchrÚnameÚ
ValueError)r!   Úvs   & r   Ú_combining_classr-   3   sB   € Ü×Òœc "›gÓ&€AØˆA„v”k×&Ò&¤s¨2£w×/Ò/ÜÐ;Ó<Ð<Ø€Hr   c                ó<   € V ^8„  d   QhR\         R\         R\        /# )r    r!   Úscriptr"   ©ÚstrÚbool)r$   s   "r   r%   r%   :   s&   € ÷ @ñ @”3ð @¤ð @¬ñ @r   c                 óV   € \        \        V 4      \        P                  V,          4      # )N)r   Úordr   Úscripts)r!   r/   s   &&r   Ú
_is_scriptr6   :   s   € ÜœS ›W¤h×&6Ñ&6°vÕ&>Ó?Ð?r   c                ó0   € V ^8„  d   QhR\         R\        /# ©r    Úsr"   ©r1   Úbytes)r$   s   "r   r%   r%   >   s   € ÷  ñ  ”ð  œñ  r   c                 ó$   € V P                  R 4      # )Úpunycode)Úencode©r9   s   &r   Ú	_punycoder@   >   s   € Ø�8‰8�JÓÐr   c                ó0   € V ^8„  d   QhR\         R\        /# r8   )r#   r1   )r$   s   "r   r%   r%   B   s   € ÷ ñ ŒSð ”Sñ r   c                 ó   € R V R 2# )zU+Ú04Xr   r?   s   &r   Ú_unotrD   B   s   € Ø��#ˆwˆ<Ðr   c                óR   € V ^8„  d   QhR\         \        \        3,          R\        /# ©r    Úlabelr"   ©r   r;   r1   r2   )r$   s   "r   r%   r%   F   s#   € ÷ ñ œe¤E¬3 JÕ/ð ´Dñ r   c                ó   € \        V 4      ^?8*  # )u­  Check that a label does not exceed the maximum permitted length.

Per :rfc:`1035` (and :rfc:`5891` Â§4.2.4) a DNS label must not exceed
63 octets. The argument may be either a :class:`str` (a U-label, where
length is measured in characters) or :class:`bytes` (an A-label, where
length is measured in octets).

:param label: The label to check.
:returns: ``True`` if the label is within the length limit, otherwise
    ``False``.
©Úlen©rG   s   &r   Úvalid_label_lengthrM   F   s   € ô ˆu‹:˜ÑÐr   c                ó^   € V ^8„  d   QhR\         \        \        3,          R\        R\        /# )r    ÚdomainÚtrailing_dotr"   rH   )r$   s   "r   r%   r%   U   s*   € ÷ 9ñ 9¤¤e¬S jÕ 1ð 9Äð 9Ì$ñ 9r   c                ó6   € \        V 4      V'       d   ^þ8*  # ^ý8*  # )aš  Check that a full domain name does not exceed the maximum length.

Per :rfc:`1035`, a domain name is limited to 253 octets when no trailing
dot is present, or 254 octets when one is included.

:param domain: The full (possibly multi-label) domain name.
:param trailing_dot: ``True`` if ``domain`` includes a trailing ``.``.
:returns: ``True`` if the domain is within the length limit, otherwise
    ``False``.
rJ   )rO   rP   s   &&r   Úvalid_string_lengthrR   U   s   € ô ˆv‹;§,˜3Ñ8Ð8°CÑ8Ð8r   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r    rG   Ú	check_ltrr"   r0   )r$   s   "r   r%   r%   c   s&   € ÷ Gñ G”cð G¤dð G´tñ Gr   c                ó4  € Rp\        V ^4       FK  w  r4\        P                  ! V4      pVR8X  d   \        R\	        V 4       RV 24      hV\
        9   g   KI  RpKM  	  V'       g   V'       g   R# \        P                  ! V ^ ,          4      pV\        9   d   RpM"VR8X  d   RpM\        R\	        V 4       R24      hRpR	p\        V ^4       F´  w  r4\        P                  ! V4      pV'       d^   V\        9  d   \        R
V R24      hV\        9   d   RpM	VR8w  d   RpV\        9   d    V'       g   TpKk  W…8w  d   \        R4      hK~  K€  V\        9  d   \        R
V R24      hV\        9   d   RpK©  VR8w  g   K²  RpK¶  	  V'       g   \        R4      hR# )añ  Validate the Bidi Rule from :rfc:`5893` for a single label.

The Bidi Rule constrains how bidirectional characters (Hebrew, Arabic,
etc.) may appear within a label. By default the check is only applied
when the label contains at least one right-to-left character (Unicode
bidirectional categories ``R``, ``AL``, or ``AN``); set ``check_ltr``
to ``True`` to apply it to LTR-only labels as well.

:param label: The label to validate, as a Unicode string.
:param check_ltr: If ``True``, apply the rules even when the label
    contains no RTL characters.
:returns: ``True`` if the label satisfies the Bidi Rule.
:raises IDNABidiError: If any of Bidi Rule conditions 1-6 are violated,
    or if the directional category of a codepoint cannot be determined.
FÚ z Unknown directionality in label ú at position Tr   zFirst codepoint in label z" must be directionality L, R or ALNz,Invalid direction for codepoint at position z in a right-to-left labelÚNSMz2Can not mix numeral types in a right-to-left labelz in a left-to-right labelz0Label ends with illegal codepoint directionality)Ú	enumerater'   Úbidirectionalr   ÚreprÚ_bidi_rtl_categoriesÚ_bidi_rtl_firstÚ_bidi_rtl_allowedÚ_bidi_rtl_valid_endingÚ_bidi_rtl_numericÚ_bidi_ltr_allowedÚ_bidi_ltr_valid_ending)	rG   rT   Ú
bidi_labelÚidxr!   Ú	directionÚrtlÚvalid_endingÚnumber_types	   &&       r   Ú
check_bidiri   c   sŸ  € ð" €JÜ˜U AÖ&‰ˆÜ×-Ò-¨bÓ1ˆ	Ø˜Œ?äÐ"BÄ4ÈÃ;À-È}Ð]`Ð\aÐ bÓcÐcØÔ,Ö,ØŠJñ '÷ ŸiÙô ×)Ò)¨%°­(Ó3€IØ”OÔ#Ø‰Ø	�cÔ	Ø‰äÐ7¼¸U»°}ÐDfÐgÓhÐhà€LØ!%€KÜ˜U AÖ&‰ˆÜ×-Ò-¨bÓ1ˆ	çàÔ 1Ô1Ü#Ð&RÐSVÐRWÐWpÐ$qÓrÐràÔ2Ô2Ø#‘Ø˜eÔ#Ø$�àÔ-Ô-ß"Ø"+’Kà"Ô/Ü+Ð,`ÓaÐañ 0ñ	 .ð Ô 1Ô1Ü#Ð&RÐSVÐRWÐWpÐ$qÓrÐràÔ2Ô2Ø#’Ø˜eÖ#Ø$’ñ7 '÷: ÜÐNÓOÐOár   c                ó0   € V ^8„  d   QhR\         R\        /# rF   r0   )r$   s   "r   r%   r%   ­   s   € ÷ ñ ¤#ð ¬$ñ r   c                ón   € \         P                  ! V ^ ,          4      ^ ,          R8X  d   \        R4      hR# )uF  Reject labels that begin with a combining mark.

Per :rfc:`5891` Â§4.2.3.2 a label must not start with a character of
Unicode general category ``M`` (Mark).

:param label: The label to check.
:returns: ``True`` if the first character is not a combining mark.
:raises IDNAError: If the label begins with a combining character.
ÚMz0Label begins with an illegal combining characterT)r'   Úcategoryr   rL   s   &r   Úcheck_initial_combinerrn   ­   s/   € ô ×Ò˜E !�HÓ% aÕ(¨CÔ/ÜÐJÓKÐKÙr   c                ó0   € V ^8„  d   QhR\         R\        /# rF   r0   )r$   s   "r   r%   r%   ¼   s   € ÷ ñ œ3ð ¤4ñ r   c                ó†   € V R,          R8X  d   \        R4      hV ^ ,          R8X  g   V R,          R8X  d   \        R4      hR# )u‹  Validate the hyphen restrictions for a label.

Per :rfc:`5891` Â§4.2.3.1 a label must not start or end with a hyphen
(``U+002D``), and must not have hyphens in both the third and fourth
positions (the prefix reserved for A-labels).

:param label: The label to check.
:returns: ``True`` if the hyphen restrictions are satisfied.
:raises IDNAError: If any of the hyphen restrictions are violated.
:r    é   Nz--z4Label has disallowed hyphens in 3rd and 4th positionÚ-z)Label must not start or end with a hyphenTéÿÿÿÿ)r   rL   s   &r   Úcheck_hyphen_okrt   ¼   sA   € ð ˆS…z�TÔÜÐNÓOÐOØˆQ…x�3„˜% �) sÔ*ÜÐCÓDÐDÙr   c                ó(   € V ^8„  d   QhR\         RR/# ©r    rG   r"   N)r1   )r$   s   "r   r%   r%   Î   s   € ÷ Añ A”Sð A˜Tñ Ar   c                óT   € \         P                  ! RV 4      V 8w  d   \        R4      hR# )z Require that a label is in Unicode Normalization Form C.

:param label: The label to check.
:raises IDNAError: If ``label`` differs from its NFC normalisation.
ÚNFCz%Label must be in Normalization Form CN)r'   Ú	normalizer   rL   s   &r   Ú	check_nfcrz   Î   s*   € ô ×Ò˜U EÓ*¨eÔ3ÜÐ?Ó@Ð@ñ 4r   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r    rG   Úposr"   ©r1   r#   r2   )r$   s   "r   r%   r%   Ø   s!   € ÷ 3ñ 3œ#ð 3¤Cð 3¬Dñ 3r   c                ó  € \        W,          4      pVR8X  Ed,   V^ 8”  d-   \        \        W^,
          ,          4      4      \        8X  d   R# Rp\        V^,
          RR4       FW  p\        P
                  ! 4       P                  \        W,          4      4      pV\        R4      8X  d   KH  V\        9   d   Rp M M	  V'       g   R# Rp\        V^,           \        V 4      4       FY  p\        P
                  ! 4       P                  \        W,          4      4      pV\        R4      8X  d   KH  V\        9   d   Rp V#  V# 	  V# VR8X  d6   V^ 8„  ;'       d)    \        \        W^,
          ,          4      4      \        8H  # R# )as  Validate the CONTEXTJ rules from :rfc:`5892` Appendix A.

These rules govern the contextual use of the joiner codepoints
``U+200C`` (ZERO WIDTH NON-JOINER, Appendix A.1) and ``U+200D``
(ZERO WIDTH JOINER, Appendix A.2) within a label.

:param label: The label containing the codepoint.
:param pos: Index of the joiner codepoint within ``label``.
:returns: ``True`` if the codepoint at ``pos`` satisfies its CONTEXTJ
    rule, ``False`` otherwise (including when the codepoint at
    ``pos`` is not a recognised joiner).
:raises ValueError: If an adjacent codepoint has no Unicode name when
    determining its combining class.
i   TFÚTi   rs   )
r4   r-   Ú_virama_combining_classÚranger   Újoining_typesÚgetÚ_bidi_joiner_l_or_drK   Ú_bidi_joiner_r_or_d)rG   r|   Úcp_valueÚokÚiÚjoining_types   &&    r   Úvalid_contextjrŠ   Ø   sK  € ô �5•:‹€Hà�6ÕØ�Œ7Ô'¬¨E¸µ'­NÓ(;Ó<Ô@WÔWÙàˆÜ�s˜Q•w  BÖ'ˆAÜ#×1Ò1Ó3×7Ñ7¼¸E½H»ÓFˆLØœs 3›xÔ'ÙØÔ!4Ô4Ø�Ùáñ (÷ ÙàˆÜ�s˜Q•w¤ E£
Ö+ˆAÜ#×1Ò1Ó3×7Ñ7¼¸E½H»ÓFˆLØœs 3›xÔ'ÙØÔ!4Ô4Ø�Øð ˆ	ð Øˆ	ñ ,ð ˆ	à�6ÔØ�Q‰w×[Ð[Ô+¬C°¸AµgµÓ,?Ó@ÔD[Ñ[Ð[ñ r   c                óH   € V ^8„  d   QhR\         R\        R\        R\        /# )r    rG   r|   Ú	exceptionr"   r}   )r$   s   "r   r%   r%     s(   € ÷ +ñ +œ#ð +¤Cð +´Dð +ÄTñ +r   c                óþ  € \        W,          4      pV^·8X  dm   ^ Tu;8  ;'       d    \        V 4      ^,
          8  Mu ;'       d?    \        W^,
          ,          4      ^l8H  ;'       d    \        W^,           ,          4      ^l8H  # VR8X  dC   V\        V 4      ^,
          8  d*   \        V 4      ^8”  d   \        W^,           ,          R4      # R# VR8X  g   VR8X  d#   V^ 8”  d   \        W^,
          ,          R4      # R# VR8X  dN   V  FE  pVR8X  d   K  \        VR	4      '       g'   \        VR
4      '       g   \        VR4      '       g   KD   R# 	  R# RTu;8:  d   R8:  dG   M MC\        ;QJ d&    R V  4       F  '       g   K   R'       * # 	  R'       * # ! R V  4       4      '       * # RTu;8:  d   R8:  dH   M R# \        ;QJ d&    R V  4       F  '       g   K   R'       * # 	  R'       * # ! R V  4       4      '       * # R# )ac  Validate the CONTEXTO rules from :rfc:`5892` Appendix A.

Covers the contextual rules for codepoints such as MIDDLE DOT
(``U+00B7``), Greek lower numeral sign, Hebrew punctuation, Katakana
middle dot, and the Arabic-Indic / Extended Arabic-Indic digit ranges.

:param label: The label containing the codepoint.
:param pos: Index of the codepoint within ``label``.
:param exception: Reserved for forward compatibility; currently unused.
:returns: ``True`` if the codepoint at ``pos`` satisfies its CONTEXTO
    rule, ``False`` otherwise (including when the codepoint is not a
    recognised CONTEXTO codepoint).
iu  ÚGreekFió  iô  ÚHebrewiû0  u   ãƒ»ÚHiraganaÚKatakanaÚHanTé`  éi  c              3   ó`   "  € T F$  pR \        V4      u;8*  ;'       d    R8*  Mu x € K&  	  R# 5i)éð  éù  N©r4   ©Ú.0r!   s   & r   Ú	<genexpr>Ú!valid_contexto.<locals>.<genexpr>4  ó$   é € ÐB¹E°b�u¤ B£×1Ô1¨6×1Ñ1»Eùó   ‚,.r–   r—   c              3   ó`   "  € T F$  pR \        V4      u;8*  ;'       d    R8*  Mu x € K&  	  R# 5i)r“   r”   Nr˜   r™   s   & r   r›   rœ   7  r�   rž   )r4   rK   r6   Úany)rG   r|   rŒ   r†   r!   s   &&&  r   Úvalid_contextor¡     sž  € ô �5•:‹€Hà�6ÔØ�3×'Ô'œ˜U› a�Ô'×kÐk¬C°¸AµgµÓ,?À6Ñ,I×kÐkÌcÐRWÐ^_ÕX_ÕR`ÓNaÐekÑNkÐkà	�VÔ	Ø”�U“˜a•Ô¤C¨£J°¤NÜ˜e¨!¥G�n¨gÓ6Ð6Ùà	�VÔ	˜x¨6Ô1Ø�Œ7Ü˜e¨!¥G�n¨hÓ7Ð7Ùà	�VÔ	ÛˆBØ�XŒ~ÙÜ˜"˜j×)Ò)¬Z¸¸J×-GÒ-GÌ:ÐVXÐZ_×K`ÔK`Úñ	 ñ
 à	�(Ö	#˜e×	#ß“3ÑB¹EÓB—3”3ÔBÐB’3ÔBÐB�3ÑB¹EÓBÓBÔBÐBà	�(Ö	#˜eÖ	#ñ ÷ “3ÑB¹EÓB—3”3ÔBÐB’3ÔBÐB�3ÑB¹EÓBÓBÔBÐBár   c                óT   € V ^8„  d   QhR\         \        \        \        3,          RR/# rv   ©r   r1   r;   Ú	bytearray)r$   s   "r   r%   r%   <  s&   € ÷ 6ñ 6”uœS¤%¬Ð2Õ3ð 6¸ñ 6r   c                ó6  € \        V \        \        34      '       d   V P                  R4      p \	        V 4      ^ 8X  d   \        R4      h\        V RR7      '       g   \        R4      h\        V 4       \        V 4       \        V 4       \        V 4       EF5  w  r\        V4      p\        V\        P                  R,          4      '       d   K:  \        V\        P                  R,          4      '       dB    \        W4      '       g.   \!        R\#        V4       R	V^,            R
\%        V 4       24      hK¢  \        V\        P                  R,          4      '       dB   \)        W4      '       g.   \!        R\#        V4       R	V^,            R
\%        V 4       24      hEK
  \+        R\#        V4       RV^,            R\%        V 4       R24      h	  \-        V 4       R#   \&         d4   p\        R\#        T4       RT^,            R
\%        T 4       24      ThRp?ii ; i)a   Run the full set of IDNA 2008 validity checks on a single label.

Applies, in order: NFC normalisation (:func:`check_nfc`), hyphen
restrictions (:func:`check_hyphen_ok`), the no-leading-combiner rule
(:func:`check_initial_combiner`), per-codepoint validity (PVALID,
CONTEXTJ, CONTEXTO classes from :rfc:`5892`), and the Bidi Rule
(:func:`check_bidi`).

:param label: The label to validate. ``bytes`` or ``bytearray`` input
    is decoded as UTF-8 first.
:raises IDNAError: If the label is empty or fails a structural rule.
:raises InvalidCodepoint: If the label contains a DISALLOWED or
    UNASSIGNED codepoint.
:raises InvalidCodepointContext: If a CONTEXTJ or CONTEXTO codepoint
    is not valid in its context.
:raises IDNABidiError: If the Bidi Rule is violated.
zutf-8zEmpty LabelT©rP   úLabel too longÚPVALIDÚCONTEXTJzJoiner ú not allowed at position ú in z%Unknown codepoint adjacent to joiner rW   NÚCONTEXTOú
Codepoint z of z not allowed)Ú
isinstancer;   r¤   ÚdecoderK   r   rR   rz   rt   rn   rY   r4   r   r   Úcodepoint_classesrŠ   r   rD   r[   r+   r¡   r   ri   )rG   r|   r!   r†   Úerrs   &    r   Úcheck_labelr²   <  sõ  € ô$ �%œ%¤Ð+×,Ò,Ø—‘˜WÓ%ˆÜ
ˆ5ƒz�Q„Ü˜Ó&Ð&ô ˜u°4×8Ó8ÜÐ(Ó)Ð)äˆeÔÜ�EÔÜ˜5Ô!ä˜U×#‰ˆÜ�r“7ˆÜ˜X¤x×'AÑ'AÀ(Õ'K×LÒLÙÜ˜x¬×)CÑ)CÀJÕ)O×PÒPðÜ% e×1Ò1Ü1Ø!¤%¨£/Ð!2Ð2KÈCÐRSÍGÈ9ÐTXÔY]Ð^cÓYdÐXeÐfóð ñ 2ô ˜x¬×)CÑ)CÀJÕ)O×PÒPÜ! %×-Ò-Ü-Ø ¤ x£Ð 1Ð1JÈ3ÐQRÍ7È)ÐSWÔX\Ð]bÓXcÐWdÐeóð ò .ô
 # Z´°h³Ð/@ÀÈcÐTUÍgÈYÐVZÔ[_Ð`eÓ[fÐZgÐgsÐ#tÓuÐuñ) $ô, ˆuÖøô ô ÜØ;¼EÀ(»OÐ;LÈMÐZ]Ð`aÕZaÐYbÐbfÔgkÐlqÓgrÐfsÐtóàðûðús   Ã5>GÇHÇ%.HÈHc                ó0   € V ^8„  d   QhR\         R\        /# rF   r:   )r$   s   "r   r%   r%   u  s   € ÷ ñ ”#ð œ%ñ r   c                ó  €  V P                  R4      p\        V4       \        V4      '       g   \        R4      hV#   \         d     Mi ; i\        T 4       \        \        T 4      ,           p\        T4      '       g   \        R4      hT# )uð  Convert a single U-label into its A-label form.

The result is the ASCII-Compatible Encoding (ACE) form per :rfc:`5891`
Â§4: the label is validated, Punycode-encoded, and prefixed with
``xn--``. Pure ASCII labels that are already valid IDNA labels are
returned unchanged (as :class:`bytes`).

:param label: The label to convert, as a Unicode string.
:returns: The A-label as ASCII-encoded :class:`bytes`.
:raises IDNAError: If the label is invalid or the resulting A-label
    exceeds 63 octets.
Úasciir§   )r>   ÚulabelrM   r   ÚUnicodeEncodeErrorr²   Ú_alabel_prefixr@   )rG   Úlabel_bytess   & r   Úalabelrº   u  s‚   € ðØ—l‘l 7Ó+ˆÜˆ{ÔÜ! +×.Ò.ÜÐ,Ó-Ð-ØÐøÜô Ùðúô �ÔÜ ¤9¨UÓ#3Õ3€Kä˜k×*Ò*ÜÐ(Ó)Ð)àÐs   ‚9< ¼A
Á	A
c                ó\   € V ^8„  d   QhR\         \        \        \        3,          R\        /# rF   r£   )r$   s   "r   r%   r%   ”  s&   € ÷ &ñ &”%œœU¤IÐ-Õ.ð &´3ñ &r   c                óL  € \        V \        \        34      '       g    V P                  R4      pM\        V 4      pVP                  4       pVP                  \        4      '       dI   V\        \        4      R pV'       g   \        R4      hVP                  R4      '       d   \        R4      hM\        V4       VP                  R4      #  VP                  R4      p \        T 4       T #   \         d    \        T 4       T u # i ; i  \         d   p\        R4      ThRp?ii ; i)aÛ  Convert a single A-label into its U-label form.

Performs the inverse of :func:`alabel`: an ``xn--``-prefixed label is
Punycode-decoded and validated. Labels that are already Unicode (or
plain ASCII without the ACE prefix) are validated and returned as a
Unicode string.

:param label: The label to convert. ``bytes`` or ``bytearray`` input
    is treated as ASCII.
:returns: The U-label as a Unicode string.
:raises IDNAError: If the label is malformed or fails validation.
rµ   Nz5Malformed A-label, no Punycode eligible content foundó   -z"A-label must not end with a hyphenr=   zInvalid A-label)r®   r;   r¤   r>   r·   r²   ÚlowerÚ
startswithr¸   rK   r   Úendswithr¯   ÚUnicodeError)rG   r¹   r±   s   &  r   r¶   r¶   ”  s  € ô �eœe¤YÐ/×0Ò0ð	ØŸ,™, wÓ/‰Kô
 ˜E“lˆà×#Ñ#Ó%€KØ×Ñœn×-Ò-Ø!¤#¤nÓ"5Ð"7Ð8ˆßÜÐSÓTÐTØ×Ñ ×%Ò%ÜÐ@ÓAÐAð &ô 	�KÔ Ø×!Ñ! 'Ó*Ð*ð4Ø×"Ñ" :Ó.ˆô �ÔØ€Løô- "ô 	Ü˜ÔØŠLð	ûô& ô 4ÜÐ)Ó*°Ð3ûð4ús)   žC) ÃD Ã)DÄDÄD#ÄDÄD#c                óH   € V ^8„  d   QhR\         R\        R\        R\         /# )r    rO   Ú
std3_rulesÚtransitionalr"   r0   )r$   s   "r   r%   r%   ½  s)   € ÷ 40ñ 40œð 40¬ð 40ÄDð 40ÔUXñ 40r   c                ó   € ^RI H p Rp\        V 4       EFP  w  rV\        V4      pY7R8  d   TM\        P                  ! W7R34      ^,
          ,          pV^,          p	Rp
\        V4      ^8X  d
   V^,          p
V	R8H  ;'       g=    V	R8H  ;'       d    V'       * ;'       g!    V	R8H  ;'       d    V'       * ;'       d    V
RJ pV
RJ;'       d9    V	R	8H  ;'       g,    V	R8H  ;'       d    V'       * ;'       g    V	R8H  ;'       d    TpV'       d   WF,          pEK  V'       d   V
f   Q hWJ,          pEK  V	R
8X  d   EK&  \        R\        V4       RV^,            R\        V 4       24      h	  \        P                  ! RV4      # )ur  Apply the UTS #46 character mapping to a domain string.

Implements the mapping table from `UTS #46 Â§4
<https://www.unicode.org/reports/tr46/>`_: each character is kept,
replaced, or rejected based on its status (``V``, ``M``, ``D``, ``3``,
``I``). The result is returned in Normalisation Form C.

:param domain: The full domain name to remap.
:param std3_rules: If ``True``, apply the stricter STD3 ASCII rules
    (status ``3`` codepoints raise instead of being kept or mapped).
:param transitional: If ``True``, use transitional processing (status
    ``D`` codepoints are mapped instead of kept). Transitional
    processing has been removed from UTS #46 and this option is
    retained only for backwards compatibility.
:returns: The remapped domain, in Normalisation Form C.
:raises InvalidCodepoint: If the domain contains a disallowed
    codepoint under the chosen rules.
)Ú	uts46datarV   é   ÚZNÚVr   Ú3rl   ÚIr­   rª   r«   rx   )rÆ   rY   r4   ÚbisectÚbisect_leftrK   r   rD   r[   r'   ry   )rO   rÃ   rÄ   rÆ   Úoutputr|   ÚcharÚ
code_pointÚuts46rowÚstatusÚreplacementÚ
keep_as_isÚuse_replacements   &&&          r   Úuts46_remaprÖ   ½  s‚  € õ& %à€Fä˜v×&‰	ˆÜ˜“Yˆ
Ø¸Ô+;™ZÄ×ASÒASÐT]ÐloÐ_pÓAqÐtuÕAuÕvˆØ˜!•ˆØ%)ˆÜˆx‹=˜AÔØ" 1�+ˆKð
 �c‰M×Ð˜f¨™m×@Ð@°LÔ0@×ÐÀfÐPSÁm×F~ÐF~Ð\fÔXf×F~ÐF~ÐkvÐz~Ðk~ð 	ð
 &¨TÐ1÷ 
ð 
Ø�c‰M×cÐc˜f¨™m×>Ð>°J´×cÐcÀFÈcÁM×DbÐDbÐVbð 	÷ Ø�N‹FßØÒ*Ð*Ð*ØÕ!‹FØ�sŒ]Úä" Z´°jÓ0AÐ/BÐB[Ð\_ÐbcÕ\cÐ[dÐdhÔimÐntÓiuÐhvÐ#wÓxÐxñ7 'ô: × Ò  ¨Ó/Ð/r   c                óŒ   € V ^8„  d   QhR\         \        \        \        3,          R\        R\        R\        R\        R\        /# )r    r9   ÚstrictÚuts46rÃ   rÄ   r"   ©r   r1   r;   r¤   r2   )r$   s   "r   r%   r%   ô  sX   € ÷ Cñ CÜŒS”%œÐ"Õ#ðCäðCô ðCô ð	Cô
 ðCô ñCr   c                ó   € V'       d   \         P                  ! R\        ^R7       \        V \        4      '       g    \	        V R4      p V'       d   \        WV4      p \        V RR7      '       g   \        R4      hR	p. pV'       d   V P                  R
4      M\        P                  V 4      pV'       d	   VR.8X  d   \        R4      hVR,          R8X  d   VR RpV F2  p	\        V	4      p V '       d   VP                  V 4       K)  \        R4      h	  V'       d   VP                  R4       RP                  V4      p \        W4      '       g   \        R4      hV #   \
        \        3 d   p\        R4      ThRp?ii ; i)aù  Encode a Unicode domain name into its ASCII (A-label) form.

Splits the input on label separators (only ``U+002E`` if ``strict`` is
set; otherwise also IDEOGRAPHIC FULL STOP ``U+3002``, FULLWIDTH FULL
STOP ``U+FF0E``, and HALFWIDTH IDEOGRAPHIC FULL STOP ``U+FF61``),
encodes each label with :func:`alabel`, and rejoins them with ``.``.
Optionally pre-processes the input through :func:`uts46_remap`.

:param s: The domain name to encode.
:param strict: If ``True``, only ``U+002E`` is recognised as a label
    separator.
:param uts46: If ``True``, apply UTS #46 mapping before encoding.
:param std3_rules: Forwarded to :func:`uts46_remap` when ``uts46`` is
    ``True``.
:param transitional: Forwarded to :func:`uts46_remap` when ``uts46``
    is ``True``. Deprecated: emits a :class:`DeprecationWarning` and
    will be removed in a future version.
:returns: The encoded domain as ASCII :class:`bytes`.
:raises IDNAError: If the domain is empty, contains an invalid label,
    or exceeds the maximum domain length.
zuTransitional processing has been removed from UTS #46. The transitional argument will be removed in a future version.)Ú
stacklevelrµ   zGshould pass a unicode string to the function rather than a byte string.NTr¦   úDomain too longFÚ.rV   úEmpty domainúEmpty labelr   ó   .rs   )ÚwarningsÚwarnÚDeprecationWarningr®   r1   ÚUnicodeDecodeErrorÚ	TypeErrorr   rÖ   rR   ÚsplitÚ_unicode_dots_rerº   ÚappendÚjoin)
r9   rØ   rÙ   rÃ   rÄ   r±   rP   ÚresultÚlabelsrG   s
   &&&&&     r   r>   r>   ô  sP  € ÷8 Ü�ŠðMäØõ		
ô �aœ×Òð	pÜ�A�w“ˆA÷ Ü˜ |Ó4ˆô ˜q¨t×4Ó4ÜÐ)Ó*Ð*à€LØ€Fß#ˆQ�W‰W�SŒ\Ô)9×)?Ñ)?ÀÓ)B€Fß�V ˜t”^Ü˜Ó'Ð'Øˆb…z�RÔØ�2ˆJØˆÛˆÜ�5‹MˆßØ�M‰M˜!Öä˜MÓ*Ð*ñ ÷ Ø�‰�cÔØ�	‰	�&Ó€AÜ˜q×/Ò/ÜÐ)Ó*Ð*Ø€Høô; #¤IÐ.ô 	pÜÐeÓfÐloÐoûð	pús   ½E ÅE=Å,E8Å8E=c          
      ó€   € V ^8„  d   QhR\         \        \        \        3,          R\        R\        R\        R\        /# )r    r9   rØ   rÙ   rÃ   r"   rÚ   )r$   s   "r   r%   r%   :  sF   € ÷ 2ñ 2ÜŒS”%œÐ"Õ#ð2äð2ô ð2ô ð	2ô
 	ñ2r   c                ó|  € \        V \        4      '       g    \        V R4      p V'       d   \        WR4      p \        V RR7      '       g   \	        R4      hRp. pV'       d   V P                  R4      M\        P                  V 4      pV'       d	   VR	.8X  d   \	        R
4      hVR,          '       g   VR RpV F2  p\        V4      p V '       d   VP                  V 4       K)  \	        R4      h	  V'       d   VP                  R	4       RP                  V4      #   \        \        3 d   p\	        R4      ThRp?ii ; i)a¨  Decode an A-label-encoded domain name back to Unicode.

Splits the input on label separators (see :func:`encode` for the
rules), decodes each label with :func:`ulabel`, and rejoins them
with ``.``. Optionally pre-processes the input through
:func:`uts46_remap`.

:param s: The domain name to decode.
:param strict: If ``True``, only ``U+002E`` is recognised as a label
    separator.
:param uts46: If ``True``, apply UTS #46 mapping before decoding.
:param std3_rules: Forwarded to :func:`uts46_remap` when ``uts46`` is
    ``True``.
:returns: The decoded domain as a Unicode string.
:raises IDNAError: If the input is not valid ASCII, contains an
    invalid label, or is empty.
rµ   zInvalid ASCII in A-labelNFTr¦   rÝ   rÞ   rV   rß   rà   rs   )r®   r1   rå   ræ   r   rÖ   rR   rç   rè   r¶   ré   rê   )	r9   rØ   rÙ   rÃ   r±   rP   rë   rì   rG   s	   &&&&     r   r¯   r¯   :  s  € ô. �aœ×Òð	AÜ�A�w“ˆA÷ Ü˜ uÓ-ˆô ˜q¨t×4Ó4ÜÐ)Ó*Ð*Ø€LØ€Fß#ˆQ�W‰W�SŒ\Ô)9×)?Ñ)?ÀÓ)B€Fß�V ˜t”^Ü˜Ó'Ð'Ø�"�:Œ:Ø�2ˆJØˆÛˆÜ�5‹MˆßØ�M‰M˜!Öä˜MÓ*Ð*ñ ÷ Ø�‰�bÔØ�8‰8�FÓÐøô1 #¤IÐ.ô 	AÜÐ6Ó7¸SÐ@ûð	Aús   ˜D ÄD;Ä*D6Ä6D;>   r   r   r	   >
   r   r   r	   ÚBNÚCSr
   ÚESÚETÚONrX   >   r   r   r	   r
   >   r   rï   rð   r
   rñ   rò   ró   rX   )F)TF)FFFF)FFF)1rÌ   Úrer'   râ   Útypingr   r   rV   r   Ú	intrangesr   r€   r¸   Úcompilerè   Ú	frozensetr]   r\   r^   r_   r`   ra   rb   r4   r„   r…   rÁ   r   r   r   r   r-   r6   r@   rD   rM   rR   ri   rn   rt   rz   rŠ   r¡   r²   rº   r¶   rÖ   r>   r¯   r   r   r   Ú<module>rù      s]  ðÛ Û 	Û Û ß "å Ý (àÐ Ø€Ø—:’:Ð:Ó;Ð ñ ˜S $˜KÓ(€Ù Ò!2Ó3Ð ÙÒZÓ[Ð Ù"Ò#:Ó;Ð Ù˜t T˜lÓ+Ð ÙÒNÓOÐ Ù" C¨ ;Ó/Ð Ù¡ S£©3¨s«8Ð 4Ó5Ð Ù¡ S£©3¨s«8Ð 4Ó5Ð ô	�ô 	ô	�Iô 	ô	�yô 	ô	˜iô 	õõ@õ õõõ9÷GõTõõ$Aõ3÷l+õ\6õrõ>&÷R40÷nC÷L2ñ 2r   