Ë
    ¶�/j  ã                   ó¬   — d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlZd dl	Zd dl
Zej                  j                  d«      Z G d„ d«      Zd„ Zd„ Zd„ Zy)	é    N)Úurlparsez_dns.resolver.arpac                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zdd„Zy)Ú	_SVCBInfoc                 ó<   — || _         || _        || _        || _        y ©N)Úbootstrap_addressÚportÚhostnameÚnameservers)Úselfr   r	   r
   r   s        úJC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\dns/_ddr.pyÚ__init__z_SVCBInfo.__init__   s    € Ø!2ˆÔØˆŒ	Ø ˆŒØ&ˆÕó    c                 óL   — |d   D ]  \  }}|dk(  sŒ|| j                   k(  sŒ y y)zIVerify that the _SVCBInfo's address is in the cert's subjectAltName (SAN)ÚsubjectAltNamez
IP AddressTF)r   )r   ÚcertÚnameÚvalues       r   Úddr_check_certificatez_SVCBInfo.ddr_check_certificate!   s3   € àÐ 0Ô1‰KˆD�%Ø�|Ó#¨°×1GÑ1GÓ(GÙð 2ð r   c                 ó�   — t         j                  j                  }|j                  «       }|j                  j
                  |_        |S r   )ÚdnsÚqueryÚsslÚcreate_default_contextÚ
TLSVersionÚTLSv1_2Úminimum_version)r   r   Úctxs      r   Úmake_tls_contextz_SVCBInfo.make_tls_context(   s4   € Ü�i‰i�m‰mˆØ×(Ñ(Ó*ˆØ!Ÿn™n×4Ñ4ˆÔØˆ
r   c                 ó  — | j                  «       }t        j                  «       |z   }t        j                  | j                  | j
                  f|«      5 }|j                  || j                  ¬«      5 }|j                  t        j                  j                  |«      «       |j                  «        |j                  «       }| j                  |«      cd d d «       cd d d «       S # 1 sw Y   nxY w	 d d d «       y # 1 sw Y   y xY w)N)Úserver_hostname)r   ÚtimeÚsocketÚcreate_connectionr   r	   Úwrap_socketr
   Ú
settimeoutr   r   Ú
_remainingÚdo_handshakeÚgetpeercertr   )r   Úlifetimer   Ú
expirationÚsÚtsr   s          r   Úddr_tls_check_syncz_SVCBInfo.ddr_tls_check_sync.   sÊ   € Ø×#Ñ#Ó%ˆÜ—Y‘Y“[ 8Ñ+ˆ
Ü×%Ñ%Ø×#Ñ# T§Y¡YÐ/°ô
àØ—‘ °D·M±M�ÔBÀbØ—‘œcŸi™i×2Ñ2°:Ó>Ô?Ø—‘Ô!Ø—~‘~Ó'�Ø×1Ñ1°$Ó7÷	 CÐB÷
ñ 
÷ CÐBúÐB÷
÷ 
ñ 
ús%   ÁC:Á2AC$Ã	C:Ã$C-	Ã)C:Ã:DNc           
   ƒ   ó~  K  — |€t         j                  j                  «       }| j                  «       }t	        j                  «       |z   }|j                  t         j                  j                  | j                  «      t        j                  dd | j                  | j                  f||| j                  «      ƒ d {  –—† 4 ƒd {  –—† }|j                  t         j                  j                  |«      «      ƒ d {  –—† }| j!                  |«      cd d d «      ƒd {  –—†  S 7 Œe7 Œ^7 Œ*7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Nr   )r   ÚasyncbackendÚget_default_backendr   r"   Úmake_socketÚinetÚaf_for_addressr   r#   ÚSOCK_STREAMr	   r
   r)   r   r'   r   )r   r*   Úbackendr   r+   r-   r   s          r   Úddr_tls_check_asyncz_SVCBInfo.ddr_tls_check_async:   s  è ø€ Øˆ?Ü×&Ñ&×:Ñ:Ó<ˆGØ×#Ñ#Ó%ˆÜ—Y‘Y“[ 8Ñ+ˆ
Ø ×,Ñ,Ü�H‰H×#Ñ# D×$:Ñ$:Ó;Ü×ÑØØØ×#Ñ# T§Y¡YÐ/ØØØ�M‰Mó	
÷ 	
÷ 	
ð 	
ð ØŸ™¬¯	©	×(<Ñ(<¸ZÓ(HÓI×IˆDØ×-Ñ-¨dÓ3÷	
÷ 	
ò 	
øð 	
øð Jøð	
ø÷ 	
÷ 	
ñ 	
üsl   ‚B8D=Â:D Â;D=ÃD"ÃD=Ã2D(Ã9D$Ã:D(ÄD=ÄD&ÄD=Ä"D=Ä$D(Ä&D=Ä(D:Ä.D1Ä/D:Ä6D=r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r.   r7   © r   r   r   r      s   „ ò'òòò
8ô4r   r   c           	      ót  — | j                   }t        j                  j                  |«      sg S g }| j                  j                  «       D �][  }g }|j                  j                  t        j                  j                  j                  j                  «      }|€ŒPt        |j                  «      }|j                  j                  d¬«      }d }|j                  j                  t        j                  j                  j                  j                   «      }|�|j"                  }d|v râ|j                  j                  t        j                  j                  j                  j$                  «      }|�|j&                  j)                  d«      s�ŒB|j&                  d d j+                  «       }	|	j-                  d«      sd|	z   }	|€d}d|› d	|› |	› �}
	 t/        |
