Ë
    ûeœi/'  ã                   ó¾  — U d dl Z d dlZd dlZd dlmZmZmZmZmZm	Z	m
Z
mZ ddlmZmZ dZ	 d dlZ eej$                  d«      Zej*                  ej,                  z  Zej0                  ej2                  z  Zej6                  Z eed«      reej:                  z  Z G d	„ d
e«      Z G d„ de«      Z G d„ d«      Z e
eeef      Z!ereneZ"e!e#d<   y# e$ r dZdZY Œ—w xY w)é    N)ÚAnyÚDictÚFinalÚListÚOptionalÚTupleÚTypeÚUnioné   )ÚAbstractResolverÚResolveResult)ÚThreadedResolverÚAsyncResolverÚDefaultResolverÚgetaddrinfoFÚAI_MASKc            
       ó�   — e Zd ZdZddeej                     ddfd„Zdej                  fde
ded	ej                  dee   fd
„Zdd„Zy)r   z�Threaded resolver.

    Uses an Executor for synchronous getaddrinfo() calls.
    concurrent.futures.ThreadPoolExecutor is used by default.
    NÚloopÚreturnc                 ó>   — |xs t        j                  «       | _        y ©N)ÚasyncioÚget_running_loopÚ_loop)Úselfr   s     úe/var/www/html/Whatsapp_Customer_Support_Chatbot/venv/lib/python3.12/site-packages/aiohttp/resolver.pyÚ__init__zThreadedResolver.__init__"   s   € ØÒ7œW×5Ñ5Ó7ˆ�
ó    r   ÚhostÚportÚfamilyc              ƒ   óò  K  — | j                   j                  ||t        j                  |t        ¬«      ƒ d {  –—† }g }|D ]­  \  }}}}}|t        j
                  k(  rTt        |«      dk  rŒ+|d   r7| j                   j                  |t        «      ƒ d {  –—† \  }	}
t        |
«      }n#|d d \  }	}n|t        j                  k(  sJ ‚|\  }	}|j                  t        ||	|||t        ¬«      «       Œ¯ |S 7 Œº7 Œ`­w)N)Útyper!   Úflagsé   é   ©Úhostnamer   r    r!   Úprotor$   )r   r   ÚsocketÚSOCK_STREAMÚ_AI_ADDRCONFIGÚAF_INET6ÚlenÚgetnameinfoÚ_NAME_SOCKET_FLAGSÚintÚAF_INETÚappendr   Ú_NUMERIC_SOCKET_FLAGS)r   r   r    r!   ÚinfosÚhostsÚ_r)   ÚaddressÚresolved_hostÚ_ports              r   ÚresolvezThreadedResolver.resolve%   s  è ø€ ð —j‘j×,Ñ,ØØÜ×#Ñ#ØÜ ð -ó 
÷ 
ˆð &(ˆØ,1ò 	Ñ(ˆF�A�u˜a ØœŸ™Ò(Ü�w“< !Ò#ð Ø˜1’:ð 26·±×1GÑ1GØÔ!3ó2÷ ,Ñ(�M 5ô ˜u›:‘Dà*1°"°1¨+Ñ'�M¡4à¤§¡Ò/Ð/Ð/Ø&-Ñ#�˜tØ�L‰LÜØ!Ø&ØØ!ØÜ/ôõ	ð'	ð< ˆðO
øð&,ús#   ‚6C7¸C3¹AC7ÂC5ÂAC7Ã5C7c              ƒ   ó   K  — y ­wr   © ©r   s    r   ÚclosezThreadedResolver.closeQ   s	   è ø€ Øùs   ‚r   ©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚAbstractEventLoopr   r*   r2   Ústrr1   ÚAddressFamilyr   r   r;   r?   r=   r   r   r   r      sf   „ ññ8˜X g×&?Ñ&?Ñ@ð 8ÈDó 8ð &'ÀvÇ~Á~ñ*Øð*Ø"ð*Ø06×0DÑ0Dð*à	ˆmÑ	ó*ôXr   r   c                   óÜ   — e Zd ZdZ	 ddeej                     dededdfd„Zde	j                  fd	ed
ede	j                  dee   fd„Zde	j                  fd	ed
ededeeeef      fd„Zdd„Zy)r   z9Use the `aiodns` package to make asynchronous DNS lookupsNr   ÚargsÚkwargsr   c                 óp  — t         €t        d«      ‚|xs t        j                  «       | _        d | _        |s|rt        j                  |i |¤Ž| _        y t        «       | _        | j
                  j                  | | j                  «      | _        t        | j                  d«      s| j                  | _        y y )Nz Resolver requires aiodns libraryÚgethostbyname)ÚaiodnsÚRuntimeErrorr   r   r   Ú_managerÚDNSResolverÚ	_resolverÚ_DNSResolverManagerÚget_resolverÚhasattrÚ_resolve_with_queryr;   )r   r   rI   rJ   s       r   r   zAsyncResolver.__init__X   s˜   € ô ˆ>ÜÐAÓBÐBàÒ7œW×5Ñ5Ó7ˆŒ
