+
    niI~                        R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
HtHtHtHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'  ^ RI(t(]&'       d   ^ RI,t,]PZ                  P\                  t/R t0R(R lt1R(R R llt2R)R
 R llt3R*R R llt4R+R R llt5R(R R llt6R t7R,R R llt8R-R R llt9R.R R llt:R R lt;RRR^ R	R	RRRRRR]Px                  ]Pz                  3R R llt>R/R  R! llt?R0R" R# llt@R$ R% ltAR^5RRR^ ]!P                  R3R& R' lltCR#   ]) d
    ^ RI*H+t(  Li ; i)1zTalk to a DNS server.N)AnyDictOptionalTuplecast)NullContext)BadResponseHTTPVersionNoDOHNoDOQUDPMode_check_status_compute_times_matches_destination
_remaininghave_dohmake_ssl_contextc                     V'       g	   V'       dJ   VfC   V \         P                  8X  d   RpW3# V \         P                  8X  d   RpW3# \        RV  24      hW3# R # )Nz0.0.0.0z::zunknown address family )socketAF_INETAF_INET6NotImplementedError)afaddressports   &&&hC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO\maestro-backend\venv\Lib\site-packages\dns/asyncquery.py_source_tupler   B   sf     $?V^^##
 	 v&  *,CB4*HII    c                 l    V e0   V'       g   \         P                   ! 4       p\        W,
          ^ 4      # R # N)timemax)
expirationnows   &&r   _timeoutr$   R   s)    ))+C:#Q''r   c                    V ^8  d   QhR\         P                  P                  R\         P                  P                  \
        ,          R\        R\        R,          R\        \        \        3,          /# )   sockwhatdestinationr"   Nreturn)
dnsasyncbackendDatagramSocketmessageMessagebytesr   floatr   int)formats   "r   __annotate__r4   [   sb      



)
)
++


%  	
 3:r   c                   "   \        V\        P                  P                  4      '       d   VP	                  4       p\
        P
                  ! 4       pV P                  W\        W44      4      G Rj  xL
 pWT3#  L5i)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)
isinstancer+   r.   r/   to_wirer    sendtor$   )r'   r(   r)   r"   	sent_timens   &&&&  r   send_udpr;   [   sZ     . $++,,||~		Ikk$Xj-LMMA> 	Ns   A.A:0A81A:Fc                   V ^8  d   QhR\         P                  P                  R\        R,          R\        R,          R\
        R\
        R\        \         P                  P                  \         P                  P                  3,          R,          R\        R,          R	\
        R
\
        R\
        R\         P                  P                  R,          R\        /# )r&   r'   r)   Nr"   ignore_unexpectedone_rr_per_rrsetkeyringrequest_macignore_trailingraise_on_truncationignore_errorsqueryr*   )r+   r,   r-   r   r1   boolr   nameNametsigKeyr0   r.   r/   )r3   s   "r   r4   r4   y   s     :0 :0



)
):0t:0 :0 	:0
 :0 #((---.5:0 :0 :0 :0 :0 ;;%:0 	:0r   c           	     R  "   Rp V P                  R\        V4      4      G Rj  xL
 w  r\        V P                  WV4      '       g   KE  \        P                  ! 4       p \
        P                  P                  VVVVVVR7      pT	'       d   T
e   T
P                  T4      '       g   K  YT3#  L  \
        P                  P                   d?   pT	'       d1   T
