ó
    ÌÅLgex  ã            #       óú  • S 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K	J
r
JrJrJr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KrSSKrSSKrSSKJr  SSKJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)  \((       a  SSK*r*\RV                  RX                  r-S r.SFS jr/ SFS\R`                  Rb                  S	\\Rd                  Rf                  \44   S
\
S\\5   S\\6\54   4
S jjr7          SGS\R`                  Rb                  S
\\
   S\\5   S\8S\8S\\\Rr                  Rt                  \Rv                  Rx                  4      S\\4   S\8S\8S\8S\\Rd                  Rf                     S\
4S jjr=           SHS\Rd                  Rf                  S\>S\\5   S\6S\\>   S\6S\8S\8S\8S\8S\\R`                  Rb                     S\\R`                  R~                     S\8S\Rd                  Rf                  4S  jjr@           SIS\Rd                  Rf                  S\>S\\5   S\6S\\>   S\6S\8S\8S\8S!\\R`                  Rb                     S"\\R`                  R‚                     S\\R`                  R~                     S\8S\\Rd                  Rf                  \84   4S# jjrB SFS\R`                  R‚                  S	\\Rd                  Rf                  \44   S\\5   S\\6\54   4S$ jjrCS% rD     SJS\R`                  R‚                  S\\5   S\8S\\\Rr                  Rt                  \Rv                  Rx                  4      S\\4   S\8S\\Rd                  Rf                  \54   4S& jjrE        SKS\Rd                  Rf                  S\>S\\5   S\6S\\>   S\6S\8S\8S\\R`                  R‚                     S\\R`                  R~                     S\Rd                  Rf                  4S' jjrF           SLS\Rd                  Rf                  S\>S\\5   S\6S\\>   S\6S\8S\8S\\R`                  R‚                     S\\R`                  R~                     S)\\)RŽ                     S*\\>   S+\\8\>4   S\Rd                  Rf                  4S, jjrHS-\S.   SS.4S/ jrISS0SSSSSS1S(S(SS\R”                  \R–                  4S\Rd                  Rf                  S\>S\\5   S\6S\\>   S\6S\8S\8S2\S3   S4\>S5\8S+\\8\>4   S6\\>   S-\S.   S7\6S8\S\Rd                  Rf                  4"S9 jjrL          SMS\Rd                  Rf                  S\>S:\>S\\5   S\6S\\>   S\6S\8S\8S+\\8\>4   S\\R`                  R~                     S;\\>   S5\8S\Rd                  Rf                  4S< jjrM           SNS\Rd                  Rf                  S\>S\\5   S\6S\\>   S\6S\8S\8S=\\Rœ                  Rž                     S+\\8\>4   S\\R`                  R~                     S;\\>   S*\\>   S\Rd                  Rf                  4S> jjrNS?\R                   R¢                  S@\R`                  R¤                  S\Rd                  Rf                  SA\\6   S\\5   S\5S\
4SB jrSSSSSSS\"R¨                  S4S\>S?\R                   R¢                  S\\Rd                  Rf                     S\6S\\5   SC\\5   S\\>   S\6SD\"S\\R`                  R~                     SS4SE jjrUg)OzTalk to a DNS server.é    N)ÚAnyÚDictÚOptionalÚTupleÚUnionÚcast)ÚNullContext)ÚBadResponseÚHTTPVersionÚNoDOHÚNoDOQÚUDPModeÚ_check_statusÚ_compute_timesÚ_make_dot_ssl_contextÚ_matches_destinationÚ
_remainingÚhave_dohÚsslc                 ó¬   • U(       d  U(       aF  Uc@  U [         R                  :X  a  SnX4$ U [         R                  :X  a  SnX4$ [        SU  35      eX4$ g )Nz0.0.0.0z::zunknown address family )ÚsocketÚAF_INETÚAF_INET6ÚNotImplementedError)ÚafÚaddressÚports      Ú0/usr/lib/python3/dist-packages/dns/asyncquery.pyÚ_source_tupler   >   sf   € ö –$Ø‰?Ø”V—^‘^Ó#Ø#�ð
 ˆÐð	 ”v—‘Ó&Ø�ð ˆÐô *Ð,CÀBÀ4Ð*HÓIÐIØˆÐàó    c                 ó^   • U b*  U(       d  [         R                   " 5       n[        X-
  S5      $ g ©Nr   )ÚtimeÚmax)Ú
expirationÚnows     r   Ú_timeoutr'   N   s)   € ØÑÞÜ—)’)“+ˆCÜ�:Ñ# QÓ'Ð'àr    ÚsockÚwhatÚdestinationr%   Úreturnc              ƒ   óö   #   • [        U[        R                  R                  5      (       a  UR	                  5       n[
        R
                  " 5       nU R                  X[        X45      5      I Sh  v•N nXT4$  N7f)a^  Send a DNS message to the specified UDP socket.

*sock*, a ``dns.asyncbackend.DatagramSocket``.

*what*, a ``bytes`` or ``dns.message.Message``, the message to send.

*destination*, a destination tuple appropriate for the address family
of the socket, specifying where to send the query.

*expiration*, a ``float`` or ``None``, the absolute time at which
a timeout exception should be raised.  If ``None``, no timeout will
occur.  The expiration value is meaningless for the asyncio backend, as
asyncio's transport sendto() never blocks.

Returns an ``(int, float)`` tuple of bytes sent and the sent time.
N)Ú
isinstanceÚdnsÚmessageÚMessageÚto_wirer#   Úsendtor'   )r(   r)   r*   r%   Ú	sent_timeÚns         r   Úsend_udpr5   W   sZ   é € ô. �$œŸ™×+Ñ+×,Ñ,Ø�|‰|‹~ˆÜ—	’	“€IØ�k‰k˜$¬X°jÓ-LÓM×M€AØˆ>Ðñ 	Nùs   ‚A-A9Á/A7Á0A9FÚignore_unexpectedÚone_rr_per_rrsetÚkeyringÚrequest_macÚignore_trailingÚraise_on_truncationÚignore_errorsÚqueryc           	   ƒ   ó6  #   • Sn U R                  S[        U5      5      I Sh  v•N u  p¼[        U R                  XÁU5      (       d  MD  [        R                  " 5       n [
        R                  R                  UUUUUUS9nU	(       a  U
b  U
R                  U5      (       d  Mž  XíU4$  N‚! [
        R                  R                   a:  nU	(       a-  U
b*  U
R                  UR                  5       5      (       d   SnAMö  e SnAf[         a    U	(       a   GM  e f = f7f)aR  Read a DNS message from a UDP socket.

*sock*, a ``dns.asyncbackend.DatagramSocket``.

See :py:func:`dns.query.receive_udp()` for the documentation of the other
parameters, and exceptions.

Returns a ``(dns.message.Message, float, tuple)`` tuple of the received message, the
received time, and the address where the message arrived from.
r    éÿÿ  N)r8   r9   r7   r:   r;   )Úrecvfromr'   r   Úfamilyr#   r.   r/   Ú	from_wireÚ	TruncatedÚis_responseÚ	Exception)r(   r*   r%   r6   r7   r8   r9   r:   r;   r<   r=   ÚwireÚfrom_addressÚreceived_timeÚrÚes                   r   Úreceive_udprK   u   s  é € ð0 €DØ
Ø%)§]¡]°5¼(À:Ó:NÓ%O×OÑˆÜ#Ø�K‰K˜Ð4E÷
ñ 
ñ ÜŸ	š	›ˆð	Ü—‘×%Ñ%ØØØ'Ø!1Ø /Ø$7ð &ð ˆAö. ˜UÑ.°u×7HÑ7HÈ×7KÑ7KÙØ ,Ð/Ð/ñA  Pøô �{‰{×$Ñ$ó 		ö ØÑ%Ø×)Ñ)¨!¯)©)«+×6Ñ6åàûÜó 	ÞÛàð		üsK   ‚"D¤B'¥9DÁ"B) Â'DÂ)DÃ.C<Ã5DÃ;C<Ã<DÄDÄDÄDé5   ÚqÚwhereÚtimeoutr   ÚsourceÚsource_portÚbackendc              ƒ   ó$  #   • U R                  5       n[        U5      u  pï[        R                  R	                  U5      n[        X4U5      nU
(       a  [        U
5      nOwU(       d  [        R                  R                  5       n[        UXE5      nUR                  5       (       a  X4nOSnUR                  U[        R                  SUU5      I Sh  v•N nU ISh  v•N n[        UUUU5      I Sh  v•N   [        UUUUUU R                   U R"                  UU	UU 5      I Sh  v•N u  nnnUU-
  Ul        U(       d  U R'                  U5      (       d  [(        eUsSSS5      ISh  v•N   $  Nš N‘ N} NN N! , ISh  v•N  (       d  f       g= f7f)a"  Return the response obtained after sending a query via UDP.

*sock*, a ``dns.asyncbackend.DatagramSocket``, or ``None``,
the socket to use for the query.  If ``None``, the default, a
socket is created.  Note that if a socket is provided, the
*source*, *source_port*, and *backend* are ignored.

*backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
the default, then dnspython will use the default backend.

See :py:func:`dns.query.udp()` for the documentation of the other
parameters, exceptions, and return type of this method.
Nr   )r1   r   r.   ÚinetÚaf_for_addressÚ_lltupler	   ÚasyncbackendÚget_default_backendr   Údatagram_connection_requiredÚmake_socketr   Ú
SOCK_DGRAMr5   rK   r8   Úmacr#   rD   r
   )rM   rN   rO   r   rP   rQ   r6   r7   r:   r;   r(   rR   r<   rF   Ú
begin_timer%   r   r*   ÚcmÚstupleÚdtupleÚsrI   rH   Ú_s                            r   Úudprc   ²   sV  é € ð8 �9‰9‹;€DÜ-¨gÓ6Ñ€ZÜ	�‰×	 Ñ	  Ó	'€BÜ˜E˜=¨"Ó-€KÞÜ5@ÀÓ5F‰æÜ×&Ñ&×:Ñ:Ó<ˆGÜ˜r 6Ó7ˆØ×/Ñ/×1Ñ1Ø�]‰FàˆFØ×&Ñ& r¬6×+<Ñ+<¸aÀÈÓP×Pˆß‰r�QÜ�q˜$ ¨ZÓ8×8Ð8Ü&1ØØØØØØ�I‰IØ�E‰EØØØØó'
÷ !
ÑˆˆM˜1ð  Ñ+ˆŒö  §¡¨q×!1Ñ!1ÜÐØ÷) �r‰rñ QÙÙ8ñ!
÷ �r�rˆrüs~   ‚CFÃE,Ã
FÃE.ÃFÃ E6Ã2E0Ã30E6Ä#E2Ä$6E6ÅFÅ&E4Å'FÅ.FÅ0E6Å2E6Å4FÅ6FÅ<E?Å=FÆ	FÚudp_sockÚtcp_sockc              ƒ   óà   #   •  [        U UUUUUUUUSU	UU5      I Sh  v•N nUS4$  N! [        R                  R                   a$    [	        U UUUUUUUU
U5
      I Sh  v•N  nUS4s $ f = f7f)a‡  Return the response to the query, trying UDP first and falling back
to TCP if UDP results in a truncated response.

*udp_sock*, a ``dns.asyncbackend.DatagramSocket``, or ``None``,
the socket to use for the UDP query.  If ``None``, the default, a
socket is created.  Note that if a socket is provided the *source*,
*source_port*, and *backend* are ignored for the UDP query.

*tcp_sock*, a ``dns.asyncbackend.StreamSocket``, or ``None``, the
socket to use for the TCP query.  If ``None``, the default, a
socket is created.  Note that if a socket is provided *where*,
*source*, *source_port*, and *backend*  are ignored for the TCP query.

*backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
the default, then dnspython will use the default backend.

See :py:func:`dns.query.udp_with_fallback()` for the documentation
of the other parameters, exceptions, and return type of this
method.
TNF)rc   r.   r/   rC   Útcp)rM   rN   rO   r   rP   rQ   r6   r7   r:   rd   re   rR   r<   Úresponses                 r   Úudp_with_fallbackri   ô   s¬   é € ðF ÜØØØØØØØØØØØØØó
÷ 
ˆð ˜%Ð Ð ñ
øô  �;‰;× Ñ ó  ÜØØØØØØØØØØó
÷ 
ð 
ˆð ˜$ÐÒð üs=   ‚A.„) ž'Ÿ) ¦A.§) ©5A+ÁA!Á	A+Á(A.Á*A+Á+A.c              ƒ   óF  #   • [        U[        R                  R                  5      (       a  UR	                  SS9nO[        U5      R                  SS5      U-   n[        R                  " 5       nU R                  U[        X$5      5      I Sh  v•N   [        U5      U4$  N7f)zÞSend a DNS message to the specified TCP socket.

*sock*, a ``dns.asyncbackend.StreamSocket``.

See :py:func:`dns.query.send_tcp()` for the documentation of the other
parameters, exceptions, and return type of this method.
T)Úprepend_lengthé   ÚbigN)
r-   r.   r/   r0   r1   ÚlenÚto_bytesr#   Úsendallr'   )r(   r)   r%   Útcpmsgr3   s        r   Úsend_tcprr   8  s„   é € ô �$œŸ™×+Ñ+×,Ñ,Ø—‘¨T�Ð2‰ô
 �T“×#Ñ# A uÓ-°Ñ4ˆÜ—	’	“€IØ
�,‰,�vœx¨
Ó>Ó
?×?Ð?Ü�‹K˜Ð#Ð#ñ @ùs   ‚BB!ÂBÂB!c              ƒ   ó¾   #   • SnUS:”  aN  U R                  U[        U5      5      I Sh  v•N nUS:X  a  [        S5      eU[        U5      -
  nX4-   nUS:”  a  MN  U$  N17f)ztRead the specified number of bytes from stream.  Keep trying until we
either get the desired amount, or we hit EOF.
r    r   NÚEOF)Úrecvr'   ÚEOFErrorrn   )r(   Úcountr%   ra   r4   s        r   Ú_read_exactlyrx   Q  se   é € ð 	€AØ
�!‹)Ø—)‘)˜E¤8¨JÓ#7Ó8×8ˆØ�‹8Ü˜5“/Ð!Øœ˜A›‘ˆØ‰Eˆð �!�)ð €Hñ 9ùs   ‚'A©Aª-AÁAc              ƒ   ó  #   • [        U SU5      I Sh  v•N n[        R                  " SU5      u  n[        XU5      I Sh  v•N n[        R                  " 5       n	[        R
                  R                  UUUUUS9n
X©4$  Nj N?7f)z×Read a DNS message from a TCP socket.

*sock*, a ``dns.asyncbackend.StreamSocket``.

See :py:func:`dns.query.receive_tcp()` for the documentation of the other
parameters, exceptions, and return type of this method.
rl   Nú!H©r8   r9   r7   r:   )rx   ÚstructÚunpackr#   r.   r/   rB   )r(   r%   r7   r8   r9   r:   ÚldataÚlrF   rH   rI   s              r   Úreceive_tcpr€   _  s   é € ô     a¨Ó4×4€EÜ�=Š=˜˜uÓ%�D€QÜ˜t¨
Ó3×3€DÜ—I’I“K€MÜ�‰×ÑØØØØ)Ø'ð 	ð 	€Að ÐÐñ 5á3ùs!   ‚B“A>”,BÁ B Á>BÂ Bc
           	   ƒ   óò  #   • U R                  5       n