Ø7;ˆŒñ ‘6Ü#×/Ñ/°Ð@¸Ñ@ˆDŒNØä+Ó-ˆŒØŸ™×3Ñ3°D¸$¿*¹*ÓEˆŒä�t—~‘~ Ô7à×3Ñ3ˆD�Lð 8r   r   r   r    r!   c              ƒ   óv  K  — 	 | j                   j                  ||t        j                  |t        ¬«      ƒ d {  –—† }g }|j                  D ]ú  }|j                  }	|j                  }|t        j                  k(  r{t        |	«      dkD  rS|	d   rN| j                   j                  |	d   j!                  d«      g|	dd  ¢­t"        «      ƒ d {  –—† }
|
j$                  }nH|	d   j!                  d«      }|	d   }n.|t        j&                  k(  sJ ‚|	d   j!                  d«      }|	d   }|j)                  t+        ||||dt,        ¬«      «       Œü |st        d d«      ‚|S 7 �Œ # t
        j                  j                  $ r;}t        |j                  «      dk\  r|j                  d   nd}t        d |«      |‚d }~ww xY w7 Œí­w)N)r    r#   r!   r$   r   úDNS lookup failedr%   r   Úasciir'   )rQ   r   r*   r+   r,   rM   ÚerrorÚDNSErrorr.   rI   ÚOSErrorÚnodesÚaddrr!   r-   r/   Údecoder0   Únoder2   r3   r   r4   )r   r   r    r!   ÚrespÚexcÚmsgr6   r_   r8   Úresultr9   s               r   r;   zAsyncResolver.resolveq   s°  è ø€ ð
	.ØŸ™×3Ñ3ØØÜ×'Ñ'ØÜ$ð 4ó ÷ ˆDð &(ˆØ—J‘Jò 	ˆDØMQÏYÉYˆGØ—[‘[ˆFØœŸ™Ò(Ü�w“< !Ò#¨°ª
ð $(§>¡>×#=Ñ#=Ø  ™×*Ñ*¨7Ó3ÐB°g¸a¸b°kÑBÜ*ó$÷ �Fð %+§K¡K‘Mà$+¨A¡J×$5Ñ$5°gÓ$>�MØ" 1™:‘Dà¤§¡Ò/Ð/Ð/Ø '¨¡
× 1Ñ 1°'Ó :�Ø˜q‘z�Ø�L‰LÜØ!Ø&ØØ!ØÜ/ôõ	ð)	ñ> Ü˜$Ð 3Ó4Ð4àˆð[úô �|‰|×$Ñ$ò 	.Ü!$ S§X¡X£°!Ò!3�#—(‘(˜1’+Ð9LˆCÜ˜$ Ó$¨#Ð-ûð	.úðúsE   ‚F9„5E ¹EºE ¾BF9Ã	F7Ã
BF9ÅE ÅF4Å96F/Æ/F4Æ4F9c           
   ƒ   óÎ  K  — |t         j                  k(  rdnd}	 | j                  j                  ||«      ƒ d {  –—† }g }|D ]2  }	|j                  ||	j                  ||dt         j                  dœ«       Œ4 |st        d d«      ‚|S 7 ŒM# t        j
                  j                  $ r;}t        |j                  «      dk\  r|j                  d   nd}t        d |«      |‚d }~ww xY w­w)NÚAAAAÚAr   rW   r   r'   )r*   r-   rQ   ÚqueryrM   rY   rZ   r.   rI   r[   r3   r   ÚAI_NUMERICHOST)