e-   T
P                  TP                  4       4      '       g    Rp?EK  h Rp?i\         d    T	'       d    EK  h i ; i5i)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)r?   r@   r>   rA   rB   )recvfromr$   r   familyr    r+   r.   	from_wire	Truncatedis_response	Exception)r'   r)   r"   r=   r>   r?   r@   rA   rB   rC   rD   wirefrom_addressreceived_timeres   &&&&&&&&&&&     r   receive_udprW   y   s    0 D
%)]]5(::N%OO#KK4E
 
 			%%'!1 /$7 & A. U.u7H7H7K7K,//A  P {{$$ 		 %))!))+66 			s]   "D'B.:D' %B0 D'D'(D'0D$0D D'DD$D$D'"D$$D'c                   V ^8  d   QhR\         P                  P                  R\        R\        R,          R\
        R\        R,          R\
        R\        R	\        R
\        R\        R\         P                  P                  R,          R\         P                  P                  R,          R\        R\         P                  P                  /# )r&   qwheretimeoutNr   sourcesource_portr=   r>   rA   rB   r'   backendrC   r*   )
r+   r.   r/   strr1   r2   rE   r,   r-   Backend)r3   s   "r   r4   r4      s     ? ?
{{?? T\? 	?
 $J? ? ? ? ? ? 


)
)D
0? %%,? ? 	[[?r   c                N  "   V P                  4       p\        V4      w  r\        P                  P	                  V4      p\        W3V4      pV
'       d   \        V
4      pMyV'       g   \        P                  P                  4       p\        VWE4      pVP                  4       '       d   W3pMRpVP                  V\        P                  ^ VV4      G Rj  xL
 pT;_uu_4       GRj  xL
 p\        VVVV4      G Rj  xL
  \        VVVVVV P                   V P"                  VV	VV 4      G Rj  xL
 w  pppVV,
          Vn        V'       g   V P'                  V4      '       g   \(        hTuuRRR4      GRj  xL
  #  L L L LU L  + GRj  xL 
 '       g   i     R# ; i5i)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.
N)r7   r   r+   inetaf_for_address_lltupler   r,   get_default_backendr   datagram_connection_requiredmake_socketr   
SOCK_DGRAMr;   rW   r?   macr    rP   r   )rY   rZ   r[   r   r\   r]   r=   r>   rA   rB   r'   r^   rC   rR   
begin_timer"   r   r)   cmstupledtuplesrU   rT   _s   &&&&&&&&&&&&&            r   udprp      sX    8 99;D-g6Z		 	 	'BE="-K5@5F&&::<Gr67//11]FF&&r6+<+<aPPrrQq$Z888&1IIEE'
 !
M1 + q!1!1) rr Q8!
 rrrs   A%F%(A,F%E>F%'F (F%+F=F>0F.F/FF$F+F%8F9F% F%FFF%F"	F
F"	F"		F%c                   V ^8  d   QhR\         P                  P                  R\        R\        R,          R\
        R\        R,          R\
        R\        R	\        R
\        R\         P                  P                  R,          R\         P                  P                  R,          R\         P                  P                  R,          R\        R\        \         P                  P                  \        3,          /# )r&   rY   rZ   r[   Nr   r\   r]   r=   r>   rA   udp_socktcp_sockr^   rC   r*   )r+   r.   r/   r_   r1   r2   rE   r,   r-   StreamSocketr`   r   )r3   s   "r   r4   r4      s     A  A 
{{A A  T\A  	A 
 $JA  A  A  A  A  --4A  ++d2A  %%,A  A  3;;$%A r   c                   "    \        V VVVVVVVVRV	VV4      G Rj  xL
 pVR3#  L  \        P                  P                   d%    \	        T TTTTTTTT
T4
      G Rj  xL 
 pTR3u # i ; i5i)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)rp   r+   r.   rO   tcp)rY   rZ   r[   r   r\   r]   r=   r>   rA   rr   rs   r^   rC   responses   &&&&&&&&&&&&& r   udp_with_fallbackrx      s     F 
 
 %  
  ;;    
 
 
 $ s=   A/) ') A/) 6A,A" 	A,)A/+A,,A/c          
          V ^8  d   QhR\         P                  P                  R\         P                  P                  \
        ,          R\        R,          R\        \        \        3,          /# )r&   r'   r(   r"   Nr*   )	r+   r,   rt   r.   r/   r0   r1   r   r2   )r3   s   "r   r4   r4   <  sX     $ $



'
'$
++


%$ $ 3:	$r   c                V  "   \        V\        P                  P                  4      '       d   VP	                  RR7      pM"\        V4      P                  ^R4      V,           p\        P                  ! 4       pV P                  V\        W$4      4      G Rj  xL
  \        V4      V3#  L5i)zSend 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)
r6   r+   r.   r/   r7   lento_bytesr    sendallr$   )r'   r(   r"   tcpmsgr9   s   &&&  r   send_tcpr   <  s      $++,,T2
 T##Au-4		I
,,vx
>
???K## @s   BB)B'B)c                   "   RpV^ 8  dR   V P                  V\        V4      4      G Rj  xL
 pVR8X  d   \        R4      hV\        V4      ,
          pW4,           pKX  V#  L45i)ztRead the specified number of bytes from stream.  Keep trying until we
either get the desired amount, or we hit EOF.
r   NEOF)recvr$   EOFErrorr}   )r'   countr"   rn   r:   s   &&&  r   _read_exactlyr   U  sZ      	A
!)))E8J#78885/!AEH 9s   (A!A5A!c                z   V ^8  d   QhR\         P                  P                  R\        R,          R\        R\
        \         P                  P                  \         P                  P                  3,          R,          R\        R,          R\        R\        \         P                  P                  \        3,          /# )	r&   r'   r"   Nr>   r?   r@   rA   r*   )r+   r,   rt   r1   rE   r   rF   rG   rH   rI   r0   r   r.   r/   )r3   s   "r   r4   r4   c  s      