«       |j1                  t        j                   j3                  |
|«      «       d
|v r4|€d}|j1                  t        j                   j7                  |||«      «       d|v r5|€d}|j1                  t        j                   j9                  ||d|«      «       t;        |«      dkD  s�Œ?|j1                  t=        ||||«      «       �Œ^ |S # t4        $ r Y Œ®w xY w)NT)Úomit_final_dots   h2s   {?dns}iúÿÿÿÚ/i»  zhttps://Ú:s   dotiU  s   doqr   )Ú
nameserverr   r3   Ú
is_addressÚrrsetÚprocessing_orderÚparamsÚgetÚrdtypesÚsvcbbaseÚParamKeyÚALPNÚsetÚidsÚtargetÚto_textÚPORTr	   ÚDOHPATHr   ÚendswithÚdecodeÚ
startswithr   ÚappendÚDoHNameserverÚ	ExceptionÚDoTNameserverÚDoQNameserverÚlenr   )Úanswerr   ÚinfosÚrrr   ÚparamÚalpnsÚhostr	   ÚpathÚurls              r   Ú_extract_nameservers_from_svcbra   M   sQ  € Ø×)Ñ)ÐÜ�8‰8×ÑÐ0Ô1Øˆ	Ø€EØ�l‰l×+Ñ+×-ˆØˆØ—	‘	—‘œcŸk™k×2Ñ2×;Ñ;×@Ñ@ÓAˆØˆ=ØÜ�E—I‘I“ˆØ�y‰y× Ñ °Ð Ó5ˆØˆØ—	‘	—‘œcŸk™k×2Ñ2×;Ñ;×@Ñ@ÓAˆØÐØ—:‘:ˆDð �E‰>Ø—I‘I—M‘M¤#§+¡+×"6Ñ"6×"?Ñ"?×"GÑ"GÓHˆEØˆ} E§K¡K×$8Ñ$8¸Ô$CÙØ—;‘;˜s Ð#×*Ñ*Ó,ˆDØ—?‘? 3Ô'Ø˜T‘z�Øˆ|Ø�Ø˜T˜F ! D 6¨$¨Ð0ˆCðÜ˜”Ø×"Ñ"¤3§>¡>×#?Ñ#?ÀÐEVÓ#WÔXð �U‰?Øˆ|Ø�Ø×ÑÜ—‘×,Ñ,Ð->ÀÀdÓKôð �U‰?Øˆ|Ø�Ø×ÑÜ—‘×,Ñ,Ð->ÀÀdÈDÓQôô ˆ{Ó˜aÔØ�L‰LœÐ#4°d¸DÀ+ÓNÖOðW .ðX €Løô# ò áðús   Ç:J+Ê+	J7Ê6J7c                 ó¦   — g }t        | «      }|D ]/  }	 |j                  |«      r|j                  |j                  «       Œ1 |S # t        $ r Y Œ?w xY w)úVReturn a list of TLS-validated resolver nameservers extracted from an SVCB
    answer.)ra   r.   Úextendr   rU   ©rY   r*   r   rZ   Úinfos        r   Ú_get_nameservers_syncrg   �   sa   € ð €KÜ*¨6Ó2€EÛˆð	Ø×&Ñ& xÔ0Ø×"Ñ" 4×#3Ñ#3Ô4øð ð Ðøô ò 	Ùð	ús   ”,AÁ	AÁAc              ƒ   óÂ   K  — g }t        | «      }|D ]7  }	 |j                  |«      ƒ d{  –—† r|j                  |j                  «       Œ9 |S 7 Œ## t        $ r Y ŒIw xY w­w)rc   N)ra   r7   rd   r   rU   re   s        r   Ú_get_nameservers_asyncri   �   sm   è ø€ ð €KÜ*¨6Ó2€EÛˆð	Ø×-Ñ-¨hÓ7×7Ð7Ø×"Ñ" 4×#3Ñ#3Ô4øð ð Ðð	 8ùäò 	Ùð	üs8   ‚A–AªA«AÁ
AÁAÁ	AÁAÁAÁA)r#   r"   Úurllib.parser   Údns.asyncbackendr   Údns.inetÚdns.nameÚdns.nameserverÚ	dns.queryÚdns.rdtypes.svcbbaser   Ú	from_textÚ_local_resolver_namer   ra   rg   ri   r;   r   r   Ú<module>rs      sU   ðó
 Û Ý !ã Û Û Û Û Û ð —x‘x×)Ñ)Ð*>Ó?Ð ÷04ñ 04òf1òhór   