r   r   r    r!   Úqtyper`   ra   rb   r6   Úrrs
             r   rU   z!AsyncResolver._resolve_with_query¤   sß   è ø€ ð "(¬6¯?©?Ò!:‘vÀˆð	.ØŸ™×-Ñ-¨d°EÓ:×:ˆDð
 ˆØò 
	ˆBØ�L‰Là $ØŸG™GØ Ø$ØÜ#×2Ñ2ñõ	ð
	ñ Ü˜$Ð 3Ó4Ð4àˆð+ ;ùÜ�|‰|×$Ñ$ò 	.Ü!$ S§X¡X£°!Ò!3�#—(‘(˜1’+Ð9LˆCÜ˜$ Ó$¨#Ð-ûð	.üs8   ‚C%›B
 ºB»B
 ¿A	C%ÂB
 Â
C"Â'6CÃC"Ã"C%c              ƒ   óè   K  — | j                   r5| j                   j                  | | j                  «       d | _         d | _        y | j                  �| j                  j	                  «        d | _        y ­wr   )rO   Úrelease_resolverr   rQ   Úcancelr>   s    r   r?   zAsyncResolver.closeÁ   sW   è ø€ Ø�=Š=à�M‰M×*Ñ*¨4°·±Ô<Ø ˆDŒMØ!ˆDŒNØà�>‰>Ð%Ø�N‰N×!Ñ!Ô#Øˆ�ùs   ‚A0A2r   r@   )rA   rB   rC   rD   r   r   rE   r   r   r*   r2   rF   r1   rG   r   r   r;   r   rU   r?   r=   r   r   r   r   U   s¾   „ ÙCð 59ñ4à�w×0Ñ0Ñ1ð4ð ð4ð ð	4ð
 
ó4ð4 &'ÀvÇ~Á~ñ1Øð1Ø"ð1Ø06×0DÑ0Dð1à	ˆmÑ	ó1ðh &'°f·n±nñØðØ"ðØ03ðà	ˆd�3˜�8‰nÑ	óô:
r   r   c                   ó’   ‡ — e Zd ZU dZdZed    ed<   dˆ fd„Zdd„Zddd	e	j                  dd
fd„Zddd	e	j                  ddfd„Zˆ xZS )rR   z£Manager for aiodns.DNSResolver objects.

    This class manages shared aiodns.DNSResolver instances
    with no custom arguments across different event loops.
    NÚ	_instancer   c                 ó�   •— | j                   €.t        ‰| �	  | «      | _         | j                   j                  «        | j                   S r   )ro   ÚsuperÚ__new__Ú_init)ÚclsÚ	__class__s    €r   rr   z_DNSResolverManager.__new__×   s7   ø€ Ø�=‰=Ð Ü!™G™O¨CÓ0ˆCŒMØ�M‰M×ÑÔ!Ø�}‰}Ðr   c                 ó6   — t        j                  «       | _        y r   )ÚweakrefÚWeakKeyDictionaryÚ
_loop_datar>   s    r   rs   z_DNSResolverManager._initÝ   s   € ô
 ×%Ñ%Ó'ð 	�r   Úclientr   r   zaiodns.DNSResolverc                 óà   — || j                   vr<t        j                  |¬«      }t        j                  «       }||f| j                   |<   n| j                   |   \  }}|j                  |«       |S )a&  Get or create the shared aiodns.DNSResolver instance for a specific event loop.

        Args:
            client: The AsyncResolver instance requesting the resolver.
                   This is required to track resolver usage.
            loop: The event loop to use for the resolver.
        )r   )ry   rM   rP   rw   ÚWeakSetÚadd)r   rz   r   ÚresolverÚ
client_sets        r   rS   z _DNSResolverManager.get_resolverä   sg   € ð �t—‘Ñ&Ü×)Ñ)¨tÔ4ˆHÜ;B¿?¹?Ó;LˆJØ%-¨zÐ$:ˆD�O‰O˜DÒ!ð $(§?¡?°4Ñ#8Ñ ˆH�jð 	�‰�vÔØˆr   c                 ó°   — | j                   j                  |«      }|€y|\  }}|j                  |«       |s |�|j                  «        | j                   |= yy)zÎRelease the resolver for an AsyncResolver client when it's closed.

        Args:
            client: The AsyncResolver instance to release.
            loop: The event loop the resolver was using.
        N)ry   ÚgetÚdiscardrm   )r   rz   r   Úcurrent_loop_datar~   r   s         r   rl   z$_DNSResolverManager.release_resolverû   s^   € ð !ŸO™O×/Ñ/°Ó5ÐØÐ$ØØ0Ñˆ�*Ø×Ñ˜6Ô"áØÐ#Ø—‘Ô!Ø—‘ Ñ%ð r   )r   rR   r@   )rA   rB   rC   rD   ro   r   Ú__annotations__rr   rs   r   rE   rS   rl   Ú__classcell__)ru   s   @r   rR   rR   Î   sj   ø… ñð 26€IˆxÐ-Ñ.Ó5õó(ðØ%ðØ-4×-FÑ-Fðà	óð.&Ø%ð&Ø-4×-FÑ-Fð&à	÷&r   rR   r   )$r   r*   rw   Útypingr   r   r   r   r   r   r	   r
   Úabcr   r   Ú__all__rM   rT   rP   Úaiodns_defaultÚImportErrorrh   ÚAI_NUMERICSERVr4   ÚNI_NUMERICHOSTÚNI_NUMERICSERVr0   ÚAI_ADDRCONFIGr,   r   r   r   rR   Ú_DefaultTyper   r„   r=   r   r   ú<module>r�      sù   ðÜ Û Û ß G× GÓ Gç 0à
B€ðÛá˜V×/Ñ/°Ó?€Nð ×-Ñ-°×0EÑ0EÑEÐ Ø×*Ñ*¨V×-BÑ-BÑBÐ Ø×%Ñ%€Ù
ˆ6�9ÔØ�f—n‘nÑ$€Nô7Ð'ô 7ôtvÐ$ô v÷r@&ñ @&ðF �E˜-Ð)9Ð9Ñ:Ñ;€Ù1?¡ÐEU€�Ô UøðG ò Ø€FØ‚Nðús   ­C Ã	CÃC