'
'  #((---.5	
   3;;%&r   c                  "   \        V ^V4      G Rj  xL
 p\        P                  ! RV4      w  p\        WV4      G Rj  xL
 p\        P                  ! 4       p	\        P
                  P                  VVVVVR7      p
W3#  Lm LB5i)zRead 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.
N!Hr?   r@   r>   rA   )r   structunpackr    r+   r.   rN   )r'   r"   r>   r?   r@   rA   ldatalrR   rT   rU   s   &&&&&&     r   receive_tcpr   c  s        a44E==u%DQt
33DIIKM)' 	 	A  53s"   BB,B BABBc                t   V ^8  d   QhR\         P                  P                  R\        R\        R,          R\
        R\        R,          R\
        R\        R	\        R
\         P                  P                  R,          R\         P                  P                  R,          R\         P                  P                  /# )r&   rY   rZ   r[   Nr   r\   r]   r>   rA   r'   r^   r*   )
r+   r.   r/   r_   r1   r2   rE   r,   rt   r`   )r3   s   "r   r4   r4     s     : :
{{:: T\: 	:
 $J: : : : 


'
'$
.: %%,: 	[[:r   c
           
       "   V P                  4       p
\        V4      w  rV'       d%   VP                  4       G Rj  xL
  \        V4      pM\        P
                  P                  V4      p\        WV4      pW3pV	'       g   \        P                  P                  4       p	V	P                  V\        P                  ^ VVV4      G Rj  xL
 pT;_uu_4       GRj  xL
 p\        VW4      G Rj  xL
  \        VVVV P                  V P                   V4      G Rj  xL
 w  ppVV,
          Vn        V P%                  V4      '       g   \&        hTuuRRR4      GRj  xL
  #  EL& L L Ly LO L  + GRj  xL 
 '       g   i     R# ; i5i)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.
N)r7   r   getpeernamer   r+   rb   rc   r   r,   re   rg   r   SOCK_STREAMr   r   r?   ri   r    rP   r   )rY   rZ   r[   r   r\   r]   r>   rA   r'   r^   rR   rj   r"   rk   r   rl   rm   rn   rU   rT   s   &&&&&&&&&&          r   rv   rv     sB    4 99;D-g6Z    5@5F XX$$U+r;7&&::<G&&""Avvw
 
 rrQq$+++#.IIEE$
 
M +}}Q rr 	!
 +
 rrrs   9FE!BFE$FE&FE..E(/+E.E*+E.E.FE,F$F&F(E.*E.,F.F	4E75
F	 F		FTc                   V ^8  d   QhR\         P                  P                  R\        R\        R,          R\
        R\        R,          R\
        R\        R	\        R
\         P                  P                  R,          R\         P                  P                  R,          R\        P                  R,          R\        R,          R\        \        ,          R\         P                  P                  /# )r&   rY   rZ   r[   Nr   r\   r]   r>   rA   r'   r^   ssl_contextserver_hostnameverifyr*   )r+   r.   r/   r_   r1   r2   rE   r,   rt   r`   ssl
SSLContext)r3   s   "r   r4   r4     s     C C
{{CC T\C 	C
 $JC C C C 


'
'$
.C %%,C $&C 4ZC 3JC 	[[Cr   c                  "   \        V4      w  rV'       d   \        V4      pMV
f   \        WRJR.4      p
\        P                  P                  V4      p\        VWE4      pW3pV	'       g   \        P                  P                  4       p	V	P                  V\        P                  ^ VVVV
V4      G Rj  xL
 pT;_uu_4       GRj  xL
 p\        V4      p\        V VVVVVVVVV	4
      G Rj  xL
 p\        P                  ! 4       pVV,
          Vn        TuuRRR4      GRj  xL
  #  Lu Ld L? L  + GRj  xL 
 '       g   i     R# ; i5i)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.
Ndot)r   r   r   r+   rb   rc   r   r,   re   rg   r   r   r$   rv   r    )rY   rZ   r[   r   r\   r]   r>   rA   r'   r^   r   r   r   rj   r"   rk   r   rl   rm   rn   rw   end_times   &&&&&&&&&&&&&         r   tlsr     s.    <  .g6Z5@5F*6$3NQVPWXKXX$$U+r67&&::<G&&	
 	
 rrQ:&
 
 99; :-! rr	
 
 rrrsr   B2E4D*5ED,E#D2.D./(D2E$D0%E,E.D20E2E	8D;9
E	E		Ec                6    V ^8  d   QhR\         R,          RR/# )r&   resolverdns.asyncresolver.Resolverr*   )r   )r3   s   "r   r4   r4     s"      34!r   c                 J    V f   ^ R I pVP                  P                  4       p V # r   )dns.asyncresolverasyncresolverResolver)r   r+   s   & r   _maybe_get_resolverr     s&      $$--/Or     z
/dns-queryc          "         V ^8  d   QhR\         P                  P                  R\        R\        R,          R\
        R\        R,          R\
        R\        R	\        R
\        R,          R\        R\        R\        \        ,          \        P                  ,          R\        R,          R\        R,          R\
        R\        R\         P                  P                  /# )r&   rY   rZ   r[   Nr   r\   r]   r>   rA   clientz.httpx.AsyncClient|dns.quic.AsyncQuicConnectionpathpostr   bootstrap_addressr   r   rM   http_versionr*   )r+   r.   r/   r_   r1   r2   rE   r   r   r   r	   )r3   s   "r   r4   r4     s     m m
{{mm T\m 	m
 $Jm m m m EFm m m 3J'm Tzm 34m m  !m" 	[[#mr   c                
  "    \         P                  P                  V4      pTpVee   \         P                  P	                  V4      '       d@   V\
        P                  8X  d   RV RV V	 2pMV\
        P                  8X  d   RV RV V	 2p/ pVf   \        P                  P                  V4      pVP                  f   \        R4      h\         P                  P	                  VP                  4      '       d   VP                  pVP                  VR&   VP                  e   VP                  pV\        P                  8X  g#   V\        P                  8X  Ed	   \         '       g   Vfm   \#        V4      pXP                  f   Q hVP%                  VP                  V4      G Rj  xL
 p\&        P(                  ! \+        VP-                  4       4      4      pV'       d6   \/        V\         P0                  P2                  4      '       g   \        R4      hVe-   \/        V\         P0                  P2                  4      '       g   Q h\5        V VVVVVVVVVV
VR	7      G Rj  xL
 # \         '       g   \6        hV'       d,   \/        V\8        P:                  4      '       g   \        R
4      hV P=                  4       pRR/pV\        P>                  \        P                  39   pV\        P@                  \        P                  39   p\         PB                  PE                  4       pVf   Rp^ pMTpTpV'       d   \G        V4      pM8VPI                  4       ! VVVVVVVVR7      p\8        P:                  ! VVVVR7      pT;_uu_4       GRj  xL
 pV
'       dV   VPK                  RRR\M        \O        V4      4      /4       VPQ                  VPS                  VVVVR7      V4      G Rj  xL
 pMd\T        PV                  ! V4      PY                  R4      pVP[                  4       p VPQ                  VP]                  VVRV /VR7      V4      G Rj  xL
 pRRR4      GRj  xL
  XP^                  ^8  g   VP^                  R8  d)   \        V RVP^                   RVP`                  : 24      h\         Pb                  Pe                  VP`                  V Pf                  V Ph                  VVR7      p!VPj                  Pm                  4       V!n7        V Pq                  V!4      '       g   \r        hV!#   \         d    Rp ELi ; i EL EL EL ELa L L  + GRj  xL 
 '       g   i     EL; i5i)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_hostnamez8client parameter must be a dns.quic.AsyncQuicConnection.)r   r   
connectionz-client parameter must be an httpx.AsyncClientacceptzapplication/dns-message)local_addresshttp1http2r   
local_portr   r   rM   )r   r   r   	transportzcontent-typezcontent-length)headerscontent
extensions   =r+   )r   paramsr   i+  z responded with status code z
Response body: r   ):r+   rb   rc   
ValueError
is_addressr   r   r   urllibparseurlparsehostnamer   r	   H3DEFAULTr   r   resolve_namerandomchoicelist	addressesr6   quicAsyncQuicConnection_http3r
   httpxAsyncClientr7   H1H2r,   re   r   get_transport_classupdater_   r}   wait_forr   base64urlsafe_b64encoderstripdecodegetstatus_coder   r.   rN   r?   r@   elapsedtotal_secondsr    rP   r   )"rY   rZ   r[   r   r\   r]   r>   rA   r   r   r   r   r   r   rM   r   r   urlr   parsedanswersrR   r   h1h2r^   r   r   rk   r   
