ó
    ÌÅLgêÛ  ã            #       ó  • 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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 rSSK!rSSK"rS r#S r$\RJ                  RM                  S5      r'\'(       aU  SSK(r)SSK*r*\)RV                  r,\)RZ                  R\                  R^                  r0 " S S\,5      r1 " S	 S
\*Rd                  5      r3O
 " S S
5      r3\'r4 SSK5r5\	R                  r7 " S S\Rp                  Rr                  5      r: " S S\Rp                  Rv                  5      r< " S S\Rp                  Rr                  5      r= " S S\Rp                  Rr                  5      r>\R~                  R€                  r@S rAS rBS rCS rDS rES rF SrS jrGSsS jrHS\S    S!S 4S" jrI " S# S$\R”                  5      rKSS%SSS&S&SS'SSSS\	R˜                  \KRš                  4S(\Rœ                  Rž                  S)\PS*\\Q   S+\RS,\\P   S-\RS.\SS/\SS0\\   S1\PS2\SS3\\P   S4\\S\P4   S\S    S5\RS6\KS!\Rœ                  Rž                  4"S7 jjrTS8\Rª                  R¬                  S9\WS!\W4S: jrXS8\Rª                  R¬                  S;\PS<\WS!S4S= jrY         StS(\Rœ                  Rž                  S)\PS>\PS*\\Q   S+\RS,\\P   S-\RS.\SS/\SS4\\S\P4   S?\\P   S2\SS!\Rœ                  Rž                  4S@ jjrZSA r[SB r\ SuSC\SD\\Rœ                  Rž                  \W4   SE\SF\\Q   S!\\R\Q4   4
SG jjr]          SvSC\SE\\   SF\\Q   SH\SS.\SSI\\\R¼                  R¾                  \RÀ                  RÂ                  4      SJ\\W   S/\SSK\SSL\SSM\\Rœ                  Rž                     S!\4SN jjrb          SwS(\Rœ                  Rž                  S)\PS*\\Q   S+\RS,\\P   S-\RSH\SS.\SS/\SSK\SSC\\   SL\SS!\Rœ                  Rž                  4SP jjrc          SxS(\Rœ                  Rž                  S)\PS*\\Q   S+\RS,\\P   S-\RSH\SS.\SS/\SSQ\\   SR\\   SL\SS!\\Rœ                  Rž                  \S4   4SS jjrdST reSU rf SuSC\SD\\Rœ                  Rž                  \W4   SF\\Q   S!\\R\Q4   4SV jjrg     SySC\SF\\Q   S.\SSI\\\R¼                  R¾                  \RÀ                  RÂ                  4      SJ\\W   S/\SS!\\Rœ                  Rž                  \Q4   4SW jjrhSX ri       SzS(\Rœ                  Rž                  S)\PS*\\Q   S+\RS,\\P   S-\RS.\SS/\SSC\\   S!\Rœ                  Rž                  4SY jjrjSZ rkS[\\P   S4\\S\P4   S!\5RØ                  4S\ jrm          S{S(\Rœ                  Rž                  S)\PS*\\Q   S+\RS,\\P   S-\RS.\SS/\SSC\\5RÜ                     S]\\5RØ                     S[\\P   S4\\S\P4   S!\Rœ                  Rž                  4S^ jjro          S|S(\Rœ                  Rž                  S)\PS*\\Q   S+\RS,\\P   S-\RS.\SS/\SS_\\Rª                  Rà                     S4\\S\P4   S?\\P   S[\\P   S!\Rœ                  Rž                  4S` jjrU " Sa Sb\R”                  5      rqSc\Rä                  Ræ                  Sd\	R                  SM\Rœ                  Rž                  Se\\R   S*\\Q   SF\QS!\4Sf jrt\Rê                  Rì                  \Rî                  Rð                  SSOSSSSSSSS&\RÀ                  Rò                  4S)\PSg\\R¼                  R¾                  \P4   Sh\\Rê                  Rô                  \P4   Si\\Rî                  Rö                  \P4   S*\\Q   S+\RSI\\\R¼                  R¾                  \RÀ                  RÂ                  4      Sj\\\R¼                  R¾                  \P4      Sk\SSl\\Q   S,\\P   S-\RSe\RSm\SSn\\R¼                  R¾                  \P4   S!\4 So jjr?SSOSSSS\qRø                  4S)\PSc\Rä                  Ræ                  SM\\Rœ                  Rž                     S+\RS*\\Q   Sl\\Q   S,\\P   S-\RSp\qS!S4Sq jjr}g! \6 a     " S S5      r5 GN~f = f)}zTalk to a DNS server.é    N)ÚAnyÚDictÚOptionalÚTupleÚUnionÚcastc                 ó~   • U c  g U [         R                   " 5       -
  nUS::  a  [        R                  R                  eU$ )Nç        )ÚtimeÚdnsÚ	exceptionÚTimeout)Ú
expirationÚtimeouts     Ú+/usr/lib/python3/dist-packages/dns/query.pyÚ
_remainingr   1   s7   € ØÑØØœ4Ÿ9š9›;Ñ&€GØ�#ƒ~Ü�m‰m×#Ñ#Ð#Ø€Nó    c                 óN   • Uc  g [        [        R                  " 5       U -   U5      $ ©N)Úminr   )r   r   s     r   Ú_expiration_for_this_attemptr   :   s#   € ØÑØÜŒt�yŠy‹{˜WÑ$ jÓ1Ð1r   Údohc                   ó@   ^ • \ rS rSrU 4S jr SS jr SS jrSrU =r$ )Ú_NetworkBackendéH   c                 óR   >• [         TU ]  5         X l        Xl        X0l        X@l        g r   )ÚsuperÚ__init__Ú_local_portÚ	_resolverÚ_bootstrap_addressÚ_family)ÚselfÚresolverÚ
local_portÚbootstrap_addressÚfamilyÚ	__class__s        €r   r   Ú_NetworkBackend.__init__I   s$   ø€ Ü‰GÑÔØ)ÔØ%ŒNØ&7Ô#Ø!�Lr   c                 ó~  • / n[        U5      u  px[        R                  R                  U5      (       a  UR	                  U5        O�U R
                  b  UR	                  U R
                  5        Og[        U5      nU R                  n	U(       a  [        R                  R                  U5      n	U R                  R                  XUS9n
U
R                  5       nU HÂ  n[        R                  R                  U5      nUc  U R                  S:w  a,  [        R                  R                  X@R                  4U5      nOS n[        U[        R                   U5      n[#        SU5      n [%        U[        R                  R                  X²4U5      U5        ['        U5      s  $    [*        R,                  e! [(         a     Mã  f = f)N)r'   Úlifetimer   g       @)Ú_compute_timesr   ÚinetÚ
is_addressÚappendr!   r   r"   Úaf_for_addressr    Úresolve_nameÚ	addressesr   Úlow_level_address_tupleÚ_make_socketÚsocketÚSOCK_STREAMr   Ú_connectÚ_CoreSyncStreamÚ	ExceptionÚhttpcoreÚConnectError)r#   ÚhostÚportr   Úlocal_addressÚsocket_optionsr2   Ú_r   r'   ÚanswersÚaddressÚafÚsourceÚsockÚattempt_expirations                   r   Úconnect_tcpÚ_NetworkBackend.connect_tcpP   sƒ  € ð ˆIÜ*¨7Ó3‰MˆAÜ�x‰x×"Ñ" 4×(Ñ(Ø× Ñ  Õ&Ø×(Ñ(Ñ4Ø× Ñ  ×!8Ñ!8Õ9ä$ ZÓ0�ØŸ™�Þ Ü ŸX™X×4Ñ4°]ÓC�FØŸ.™.×5Ñ5Ø°'ð 6ð �ð $×-Ñ-Ó/�	Û$�Ü—X‘X×,Ñ,¨WÓ5�Ø Ñ,°×0@Ñ0@ÀAÓ0EÜ ŸX™X×=Ñ=Ø&×(8Ñ(8Ð9¸2ó‘Fð "�FÜ# B¬×(:Ñ(:¸FÓC�Ü%AÀ#ÀzÓ%RÐ"ðÜØÜŸ™×8Ñ8¸'¸È"ÓMØ*ôô
 +¨4Ó0Ò0ñ! %ô& ×'Ñ'Ð'øô !ó Úðús   Å#6F.Æ.
F<Æ;F<c                 ó   • [         er   ©ÚNotImplementedError)r#   Úpathr   r?   s       r   Úconnect_unix_socketÚ#_NetworkBackend.connect_unix_socketw   s
   € ô &Ð%r   )r!   r"   r   r    r   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   rG   rM   Ú__static_attributes__Ú__classcell__©r(   s   @r   r   r   H   s$   ø† õ	"ð FJô%	(ðP 15÷	&ò 	&r   r   c                   óJ   ^ • \ rS rSrSSS\R
                  S.U 4S jjrSrU =r$ )Ú_HTTPTransporté|   r   N)r%   r&   r$   r'   c                ó¤   >• Uc!  Uc  SS K nUR                  R                  5       n[        TU ]  " U0 UD6  [        X1X$5      U R                  l        g ©Nr   )Údns.resolverr$   ÚResolverr   r   r   Ú_poolÚ_network_backend)	r#   r%   r&   r$   r'   ÚargsÚkwargsr   r(   s	           €r   r   Ú_HTTPTransport.__init__}   sO   ø€ ð ÑÐ$5Ñ$=ã#àŸ<™<×0Ñ0Ó2�Ü‰GÒ˜dÐ- fÒ-Ü*9ØÐ&7ó+ˆD�J‰JÕ'r   © )	rO   rP   rQ   rR   r5   Ú	AF_UNSPECr   rS   rT   rU   s   @r   rW   rW   |   s!   ø† ð Ø"ØØ×#Ñ#÷	ö 	r   rW   c                   ó   • \ rS rSrS rSrg)rW   é’   c                 ó   • [         er   rJ   )r#   r<   r=   r   r>   s        r   rG   Ú_HTTPTransport.connect_tcp“   ó   € Ü%Ð%r   rb   N)rO   rP   rQ   rR   rG   rS   rb   r   r   rW   rW   ’   s   † õ	&r   c                   ó|   • \ rS rSrSr " S S\5      r " S S\5      r " S S5      r " S	 S
5      r	\
S 5       rSrg)Ússlé�   r   c                   ó   • \ rS rSrSrg)Ússl.WantReadExceptioné    rb   N©rO   rP   rQ   rR   rS   rb   r   r   ÚWantReadExceptionrm       ó   † Úr   rp   c                   ó   • \ rS rSrSrg)Ússl.WantWriteExceptioné£   rb   Nro   rb   r   r   ÚWantWriteExceptionrs   £   rq   r   ru   c                   ó   • \ rS rSrSrg)Ússl.SSLContexté¦   rb   Nro   rb   r   r   Ú
SSLContextrw   ¦   rq   r   ry   c                   ó   • \ rS rSrSrg)Ússl.SSLSocketé©   rb   Nro   rb   r   r   Ú	SSLSocketr{   ©   rq   r   r}   c                 ó   • [        S5      e)Nzno ssl support)r9   )Úclsr_   r`   s      r   Úcreate_default_contextÚssl.create_default_context¬   s   € äÐ,Ó-Ð-r   rb   N)rO   rP   rQ   rR   Ú	CERT_NONEr9   rp   ru   ry   r}   Úclassmethodr€   rS   rb   r   r   rj   rj   �   sG   † Øˆ	ô	 	ô 	ô	 ô 	÷	ñ 	÷	ñ 	ð 
ñ	.ó 
ó	.r   rj   c                   ó   • \ rS rSrSrSrg)ÚUnexpectedSourceé¶   z=A DNS query response came from an unexpected address or port.rb   N©rO   rP   rQ   rR   Ú__doc__rS   rb   r   r   r…   r…   ¶   s   † ÜGr   r…   c                   ó   • \ rS rSrSrSrg)ÚBadResponseéº   z<A DNS query response does not respond to the question asked.rb   Nr‡   rb   r   r   rŠ   rŠ   º   s   † ÜFr   rŠ   c                   ó   • \ rS rSrSrSrg)ÚNoDOHé¾   zIDNS over HTTPS (DOH) was requested but the httpx module is not
available.rb   Nr‡   rb   r   r   r�   r�   ¾   ó   † ôr   r�   c                   ó   • \ rS rSrSrSrg)ÚNoDOQéÃ   zJDNS over QUIC (DOQ) was requested but the aioquic module is not
available.rb   Nr‡   rb   r   r   r‘   r‘   Ã   r�   r   r‘   c                 óF   • [         R                   " 5       nU c  US 4$ XU -   4$ r   )r   )r   Únows     r   r,   r,   Ì   s)   € Ü
�)Š)‹+€CØ�Ø�Tˆ{Ðà˜7‘]Ð#Ð#r   c                 ó  • U(       a4  [        U [        R                  5      (       a  U R                  5       S:”  a  g[        R
                  " 5       nSnU(       a  U[        R                  -  nU(       a  U[        R                  -  nU(       a  UR                  X5        Uc  S nO8U[        R                  " 5       -
  nUS::  a  [        R                  R                  eUR                  U5      (       d  [        R                  R                  eg )Nr   Tr
   )Ú
isinstancerj   r}   ÚpendingÚ	selectorsÚDefaultSelectorÚ
EVENT_READÚEVENT_WRITEÚregisterr   r   r   r   Úselect)ÚfdÚreadableÚwritabler@   r   ÚselÚeventsr   s           r   Ú	_wait_forr£   Ô   sÅ   € ö ”J˜r¤3§=¡=×1Ñ1°b·j±j³lÀQÓ6FØÜ
×
#Ò
#Ó
%€CØ€FÞØ”)×&Ñ&Ñ&ˆÞØ”)×'Ñ'Ñ'ˆÞØ�‰�RÔ ØÑØ‰àœtŸyšy›{Ñ*ˆØ�c‹>Ü—-‘-×'Ñ'Ð'Ø�:‰:�g×ÑÜ�m‰m×#Ñ#Ð#ð r   c                 ó"   • [        U SSSU5        g )NTF©r£   ©Úsr   s     r   Ú_wait_for_readabler¨   ð   s   € Üˆa��u˜d JÕ/r   c                 ó"   • [        U SSSU5        g )NFTr¥   r¦   s     r   Ú_wait_for_writablerª   ô   s   € Üˆa�˜˜d JÕ/r   c                 ó   •  [         R                  R                  XS   5      n[         R                  R                  XS   5      nX4:H  =(       a    USS  USS  :H  $ ! [         R                  R                   a     gf = f)Nr   Fé   )r   r-   Ú	inet_ptonr   ÚSyntaxError)rC   Úa1Úa2Ún1Ún2s        r   Ú_addresses_equalr³   ø   su   € ðÜ�X‰X×Ñ  q¡EÓ*ˆÜ�X‰X×Ñ  q¡EÓ*ˆð ‰8×(˜˜1˜2˜ " Q R &Ñ(Ð(øô �=‰=×$Ñ$ó Ùðús   ‚AA ÁA=Á<A=c                 óÎ   • U(       d  g[        XU5      (       d3  [        R                  R                  US   5      (       a  USS  USS  :X  a  gU(       a  g[	        SU SU 35      e)NTr   r¬   Fzgot a response from z instead of )r³   r   r-   Úis_multicastr…   )rC   Úfrom_addressÚdestinationÚignore_unexpecteds       r   Ú_matches_destinationr¹     sl   € ö ØÜ˜¨+×6Ñ6Ü�‰×Ñ˜k¨!™n×-Ñ-°,¸q¸rÐ2BÀkÐRSÐRTÀoÓ2UàÞ	ØÜ
Ø
˜|˜n¨L¸[¸MÐJóð r   Tc                 ó4  • S nS n [         R                  R                  U 5      nU nU(       a9  [         R                  R                  U5      nU(       a  Xu:w  a  [	        S5      eOUnU(       a'  U(       d    [         R                  R                  U5      nU(       a!  [         R                  R                  Xa4U5      nU(       a!  [         R                  R                  X#4U5      nXVU4$ ! [         a    U(       a  e  NÖf = f! [         a    [	        S5      ef = f)Nz5different address families for source and destinationz3source_port specified but address family is unknown)r   r-   r0   r9   Ú
ValueErrorÚ
any_for_afr3   )Úwherer=   rD   Úsource_portÚwhere_must_be_addressrC   r·   Úsafs           r   Ú_destination_and_sourcerÁ     s  € ð
 
€BØ€KðÜ�X‰X×$Ñ$ UÓ+ˆØˆö
 Ü�h‰h×%Ñ% fÓ-ˆÞà‹yÜ ØKóð ð ð ˆBÞž6ð	TÜ—X‘X×(Ñ(¨Ó,ˆFö Ü—h‘h×6Ñ6¸Ð7JÈBÓOˆÞÜ—‘×1Ñ1°6Ð2GÈÓLˆØ˜VÐ$Ð$øô? ó Þ Øñ !ðûô, ó 	TäÐRÓSÐSð	Tús   †!C) Á6D Ã)C>Ã=C>ÄDc                 óÖ   • [        X5      n UR                  S5        Ub  UR                  U5        U(       a  UR                  USUS9$ U$ ! [         a    UR                  5         e f = f)NF)Údo_handshake_on_connectÚserver_hostname)Úsocket_factoryÚsetblockingÚbindÚwrap_socketr9   Úclose)rC   ÚtyperD   Ússl_contextrÄ   r§   s         r   r4   r4   @  st   € Ü�rÓ €AðØ	�‰�eÔØÑØ�F‰F�6ŒNÞà×*Ñ*ØØ(-Ø /ð +ð ð ð ˆHøÜó Ø	�‰Œ	Øðús   �<A Á
A ÁA(r$   zdns.resolver.ResolverÚreturnc                 óH   • U c  SS K nUR                  R                  5       n U $ rZ   )r[   r$   r\   )r$   r   s     r   Ú_maybe_get_resolverrÎ   T  s$   € ð Ñãà—<‘<×(Ñ(Ó*ˆØ€Or   c                   ó4   • \ rS rSrSrSrSrSrSrSr	Sr
SrSrg)	ÚHTTPVersionib  zzWhich version of HTTP should be used?

DEFAULT will select the first version from the list [2, 1.1, 3] that
is available.
r   r¬   é   é   rb   N)rO   rP   rQ   rR   rˆ   ÚDEFAULTÚHTTP_1ÚH1ÚHTTP_2ÚH2ÚHTTP_3ÚH3rS   rb   r   r   rÐ   rÐ   b  s,   † ñð €GØ€FØ	
€BØ€FØ	
€BØ€FØ	
ƒBr   rÐ   i»  Fz
/dns-queryÚqr½   r   r=   rD   r¾   Úone_rr_per_rrsetÚignore_trailingÚsessionrL   Úpostr&   Úverifyr'   Úhttp_versionc                 ó@  • [        XXES5      u  nn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„  [         (       dy  Ucc  [#        U5      nWR                  c   eUR%                  UR                  U5      n[&        R(                  " [+        UR-                  5       5      5      n[/        U UWUUUUUUUU
S	9$ [         (       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Uc  SnSnO
US   nUS   nU(       a  [>        R@                  " U5      nO'[C        UUUUUUUUS9n[4        R6                  " UUUUS9nU nU
(       a:  URE                  S[G        [I        U5      5      S.5        URK                  WUUUUS9nOJ[L        RN                  " U5      RQ                  S5      nURS                  5       n URU                  WUUSU 0US9nSSS5        WRV                  S:  d  URV                  S:”  a'  [        U SURV                   SURX                   35      e[        RZ                  R]                  URX                  U R^                  U R`                  UUS9n!URb                  Re                  5       U!l3        U Ri                  U!5      (       d  [j        eU!$ ! , (       d  f       NÑ= f)a„  Return the response obtained after sending a query via DNS-over-HTTPS.

*q*, a ``dns.message.Message``, the query to send.

*where*, a ``str``, the nameserver IP address or the full URL. If an IP address is
given, the URL will be constructed using the following schema:
https://<IP-address>:<port>/<path>.

*timeout*, a ``float`` or ``None``, the number of seconds to wait before the query
times out. If ``None``, the default, wait forever.

*port*, a ``int``, the port to send the query to. The default is 443.

*source*, a ``str`` containing an IPv4 or IPv6 address, specifying the source
address.  The default is the wildcard address.

*source_port*, an ``int``, the port from which to send the message. The default is
0.

*one_rr_per_rrset*, a ``bool``. If ``True``, put each RR into its own RRset.

*ignore_trailing*, a ``bool``. If ``True``, ignore trailing junk at end of the
received message.

*session*, an ``httpx.Client``.  If provided, the client session to use to send the
queries.

*path*, a ``str``. If *where* is an IP address, then *path* will be used to
construct the URL to send the DNS query to.

*post*, a ``bool``. If ``True``, the default, POST method will be used.

*bootstrap_address*, a ``str``, the IP address to use to bypass resolution.

*verify*, a ``bool`` or ``str``.  If a ``True``, then TLS certificate verification
of the server is done using the default CA bundle; if ``False``, then no
verification is done; if a `str` then it specifies the path to a certificate file or
directory which will be used for verification.

*resolver*, a ``dns.resolver.Resolver`` or ``None``, the resolver to use for
resolution of hostnames in URLs.  If not specified, a new resolver with a default
configuration will be used; note this is *not* the default resolver as that resolver
might have been configured to use DoH causing a chicken-and-egg problem.  This
parameter only has an effect if the HTTP library is httpx.

*family*, an ``int``, the address family.  If socket.AF_UNSPEC (the default), both A
and AAAA records will be retrieved.

*http_version*, a ``dns.query.HTTPVersion``, indicating which HTTP version to use.

Returns a ``dns.message.Message``.
FNzhttps://Ú:z	https://[z]:zno hostname in URLÚsni_hostname)rß   rÞ   z)session parameter must be an httpx.ClientÚacceptzapplication/dns-messager   r¬   )r>   Úhttp1Úhttp2rß   r%   r&   r$   r'   )rå   ræ   rß   Ú	transport)zcontent-typezcontent-length)ÚheadersÚcontentr   Ú
extensionsó   =r   )rè   r   Úparamsrê   éÈ   é+  ú responded with status code z
Response body: ©ÚkeyringÚrequest_macrÛ   rÜ   )6rÁ   r   r-   r.   r5   ÚAF_INETÚAF_INET6ÚurllibÚparseÚurlparseÚhostnamer»   r=   rÐ   rÙ   rÓ   Úhave_dohrÎ   r1   ÚrandomÚchoiceÚlistr2   Ú_http3r�   r–   ÚhttpxÚClientÚto_wirerÕ   r×   Ú
contextlibÚnullcontextrW   ÚupdateÚstrÚlenrÞ   Úbase64Úurlsafe_b64encodeÚrstripÚdecodeÚgetÚstatus_coderé   ÚmessageÚ	from_wirerñ   rò   ÚelapsedÚtotal_secondsr   Úis_responserŠ   )"rÚ   r½   r   r=   rD   r¾   rÛ   rÜ   rÝ   rL   rÞ   r&   rß   r$   r'   rà   rC   r@   Ú
the_sourceÚurlrê   ÚparsedrA   Úwirerè   Úh1Úh2r>   r%   Úcmrç   ÚresponseÚtwireÚrs"                                     r   Úhttpsr  r  sß  € ôN 2Ø�V¨%óÑ€RˆˆJð 
�~œ#Ÿ(™(×-Ñ-¨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Ø—?‘?Ñ.Ð.Ð.Ø×+Ñ+¨F¯O©O¸VÓDˆGÜ &§¢¬d°7×3DÑ3DÓ3FÓ.GÓ HÐÜØØØØØØØØØØØñ
ð 	
÷ Š8ÜˆÞ”z '¬5¯<©<×8Ñ8ÜÐDÓEÐEà�9‰9‹;€DØÐ2Ð3€Gà	œ+Ÿ.™.¬+×*=Ñ*=Ð>Ñ	>€BØ	œ+Ÿ.™.¬+×*=Ñ*=Ð>Ñ	>€Bð ÑØˆØ‰
à" 1™ˆØ ‘]ˆ
æÜ0:×0FÒ0FÀwÓ0O‰ä"Ø'ØØØØ!Ø/ØØñ	
ˆ	ô �\Š\ ¨"°VÀyÑQˆÙ	ˆwö Ø�N‰Nà$=Ü&)¬#¨d«)£nñôð —|‘|ØØØØØ%ð $ð ‰Hô ×+Ò+¨DÓ1×8Ñ8¸Ó>ˆDØ—K‘K“MˆEØ—{‘{ØØØØ˜u�~Ø%ð #ð ˆH÷) 
ð< ×Ñ˜cÓ! X×%9Ñ%9¸CÓ%?ÜØˆgÐ1°(×2FÑ2FÐ1GØ × 0Ñ 0Ð1ð3ó
ð 	
ô 	�‰×ÑØ×ÑØ—	‘	Ø—M‘MØ)Ø'ð 	ð 	€Að ×Ñ×+Ñ+Ó-€A„FØ�=‰=˜×ÑÜÐØ€H÷[ 
�ús   Ê8BPÐ
Prè   Únamec                 óH   • U c  [         eU  H  u  p#X!:X  d  M  Us  $    [         er   )ÚKeyError)rè   r  ÚheaderÚvalues       r   Ú_find_headerr!  9  s)   € Ø�ÜˆÛ ‰ˆØ�>ØŠLñ !ô €Nr   Úpeerr  c                 ó  • [        U S5      nUc  [        S5      e[        U5      nUS:  a  [        S5      eUS:  d  US:”  a7  Sn[        U5      S:”  a   SUR	                  5       -   n[        U S	U U 35      eg ! [
         a     Nf = f)
Ns   :statuszno :status header in responser   zstatus is negativerí   rî   Ú z: rï   )r!  r®   Úintr  r	  r9   r»   )rè   r"  r  r   ÚstatusÚerrors         r   Ú_check_statusr(  B  s£   € Ü˜ *Ó-€EØ�}ÜÐ9Ó:Ð:Ü�‹Z€FØ�ƒzÜÐ.Ó/Ð/Ø�ƒ|�v “|ØˆÜˆt‹9�q‹=ðØ˜tŸ{™{›}Ñ,�ô ˜D˜6Ð!=¸f¸XÀeÀWÐMÓNÐNð $øô
 ó Ùðús   ÁA; Á;
BÂB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                  XšSS9nU   UR                  XXV5      n[        U5      u  nnUR                  U5       nUR                  X-U5        UR!                  [#        U5      5      n[%        UR'                  5       X5        S S S 5        [(        R(                  " 5       nS S S 5        [         R*                  R-                  UU R.                  U R0                  UUS9n[3        WW-
  S5      Ul        U R5                  U5      (       d  [6        eU$ ! , (       d  f       N’= f! , (       d  f       N†= f)Nz DNS-over-HTTP3 is not available.r   T)Úverify_modeÚserver_nameÚh3rð   r
   )r   ÚquicÚ	have_quicr�   rõ   rö   r÷   rø   r=   Úidr   ÚSyncQuicManagerÚconnectr,   Úmake_streamÚsend_h3Úreceiver   r(  rè   r   r  r  rñ   rò   Úmaxr  rŠ   )rÚ   r½   r  r   r=   rD   r¾   rÛ   rÜ   rß   rø   rÞ   Ú	url_partsr  ÚmanagerÚ
connectionÚstartr   ÚstreamÚfinishr  s                        r   rý   rý   S  sm  € ô �8‰8××ÜÐ6Ó7Ð7ä—‘×%Ñ% cÓ*€IØ×!Ñ!€HØ‡~�~Ñ!Ø�~‰~ˆà€A„DØ�9‰9‹;€DÜ�h‰h×&Ñ&Ø°Tð 'ð €Gò 
Ø—_‘_ U°&ÓFˆ
Ü,¨WÓ5Ñˆ�
Ø×#Ñ# GÔ,°Ø�N‰N˜3 dÔ+Ø—>‘>¤*¨ZÓ"8Ó9ˆDÜ˜&Ÿ.™.Ó*¨EÔ8÷ -ô —’“ˆ÷ 
ô 	�‰×ÑØØ—	‘	Ø—M‘MØ)Ø'ð 	ð 	€Aô �˜%‘ Ó%€A„FØ�=‰=˜×ÑÜÐØ€H÷ -Õ,ú÷ 
�ús%   Â&2F<ÃAF+ÄF<Æ+
F9	Æ5F<Æ<
G
c                 ób   •   U R                  U5      $ ! [         a    [        X5         Of = fM/  )zReads a datagram from the socket.
A Timeout exception will be raised if the operation is not completed
by the expiration time.
)ÚrecvfromÚBlockingIOErrorr¨   )rE   Úmax_sizer   s      r   Ú	_udp_recvr@  „  s7   € ð
 ð	1Ø—=‘= Ó*Ð*øÜó 	1Ü˜tÖ0ð	1úñ s   ƒ ”,«,c                 ó’   •   U(       a  U R                  X5      $ U R                  U5      $ ! [         a    [        X5         Of = fMG  )zšSends the specified datagram to destination over the socket.
A Timeout exception will be raised if the operation is not completed
by the expiration time.
)ÚsendtoÚsendr>  rª   )rE   Údatar·   r   s       r   Ú	_udp_sendrE  �  sH   € ð
 ð	1ÞØ—{‘{ 4Ó5Ð5à—y‘y “Ð&øÜó 	1Ü˜tÖ0ð	1úñ s   ƒ, ›, ¬AÁArE   Úwhatr·   r   c                 ó¼   • [        U[        R                  R                  5      (       a  UR	                  5       n[
        R
                  " 5       n[        XX#5      nXT4$ )aÙ  Send a DNS message to the specified UDP socket.

*sock*, a ``socket``.

*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.

Returns an ``(int, float)`` tuple of bytes sent and the sent time.
)r–   r   r  ÚMessager   r   rE  )rE   rF  r·   r   Ú	sent_timeÚns         r   Úsend_udprK  Ÿ  sE   € ô, �$œŸ™×+Ñ+×,Ñ,Ø�|‰|‹~ˆÜ—	’	“€IÜ�$˜kÓ6€AØˆ>Ðr   r¸   rñ   rò   Úraise_on_truncationÚignore_errorsÚqueryc           	      ó  • Sn [        U SU5      u  p¼[        U R                  XÁU5      (       d  M.  [        R                  " 5       n [        R
                  R                  UUUUUUS9nU	(       a  U
b  U
R                  U5      (       d  Mˆ  U(       a  Xí4$ XíU4$ ! [        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)a“  Read a DNS message from a UDP socket.

*sock*, a ``socket``.

*destination*, a destination tuple appropriate for the address family
of the socket, specifying where the message is expected to arrive from.
When receiving a response, this would be where the associated query was
sent.

*expiration*, a ``float`` or ``None``, the absolute time at which
a timeout exception should be raised.  If ``None``, no timeout will
occur.

*ignore_unexpected*, a ``bool``.  If ``True``, ignore responses from
unexpected sources.

*one_rr_per_rrset*, a ``bool``.  If ``True``, put each RR into its own
RRset.

*keyring*, a ``dict``, the keyring to use for TSIG.

*request_mac*, a ``bytes`` or ``None``, the MAC of the request (for TSIG).

*ignore_trailing*, a ``bool``.  If ``True``, ignore trailing
junk at end of the received message.

*raise_on_truncation*, a ``bool``.  If ``True``, raise an exception if
the TC bit is set.

Raises if the message is malformed, if network errors occur, of if
there is a timeout.

If *destination* is not ``None``, returns a ``(dns.message.Message, float)``
tuple of the received message and the received time.

If *destination* is ``None``, returns a
``(dns.message.Message, float, tuple)``
tuple of the received message, the received time, and the address where
the message arrived from.

*ignore_errors*, a ``bool``.  If various format errors or response
mismatches occur, ignore them and keep listening for a valid response.
The default is ``False``.

*query*, a ``dns.message.Message`` or ``None``.  If not ``None`` and
*ignore_errors* is ``True``, check that the received message is a response
to this query, and if not keep listening for a valid response.
r   éÿÿ  )rñ   rò   rÛ   rÜ   rL  N)
r@  r¹   r'   r   r   r  r  Ú	Truncatedr  r9   )rE   r·   r   r¸   rÛ   rñ   rò   rÜ   rL  rM  rN  r  r¶   Úreceived_timer  Úes                   r   Úreceive_udprT  ¼  s   € ð| €DØ
Ü(¨¨u°jÓAÑˆÜ#Ø�K‰K˜Ð4E÷
ñ 
ñ ÜŸ	š	›ˆð	Ü—‘×%Ñ%ØØØ'Ø!1Ø /Ø$7ð &ð ˆAö6 ˜UÑ.°u×7HÑ7HÈ×7KÑ7KÙÞØÐ%Ð%à lÐ3Ð3øô1 �{‰{×$Ñ$ó 	ö ØÑ%Ø×)Ñ)¨!¯)©)«+×6Ñ6åàûÜó 	ÞÛàð		ús$   Á"B ÂDÂ7.C,Ã+C,Ã,DÄDé5   c                 óÞ  • U R                  5       n[        XXE5      u  pÞn[        U5      u  nnU
(       a  [        R                  " U
5      nO[        U[        R                  U5      nU n[        UXÎU5        [        UUUUUU R                  U R                  UU	UU 5      u  nnUU-
  Ul        U(       d  U R                  U5      (       d  [        eUsSSS5        $ ! , (       d  f       O= f  e)a‘  Return the response obtained after sending a query via UDP.

*q*, a ``dns.message.Message``, the query to send

*where*, a ``str`` containing an IPv4 or IPv6 address,  where
to send the message.

*timeout*, a ``float`` or ``None``, the number of seconds to wait before the
query times out.  If ``None``, the default, wait forever.

*port*, an ``int``, the port send the message to.  The default is 53.

*source*, a ``str`` containing an IPv4 or IPv6 address, specifying
the source address.  The default is the wildcard address.

*source_port*, an ``int``, the port from which to send the message.
The default is 0.

*ignore_unexpected*, a ``bool``.  If ``True``, ignore responses from
unexpected sources.

*one_rr_per_rrset*, a ``bool``.  If ``True``, put each RR into its own
RRset.

*ignore_trailing*, a ``bool``.  If ``True``, ignore trailing
junk at end of the received message.

*raise_on_truncation*, a ``bool``.  If ``True``, raise an exception if
the TC bit is set.

*sock*, a ``socket.socket``, 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 nonblocking datagram socket,
and the *source* and *source_port* are ignored.

*ignore_errors*, a ``bool``.  If various format errors or response
mismatches occur, ignore them and keep listening for a valid response.
The default is ``False``.

Returns a ``dns.message.Message``.
N)r   rÁ   r,   r  r  r4   r5   Ú
SOCK_DGRAMrK  rT  rñ   Úmacr   r  rŠ   )rÚ   r½   r   r=   rD   r¾   r¸   rÛ   rÜ   rL  rE   rM  r  rC   r·   Ú
begin_timer   r  r§   r  rR  s                        r   ÚudprZ  &  sæ   € ðp �9‰9‹;€DÜ 7Ø�Vó!Ñ€R�fô  .¨gÓ6Ñ€Z�ÞÜ0:×0FÒ0FÀtÓ0L‰ä˜"œf×/Ñ/°Ó8ˆÙ	ˆqÜ��D zÔ2Ü(ØØØØØØ�I‰IØ�E‰EØØØØó
ÑˆˆMð  Ñ+ˆŒö  §¡¨q×!1Ñ!1ÜÐØ÷) 
��úð, 	ðØs   Á)A(CÃ
C)Úudp_sockÚtcp_sockc                 ó®   •  [        U UUUUUUUUSU	U5      nUS4$ ! [        R                  R                   a    [	        U UUUUUUUU
5	      nUS4s $ f = f)a  Return the response to the query, trying UDP first and falling back
to TCP if UDP results in a truncated response.

*q*, a ``dns.message.Message``, the query to send

*where*, a ``str`` containing an IPv4 or IPv6 address,  where to send the message.

*timeout*, a ``float`` or ``None``, the number of seconds to wait before the query
times out.  If ``None``, the default, wait forever.

*port*, an ``int``, the port send the message to.  The default is 53.

*source*, a ``str`` containing an IPv4 or IPv6 address, specifying the source
address.  The default is the wildcard address.

*source_port*, an ``int``, the port from which to send the message. The default is
0.

*ignore_unexpected*, a ``bool``.  If ``True``, ignore responses from unexpected
sources.

*one_rr_per_rrset*, a ``bool``.  If ``True``, put each RR into its own RRset.

*ignore_trailing*, a ``bool``.  If ``True``, ignore trailing junk at end of the
received message.

*udp_sock*, a ``socket.socket``, 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,
it must be a nonblocking datagram socket, and the *source* and *source_port* are
ignored for the UDP query.

*tcp_sock*, a ``socket.socket``, or ``None``, the connected socket to use for the
TCP query.  If ``None``, the default, a socket is created.  Note that if a socket is
provided, it must be a nonblocking connected stream socket, and *where*, *source*
and *source_port* are ignored for the TCP query.

*ignore_errors*, a ``bool``.  If various format errors or response mismatches occur
while listening for UDP, ignore them and keep listening for a valid response. The
default is ``False``.

Returns a (``dns.message.Message``, tcp) tuple where tcp is ``True`` if and only if
TCP was used.
TF)rZ  r   r  rQ  Útcp)rÚ   r½   r   r=   rD   r¾   r¸   rÛ   rÜ   r[  r\  rM  r  s                r   Úudp_with_fallbackr_  �  sŽ   € ðr ÜØØØØØØØØØØØØó
ˆð ˜%Ð Ð øÜ�;‰;× Ñ ó  ÜØØØØØØØØØó

ˆð ˜$ÐÒð ús   ‚ œ5AÁAc                 ó&  • SnUS:”  a=   U R                  U5      nUS:X  a  [        S5      eU[        U5      -  nX4-  nUS:”  a  M=  U$ ! [        [        R
                  4 a    [        X5         N1[        R                   a    [        X5         NQf = f)zÏRead the specified number of bytes from sock.  Keep trying until we
either get the desired amount, or we hit EOF.
A Timeout exception will be raised if the operation is not completed
by the expiration time.
r   r   ÚEOF)	ÚrecvÚEOFErrorr  r>  rj   ÚSSLWantReadErrorr¨   ÚSSLWantWriteErrorrª   )rE   Úcountr   r§   rJ  s        r   Ú	_net_readrg  Ù  s’   € ð 	€AØ
�!‹)ð		1Ø—	‘	˜%Ó ˆAØ�C‹xÜ˜u“oÐ%Ø”S˜“V‰OˆEØ‰FˆAð �!�)ð €Høô	  ¤×!5Ñ!5Ð6ó 	1Ü˜tÖ0Ü×$Ñ$ó 	1Ü˜tÖ0ð	1ús   Š4A Á%BÁ/BÂBc                 óú   • Sn[        U5      nX4:  a   X0R                  XS 5      -  nX4:  a  M  gg! [        [        R                  4 a    [        X5         N0[        R                   a    [        X5         NPf = f)z…Write the specified data to the socket.
A Timeout exception will be raised if the operation is not completed
by the expiration time.
r   N)r  rC  r>  rj   re  rª   rd  r¨   )rE   rD  r   ÚcurrentÚls        r   Ú
_net_writerk  î  sr   € ð
 €GÜˆD‹	€AØ
‹+ð	1Ø—y‘y  h Ó0Ñ0ˆGð �+øô  ¤×!6Ñ!6Ð7ó 	1Ü˜tÖ0Ü×#Ñ#ó 	1Ü˜tÖ0ð	1ús   ”2 ²%A:ÁA:Á9A:c                 ó  • [        U[        R                  R                  5      (       a  UR	                  SS9nO[        U5      R                  SS5      U-   n[        R                  " 5       n[        XU5        [        U5      U4$ )a_  Send a DNS message to the specified TCP socket.

*sock*, a ``socket``.

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

*expiration*, a ``float`` or ``None``, the absolute time at which
a timeout exception should be raised.  If ``None``, no timeout will
occur.

Returns an ``(int, float)`` tuple of bytes sent and the sent time.
T)Úprepend_lengthrÑ   Úbig)	r–   r   r  rH  r   r  Úto_bytesr   rk  )rE   rF  r   ÚtcpmsgrI  s        r   Úsend_tcprq  þ  sl   € ô$ �$œŸ™×+Ñ+×,Ñ,Ø—‘¨T�Ð2‰ô
 �T“×#Ñ# A uÓ-°Ñ4ˆÜ—	’	“€IÜˆt˜ZÔ(Ü�‹K˜Ð#Ð#r   c                 óØ   • [        U SU5      n[        R                  " SU5      u  n[        XU5      n[        R                  " 5       n	[        R
                  R                  UUUUUS9n
X©4$ )a·  Read a DNS message from a TCP socket.

*sock*, a ``socket``.

*expiration*, a ``float`` or ``None``, the absolute time at which
a timeout exception should be raised.  If ``None``, no timeout will
occur.

*one_rr_per_rrset*, a ``bool``.  If ``True``, put each RR into its own
RRset.

*keyring*, a ``dict``, the keyring to use for TSIG.

*request_mac*, a ``bytes`` or ``None``, the MAC of the request (for TSIG).

*ignore_trailing*, a ``bool``.  If ``True``, ignore trailing
junk at end of the received message.

Raises if the message is malformed, if network errors occur, of if
there is a timeout.

Returns a ``(dns.message.Message, float)`` tuple of the received message
and the received time.
rÑ   ú!Hrð   )rg  ÚstructÚunpackr   r   r  r  )rE   r   rÛ   rñ   rò   rÜ   Úldatarj  r  rR  r  s              r   Úreceive_tcprw    so   € ôB �d˜A˜zÓ*€EÜ�=Š=˜˜uÓ%�D€QÜ�T˜jÓ)€DÜ—I’I“K€MÜ�‰×ÑØØØØ)Ø'ð 	ð 	€Að ÐÐr   c                 óX  • U R                  U5      nUS:X  a  g U[        R                  [        R                  [        R                  4;   a9  [        X5        U R                  [        R                  [        R                  5      nUS:w  a   [        U[        R                  " U5      5      eg rZ   )Ú
connect_exÚerrnoÚEINPROGRESSÚEWOULDBLOCKÚEALREADYrª   Ú
getsockoptr5   Ú
SOL_SOCKETÚSO_ERRORÚOSErrorÚosÚstrerror)r§   rB   r   Úerrs       r   r7   r7   K  s}   € Ø
�,‰,�wÓ
€CØ
ˆaƒxØØ
Œu× Ñ ¤%×"3Ñ"3´U·^±^ÐDÓDÜ˜1Ô)Ø�l‰lœ6×,Ñ,¬f¯o©oÓ>ˆØ
ˆaƒxÜ�cœ2Ÿ;š; sÓ+Ó,Ð,ð r   c	           	      óæ  • U R                  5       n	[        U5      u  p«U(       a  [        R                  " U5      nO*[	        XXE5      u  pÞn[        U[        R                  U5      nU nU(       d  [        UWU5        [        XùU5        [        XûX`R                  U R                  U5      u  nnUU
-
  Ul        U R                  U5      (       d  [        eUsSSS5        $ ! , (       d  f       O= f  e)aU  Return the response obtained after sending a query via TCP.

*q*, a ``dns.message.Message``, the query to send

*where*, a ``str`` containing an IPv4 or IPv6 address, where
to send the message.

*timeout*, a ``float`` or ``None``, the number of seconds to wait before the
query times out.  If ``None``, the default, wait forever.

*port*, an ``int``, the port send the message to.  The default is 53.

*source*, a ``str`` containing an IPv4 or IPv6 address, specifying
the source address.  The default is the wildcard address.

*source_port*, an ``int``, the port from which to send the message.
The default is 0.

*one_rr_per_rrset*, a ``bool``.  If ``True``, put each RR into its own
RRset.

*ignore_trailing*, a ``bool``.  If ``True``, ignore trailing
junk at end of the received message.

*sock*, a ``socket.socket``, or ``None``, the connected 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 nonblocking connected stream
socket, and *where*, *port*, *source* and *source_port* are ignored.

Returns a ``dns.message.Message``.
N)r   r,   r  r  rÁ   r4   r5   r6   r7   rq  rw  rñ   rX  r   r  rŠ   )rÚ   r½   r   r=   rD   r¾   rÛ   rÜ   rE   r  rY  r   r  rC   r·   r§   r  rR  s                     r   r^  r^  V  sÖ   € ðV �9‰9‹;€DÜ-¨gÓ6Ñ€ZÞÜ0:×0FÒ0FÀtÓ0L‰ä$;Ø˜ó%
Ñ!ˆ˜&ô ˜"œf×0Ñ0°&Ó9ˆÙ	ˆqÞä�Q˜ ZÔ0Ü�˜*Ô%Ü(ØÐ+¯Y©Y¸¿¹¸ó
ÑˆˆMð  Ñ+ˆŒØ�}‰}˜Q×ÑÜÐØ÷ 
��úð 	ðØs   Á(A-CÃ
C-c                 ó¶   •   U R                  5         g ! [        R                   a    [        X5         O$[        R                   a    [        X5         Of = fMY  r   )Údo_handshakerj   rd  r¨   re  rª   r¦   s     r   Ú_tls_handshakerˆ  ›  sO   € Ø
ð	.Ø�N‰NÔØøÜ×#Ñ#ó 	.Ü˜qÖ-Ü×$Ñ$ó 	.Ü˜qÖ-ð	.úñ s   ƒ ”AµAÁArÄ   c                 ó¼  • S nS n[        U[        5      (       aY  [        R                  R	                  U5      (       a  UnO2[        R                  R                  U5      (       a  UnO[        S5      e[        R                  " X#S9n[        R                  R                  Ul        U c  SUl        UR                  S/5        USL a  [        R                  Ul        U$ )Nzinvalid verify string)ÚcafileÚcapathFÚdot)r–   r  r‚  rL   ÚisfileÚisdirr»   rj   r€   Ú
TLSVersionÚTLSv1_2Úminimum_versionÚcheck_hostnameÚset_alpn_protocolsr‚   r*  )rÄ   rß   rŠ  r‹  rË   s        r   Ú_make_dot_ssl_contextr”  ¦  s°   € ð !€FØ €FÜ�&œ#×ÑÜ�7‰7�>‰>˜&×!Ñ!Ø‰FÜ�W‰W�]‰]˜6×"Ñ"Ø‰FäÐ4Ó5Ð5Ü×,Ò,°FÑJ€KÜ"%§.¡.×"8Ñ"8€KÔØÑØ%*ˆÔ"Ø×"Ñ" E 7Ô+Ø�‚Ü"%§-¡-ˆÔØÐr   rË   c                 ó  • U(       a  [        U UUUUUUUU5	      $ U R                  5       n[        U5      u  pÞ[        XXE5      u  nnnU	c  U(       d  [	        X«5      n	[        U[        R                  UU	U
S9 n[        UUU5        [        UU5        [        UXÎ5        [        UXæU R                  U R                  U5      u  nnUU-
  Ul        U R                  U5      (       d  [         eUsSSS5        $ ! , (       d  f       O= f  e)aï  Return the response obtained after sending a query via TLS.

*q*, a ``dns.message.Message``, the query to send

*where*, a ``str`` containing an IPv4 or IPv6 address,  where
to send the message.

*timeout*, a ``float`` or ``None``, the number of seconds to wait before the
query times out.  If ``None``, the default, wait forever.

*port*, an ``int``, the port send the message to.  The default is 853.

*source*, a ``str`` containing an IPv4 or IPv6 address, specifying
the source address.  The default is the wildcard address.

*source_port*, an ``int``, the port from which to send the message.
The default is 0.

*one_rr_per_rrset*, a ``bool``.  If ``True``, put each RR into its own
RRset.

*ignore_trailing*, a ``bool``.  If ``True``, ignore trailing
junk at end of the received message.

*sock*, an ``ssl.SSLSocket``, 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 nonblocking connected
SSL stream socket, and *where*, *port*, *source*, *source_port*,
and *ssl_context* are ignored.

*ssl_context*, an ``ssl.SSLContext``, the context to use when establishing
a TLS connection. If ``None``, the default, creates one with the default
configuration.

*server_hostname*, a ``str`` containing the server's hostname.  The
default is ``None``, which means that no hostname is known, and if an
SSL context is created, hostname checking will be disabled.

*verify*, a ``bool`` or ``str``.  If a ``True``, then TLS certificate verification
of the server is done using the default CA bundle; if ``False``, then no
verification is done; if a `str` then it specifies the path to a certificate file or
directory which will be used for verification.

Returns a ``dns.message.Message``.

N)rË   rÄ   )r^  r   r,   rÁ   r”  r4   r5   r6   r7   rˆ  rq  rw  rñ   rX  r   r  rŠ   )rÚ   r½   r   r=   rD   r¾   rÛ   rÜ   rE   rË   rÄ   rß   r  rY  r   rC   r·   r§   r  rR  s                       r   Útlsr–  ¼  s  € öz ô ØØØØØØØØØó

ð 
	
ð �9‰9‹;€DÜ-¨gÓ6Ñ€ZÜ 7Ø�Vó!Ñ€Rˆ�fð Ñ¦4Ü+¨OÓDˆä	Ø
Ü×ÑØØØ'ò
ð 
Ü��K Ô,Ü�q˜*Ô%Ü��DÔ%Ü(Øˆz¨Q¯Y©Y¸¿¹¸ó
ÑˆˆMð  Ñ+ˆŒØ�}‰}˜Q×ÑÜÐØ÷!
÷ 
÷ 
úð$ 	ðØs   Á8A3C5Ã5
Dr8  c                 ó>  • [         R                  R                  (       d  [        S5      eUb  U
c  Un
SU l        U R                  5       nU(       a  [        R                  " S5      nUnO[         R                  R                  XšS9nUnU   U(       d  WR                  XXE5      n[        U5      u  nnWR                  U5       nUR                  US5        UR                  [        U5      5      nSSS5        [        R                  " 5       nSSS5        [         R                   R#                  UU R$                  U R&                  UUS9n[)        WW-
  S5      Ul        U R+                  U5      (       d  [,        eU$ ! , (       d  f       N’= f! , (       d  f       N†= f)a+  Return the response obtained after sending a query via DNS-over-QUIC.

*q*, a ``dns.message.Message``, the query to send.

*where*, a ``str``, the nameserver IP address.

*timeout*, a ``float`` or ``None``, the number of seconds to wait before the query
times out. If ``None``, the default, wait forever.

*port*, a ``int``, the port to send the query to. The default is 853.

*source*, a ``str`` containing an IPv4 or IPv6 address, specifying the source
address.  The default is the wildcard address.

*source_port*, an ``int``, the port from which to send the message. The default is
0.

*one_rr_per_rrset*, a ``bool``. If ``True``, put each RR into its own RRset.

*ignore_trailing*, a ``bool``. If ``True``, ignore trailing junk at end of the
received message.

*connection*, a ``dns.quic.SyncQuicConnection``.  If provided, the connection to use
to send the query.

*verify*, a ``bool`` or ``str``.  If a ``True``, then TLS certificate verification
of the server is done using the default CA bundle; if ``False``, then no
verification is done; if a `str` then it specifies the path to a certificate file or
directory which will be used for verification.

*hostname*, a ``str`` containing the server's hostname or ``None``.  The default is
``None``, which means that no hostname is known, and if an SSL context is created,
hostname checking will be disabled.  This value is ignored if *url* is not
``None``.

*server_hostname*, a ``str`` or ``None``.  This item is for backwards compatibility
only, and has the same meaning as *hostname*.

Returns a ``dns.message.Message``.
zDNS-over-QUIC is not available.Nr   )r*  r+  Trð   r
   )r   r-  r.  r‘   r/  r   r  r  r0  r1  r,   r2  rC  r4  r   r   r  r  rñ   rò   r5  r  rŠ   )rÚ   r½   r   r=   rD   r¾   rÛ   rÜ   r8  rß   rø   rÄ   r  r7  Úthe_connectionÚthe_managerr9  r   r:  r;  r  s                        r   r-  r-  '  sV  € ôn �8‰8××ÜÐ5Ó6Ð6àÑ" xÑ'7Ø"ˆà€A„DØ�9‰9‹;€Dö Ü5?×5KÒ5KÈDÓ5QˆØ#‰ä—(‘(×*Ñ*°vÐ*ÐTˆØˆâ	ÞØ(×0Ñ0°¸fÓRˆNÜ,¨WÓ5Ñˆ�
Ø×'Ñ'¨Ô0°FØ�K‰K˜˜dÔ#Ø—>‘>¤*¨ZÓ"8Ó9ˆD÷ 1ô —’“ˆ÷ 
ô 	�‰×ÑØØ—	‘	Ø—M‘MØ)Ø'ð 	ð 	€Aô �˜%‘ Ó%€A„FØ�=‰=˜×ÑÜÐØ€H÷ 1Õ0ú÷	 
�ús$   Â9FÃ-E=Ã1FÅ=
F	ÆFÆ
Fc                   ó$   • \ rS rSrSrSrSrSrSrg)ÚUDPModei„  zóHow should UDP be used in an IXFR from :py:func:`inbound_xfr()`?

NEVER means "never use UDP; always use TCP"
TRY_FIRST means "try to use UDP but fall back to TCP if needed"
ONLY means "raise ``dns.xfr.UseTCP`` if trying UDP does not succeed"
r   r¬   rÑ   rb   N)	rO   rP   rQ   rR   rˆ   ÚNEVERÚ	TRY_FIRSTÚONLYrS   rb   r   r   r›  r›  „  s   † ñð €EØ€IØƒDr   r›  Útxn_managerr§   Úserialc              #   ó"  #   • UR                   S   R                  nU[        R                  R                  :H  nU R                  5       nUR                  5       n	UR                  [        R                  :H  n
U
(       a  [        XSU5        O/[        R                  " S[        U	5      5      U	-   n[        XU5        [        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SU5      u  nnO3['        USU5      n[        R(                  " SU5      u  n['        UUU5      n[        R*                  R-                  UUR.                  UR0                  SUUU
(       + US9nUR3                  U5      nUv •  UR4                  nU(       d  MÎ  UR.                  (       a0  WR6                  (       d  [        R8                  R;                  S	5      eSSS5        g! , (       d  f       g= f7f)
z'Given a socket, does the zone transfer.r   Nrs  FrP  rÑ   T)rñ   rò   ÚxfrÚoriginÚtsig_ctxÚmultirÛ   zmissing TSIG)ÚquestionÚrdtyper   Ú	rdatatypeÚIXFRÚfrom_wire_originr   rÊ   r5   rW  rE  rt  Úpackr  rk  r¢  ÚInboundr,   r@  rg  ru  r  r  rñ   rX  Úprocess_messager¤  Úhad_tsigr   Ú	FormError)rŸ  r§   rN  r   r   r   r§  Úis_ixfrr£  r  Úis_udprp  ÚinboundÚdoner¤  r@   ÚmexpirationÚrwirerv  rj  r  s                        r   Ú_inbound_xfrr¶  ‘  sª  é € ð �^‰^˜AÑ×%Ñ%€FØœŸ™×*Ñ*Ñ*€GØ×)Ñ)Ó+€FØ�=‰=‹?€DØ�V‰V”v×(Ñ(Ñ(€FÞÜ�!˜4 Õ,ä—’˜T¤3 t£9Ó-°Ñ4ˆÜ�1˜jÔ)Ü	�‰�‰˜¨fÔ	=ÀØˆØˆÞÜ-¨gÓ6ÑˆQ�ØÑ"ØÑ&¨;¸Ó+Cà(�ÞÜ& q¨%°Ó=‘
�™ä! ! Q¨Ó4�Ü—}’} T¨5Ó1‘�Ü! ! Q¨Ó4�Ü—‘×%Ñ%ØØŸ™Ø!ŸI™IØØØ!Ø!”zØ!(ð &ð 	ˆAð ×*Ñ*¨1Ó-ˆDØŠGØ—z‘zˆH÷1 �$ð2 �=�= §§Ü—-‘-×)Ñ)¨.Ó9Ð9÷; 
>×	=Ö	=üs&   ‚CHÃCG>Æ4AG>Ç5	HÇ>
HÈHÚzoner§  ÚrdclassÚkeynameÚ
relativizer+   Úuse_udpÚkeyalgorithmc           	   #   óH  #   •  " S S[         R                  R                  5      n[        U[        5      (       a  [         R
                  R                  U5      n[         R                  R                  R                  U5      n[         R                  R                  XU5      nU[         R                  R                  :X  aƒ  UR                  UR                  U[         R                  R                   [         R                  R"                  SS9n[         R$                  R                  SSSU-  5      nUR'                  US5        Ub  UR)                  XgUS
9  [+        XX«5      u  nnn
[-        U	5      u  nnU" X5      nU(       a)  U[         R                  R                  :w  a  [/        S5      eU(       a  [0        R2                  O[0        R4                  n[7        UUU
5       n[9        UUU5        [;        UUUXÄU5       S	h  v•N   S	S	S	5        g	 N! , (       d  f       g	= f7f)a/  Return a generator for the responses to a zone transfer.

*where*, a ``str`` containing an IPv4 or IPv6 address,  where
to send the message.

*zone*, a ``dns.name.Name`` or ``str``, the name of the zone to transfer.

*rdtype*, an ``int`` or ``str``, the type of zone transfer.  The
default is ``dns.rdatatype.AXFR``.  ``dns.rdatatype.IXFR`` can be
used to do an incremental transfer instead.

*rdclass*, an ``int`` or ``str``, the class of the zone transfer.
The default is ``dns.rdataclass.IN``.

*timeout*, a ``float``, the number of seconds to wait for each
response message.  If None, the default, wait forever.

*port*, an ``int``, the port send the message to.  The default is 53.

*keyring*, a ``dict``, the keyring to use for TSIG.

*keyname*, a ``dns.name.Name`` or ``str``, the name of the TSIG
key to use.

*relativize*, a ``bool``.  If ``True``, all names in the zone will be
relativized to the zone origin.  It is essential that the
relativize setting matches the one specified to
``dns.zone.from_xfr()`` if using this generator to make a zone.

*lifetime*, a ``float``, the total number of seconds to spend
doing the transfer.  If ``None``, the default, then there is no
limit on the time the transfer may take.

*source*, a ``str`` containing an IPv4 or IPv6 address, specifying
the source address.  The default is the wildcard address.

*source_port*, an ``int``, the port from which to send the message.
The default is 0.

*serial*, an ``int``, the SOA serial number to use as the base for
an IXFR diff sequence (only meaningful if *rdtype* is
``dns.rdatatype.IXFR``).

*use_udp*, a ``bool``.  If ``True``, use UDP (only meaningful for IXFR).

*keyalgorithm*, a ``dns.name.Name`` or ``str``, the TSIG algorithm to use.

Raises on errors, and so does the generator.

Returns a generator of ``dns.message.Message`` objects.
c                   óš   • \ rS rSrS rS rS\R                  R                  4S jr	S r
SS\S\R                  R                  4S jjrS	rg
)Ú$xfr.<locals>.DummyTransactionManageri	  c                 óX   • XU(       a  [         R                  R                  OU4U l        g r   )r   r  ÚemptyÚinfo)r#   r£  rº  s      r   r   Ú-xfr.<locals>.DummyTransactionManager.__init__
  s   € Ø¾z¬S¯X©X¯^ª^ÈvÐVˆD�Ir   c                 ó   • U R                   $ r   ©rÂ  ©r#   s    r   Úorigin_informationÚ7xfr.<locals>.DummyTransactionManager.origin_information  s   € Ø—9‘9Ðr   rÌ   c                 ó   • [         er   rJ   rÆ  s    r   Ú	get_classÚ.xfr.<locals>.DummyTransactionManager.get_class  rh   r   c                 ó   • [         er   rJ   rÆ  s    r   ÚreaderÚ+xfr.<locals>.DummyTransactionManager.reader  rh   r   Úreplacementc                 óh   •  " S S5      n[        [        R                  R                  U" 5       5      $ )Nc                   ó    • \ rS rSrS rS rSrg)ÚExfr.<locals>.DummyTransactionManager.writer.<locals>.DummyTransactioni  c                 ó   • g r   rb   )r#   r_   Úkws      r   ÚnopÚIxfr.<locals>.DummyTransactionManager.writer.<locals>.DummyTransaction.nop  s   € Ør   c                 ó   • U R                   $ r   )rÕ  )r#   r@   s     r   Ú__getattr__ÚQxfr.<locals>.DummyTransactionManager.writer.<locals>.DummyTransaction.__getattr__  s   € ØŸ8™8�Or   rb   N)rO   rP   rQ   rR   rÕ  rØ  rS   rb   r   r   ÚDummyTransactionrÒ    s   † òõ$r   rÚ  )r   r   ÚtransactionÚTransaction)r#   rÏ  rÚ  s      r   ÚwriterÚ+xfr.<locals>.DummyTransactionManager.writer  s)   € ÷$ñ $ô œŸ™×3Ñ3Ñ5EÓ5GÓHÐHr   rÅ  N)F)rO   rP   rQ   rR   r   rÇ  r   Ú
rdataclassÚ
RdataClassrÊ  rÍ  ÚboolrÛ  rÜ  rÝ  rS   rb   r   r   ÚDummyTransactionManagerr¿  	  sN   † ò	Wò	ð	&˜sŸ~™~×8Ñ8ô 	&ò	&ñ	I dð 	I°s·±×7RÑ7R÷ 	Ið 	Ir   râ  T)ÚcreateÚINÚSOAz. . %u 0 0 0 0r   N)Ú	algorithmzcannot do a UDP AXFR)r   rÛ  ÚTransactionManagerr–   r  r  Ú	from_textr¨  Ú	RdataTypeÚmaker  Ú
make_queryr©  Ú
find_rrsetÚ	authorityrß  rä  rå  ÚrdataÚaddÚuse_tsigrÁ   r,   r»   r5   rW  r6   r4   r7   r¶  )r½   r·  r§  r¸  r   r=   rñ   r¹  rº  r+   rD   r¾   r   r»  r¼  râ  rÚ   ÚrrsetÚsoarC   r·   r@   r   ÚtmÚ	sock_typer§   s                             r   r¢  r¢  Ä  s¥  é € ôJI¤#§/¡/×"DÑ"Dô Iô. �$œ×ÑÜ�x‰x×!Ñ! $Ó'ˆÜ�]‰]×$Ñ$×)Ñ)¨&Ó1€FÜ�‰×Ñ˜t¨WÓ5€AØ”—‘×#Ñ#Ó#Ø—‘Ø�K‰K˜œsŸ~™~×0Ñ0´#·-±-×2CÑ2CÈDð ð 
ˆô �i‰i×!Ñ! $¨Ð/?À&Ñ/HÓIˆØ�	‰	�#�qÔØÑØ	�
‰
�7¨|ˆ
Ñ<Ü 7Ø�Vó!Ñ€Rˆ�fô % XÓ.�O€Qˆ
Ù	  Ó	2€BÞ�6œSŸ]™]×/Ñ/Ó/ÜÐ/Ó0Ð0Þ%,”×!Ò!´&×2DÑ2D€IÜ	�b˜) VÔ	,°Ü��K Ô,Ü  A q¨&¸:ÓF×FÐF÷ 
-Ð	,áF÷ 
-Õ	,üs0   ‚GH"Ç! HÈHÈHÈ	H"ÈHÈ
HÈH"Úudp_modec	           	      ó8  • Uc"  [         R                  R                  U5      u  p)O[         R                  R                  U5      n	[	        XXg5      u  p«n[        U5      u  pÍUR                  S   R                  [         R                  R                  :X  a[  U[        R                  :w  aG  [        U
[        R                  U5       n[        XëU5         [!        XX)XM5       H  nM      SSS5        g[        U
[        R&                  U5       n[        XëU5        [!        XX)XM5       H  nM     SSS5        g! [         R                  R"                   a    U[        R$                  :X  a  e  Of = f SSS5        M‰  ! , (       d  f       N—= f! , (       d  f       g= f)a;  Conduct an inbound transfer and apply it via a transaction from the
txn_manager.

*where*, a ``str`` containing an IPv4 or IPv6 address,  where
to send the message.

*txn_manager*, a ``dns.transaction.TransactionManager``, the txn_manager
for this transfer (typically a ``dns.zone.Zone``).

*query*, the query to send.  If not supplied, a default query is
constructed using information from the *txn_manager*.

*port*, an ``int``, the port send the message to.  The default is 53.

*timeout*, a ``float``, the number of seconds to wait for each
response message.  If None, the default, wait forever.

*lifetime*, a ``float``, the total number of seconds to spend
doing the transfer.  If ``None``, the default, then there is no
limit on the time the transfer may take.

*source*, a ``str`` containing an IPv4 or IPv6 address, specifying
the source address.  The default is the wildcard address.

*source_port*, an ``int``, the port from which to send the message.
The default is 0.

*udp_mode*, a ``dns.query.UDPMode``, determines how UDP is used
for IXFRs.  The default is ``dns.UDPMode.NEVER``, i.e. only use
TCP.  Other possibilities are ``dns.UDPMode.TRY_FIRST``, which
means "try UDP but fallback to TCP if needed", and
``dns.UDPMode.ONLY``, which means "try UDP and raise
``dns.xfr.UseTCP`` if it does not succeed.

Raises on errors.
Nr   )r   r¢  rë  Úextract_serial_from_queryrÁ   r,   r¦  r§  r¨  r©  r›  rœ  r4   r5   rW  r7   r¶  ÚUseTCPrž  r6   )r½   rŸ  rN  r=   r   r+   rD   r¾   rõ  r   rC   r·   r@   r   r§   s                  r   Úinbound_xfrrù  9  sS  € ð^ �}ÜŸ'™'×,Ñ,¨[Ó9‰ˆ�ä—‘×2Ñ2°5Ó9ˆä 7Ø�Vó!Ñ€R�fô % XÓ.�O€QØ‡~�~�aÑ×Ñ¤3§=¡=×#5Ñ#5Ó5¸(ÄgÇmÁmÓ:SÜ˜"œf×/Ñ/°Ô8¸AÜ�Q ZÔ0ðÜ%Ø E°7ö�Añ ñð ÷ 9Ð8ô 
�bœ&×,Ñ,¨fÔ	5¸Ü� Ô,Ü˜k¨e¸WÖQˆAÙñ R÷ 
6Ð	5øô	 —7‘7—>‘>ó ØœwŸ|™|Ó+Øñ ,ðúØ+÷ 9×8×8ú÷ 
6Õ	5ús6   ÃE:ÃD6Ä!FÄ63E,Å)E:Å+E,Å,E:Å:
FÆ
F)T)NN)	NéU  Nr   FFTNTr   )
NNFFNr   FFFN)
NrU  Nr   FFFFNF)
NrU  Nr   FFFNNF)NFNr   F)NrU  Nr   FFN)
Nrú  Nr   FFNNNT)
Nrú  Nr   FFNTNN)~rˆ   r  r  Úenumrz  r‚  Úos.pathrú   r˜   r5   rt  r   Úurllib.parserõ   Útypingr   r   r   r   r   r   Údns._featuresr   Údns.exceptionÚdns.inetÚdns.messageÚdns.nameÚdns.quicÚ	dns.rcodeÚdns.rdataclassÚdns.rdatatypeÚ
dns.serialÚdns.transactionÚdns.tsigÚdns.xfrr   r   Ú	_featuresÚhaveÚ_have_httpxÚhttpcore._backends.syncr:   rþ   ÚNetworkBackendÚ_CoreNetworkBackendÚ	_backendsÚsyncÚ
SyncStreamr8   r   ÚHTTPTransportrW   rù   rj   ÚImportErrorrÅ   r   ÚDNSExceptionr…   r¯  rŠ   r�   r‘   r¢  ÚTransferErrorr,   r£   r¨   rª   r³   r¹   rÁ   r4   rÎ   ÚIntEnumrÐ   rc   rÓ   r  rH  r  Úfloatr%  rá  r  r-  ÚHeadersÚbytesr!  r(  rý   r@  rE  rK  r  ÚNameÚtsigÚKeyrT  rZ  r_  rg  rk  rq  rw  r7   r^  rˆ  ry   r”  r}   r–  ÚSyncQuicConnectionr›  rÛ  rç  r¶  r¨  ÚAXFRrß  rä  Údefault_algorithmré  rà  rœ  rù  rb   r   r   Ú<module>r#     su  ðñ$ ã Û Û Û Û 	Û Û Û Û Û Û Û ß :× :ã Û Û Û Û Û Û Û Û Û Û Û Û òò2ð �m‰m× Ñ  Ó'€ÞÛ"Ûà"×1Ñ1ÐØ×(Ñ(×-Ñ-×8Ñ8€Oô2&Ð-ô 2&ôh˜×,Ñ,õ ÷,&ñ &ð
 €ð.Ûð2 —‘€ôH�s—}‘}×1Ñ1ô HôG�#—-‘-×)Ñ)ô GôˆC�M‰M×&Ñ&ô ô
ˆC�M‰M×&Ñ&ô ð —‘×%Ñ%€ò$ò$ò80ò0ò	)òð" =Aô)%ôXð(ØÐ.Ñ/ðàôô�$—,‘,ô ð&  $ØØ ØØ"Ø!Ø!ØØØ'+Ø#Ø26Ø×"Ñ"Ø +× 3Ñ 3ñ!DØ
‡{�{×ÑðDàðDð �e‰_ðDð ð	Dð
 �S‰MðDð ðDð ðDð ðDð �c‰]ðDð ðDð ðDð   ‘}ðDð �$˜�)ÑðDð Ð.Ñ/ðDð ðDð  ð!Dð" 	‡[�[×Ñõ#DðN˜#Ÿ(™(×*Ñ*ð °%ð ¸Eô ðO˜3Ÿ8™8×+Ñ+ð O°3ð O¸eð OÈô Oð*  $ØØ ØØ"Ø!Ø#Ø"Øñ.Ø
‡{�{×Ñð.àð.ð 
ð.ð �e‰_ð	.ð
 ð.ð �S‰Mð.ð ð.ð ð.ð ð.ð �$˜�)Ñð.ð �s‰mð.ð ð.ð 	‡[�[×Ñõ.òb	1ò1ð& #'ñ	Ø
ðà
�—‘×#Ñ# UÐ*Ñ
+ðð ðð ˜‘ð	ð
 ˆ3�ˆ:Ñõð> "&Ø"&Ø#Ø"Ø;?Ø#&Ø!Ø %ØØ+/ñg4Ø
ðg4à˜#‘ðg4ð ˜‘ðg4ð ð	g4ð
 ðg4ð �d˜3Ÿ8™8Ÿ=™=¨#¯(©(¯,©,Ð6Ñ7Ñ8ðg4ð ˜%‘ðg4ð ðg4ð ðg4ð ðg4ð �C—K‘K×'Ñ'Ñ(ðg4ð 	õg4ðZ  $ØØ ØØ#Ø"Ø!Ø %ØØñXØ
‡{�{×ÑðXàðXð �e‰_ðXð ð	Xð
 �S‰MðXð ðXð ðXð ðXð ðXð ðXð �3‰-ðXð ðXð 	‡[�[×ÑõXð|  $ØØ ØØ#Ø"Ø!Ø"Ø"ØñU Ø
‡{�{×ÑðU àðU ð �e‰_ðU ð ð	U ð
 �S‰MðU ð ðU ð ðU ð ðU ð ðU ð �s‰mðU ð �s‰mðU ð ðU ð ˆ3�;‰;×Ñ Ð$Ñ%õU òpò*1ð& #'ñ$Ø
ð$à
�—‘×#Ñ# UÐ*Ñ
+ð$ð ˜‘ð$ð ˆ3�ˆ:Ñõ	$ð@ #'Ø"Ø;?Ø#&Ø!ñ,Ø
ð,à˜‘ð,ð ð,ð �d˜3Ÿ8™8Ÿ=™=¨#¯(©(¯,©,Ð6Ñ7Ñ8ð	,ð
 ˜%‘ð,ð ð,ð ˆ3�;‰;×Ñ Ð%Ñ&õ,ò^-ð  $ØØ ØØ"Ø!ØñBØ
‡{�{×ÑðBàðBð �e‰_ðBð ð	Bð
 �S‰MðBð ðBð ðBð ðBð �3‰-ðBð 	‡[�[×ÑõBòJ.ðØ˜c‘]ðØ,1°$¸°)Ñ,<ðà‡^�^ôð2  $ØØ ØØ"Ø!Ø$(Ø,0Ø%)Ø#ñhØ
‡{�{×Ñðhàðhð �e‰_ðhð ð	hð
 �S‰Mðhð ðhð ðhð ðhð �3—=‘=Ñ
!ðhð ˜#Ÿ.™.Ñ)ðhð ˜c‘]ðhð �$˜�)Ñðhð 	‡[�[×Ñõhð\  $ØØ ØØ"Ø!Ø8<Ø#Ø"Ø%)ñZØ
‡{�{×ÑðZàðZð �e‰_ðZð ð	Zð
 �S‰MðZð ðZð ðZð ðZð ˜Ÿ™×4Ñ4Ñ5ðZð �$˜�)ÑðZð �s‰mðZð ˜c‘]ðZð 	‡[�[×ÑõZôz
ˆd�l‰lô 
ð0:Ø—‘×3Ñ3ð0:à‡}�}ð0:ð �;‰;×Ñð0:ð �S‰Mð	0:ð
 �e‰_ð0:ð ð0:ð 	ô0:ðl 36·-±-×2DÑ2DØ58·^±^×5FÑ5FØ#ØØ;?Ø37ØØ $Ø ØØØØ.1¯h©h×.HÑ.HñrGØðrGà
�—‘—‘˜sÐ"Ñ
#ðrGð �#—-‘-×)Ñ)¨3Ð.Ñ/ðrGð �3—>‘>×,Ñ,¨cÐ1Ñ2ð	rGð
 �e‰_ðrGð ðrGð �d˜3Ÿ8™8Ÿ=™=¨#¯(©(¯,©,Ð6Ñ7Ñ8ðrGð �e˜CŸH™HŸM™M¨3Ð.Ñ/Ñ0ðrGð ðrGð �u‰oðrGð �S‰MðrGð ðrGð ðrGð ðrGð ˜Ÿ™Ÿ™ sÐ*Ñ+ðrGð  	õ!rGðp ,0ØØ#Ø $Ø ØØŸ™ñHØðHà—‘×3Ñ3ðHð �C—K‘K×'Ñ'Ñ(ðHð ð	Hð
 �e‰_ðHð �u‰oðHð �S‰MðHð ðHð ðHð 
öHøð}, ó .÷.ô .ð.ús   Äa0 á0bâb