[        U5      u  p¼U(       a$  UR                  5       I Sh  v•N   [        U5      nO[        R
                  R                  U5      n[        XäU5      nX4nU	(       d  [        R                  R                  5       n	U	R                  U[        R                  SUUU5      I Sh  v•N nU ISh  v•N n[        UX¬5      I Sh  v•N   [        UXÆU R                  U R                   U5      I Sh  v•N u  nnUU-
  Ul        U R%                  U5      (       d  [&        eUsSSS5      ISh  v•N   $  GN N� N„ Nr NI N! , ISh  v•N  (       d  f       g= f7f)a+  Return the response obtained after sending a query via TCP.

*sock*, a ``dns.asyncbacket.StreamSocket``, or ``None``, the
socket to use for the query.  If ``None``, the default, a socket
is created.  Note that if a socket is provided
*where*, *port*, *source*, *source_port*, and *backend* are ignored.

*backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
the default, then dnspython will use the default backend.

See :py:func:`dns.query.tcp()` for the documentation of the other
parameters, exceptions, and return type of this method.
Nr   )r1   r   Úgetpeernamer	   r.   rT   rU   r   rW   rX   rZ   r   ÚSOCK_STREAMrr   r€   r8   r\   r#   rD   r
   )rM   rN   rO   r   rP   rQ   r7   r:   r(   rR   rF   r]   r%   r^   r   r_   r`   ra   rI   rH   s                       r   rg   rg   }  s9  é € ð4 �9‰9‹;€DÜ-¨gÓ6Ñ€ZÞð ×ÑÓ × Ð Ü5@ÀÓ5F‰ô �X‰X×$Ñ$ UÓ+ˆÜ˜r¨;Ó7ˆØ�ˆÞÜ×&Ñ&×:Ñ:Ó<ˆGØ×&Ñ&Ø”×"Ñ" A v¨v°wó
÷ 
ˆ÷ ‰r�QÜ�q˜$Ó+×+Ð+Ü#.Øˆz¨Q¯Y©Y¸¿¹¸ó$
÷ 
ÑˆˆMð  Ñ+ˆŒØ�}‰}˜Q×ÑÜÐØ÷ �r‰rò 	!ñ
ñ Ù+ñ
÷ �r�rˆrüsŽ   ‚8E7ºE»B
E7ÃEÃ
E7ÃEÃE7ÃEÃ$EÃ%*EÄEÄ.EÄ>E7Å
EÅE7ÅE7ÅE7ÅEÅEÅE7ÅE4Å#E&Å$E4Å0E7TÚssl_contextÚserver_hostnameÚverifyc              ƒ   ót  #   • [        U5      u  pÞU(       a  [        U5      nO�U
c  [        X¼5      n
[        R                  R                  U5      n[        UXE5      nX4nU	(       d  [        R                  R                  5       n	U	R                  U[        R                  SUUUU
U5      I Sh  v•N nU ISh  v•N n[        U5      n[        U UUUUUUUUU	5
      I Sh  v•N n[        R                  " 5       nUU-
  Ul        UsSSS5      ISh  v•N   $  Nh N_ N: N! , ISh  v•N  (       d  f       g= f7f)az  Return the response obtained after sending a query via TLS.

*sock*, an ``asyncbackend.StreamSocket``, or ``None``, the socket
to use for the query.  If ``None``, the default, a socket is
created.  Note that if a socket is provided, it must be a
connected SSL stream socket, and *where*, *port*,
*source*, *source_port*, *backend*, *ssl_context*, and *server_hostname*
are ignored.

*backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
the default, then dnspython will use the default backend.

See :py:func:`dns.query.tls()` for the documentation of the other
parameters, exceptions, and return type of this method.
Nr   )r   r	   r   r.   rT   rU   r   rW   rX   rZ   r   rƒ   r'   rg   r#   )rM   rN   rO   r   rP   rQ   r7   r:   r(   rR   r„   r…   r†   r]   r%   r^   r   r_   r`   ra   rh   Úend_times                         r   Útlsr‰   µ  s!  é € ô<  .¨gÓ6Ñ€ZÞÜ5@ÀÓ5F‰àÑÜ/°ÓHˆKÜ�X‰X×$Ñ$ UÓ+ˆÜ˜r 6Ó7ˆØ�ˆÞÜ×&Ñ&×:Ñ:Ó<ˆGØ×&Ñ&ØÜ×ÑØØØØØØó	
÷ 	
ˆ÷ ‰r�QÜ˜:Ó&ˆÜØØØØØØØØØØó
÷ 
ˆô —9’9“;ˆØ  :Ñ-ˆŒØ÷! �r‰rñ	
ñ ñ
÷ �r�rˆrüsl   ‚B+D8Â-DÂ.
D8Â8DÂ9D8Â<#DÃDÃ $DÄD8ÄDÄD8ÄD8ÄDÄD8ÄD5Ä$D'Ä%D5Ä1D8Úresolverzdns.asyncresolver.Resolverc                 óH   • U c  SS K nUR                  R                  5       n U $ r"   )Údns.asyncresolverÚasyncresolverÚResolver)rŠ   r.   s     r   Ú_maybe_get_resolverr�   û  s&   € ð Ñã à×$Ñ$×-Ñ-Ó/ˆØ€Or    i»  z
/dns-queryÚclientzhttpx.AsyncClientÚpathÚpostÚbootstrap_addressrA   Úhttp_versionc              ƒ   óŒ	  #   •  [         R                  R                  U5      nUbb  [         R                  R	                  U5      (       a>  U[
        R                  :X  a  SU SU U	 3nO!U[
        R                  :X  a
  SU SU U	 3nOUn0 nUc™  [        R                  R                  W5      nUR                  c  [        S5      e[         R                  R	                  UR                  5      (       a  UR                  nUR                  US'   UR                  b  UR                  nU[        R                  :X  d  U[        R                  :X  a”  [         (       d‰  Uck  [#        U5      nWR                  c   eUR%                  UR                  U5      I Sh  v•N n[&        R(                  " [+        UR-                  5       5      5      n[/        U UWUUUUUUUU
S9I Sh  v•N $ [         (       d  [0        eU(       a*  [3        U[4        R6                  5      (       d  [        S	5      eU R9                  5       nS
S0nU[        R:                  [        R                  4;   nU[        R<                  [        R                  4;   n[         R>                  RA                  5       nUc  SnSnOUnUnU(       a  [C        U5      nO2URE                  5       " UUUUUUUUS9n[4        R6                  " UUUUS9nU ISh  v•N nU
(       aQ  URG                  S[I        [K        U5      5      S.5        URM                  URO                  WUUUS9U5      I Sh  v•N nOa[P        RR                  " U5      RU                  S5      nURW                  5       n URM                  URY                  WUSU 0US9U5      I Sh  v•N nSSS5      ISh  v•N   WRZ                  S:  d  URZ                  S:”  a(  [        U SURZ                   SUR\                  < 35      e[         R^                  Ra                  UR\                  U Rb                  U Rd                  UUS9n!URf                  Ri                  5       U!l5        U Rm                  U!5      (       d  [n        eU!$ ! [         a    Sn GNsf = f GN GN¾ GN« GNW N÷ Né! , ISh  v•N  (       d  f       Nþ= f7f)a§  Return the response obtained after sending a query via DNS-over-HTTPS.

*client*, a ``httpx.AsyncClient``.  If provided, the client to use for
the query.

Unlike the other dnspython async functions, a backend cannot be provided
in this function because httpx always auto-detects the async backend.

See :py:func:`dns.query.https()` for the documentation of the other
parameters, exceptions, and return type of this method.
Nzhttps://Ú:z	https://[z]:zno hostname in URLÚsni_hostname)r†   r’   z.session parameter must be an httpx.AsyncClientÚacceptzapplication/dns-messager   )Úlocal_addressÚhttp1Úhttp2r†   Ú
local_portr“   rŠ   rA   )rš   r›   r†   Ú	transport)zcontent-typezcontent-length)ÚheadersÚcontentÚ
extensionsó   =r.   )rž   Úparamsr    éÈ   i+  z responded with status code z
Response body: r{   )8r.   rT   rU   Ú
ValueErrorÚ
is_addressr   r   r   ÚurllibÚparseÚurlparseÚhostnamer   r   ÚH3ÚDEFAULTr   r�   Úresolve_nameÚrandomÚchoiceÚlistÚ	addressesÚ_http3r   r-   ÚhttpxÚAsyncClientr1   ÚH1ÚH2rW   rX   r	   Úget_transport_classÚupdateÚstrrn   Úwait_forr’   Úbase64Úurlsafe_b64encodeÚrstripÚdecodeÚgetÚstatus_coderŸ   r/   rB   r8   r9   ÚelapsedÚtotal_secondsr#   rD   r
   )"rM   rN   rO   r   rP   rQ   r7   r:   r�   r‘   r’   r†   r“   rŠ   rA   r”   r   Úurlr    ÚparsedÚanswersrF   rž   Úh1Úh2rR   r™   rœ   r^   r�   Ú
the_clientrh   ÚtwirerI   s"                                     r   ÚhttpsrÉ   	  s]  é € ð<Ü�X‰X×$Ñ$ UÓ+ˆð 
�~œ#Ÿ(™(×-Ñ-¨e×4Ñ4Ø”—‘ÓØ˜U˜G 1 T F¨4¨&Ð1‰CØ”6—?‘?Ó"Ø˜e˜W B t f¨T¨FÐ3ˆCøàˆà€JØÑ ä—‘×&Ñ& sÓ+ˆØ�?‰?Ñ"ÜÐ1Ó2Ð2Ü�8‰8×Ñ˜vŸ™×/Ñ/Ø &§¡ÐØ)/¯©ˆJ�~Ñ&Ø�;‰;Ñ"Ø—;‘;ˆDà”{—~‘~Ó%Øœ×+Ñ+Ó+·H²HàÑ$Ü*¨8Ó4ˆHØ—?‘?Ñ.Ð.Ð.Ø$×1Ñ1°&·/±/À6ÓJ×JˆGÜ &§¢¬d°7×3DÑ3DÓ3FÓ.GÓ HÐÜØØØØØØØØØØØñ
÷ 
ð 	
÷ Š8Üˆæ”j ¬×):Ñ):×;Ñ;ÜÐIÓJÐJð �9‰9‹;€DØÐ2Ð3€Gà	œ+Ÿ.™.¬+×*=Ñ*=Ð>Ñ	>€BØ	œ+Ÿ.™.¬+×*=Ñ*=Ð>Ñ	>€Bä×Ñ×2Ñ2Ó4€Gà�~ØˆØ‰
àˆØ ˆ
æÜ5@ÀÓ5H‰à×/Ñ/Ô1Ø'ØØØØ!Ø/ØØñ	
ˆ	ô ×Ò R¨r¸&ÈIÑVˆç‰r�Zö Ø�N‰Nà$=Ü&)¬#¨d«)£nñôð %×-Ñ-Ø—‘ØØ#Ø Ø)ð	  ð ð ó÷ ‰Hô ×+Ò+¨DÓ1×8Ñ8¸Ó>ˆDØ—K‘K“MˆEØ$×-Ñ-Ø—‘ØØ#Ø! 5˜>Ø)ð	 ð ð ó÷ ˆH÷- �rðD ×Ñ˜cÓ! X×%9Ñ%9¸CÓ%?ÜØˆgÐ1°(×2FÑ2FÐ1GØ × 0Ñ 0Ñ3ð5ó
ð 	
ô 	�‰×ÑØ×ÑØ—	‘	Ø—M‘MØ)Ø'ð 	ð 	€Að ×Ñ×+Ñ+Ó-€A„FØ�=‰=˜×ÑÜÐØ€HøôG ó Ø‹ðúò8 Kò
òh òñ÷- �r�rˆrüs·   ‚S„R £E4SÆRÆASÇRÇ DSË5R Ë6SË9AR*ÍR#ÍA!R*Î.R&Î/R*Î3SÎ>R(Î?CSÒRÒSÒRÒSÒSÒ SÒ#R*Ò&R*Ò(SÒ*SÒ0R3Ò1SÒ=SrÂ   r©   c           	   ƒ   óÚ  #   • [         R                  R                  (       d  [        S5      e[        R
                  R                  U5      nUR                  nUR                  b  UR                  nSU l	        U R                  5       n[         R                  R                  U
5      u  nnU" 5        IS h  v•N nU" UX›SS9 IS h  v•N nUR                  XXV5      n[        U5      u  nnUR                  U5      I S h  v•N nU IS h  v•N   UR                  X.U5        UR!                  [#        U5      5      I S h  v•N n[%        UR'                  5       X5        S S S 5      IS h  v•N   [(        R(                  " 5       nS S S 5      IS h  v•N   [         R*                  R-                  UU R.                  U R0                  UUS9nS S S 5      IS h  v•N   [3        WW-
  S5      Wl        U R5                  U5      (       d  [6        eU$  GNT GNF GN GN NÖ N®! , IS h  v•N  (       d  f       NÃ= f N¥! , IS h  v•N  (       d  f       Nº= f N|! , IS h  v•N  (       d  f       N‘= f7f)Nz DNS-over-HTTP3 is not available.r   T)Úverify_modeÚserver_nameÚh3r{   ç        )r.   ÚquicÚ	have_quicr   r¦   r§   r¨   r©   r   Úidr1   Úfactories_for_backendÚconnectr   Úmake_streamÚsend_h3Úreceiver   r   rž   r#   r/   rB   r8   r9   r$   rD   r
   )rM   rN   rÂ   rO   r   rP   rQ   r7   r:   r†   rR   r©   r’   Ú	url_partsrF   ÚcfactoryÚmfactoryÚcontextÚthe_managerÚthe_connectionÚstartr%   ÚstreamÚfinishrI   s                            r   r±   r±   ¯  sÔ  é € ô �8‰8××ÜÐ6Ó7Ð7ä—‘×%Ñ% cÓ*€IØ×!Ñ!€HØ‡~�~Ñ!Ø�~‰~ˆà€A„DØ�9‰9‹;€DÜŸ8™8×9Ñ9¸'ÓBÑ€Xˆxá�zŒz˜WÙØ À$÷
ò 
àØ(×0Ñ0°¸fÓRˆNÜ"0°Ó"9ÑˆU�JØ)×5Ñ5°gÓ>×>ˆFß’và—‘˜s¨$Ô/Ø#Ÿ^™^¬J°zÓ,BÓC×C�Ü˜fŸn™nÓ.°Ô<÷	 —vô
 —Y’Y“[ˆF÷
÷ 
ô �K‰K×!Ñ!ØØ—I‘IØŸ™Ø-Ø+ð "ð 
ˆ÷ �zô( �˜%‘ Ó%€A„FØ�=‰=˜×ÑÜÐØ€Hò/ ò
ò
 ?Úñ D÷ —v—v�vú÷
÷ 
÷ 
ð 
ú÷ �z�zˆzüsü   ‚B3I+Â5H	Â6I+Â9IÃHÃIÃ
5H5Ã?HÄ 
H5Ä
H
ÄH5Ä0HÄ>H
Ä?HÅH5Å(HÅ)H5ÆIÆH3Æ9IÇI+ÇIÇ7I+ÈIÈH5ÈH5ÈHÈH5ÈH0ÈH"È H0È,H5È3IÈ5I	È;H>È<I	ÉIÉI+ÉI(ÉIÉI(É$I+Ú
connectionc           	   ƒ   óÆ  #   • [         R                  R                  (       d  [        S5      eUb  Uc  UnSU l        U R                  5       nU(       a7  [         R                  R                  n[         R                  R                  nUnO![         R                  R                  U
5      u  pïU" 5        ISh  v•N nU" UU	US9 ISh  v•N nU(       d  UR                  XXE5      n[        U5      u  nnWR                  U5      I Sh  v•N nU ISh  v•N   UR                  US5      I Sh  v•N   UR                  [        U5      5      I Sh  v•N nSSS5      ISh  v•N   [        R                  " 5       nSSS5      ISh  v•N   [         R                  R!                  UU R"                  U R$                  UUS9nSSS5      ISh  v•N   ['        WW-
  S5      Wl        U R)                  U5      (       d  [*        eU$  GNI GN; Ný Nô NÜ N¼ N®! , ISh  v•N  (       d  f       NÃ= f N¥! , ISh  v•N  (       d  f       Nº= f N|! , ISh  v•N  (       d  f       N‘= f7f)aQ  Return the response obtained after sending an asynchronous query via
DNS-over-QUIC.

*backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
the default, then dnspython will use the default backend.

See :py:func:`dns.query.quic()` for the documentation of the other
parameters, exceptions, and return type of this method.
zDNS-over-QUIC is not available.Nr   )rË   rÌ   Tr{   rÎ   )r.   rÏ   rÐ   r   rÑ   r1   Únull_factoryrÒ   rÓ   r   rÔ   ÚsendrÖ   r   r#   r/   rB   r8   r9   r$   rD   r
   )rM   rN   rO   r   rP   rQ   r7   r:   rà   r†   rR   r©   r…   rF   rØ   rÙ   rÜ   rÚ   rÛ   rÝ   r%   rÞ   rß   rI   s                           r   rÏ   rÏ   ä  sÒ  é € ô2 �8‰8××ÜÐ5Ó6Ð6àÑ" xÑ'7Ø"ˆà€A„DØ�9‰9‹;€DæÜ—8‘8×(Ñ(ˆÜ—8‘8×(Ñ(ˆØ#‰ä"Ÿx™x×=Ñ=¸gÓFÑˆá�zŒz˜WÙØØØ'÷
ò 
ð ÞØ!,×!4Ñ!4°UÀ&Ó!V�Ü"0°Ó"9ÑˆU�JØ)×5Ñ5°gÓ>×>ˆFß’vØ—k‘k $¨Ó-×-Ð-Ø#Ÿ^™^¬J°zÓ,BÓC×C�÷ —vô —Y’Y“[ˆF÷
÷ 
ô �K‰K×!Ñ!ØØ—I‘IØŸ™Ø-Ø+ð "ð 
ˆ÷ �zô* �˜%‘ Ó%€A„FØ�=‰=˜×ÑÜÐØ€Hò1 ò
ñ ?ÙÙ-ÙC÷ —v—v�vú÷
÷ 
÷ 
ð 
ú÷ �z�zˆzüs  ‚B4I!Â6G?Â7I!Â:IÃHÃIÃ<H+ÄHÄ
H+ÄH
ÄH+ÄHÄ,H	
Ä-!HÅH
ÅHÅH+ÅHÅH+Å8IÆH)Æ9IÆ=I!ÇIÇ	7I!ÈIÈH+ÈH+È	HÈHÈH+ÈH&ÈHÈH&È"H+È)IÈ+I	È1H4È2I	È>IÉI!ÉIÉIÉIÉI!Útxn_managerra   Úserialc                óf  #   • UR                   S   R                  nU[        R                  R                  :H  nU R                  5       nUR                  5       n	UR                  [        R                  :H  n
U
(       aI  [        [        R                  R                  U5      nUR                  U	S[        U5      5      I Sh  v•N   O`[        [        R                  R                  U5      n[         R"                  " S[%        U	5      5      U	-   nUR'                  XÕ5      I Sh  v•N   [        R(                  R+                  XX:5       nSnSnU(       d÷  [-        U5      u  nnUb	  Ub  UU:”  a  UnU
(       a)  [        U5      nWR/                  SU5      I Sh  v•N u  nnOC[1        WSU5      I Sh  v•N n[         R2                  " SU5      u  n[1        UUU5      I Sh  v•N n[        R4                  R7                  UUR8                  UR:                  SUUU
(       + US9nUR=                  U5      nU7v •  UR>                  nU(       d  M÷  UR8                  (       a0  WR@                  (       d  [        RB                  RE                  S	5      eSSS5        g GNÓ GNu GN Ní NÁ! , (       d  f       g= f7f)
z'Given a socket, does the zone transfer.r   Nrz   Fr?   rl   T)r8   r9   ÚxfrÚoriginÚtsig_ctxÚmultir7   zmissing TSIG)#ÚquestionÚrdtyper.   Ú	rdatatypeÚIXFRÚfrom_wire_originr1   Útyper   r[   r   rW   ÚDatagramSocketr2   r'   ÚStreamSocketr|   Úpackrn   rp   rç   ÚInboundr   r@   rx   r}   r/   rB   r8   r\   Úprocess_messageré   Úhad_tsigÚ	exceptionÚ	FormError)rä   ra   r=   rå   rO   r%   rì   Úis_ixfrrè   rF   Úis_udprd   re   rq   ÚinboundÚdoneré   rb   ÚmexpirationÚrwirer~   r   rI   s                          r   Ú_inbound_xfrrÿ   (  s&  é € ð �^‰^˜AÑ×%Ñ%€FØœŸ™×*Ñ*Ñ*€GØ×)Ñ)Ó+€FØ�=‰=‹?€DØ�V‰V”v×(Ñ(Ñ(€FÞÜœ×(Ñ(×7Ñ7¸Ó;ˆØ�o‰o˜d D¬(°:Ó*>Ó?×?Ñ?äœ×(Ñ(×5Ñ5°qÓ9ˆÜ—’˜T¤3 t£9Ó-°Ñ4ˆØ×Ñ˜vÓ2×2Ð2Ü	�‰�‰˜¨fÔ	=ÀØˆØˆÞÜ-¨gÓ6ÑˆQ�ØÑ"ØÑ&¨;¸Ó+Cà(�ÞÜ" ;Ó/�Ø#+×#4Ñ#4°U¸GÓ#D×D‘
�™ä+¨H°a¸ÓE×E�Ü—}’} T¨5Ó1‘�Ü+¨H°a¸ÓE×E�Ü—‘×%Ñ%ØØŸ™Ø!ŸI™IØØØ!Ø!”zØ!(ð &ð 	ˆAð ×*Ñ*¨1Ó-ˆDØ‹GØ—z‘zˆH÷3 �$ð4 �=�= §§Ü—-‘-×)Ñ)¨.Ó9Ð9÷= 
>Ð	=ò 	@ò 	3ò EáEáE÷ 
>Õ	=üs|   ‚B>J1Ã JÃA J1Ä!JÄ"$J1ÅAJ ÆJÆJ Æ.JÆ/-J ÇJÇA*J É	AJ Ê

J1ÊJ1ÊJ ÊJ ÊJ Ê 
J.Ê*J1ÚlifetimeÚudp_modec
           
   ƒ   ó¬  #   • Uc"  [         R                  R                  U5      u  p*O[         R                  R                  U5      n
[         R                  R                  U 5      n[        X¶U5      nX4nU	(       d  [         R                  R                  5       n	[        U5      u  pïUR                  S   R                  [         R                  R                  :X  am  U[        R                  :w  aY  U	R!                  U["        R$                  SXÍ['        U5      5      I Sh  v•N nU ISh  v•N    [)        UUX*XO5        Sh  v•N nM  U	R!                  U["        R.                  SXÍ['        U5      5      I Sh  v•N nU ISh  v•N   [)        UUX*XO5        Sh  v•N nM   N� Nx Nb
  SSS5      ISh  v•N    g! [         R                  R*                   a    U[        R,                  :X  a  e  Of = fSSS5      ISh  v•N    M¾  ! , ISh  v•N  (       d  f       NÕ= f N¨ NŸ NŠ
 SSS5      ISh  v•N    g! , ISh  v•N  (       d  f       g= f7f)aU  Conduct an inbound transfer and apply it via a transaction from the
txn_manager.

*backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
the default, then dnspython will use the default backend.

See :py:func:`dns.query.inbound_xfr()` for the documentation of
the other parameters, exceptions, and return type of this method.
Nr   )r.   rç   Ú
make_queryÚextract_serial_from_queryrT   rU   r   rW   rX   r   rë   rì   rí   rî   r   ÚNEVERrZ   r   r[   r'   rÿ   ÚUseTCPÚONLYrƒ   )rN   rä   r=   r   rO   r   rP   rQ   r  rR   rå   r   r_   r`   rb   r%   ra   s                    r   Úinbound_xfrr  ^  sÎ  é € ð* �}ÜŸ'™'×,Ñ,¨[Ó9‰ˆ�ä—‘×2Ñ2°5Ó9ˆÜ	�‰×	 Ñ	  Ó	'€BÜ˜2 {Ó3€FØˆ]€FÞÜ×"Ñ"×6Ñ6Ó8ˆÜ$ XÓ.�O€QØ‡~�~�aÑ×Ñ¤3§=¡=×#5Ñ#5Ó5¸(ÄgÇmÁmÓ:SØ×%Ñ%Ø”×!Ñ! 1 f´h¸zÓ6Jó
÷ 
ˆ÷ ’1ðÜ+Ø  E°7ô ÷ ˜!ñ ð ×!Ñ!Ø
ŒF×Ñ  6´8¸JÓ3Gó÷ 	€A÷ ŠqÜ# K°°EÀ7ÔW÷ 	�!Ùñ'
ñ ñð  ð ÷ —1‘1øô —7‘7—>‘>ó ØœwŸ|™|Ó+Øñ ,ðú÷ —1—1—1—1‘1úñ	ñ ñ	ÐW÷ �q�q�q�qˆqüs&  ‚DIÄF!Ä 
IÄ*F#Ä+IÄ.HÄ0F;Ä>F'ÅF%ÅF'ÅF;Å	/IÅ8H!Å9
IÆH#ÆIÆH:ÆH'ÆH%ÆH'ÆH:Æ!IÆ#IÆ%F'Æ'F;Æ)IÆ4F7Æ5IÆ;3G1Ç.HÇ0G1Ç1HÇ4IÇ?HÈ IÈHÈHÈHÈIÈ#IÈ%H'È'H:È(IÈ3H6È4IÈ:IÉ IÉIÉI)N)
NNFFNr    FFFN)NrL   Nr   FFFFNNF)NrL   Nr   FFFNNNF)NFNr    F)NrL   Nr   FFNN)NéU  Nr   FFNNNNT)
Nr	  Nr   FFTNNT)Nr	  Nr   FFNTNNN)VÚ__doc__rº   Ú
contextlibr­   r   r|   r#   Úurllib.parser¦   Útypingr   r   r   r   r   r   Údns.asyncbackendr.   Údns.exceptionÚdns.inetÚdns.messageÚdns.nameÚdns.quicÚ	dns.rcodeÚdns.rdataclassÚdns.rdatatypeÚdns.transactionÚdns._asyncbackendr	   Ú	dns.queryr
   r   r   r   r   r   r   r   r   r   r   r   r²   rT   Úlow_level_address_tuplerV   r   r'   rW   rñ   r/   r0   ÚbytesÚfloatÚintr5   ÚboolÚnameÚNameÚtsigÚKeyrK   r¸   ÚBackendrc   rò   ri   rr   rx   r€   rg   Ú
SSLContextr‰   r�   Ú	AF_UNSPECr«   rÉ   r±   rÏ   ÚAsyncQuicConnectionÚtransactionÚTransactionManagerÚSocketrÿ   r  r  © r    r   Ú<module>r+     s  ðñ$ ã Û Û Û Û Û Û ß :× :ã Û Û Û Û Û Û Û Û Û Ý )÷÷ ÷ ó ö Ûð �8‰8×+Ñ+€òô ð #'ñ	Ø
×
Ñ
×
)Ñ
)ðà
�—‘×#Ñ# UÐ*Ñ
+ðð ðð ˜‘ð	ð
 ˆ3�ˆ:Ñõð@ "&Ø"&Ø#Ø"Ø;?Ø#&Ø!Ø %ØØ+/ñ:0Ø
×
Ñ
×
)Ñ
)ð:0à˜#‘ð:0ð ˜‘ð:0ð ð	:0ð
 ð:0ð �d˜3Ÿ8™8Ÿ=™=¨#¯(©(¯,©,Ð6Ñ7Ñ8ð:0ð ˜%‘ð:0ð ð:0ð ð:0ð ð:0ð �C—K‘K×'Ñ'Ñ(ð:0ð 	õ:0ð@  $ØØ ØØ#Ø"Ø!Ø %Ø6:Ø26Øñ?Ø
‡{�{×Ñð?àð?ð �e‰_ð?ð ð	?ð
 �S‰Mð?ð ð?ð ð?ð ð?ð ð?ð ð?ð �3×#Ñ#×2Ñ2Ñ
3ð?ð �c×&Ñ&×.Ñ.Ñ/ð?ð ð?ð 	‡[�[×Ñõ?ðJ  $ØØ ØØ#Ø"Ø!Ø:>Ø8<Ø26ØñA Ø
‡{�{×ÑðA àðA ð �e‰_ðA ð ð	A ð
 �S‰MðA ð ðA ð ðA ð ðA ð ðA ð �s×'Ñ'×6Ñ6Ñ7ðA ð �s×'Ñ'×4Ñ4Ñ5ðA ð �c×&Ñ&×.Ñ.Ñ/ðA ð ðA ð ˆ3�;‰;×Ñ Ð$Ñ%õA ðN #'ñ$Ø
×
Ñ
×
'Ñ
'ð$à
�—‘×#Ñ# UÐ*Ñ
+ð$ð ˜‘ð$ð ˆ3�ˆ:Ñõ	$ò2ð  #'Ø"Ø;?Ø#&Ø!ñØ
×
Ñ
×
'Ñ
'ðà˜‘ðð ðð �d˜3Ÿ8™8Ÿ=™=¨#¯(©(¯,©,Ð6Ñ7Ñ8ð	ð
 ˜%‘ðð ðð ˆ3�;‰;×Ñ Ð%Ñ&õðB  $ØØ ØØ"Ø!Ø48Ø26ñ5Ø
‡{�{×Ñð5àð5ð �e‰_ð5ð ð	5ð
 �S‰Mð5ð ð5ð ð5ð ð5ð �3×#Ñ#×0Ñ0Ñ
1ð5ð �c×&Ñ&×.Ñ.Ñ/ð5ð 	‡[�[×Ñõ5ðv  $ØØ ØØ"Ø!Ø48Ø26Ø,0Ø%)Ø#ñCØ
‡{�{×ÑðCàðCð �e‰_ðCð ð	Cð
 �S‰MðCð ðCð ðCð ðCð �3×#Ñ#×0Ñ0Ñ
1ðCð �c×&Ñ&×.Ñ.Ñ/ðCð ˜#Ÿ.™.Ñ)ðCð ˜c‘]ðCð �$˜�)ÑðCð 	‡[�[×ÑõCðLØÐ3Ñ4ðà!ôð"  $ØØ ØØ"Ø!Ø,0ØØØ#Ø'+Ø7;Ø×"Ñ"Ø +× 3Ñ 3ñ!cØ
‡{�{×Ñðcàðcð �e‰_ðcð ð	cð
 �S‰Mðcð ðcð ðcð ðcð Ð(Ñ)ðcð ðcð ðcð �$˜�)Ñðcð   ‘}ðcð Ð3Ñ4ðcð ðcð  ð!cð" 	‡[�[×Ñõ#cðT  $ØØ ØØ"Ø!Ø#Ø26Ø"Øñ2Ø
‡{�{×Ñð2àð2ð 
ð2ð �e‰_ð	2ð
 ð2ð �S‰Mð2ð ð2ð ð2ð ð2ð �$˜�)Ñð2ð �c×&Ñ&×.Ñ.Ñ/ð2ð �s‰mð2ð ð2ð 	‡[�[×Ñõ2ðp  $ØØ ØØ"Ø!Ø9=Ø#Ø26Ø"Ø%)ñAØ
‡{�{×ÑðAàðAð �e‰_ðAð ð	Að
 �S‰MðAð ðAð ðAð ðAð ˜Ÿ™×5Ñ5Ñ6ðAð �$˜�)ÑðAð �c×&Ñ&×.Ñ.Ñ/ðAð �s‰mðAð ˜c‘]ðAð 	‡[�[×ÑõAðH3:Ø—‘×3Ñ3ð3:à
×Ñ×Ñð3:ð �;‰;×Ñð3:ð �S‰Mð	3:ð
 �e‰_ð3:ð ð3:ð 	ô3:ðr ,0ØØ#Ø $Ø ØØŸ™Ø26ñ3Øð3à—‘×3Ñ3ð3ð �C—K‘K×'Ñ'Ñ(ð3ð ð	3ð
 �e‰_ð3ð �u‰oð3ð �S‰Mð3ð ð3ð ð3ð �c×&Ñ&×.Ñ.Ñ/ð3ð 
ö3r    