the_clientrw   twirerU   s"   &&&&&&&&&&&&&&&&                  r   httpsr     s    <XX$$U+ C	~#((--e44UG1TF4&1C6??"eWBtfTF3CJ &&s+??"12288v// &)/J~&;;";;D{~~%+++HH$*84H??...$11 G !'d73D3D3F.G H*CHH00
 
 WXX~FCHH4P4P!Q!QQQ
 
 	
 8j):):;;HII 99;D23G	+..+*=*=>	>B	+..+*=*=>	>B224G~
 
5@5H//1'!/	
	 Bv
 rrZ NN"$=$c#d)n %--# )	     H ++D188>DKKME$--#!5>)	    H- rD c!X%9%9C%?g1(2F2F1G 0 035
 	
 			MM)' 	 	A ++-AF==H[  8
n - rrrs   U'T& *U'B+U':A+U'&>U'$T:%8U'A?U'T=U'.U'<B7U'4AU'U U'
AU
"U#A$U
UU
U'UCU'U'&T73U'6T77U'=U' U'U
U
U'
U$	U
U$	U$		U'c                   V ^8  d   QhR\         P                  P                  R\        R\        R\        R,          R\
        R\        R,          R\
        R	\        R
\        R\        \        ,          \        P                  ,          R\         P                  P                  R,          R\        R\         P                  P                  R,          R\         P                  P                  /# )r&   rY   rZ   r   r[   Nr   r\   r]   r>   rA   r   r^   r   r   r*   )r+   r.   r/   r_   r1   r2   rE   r   r   r,   r`   r   r   )r3   s   "r   r4   r4     s     = =
{{== 
= T\	=
 = $J= = = = 3J'= %%,= = ,,t3= 	[[=r   c                   "   \         P                  P                  '       g   \        R 4      h\        P
                  P                  V4      pVP                  pVf   Q hVP                  e   VP                  p^ V n	        V P                  4       pV'       d6   \         P                  P                  p\         P                  P                  pM"\         P                  P                  V
4      w  ppV! 4       ;_uu_4       GRj  xL
 pV! VWRR7      ;_uu_4       GRj  xL
 pV'       d   TpMVP                  WWV4      p\        V4      w  ppVP                  V4      G Rj  xL
 pT;_uu_4       GRj  xL
  VP!                  W/V4       VP#                  \%        V4      4      G Rj  xL
 p\'        VP)                  4       W4       RRR4      GRj  xL
  \*        P*                  ! 4       pRRR4      GRj  xL
  \         P,                  P/                  VV P0                  V P2                  VVR7      pRRR4      GRj  xL
  \5        XX,
          R4      Xn        V P7                  V4      '       g   \8        hV#  ELz ELa EL  EL L L  + GRj  xL 
 '       g   i     L; i L  + GRj  xL 
 '       g   i     L; i L  + GRj  xL 
 '       g   i     L; i5i)z DNS-over-HTTP3 is not available.NT)verify_modeserver_nameh3r           )r+   r   	have_quicr
   r   r   r   r   r   idr7   null_factoryfactories_for_backendconnectr   make_streamsend_h3receiver   r   r   r    r.   rN   r?   r@   r!   rP   r   )rY   rZ   r   r[   r   r\   r]   r>   rA   r   r^   r   r   	url_partsr   rR   cfactorymfactorycontextthe_managerthe_connectionstartr"   streamfinishrU   s   &&&&&&&&&&&&&             r   r   r     s     88677%%c*I!!H~~!~~AD99;D88((88(("xx==gF8zzzW$
 
 
!+!,!4!4" #1"9UJ)55g>>Fvvs$/#^^Jz,BCCfnn.<	 v
 YY[F!
 
" KK!!II-+ " 
% z2 %%AF==H9 
 ? D vvv
 
 
 
 zzzs  BK$A*K$I<K$KI?K"A J*	"J#J*	5J6J*	90J)J*JJ*	J
J*	-K8J(9<K5K$ K<K$?KJ*	J*	J
J*	J%J
J%J% J*	(K*K0J31
K<K>KK$K!	K
K!	K!	K$c                   V ^8  d   QhR\         P                  P                  R\        R\        R,          R\
        R\        R,          R\
        R\        R	\        R
\         P                  P                  R,          R\        \        ,          R\         P                  P                  R,          R\        R,          R\        R,          R\         P                  P                  /# )r&   rY   rZ   r[   Nr   r\   r]   r>   rA   r   r   r^   r   r   r*   )r+   r.   r/   r_   r1   r2   rE   r   r   r,   r`   )r3   s   "r   r4   r4     s     C C
{{CC T\C 	C
 $JC C C C ,,t3C 3JC %%,C DjC 4ZC 	[[Cr   c                $  "   \         P                  P                  '       g   \        R4      hVe   Vf   Tp^ V n        V P                  4       pV'       d8   \         P                  P                  p\         P                  P                  pTpM!\         P                  P                  V
4      w  rV! 4       ;_uu_4       GRj  xL
 pV! VV	VR7      ;_uu_4       GRj  xL
 pV'       g   VP                  WWE4      p\        V4      w  ppXP                  V4      G Rj  xL
 pT;_uu_4       GRj  xL
  VP                  VR4      G Rj  xL
  VP                  \        V4      4      G Rj  xL
 pRRR4      GRj  xL
  \        P                  ! 4       pRRR4      GRj  xL
  \         P                  P!                  VV P"                  V P$                  VVR7      pRRR4      GRj  xL
  \'        XX,
          R4      Xn        V P)                  V4      '       g   \*        hV#  ELe ELL EL L L L L  + GRj  xL 
 '       g   i     L; i L  + GRj  xL 
 '       g   i     L; i L  + GRj  xL 
 '       g   i     L; i5i)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.N)r   r   Tr   r   )r+   r   r   r   r   r7   r   r   r   r   r   sendr   r   r    r.   rN   r?   r@   r!   rP   r   )rY   rZ   r[   r   r\   r]   r>   rA   r   r   r^   r   r   rR   r   r   r   r   r   r   r"   r   r   rU   s   &&&&&&&&&&&&&           r   r   r     s    2 88566"x'7"AD99;D88((88((#"xx==gFzzzW'
 
 
 !,!4!4" #1"9UJ)55g>>Fvvkk$---#^^Jz,BCC v YY[F
 
 KK!!II-+ " 
! z. %%AF==H5 
 ?-C vvv
 
 
 
 zzzs'  AJA+JH'JI4H*I4"=I	H- I	2H03I	6H8H2!H8.H4/H83I	>H6?I	I4#I$<I4 J+I2,<J*I4-I	0I	2H84H86I	8I>I?
I
II	I4I/I
I/(I/*I42J4J	:I=;
J	J	Jc                    V ^8  d   QhR\         P                  P                  R\         P                  P                  R\         P
                  P                  R\        R,          R\        R,          R\        R\        /# )	r&   txn_managerrn   rD   serialNr[   r"   r*   )
r+   transactionTransactionManagerr,   Socketr.   r/   r2   r1   r   )r3   s   "r   r4   r4   H  sv     4: 4:334:
4: ;;4: $J	4:
 T\4: 4: 	4:r   c                 "   VP                   ^ ,          P                  pV\        P                  P                  8H  pV P                  4       pVP                  4       p	VP                  \        P                  8H  p
V
'       dJ   \        \        P                  P                  V4      pVP                  V	R\        V4      4      G Rj  xL
  Md\        \        P                  P                  V4      p\         P"                  ! R\%        V	4      4      V	,           pVP'                  W4      G Rj  xL
  \        P(                  P+                  WW:4      ;_uu_ 4       pRpRpRpV'       g   \-        V4      w  ppVe   Ve
   VV8  d   TpV
'       d*   \        V4      pXP/                  RV4      G Rj  xL
 w  ppMC\1        X^V4      G Rj  xL
 p\         P2                  ! RV4      w  p\1        VVV4      G Rj  xL
 p\        P4                  P7                  VVP8                  VP:                  RVVV
'       * VR7      pVP=                  V4      pV5x  VP>                  pK  VP8                  '       d6   Ve2   VP@                  '       g    \        PB                  PE                  R4      hRRR4       R#  EL EL EL L L  + '       g   i     R# ; i5i)z'Given a socket, does the zone transfer.Nr   FrK   T)r?   r@   xfrorigintsig_ctxmultir>   zmissing TSIG)#questionrdtyper+   	rdatatypeIXFRfrom_wire_originr7   typer   rh   r   r,   r-   r8   r$   rt   r   packr}   r   r  Inboundr   rL   r   r   r.   rN   r?   ri   process_messager  had_tsig	exception	FormError)r   rn   rD   r   r[   r"   r
  is_ixfrr  rR   is_udprr   rs   r   inbounddoner  rU   ro   mexpirationrwirer   r   s   &&&&&&                 r   _inbound_xfrr  H  s0     ^^A%%F***G))+F==?DVVv(((F((77;oodD(:*>???((55q9T3t9-4v222	f	=	=(,-g6Q"&;+C(";/#+#4#4UG#DD
+HaEE}}T51+HaEE%%!II!!z!( & 	A **1-DGzzH===Q]1:::--)).99? 
>	= 	@ 	3 EEE! 
>	=	=s   CKJ.A$K*J1+,KJ;&&J; J;-J4.J;J7-J;4J95A9J;/J;J;$K1K4J;7J;9J;;K		Kc                R   V ^8  d   QhR\         R\        P                  P                  R\        P                  P
                  R,          R\        R\        R,          R\        R,          R\         R,          R	\        R
\        R\        P                  P                  R,          RR/# )r&   rZ   r   rD   Nr   r[   lifetimer\   r]   udp_moder^   r*   )r_   r+   r  r  r.   r/   r2   r1   r   r,   r`   )r3   s   "r   r4   r4     s     : ::33: ;;%: 	:
 T\: dl: $J: : : %%,: 
:r   c
           
       "   Vf#   \         P                  P                  V4      w  r*M\         P                  P                  V4      p
\         P                  P                  V 4      p\        WV4      pW3pV	'       g   \         P                  P                  4       p	\        V4      w  rVP                  ^ ,          P                  \         P                  P                  8X  dz   V\        P                  8w  de   V	P!                  V\"        P$                  ^ W\'        V4      4      G Rj  xL
 pT;_uu_4       GRj  xL
   \)        VVVV
VV4        Rj  xL
  pK  V	P!                  V\"        P.                  ^ W\'        V4      4      G Rj  xL
 pT;_uu_4       GRj  xL
  \)        VVW*WO4        Rj  xL
  pK   L L LlDm RRR4      GRj  xL 
  R#   \         P                  P*                   d    T\        P,                  8X  d   h  Mi ; iRRR4      GRj  xL 
  K    + GRj  xL 
 '       g   i     L; i L L LDRRR4      GRj  xL 
  R#   + GRj  xL 
 '       g   i     R# ; i5i)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.
N)r+   r  
make_queryextract_serial_from_queryrb   rc   r   r,   re   r   r	  r
  r  r  r   NEVERrg   r   rh   r$   r  UseTCPONLYr   )rZ   r   rD   r   r[   r  r\   r]   r  r^   r   r   rl   rm   ro   r"   rn   s   &&&&&&&&&&       r   inbound_xfrr%    s    * }'',,[92259		 	 	'B2{3F]F""668$X.OQ~~a3==#5#55(gmm:S%%!!1fhz6J
 
 11+   !  !!
F68J3G 	A qq#E7
 	 	! 5
     11 77>> w||+ , 11111 	 	 
 qqqqqs2  D%I9'F=(I9:F?;I9>H& GGG
GG/I9II9II9"I1I5I
6I9I=I9?I9GGI9GI95HH&HH&I9H!I9&H?	,H/-
H?	8H?	:	I9I9II	I9II9I6	"I%#
I6	.I6	0	I9r   )
NNFFNr   FFFN)N5   N    FFFFNNF)Nr&  Nr'  FFFNNNF)NFNr   F)Nr&  Nr'  FFNN)NU  Nr'  FFNNNNT)
Nr   Nr'  FFTNTN)Nr(  Nr'  FFNTNNN)D__doc__r   
contextlibr   r   r   r    urllib.parser   typingr   r   r   r   r   dns.asyncbackendr+   dns.exceptiondns.inetdns.messagedns.namedns.quicdns.rdatatypedns.transactiondns.tsigdns.xfrdns._asyncbackendr   	dns.queryr   r	   r
   r   r   r   r   r   r   r   r   r   ImportErrordns._no_ssl_no_sslr   rb   low_level_address_tuplerd   r   r$   r;   rW   rp   rx   r   r   r   rv   r   r   	AF_UNSPECr   r   r   r   r  r"  r%   r   r   <module>r?     sM  $         3 3           )     88++ <:0z?DA H$2<:zCL" !"!IM*.$(7;"" + 3 3!m`=@CL4:t )- !/3: :O  s   6E	 	EE