ó
    0/¡jD  ã            
       óž  • % S r SSKrSSKrSSKrSSKrSSKJrJr  SSKr	SSK
r	SSKr	SSKr	SSKr	SSKr	SSKr	 " S S\	R                   R"                  5      r " S S5      r " S S	\5      r " S
 S\5      r " S S\	R                   R"                  5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r\R6                  \\R8                  \\R:                  \\R<                  \\R>                  \0r \\\4   \!S'   S\S\4S jr"S\\#-  SSS\4S jr$S\\#-  S\%S\&S\&S\4
S  jr'S!\S\SS4S" jr(\R:                  r\RR                  r)\RT                  r*\RV                  r+\R6                  r\RX                  r,\R<                  r\RZ                  r-\R\                  r.\R^                  r/\R8                  r\R>                  rg)#zEDNS Optionsé    N)ÚAnyÚDictc                   óX   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSr\S 5       rSrg)Ú
OptionTypeé#   zEDNS option type codesé   é   é   é   é   é	   é
   é   é   é   é   é   c                 ó   • g©Niÿÿ  © ©Úclss    Úa/var/www/html/health-monitoring.indevconsultancy.in/venv/lib/python3.13/site-packages/dns/edns.pyÚ_maximumÚOptionType._maximum?   ó   € àó    r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚNSIDÚDAUÚDHUÚN3UÚECSÚEXPIREÚCOOKIEÚ	KEEPALIVEÚPADDINGÚCHAINÚEDEÚREPORTCHANNELÚclassmethodr   Ú__static_attributes__r   r   r   r   r   #   sU   † Ù ð €Dà
€Cà
€Cà
€Cà
€Cà€Fà€Fà€Ià€Gà€Eà
€Cà€Màñó ór   r   c                   ó¶   • \ rS rSrSrS\\-  4S jrSS\S-  S\	S-  4S jjr
S\4S	 jrSS
 jr\S\SSSS 4S j5       rS rS rS rS rS rS rS rS rSrg)ÚOptionéD   z%Base class for all EDNS option types.Úotypec                 ó8   • [         R                  U5      U l        g)zOInitialize an option.

*otype*, a ``dns.edns.OptionType``, is the option type.
N)r   Úmaker4   )Úselfr4   s     r   Ú__init__ÚOption.__init__G   s   € ô
  —_‘_ UÓ+ˆ�
r   NÚfileÚreturnc                 ó   • [         e)zEConvert an option to wire format.

Returns a ``bytes`` or ``None``.

©ÚNotImplementedError©r7   r:   s     r   Úto_wireÚOption.to_wireN   s
   € ô "Ð!r   c                 ó   • [         e©Nr=   ©r7   s    r   Úto_textÚOption.to_textV   s   € Ü!Ð!r   c                 óX   • U R                  5       nUc   e[        U R                  U5      $ )zbCreates a dns.edns.GenericOption equivalent of this rdata.

Returns a ``dns.edns.GenericOption``.
)r@   ÚGenericOptionr4   )r7   Úwires     r   Ú
to_genericÚOption.to_genericY   s,   € ð
 �|‰|‹~ˆØÑÐÐÜ˜TŸZ™Z¨Ó.Ð.r   Úparserúdns.wire.Parserc                 ó   • [         e)zæBuild an EDNS option object from wire format.

*otype*, a ``dns.edns.OptionType``, is the option type.

*parser*, a ``dns.wire.Parser``, the parser, which should be
restructed to the option length.

Returns a ``dns.edns.Option``.
r=   ©r   r4   rL   s      r   Úfrom_wire_parserÚOption.from_wire_parserb   s
   € ô "Ð!r   c                 ó\   • U R                  5       nUR                  5       nX#:X  a  gX#:”  a  gg)zCompare an EDNS option with another option of the same type.

Returns < 0 if < *other*, 0 if == *other*, and > 0 if > *other*.
r   é   éÿÿÿÿ)r@   )r7   ÚotherrI   Úowires       r   Ú_cmpÚOption._cmpo   s-   € ð
 �|‰|‹~ˆØ—‘“ˆØ‹=ØØ‹<ØØr   c                 óŒ   • [        U[        5      (       d  gU R                  UR                  :w  a  gU R                  U5      S:H  $ )NFr   ©Ú
isinstancer2   r4   rW   ©r7   rU   s     r   Ú__eq__ÚOption.__eq__|   s9   € Ü˜%¤×(Ñ(ØØ�:‰:˜Ÿ™Ó$ØØ�y‰y˜Ó 1Ñ$Ð$r   c                 óŒ   • [        U[        5      (       d  gU R                  UR                  :w  a  gU R                  U5      S:g  $ )NTr   rZ   r\   s     r   Ú__ne__ÚOption.__ne__ƒ   s9   € Ü˜%¤×(Ñ(ØØ�:‰:˜Ÿ™Ó$ØØ�y‰y˜Ó 1Ñ$Ð$r   c                 ó”   • [        U[        5      (       a  U R                  UR                  :w  a  [        $ U R	                  U5      S:  $ ©Nr   ©r[   r2   r4   ÚNotImplementedrW   r\   s     r   Ú__lt__ÚOption.__lt__Š   ó8   € Ü˜%¤×(Ñ(¨D¯J©J¸%¿+¹+Ó,EÜ!Ð!Ø�y‰y˜Ó !Ñ#Ð#r   c                 ó”   • [        U[        5      (       a  U R                  UR                  :w  a  [        $ U R	                  U5      S:*  $ rc   rd   r\   s     r   Ú__le__ÚOption.__le__�   ó8   € Ü˜%¤×(Ñ(¨D¯J©J¸%¿+¹+Ó,EÜ!Ð!Ø�y‰y˜Ó 1Ñ$Ð$r   c                 ó”   • [        U[        5      (       a  U R                  UR                  :w  a  [        $ U R	                  U5      S:¬  $ rc   rd   r\   s     r   Ú__ge__ÚOption.__ge__”   rl   r   c                 ó”   • [        U[        5      (       a  U R                  UR                  :w  a  [        $ U R	                  U5      S:„  $ rc   rd   r\   s     r   Ú__gt__ÚOption.__gt__™   rh   r   c                 ó"   • U R                  5       $ rC   )rE   rD   s    r   Ú__str__ÚOption.__str__ž   s   € Ø�|‰|‹~Ðr   ©r4   rC   ©r;   rH   )r   r   r    r!   r"   r   Ústrr8   r   Úbytesr@   rE   rJ   r/   rP   rW   r]   r`   rf   rj   rn   rq   rt   r0   r   r   r   r2   r2   D   s”   † Ù/ð,˜j¨3Ñ.ô ,ñ"˜C $™Jð "°%¸$±,õ "ð"˜ô "ô/ð ð
" Zð 
"Ð9Jð 
"Èxó 
"ó ð
"òò%ò%ò$ò
%ò
%ò
$õ
r   r2   c                   ó¤   ^ • \ rS rSrSrS\\-  S\\-  4U 4S jjrSS\	S-  S\S-  4S	 jjr
S\4S
 jrSS jr\S\\-  SSS\4S j5       rSrU =r$ )rH   é¢   zkGeneric Option Class

This class is used for EDNS option types for which we have no better
implementation.
r4   Údatac                 ó‚   >• [         TU ]  U5        [        R                  R                  R                  US5      U l        g )NT)Úsuperr8   ÚdnsÚrdataÚRdataÚ	_as_bytesr|   )r7   r4   r|   Ú	__class__s      €r   r8   ÚGenericOption.__init__©   s,   ø€ Ü‰Ñ˜ÔÜ—I‘I—O‘O×-Ñ-¨d°DÓ9ˆ�	r   Nr:   r;   c                 ó`   • U(       a  UR                  U R                  5        g U R                  $ rC   )Úwriter|   r?   s     r   r@   ÚGenericOption.to_wire­   ó"   € ÞØ�J‰J�t—y‘yÔ!Øà—9‘9Ðr   c                 ó    • SU R                    3$ )NzGeneric rv   rD   s    r   rE   ÚGenericOption.to_text´   s   € Ø˜$Ÿ*™*˜Ð&Ð&r   c                 ó   • U $ rC   r   rD   s    r   rJ   ÚGenericOption.to_generic·   s   € Øˆr   rL   rM   c                 ó.   • U " XR                  5       5      $ rC   ©Úget_remainingrO   s      r   rP   ÚGenericOption.from_wire_parserº   s   € ñ �5×.Ñ.Ó0Ó1Ð1r   )r|   rC   rw   )r   r   r    r!   r"   r   rx   ry   r8   r   r@   rE   rJ   r/   r2   rP   r0   Ú__classcell__©rƒ   s   @r   rH   rH   ¢   s�   ø† ñð:˜j¨3Ñ.ð :°e¸c±k÷ :ñ˜C $™Jð °%¸$±,õ ð'˜ô 'ôð ð2Ø Ñ$ð2Ø.?ð2à	ó2ó ö2r   rH   c                   ó¸   ^ • \ rS rSrSrSS\S\S-  S\4U 4S jjjrS\4S	 jr\	S
\S\
4S j5       rSS\S-  S\S-  4S jjr\S\\-  SSS\
4S j5       rSrU =r$ )Ú	ECSOptionéÁ   z!EDNS Client Subnet (ECS, RFC7871)NÚaddressÚsrclenÚscopelenc                 óŠ  >• [         T	U ]  [        R                  5        [        R
                  R                  U5      nU[        R                  :X  aŒ  SU l	        Uc  Sn[        R                  R                  R                  U5      n[        R                  R                  R                  USS5      n[        R                  R                  R                  USS5      nO«U[        R                  :X  aŒ  SU l	        Uc  Sn[        R                  R                  R                  U5      n[        R                  R                  R                  USS5      n[        R                  R                  R                  USS5      nO[!        S	5      eUc   eXl        X l        X0l        [        R
                  R)                  XA5      n[+        [,        R.                  " US
-  5      5      nUSU U l        US-  nUS:w  aN  [2        R4                  " S[7        U R0                  SS 5      SSU-
  -  -  5      nU R0                  SS U-   U l        gg)aZ  *address*, a ``str``, is the client address information.

*srclen*, an ``int``, the source prefix length, which is the
leftmost number of bits of the address to be used for the
lookup.  The default is 24 for IPv4 and 56 for IPv6.

*scopelen*, an ``int``, the scope prefix length.  This value
must be 0 in queries, and should be set in responses.
é   Né8   r   é€   rS   é   é    zBad address familyç       @r   ÚBrT   éÿ   )r~   r8   r   r'   r   ÚinetÚaf_for_addressÚsocketÚAF_INET6Úfamilyr€   r�   Ú_as_ipv6_addressÚ_as_intÚAF_INETÚ_as_ipv4_addressÚ
ValueErrorr–   r—   r˜   Ú	inet_ptonÚintÚmathÚceilÚaddrdataÚstructÚpackÚord)
r7   r–   r—   r˜   Úafr°   ÚnbytesÚnbitsÚlastrƒ   s
            €r   r8   ÚECSOption.__init__Ä   sÀ  ø€ ô 	‰ÑœŸ™Ô(Ü�X‰X×$Ñ$ WÓ-ˆà”—‘Ó ØˆDŒKØ‰~Ø�Ü—i‘i—o‘o×6Ñ6°wÓ?ˆGÜ—Y‘Y—_‘_×,Ñ,¨V°Q¸Ó<ˆFÜ—y‘y—‘×.Ñ.¨x¸¸CÓ@‰HØ”6—>‘>Ó!ØˆDŒKØ‰~Ø�Ü—i‘i—o‘o×6Ñ6°wÓ?ˆGÜ—Y‘Y—_‘_×,Ñ,¨V°Q¸Ó;ˆFÜ—y‘y—‘×.Ñ.¨x¸¸BÓ?‰HäÐ1Ó2Ð2àÑ!Ð!Ð!ØŒØŒØ Œä—8‘8×%Ñ% bÓ2ˆÜ”T—Y’Y˜v¨™|Ó,Ó-ˆð !  &Ð)ˆŒØ˜‘
ˆØ�A‹:Ü—;’;˜s¤C¨¯©°b°cÐ(:Ó$;¸tÈÈEÉ	Ñ?RÑ$SÓTˆDØ ŸM™M¨#¨2Ð.°Ñ5ˆD�Mð r   r;   c                 óT   • SU R                    SU R                   SU R                   3$ )NzECS Ú/z scope/)r–   r—   r˜   rD   s    r   rE   ÚECSOption.to_textó   s'   € Ø�d—l‘l�^ 1 T§[¡[ M°¸¿¹¸ÐHÐHr   Útextc                 óB  • SnU R                  5       nSn[        U5      S:X  a  US   nO<[        U5      S:X  a  US   U:w  a  [        SU  S35      eUS   nO[        SU  S35      eUR                  S5      nUS:X  a  UR                  S5      u  pVS	nO*US:X  a  UR                  S5      u  pVnO[        SU  S35      e [	        U5      n [	        U5      n	[        XYU5      $ ! [         a    [        S
SU S3-   5      ef = f! [         a    [        SSU S3-   5      ef = f)aø  Convert a string into a `dns.edns.ECSOption`

*text*, a `str`, the text form of the option.

Returns a `dns.edns.ECSOption`.

Examples:

>>> import dns.edns
>>>
>>> # basic example
>>> dns.edns.ECSOption.from_text('1.2.3.4/24')
>>>
>>> # also understands scope
>>> dns.edns.ECSOption.from_text('1.2.3.4/24/32')
>>>
>>> # IPv6
>>> dns.edns.ECSOption.from_text('2001:4b98::1/64/64')
>>>
>>> # it understands results from `dns.edns.ECSOption.to_text()`
>>> dns.edns.ECSOption.from_text('ECS 1.2.3.4/24/32')
r'   NrS   r   rš   zcould not parse ECS from "Ú"rº   Ú0zinvalid scope z": scope must be an integerzinvalid srclen z": srclen must be an integer)ÚsplitÚlenr«   Úcountr­   r”   )
r¼   Úoptional_prefixÚtokensÚecs_textÚ	n_slashesr–   ÚtsrclenÚtscopeÚscoper—   s
             r   Ú	from_textÚECSOption.from_textö   s\  € ð0  ˆØ—‘“ˆØˆÜˆv‹;˜!ÓØ˜a‘y‰HÜ�‹[˜AÓØ�a‰y˜OÓ+Ü Ð#=¸d¸VÀ1Ð!EÓFÐFØ˜a‘y‰HäÐ9¸$¸¸qÐAÓBÐBØ—N‘N 3Ó'ˆ	Ø˜‹>Ø'Ÿ~™~¨cÓ2ÑˆGØ‰FØ˜!‹^Ø'/§~¡~°cÓ':Ñ$ˆG™fäÐ9¸$¸¸qÐAÓBÐBð	YÜ˜“KˆEð	Ü˜“\ˆFô
 ˜¨%Ó0Ð0øô ó 	YÜÐ-°!°F°8Ð;VÐ0WÑWÓXÐXð	Yûô ó 	ÜØ! a¨ yÐ0LÐ$MÑMóð ð	ús   Â>C! Ã
D Ã!C>ÄDr:   c                 óÀ   • [         R                  " SU R                  U R                  U R                  5      U R
                  -   nU(       a  UR                  U5        g U$ )Nú!HBB)r±   r²   r¦   r—   r˜   r°   r†   ©r7   r:   Úvalues      r   r@   ÚECSOption.to_wire-  sG   € ä�KŠK˜ §¡¨T¯[©[¸$¿-¹-ÓHÈ4Ï=É=ÑXð 	ö Ø�J‰J�uÔØàˆLr   r4   rL   rM   c                 ó|  • UR                  S5      u  p4n[        [        R                  " US-  5      5      nUR	                  U5      nUS:X  a+  SU-
  n[
        R                  R                  USU-  -   5      n	O<US:X  a+  SU-
  n[
        R                  R                  USU-  -   5      n	O[        S5      eU " X”U5      $ )	NrÍ   rŸ   rS   é   ó    rš   é   zunsupported family)
Ú
get_structr­   r®   r¯   Ú	get_bytesr   Úipv4Ú	inet_ntoaÚipv6r«   )
r   r4   rL   r¦   ÚsrcrÉ   ÚaddrlenÚprefixÚpadÚaddrs
             r   rP   ÚECSOption.from_wire_parser7  s³   € ð $×.Ñ.¨vÓ6Ñˆ�UÜ”d—i’i  c¡	Ó*Ó+ˆØ×!Ñ! 'Ó*ˆØ�Q‹;Ø�g‘+ˆCÜ—8‘8×%Ñ% f¨w¸©}Ñ&<Ó=‰DØ�q‹[Ø�w‘,ˆCÜ—8‘8×%Ñ% f¨w¸©}Ñ&<Ó=‰DäÐ1Ó2Ð2á�4˜eÓ$Ð$r   )r°   r–   r¦   r˜   r—   rc   rC   )r   r   r    r!   r"   rx   r­   r8   rE   Ústaticmethodr2   rÊ   r   ry   r@   r/   r   rP   r0   r‘   r’   s   @r   r”   r”   Á   s§   ø† Ù+ñ-6 ð -6¨S°4©Zð -6È#÷ -6ð -6ð^I˜ô Ið ð41˜ð 41 ó 41ó ð41ñl˜C $™Jð °%¸$±,õ ð ð%Ø Ñ$ð%Ø.?ð%à	ó%ó ö%r   r”   c                   óŒ   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr\S 5       rSr g)ÚEDECodeiJ  zExtended DNS Error (EDE) codesr   rS   rš   r   rÒ   r	   r
   r   r   r   r   r   r   r   é   r   rÔ   é   r   é   é   é   é   é   r�   c                 ó   • gr   r   r   s    r   r   ÚEDECode._maximumg  r   r   r   N)!r   r   r    r!   r"   ÚOTHERÚUNSUPPORTED_DNSKEY_ALGORITHMÚUNSUPPORTED_DS_DIGEST_TYPEÚSTALE_ANSWERÚFORGED_ANSWERÚDNSSEC_INDETERMINATEÚDNSSEC_BOGUSÚSIGNATURE_EXPIREDÚSIGNATURE_NOT_YET_VALIDÚDNSKEY_MISSINGÚRRSIGS_MISSINGÚNO_ZONE_KEY_BIT_SETÚNSEC_MISSINGÚCACHED_ERRORÚ	NOT_READYÚBLOCKEDÚCENSOREDÚFILTEREDÚ
PROHIBITEDÚSTALE_NXDOMAIN_ANSWERÚNOT_AUTHORITATIVEÚNOT_SUPPORTEDÚNO_REACHABLE_AUTHORITYÚNETWORK_ERRORÚINVALID_DATAr/   r   r0   r   r   r   râ   râ   J  s�   † Ù(à€EØ#$Ð Ø!"ÐØ€LØ€MØÐØ€LØÐØÐØ€NØ€NØÐØ€LØ€LØ€IØ€GØ€HØ€HØ€JØÐØÐØ€MØÐØ€MØ€Làñó ór   râ   c                   ó¦   ^ • \ rS rSrSr1 SkrSS\\-  S\S-  4U 4S jjjrS\4S	 jr	SS
\
S-  S\S-  4S jjr\S\\-  SSS\4S j5       rSrU =r$ )Ú	EDEOptionil  z!Extended DNS Error (EDE, RFC8914)>   ÚDSÚNSECÚDNSKEYÚDNSSECÚRRSIGsÚNXDOMAINNÚcoder¼   c                 óÆ   >• [         TU ]  [        R                  5        [        R                  U5      U l        Ub   [        U[        5      (       d  [        S5      eX l
        g)z£*code*, a ``dns.edns.EDECode`` or ``str``, the info code of the
extended error.

*text*, a ``str`` or ``None``, specifying additional information about
the error.
Nztext must be string or None)r~   r8   r   r-   râ   r6   r  r[   rx   r«   r¼   )r7   r  r¼   rƒ   s      €r   r8   ÚEDEOption.__init__q  sI   ø€ ô 	‰ÑœŸ™Ô(ä—L‘L Ó&ˆŒ	ØÑ¤J¨t´S×$9Ñ$9ÜÐ:Ó;Ð;Ø�	r   r;   c                 ó0  ^ • ST R                    3nT R                   [        ;   aR  [        R                  T R                   5      nSR                  U 4S jUR	                  S5       5       5      nUSU S3-  nT R
                  b  UST R
                   3-  nU$ )NzEDE Ú c              3   óh   >#   • U  H'  nUTR                   ;   a  UOUR                  5       v •  M)     g 7frC   )Ú_preserve_caseÚtitle)Ú.0Úwordr7   s     €r   Ú	<genexpr>Ú$EDEOption.to_text.<locals>.<genexpr>„  s0   øé € ð â+�Dð  × 3Ñ 3Ó3‘¸¿¹»ÔEÚ+ùs   ƒ/2Ú_z (Ú)z: )r  râ   rE   ÚjoinrÀ   r¼   )r7   ÚoutputÚdescs   `  r   rE   ÚEDEOption.to_text€  sŒ   ø€ Ø˜Ÿ	™	�{Ð#ˆØ�9‰9œÓÜ—?‘? 4§9¡9Ó-ˆDØ—8‘8ô à ŸJ™J sœOóó ˆDð ˜˜4˜& �lÑ"ˆFØ�9‰9Ñ Ø˜˜4Ÿ9™9˜+Ð&Ñ&ˆFØˆr   r:   c                 óÎ   • [         R                  " SU R                  5      nU R                  b  X R                  R	                  S5      -  nU(       a  UR                  U5        g U$ )Nz!HÚutf8)r±   r²   r  r¼   Úencoder†   rÎ   s      r   r@   ÚEDEOption.to_wire�  sN   € Ü—’˜D $§)¡)Ó,ˆØ�9‰9Ñ Ø—Y‘Y×%Ñ% fÓ-Ñ-ˆEæØ�J‰J�uÔØàˆLr   r4   rL   rM   c                 óÊ   • [         R                  UR                  5       5      nUR                  5       nU(       a   US   S:X  a  US S nUR	                  S5      nOS nU " X55      $ )NrT   r   r   )râ   r6   Ú
get_uint16r�   Údecode)r   r4   rL   r  r¼   Úbtexts         r   rP   ÚEDEOption.from_wire_parser˜  s`   € ô �|‰|˜F×-Ñ-Ó/Ó0ˆØ×#Ñ#Ó%ˆæØ�B‰x˜1‹}Ø˜C˜R�y�Ø—K‘K Ó'‰EàˆEá�4ÓÐr   )r  r¼   rC   )r   r   r    r!   r"   r  râ   rx   r8   rE   r   ry   r@   r/   r   r2   rP   r0   r‘   r’   s   @r   r  r  l  sƒ   ø† Ù+âM€Nñ˜W s™]ð °#¸±*÷ ð ð˜ô ñ	˜C $™Jð 	°%¸$±,õ 	ð ð Ø Ñ$ð Ø.?ð à	ó ó ö r   r  c                   ó¨   ^ • \ rS rSrS\4U 4S jjrSS\S\S-  4S jjrS\4S jr	\
S	\\-  S
\R                  R                  S\4S j5       rSrU =r$ )Ú
NSIDOptioni©  Únsidc                 óL   >• [         TU ]  [        R                  5        Xl        g rC   )r~   r8   r   r#   r*  )r7   r*  rƒ   s     €r   r8   ÚNSIDOption.__init__ª  s   ø€ Ü‰ÑœŸ™Ô)Ø�	r   Nr:   r;   c                 ó`   • U(       a  UR                  U R                  5        g U R                  $ rC   )r†   r*  r?   s     r   r@   ÚNSIDOption.to_wire®  rˆ   r   c                 óà   • [        S U R                   5       5      (       a  U R                  R                  5       nO.[        R                  " U R                  5      R                  5       nSU 3$ )Nc              3   óB   #   • U  H  oS :¬  =(       a    US:*  v •  M     g7f)rž   é~   Nr   )r  Úcs     r   r  Ú%NSIDOption.to_text.<locals>.<genexpr>¶  s   é € Ð:²	¨1�D‰y×&˜Q $™YÔ&²	ùs   ‚zNSID )Úallr*  r%  ÚbinasciiÚhexlify)r7   rÏ   s     r   rE   ÚNSIDOption.to_textµ  sR   € ÜÑ:°·	²	Ó:×:Ñ:à—I‘I×$Ñ$Ó&‰Eä×$Ò$ T§Y¡YÓ/×6Ñ6Ó8ˆEØ�u�gˆÐr   r4   rL   c                 ó.   • U " UR                  5       5      $ rC   rŽ   rO   s      r   rP   ÚNSIDOption.from_wire_parser½  s   € ñ �6×'Ñ'Ó)Ó*Ð*r   )r*  rC   ©r   r   r    r!   ry   r8   r   r@   rx   rE   r/   r   r   rI   ÚParserr2   rP   r0   r‘   r’   s   @r   r)  r)  ©  sk   ø† ð˜U÷ ñ˜Cð ¨5°4©<õ ð˜ô ð ð+Ø Ñ$ð+Ø.1¯h©h¯o©oð+à	ó+ó ö+r   r)  c                   ó¬   ^ • \ rS rSrS\S\4U 4S jjrSS\S\S-  4S jjrS\4S	 jr	\
S
\\-  S\R                  R                  S\4S j5       rSrU =r$ )ÚCookieOptioniÄ  ÚclientÚserverc                 óþ   >• [         TU ]  [        R                  5        Xl        X l        [        U5      S:w  a  [        S5      e[        U5      S:w  a*  [        U5      S:  d  [        U5      S:”  a  [        S5      eg g )Nr   zclient cookie must be 8 bytesr   rž   z5server cookie must be empty or between 8 and 32 bytes)r~   r8   r   r)   r>  r?  rÁ   r«   )r7   r>  r?  rƒ   s      €r   r8   ÚCookieOption.__init__Å  sn   ø€ Ü‰Ñœ×*Ñ*Ô+ØŒØŒÜˆv‹;˜!ÓÜÐ<Ó=Ð=Üˆv‹;˜!Ó¤ V£¨q£´C¸³KÀ"Ó4DÜÐTÓUÐUð 5EÐr   Nr:   r;   c                 óâ   • U(       aP  UR                  U R                  5        [        U R                  5      S:”  a  UR                  U R                  5        g U R                  U R                  -   $ rc   )r†   r>  rÁ   r?  r?   s     r   r@   ÚCookieOption.to_wireÎ  sL   € ÞØ�J‰J�t—{‘{Ô#Ü�4—;‘;Ó !Ó#Ø—
‘
˜4Ÿ;™;Ô'Øà—;‘; §¡Ñ,Ð,r   c                 ó   • [         R                  " U R                  5      R                  5       n[	        U R
                  5      S:”  a/  [         R                  " U R
                  5      R                  5       nOSnSU U 3$ )Nr   Ú zCOOKIE )r5  r6  r>  r%  rÁ   r?  )r7   r>  r?  s      r   rE   ÚCookieOption.to_text×  sc   € Ü×!Ò! $§+¡+Ó.×5Ñ5Ó7ˆÜˆt�{‰{Ó˜aÓÜ×%Ò% d§k¡kÓ2×9Ñ9Ó;‰FàˆFØ˜˜  Ð)Ð)r   r4   rL   c                 óN   • U " UR                  S5      UR                  5       5      $ )Nr   )rÖ   r�   rO   s      r   rP   ÚCookieOption.from_wire_parserß  s%   € ñ �6×#Ñ# AÓ&¨×(<Ñ(<Ó(>Ó?Ð?r   )r>  r?  rC   r:  r’   s   @r   r=  r=  Ä  sz   ø† ðV˜uð V¨e÷ Vñ-˜Cð -¨5°4©<õ -ð*˜ô *ð ð@Ø Ñ$ð@Ø.1¯h©h¯o©oð@à	ó@ó ö@r   r=  c                   óÐ   ^ • \ rS rSrS\R
                  R                  4U 4S jjrSS\S\	S-  4S jjr
S\4S jr\S	\\-  S
\R                  R                   S\4S j5       rSrU =r$ )ÚReportChannelOptioniæ  Úagent_domainc                 óL   >• [         TU ]  [        R                  5        Xl        g rC   )r~   r8   r   r.   rK  )r7   rK  rƒ   s     €r   r8   ÚReportChannelOption.__init__è  s   ø€ Ü‰Ñœ×1Ñ1Ô2Ø(Õr   Nr:   r;   c                 ó8   • U R                   R                  U5      $ rC   )rK  r@   r?   s     r   r@   ÚReportChannelOption.to_wireì  s   € Ø× Ñ ×(Ñ(¨Ó.Ð.r   c                 ó<   • SU R                   R                  5       -   $ )NzREPORTCHANNEL )rK  rE   rD   s    r   rE   ÚReportChannelOption.to_textï  s   € Ø $×"3Ñ"3×";Ñ";Ó"=Ñ=Ð=r   r4   rL   c                 ó.   • U " UR                  5       5      $ rC   )Úget_namerO   s      r   rP   Ú$ReportChannelOption.from_wire_parserò  s   € ñ �6—?‘?Ó$Ó%Ð%r   )rK  rC   )r   r   r    r!   r   ÚnameÚNamer8   r   ry   r@   rx   rE   r/   r   rI   r;  r2   rP   r0   r‘   r’   s   @r   rJ  rJ  æ  ss   ø† ð) S§X¡X§]¡]÷ )ñ/˜Cð /¨5°4©<õ /ð>˜ô >ð ð&Ø Ñ$ð&Ø.1¯h©h¯o©oð&à	ó&ó ö&r   rJ  Ú_type_to_classr4   r;   c                 óB   • [         R                  U 5      nUc  [        nU$ )zxReturn the class for the specified option type.

The GenericOption class is used if a more specific class is not
known.
)rW  ÚgetrH   )r4   r   s     r   Úget_option_classrZ    s#   € ô ×
Ñ
˜UÓ
#€CØ
�{ÜˆØ€Jr   rL   rM   c                 ód   • [         R                  U 5      n [        U 5      nUR                  X5      $ )zòBuild an EDNS option object from wire format.

*otype*, an ``int``, is the option type.

*parser*, a ``dns.wire.Parser``, the parser, which should be
restricted to the option length.

Returns an instance of a subclass of ``dns.edns.Option``.
)r   r6   rZ  rP   )r4   rL   r   s      r   Úoption_from_wire_parserr\    s-   € ô �O‰O˜EÓ"€EÜ
˜5Ó
!€CØ×Ñ Ó.Ð.r   rI   ÚcurrentÚolenc                 ó®   • [         R                  R                  X5      nUR                  U5         [	        X5      sSSS5        $ ! , (       d  f       g= f)aV  Build an EDNS option object from wire format.

*otype*, an ``int``, is the option type.

*wire*, a ``bytes``, is the wire-format message.

*current*, an ``int``, is the offset in *wire* of the beginning
of the rdata.

*olen*, an ``int``, is the length of the wire-format option data

Returns an instance of a subclass of ``dns.edns.Option``.
N)r   rI   r;  Úrestrict_tor\  )r4   rI   r]  r^  rL   s        r   Úoption_from_wirera     s8   € ô  �X‰X�_‰_˜TÓ+€FØ	×	Ñ	˜DÕ	!Ü& uÓ5÷ 
"×	!×	!ús   ±AÁ
AÚimplementationc                 ó   • U [         U'   g)zŸRegister the implementation of an option type.

*implementation*, a ``class``, is a subclass of ``dns.edns.Option``.

*otype*, an ``int``, is the option type.
N)rW  )rb  r4   s     r   Úregister_typerd  5  s   € ð +„N�5Òr   )0r"   r5  r®   r¤   r±   Útypingr   r   Údns.enumr   Údns.inetÚdns.ipv4Údns.ipv6Údns.nameÚ	dns.rdataÚdns.wireÚenumÚIntEnumr   r2   rH   r”   râ   r  r)  r=  rJ  r'   r-   r#   r)   r.   rW  Ú__annotations__rZ  rx   r\  ry   r­   ra  rd  r$   r%   r&   r(   r*   r+   r,   r   r   r   Ú<module>rp     sþ  ðò$ ã Û Û Û ß ã Û Û Û Û Û Û ô�—‘×!Ñ!ô ÷B[ñ [ô|2�Fô 2ô>F%�ô F%ôRˆc�h‰h×Ñô ôD: �ô : ôz+�ô +ô6@�6ô @ôD&˜&ô &ð( ‡N�N�IØ‡N�N�IØ‡O�O�ZØ×Ñ�|Ø×ÑÐ1ð)€��Z �_Ñ%ó ð
˜Jð 
¨3ô 
ð/Ø˜Ñð/Ø%6ð/àô/ð"6Ø˜Ñð6Ø#(ð6Ø36ð6Ø>Að6àô6ð*+ #ð +¨jð +¸Tô +ð ‡�€Ø‡n�n€Ø‡n�n€Ø‡n�n€Ø‡n�n€Ø	×	Ñ	€Ø	×	Ñ	€Ø× Ñ €	Ø
×
Ñ
€Ø×Ñ€Ø‡n�n€Ø×(Ñ(�r   