§
    ~Štj{*  ã                   ó¶  — U d dl Z d dlZd dlZd dlZd dlmZmZmZ ddlm	Z	m
Z
 dZ	 d dlZ eej        d¦  «        Zn# e$ r dZdZY nw xY wej        ej        z  Zej        ej        z  Zej        Z eed¦  «        r
eej        z  Zej        d	k    Zd
edefd„Z G d„ de	¦  «        Z G d„ de	¦  «        Z  G d„ d¦  «        Z!e"e ez           Z#ere neZ$e#e%d<   dS )é    N)ÚAnyÚFinalÚOptionalé   )ÚAbstractResolverÚResolveResult)ÚThreadedResolverÚAsyncResolverÚDefaultResolverÚgetaddrinfoFÚAI_MASKÚwin32ÚhostÚreturnc                 óf   — t           o*|                      d¦  «                             ¦   «         dk    S )Nú.Ú	localhost)Ú_IS_WINDOWSÚrstripÚcasefold)r   s    úN/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/aiohttp/resolver.pyÚ_is_windows_localhostr      s*   € ÝÐE˜4Ÿ;š; sÑ+Ô+×4Ò4Ñ6Ô6¸+ÒEÐEó    c            
       óz   — e Zd ZdZddej        dz  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dS )r	   z�Threaded resolver.

    Uses an Executor for synchronous getaddrinfo() calls.
    concurrent.futures.ThreadPoolExecutor is used by default.
    NÚloopr   c                 ó:   — |pt          j        ¦   «         | _        d S ©N)ÚasyncioÚget_running_loopÚ_loop)Úselfr   s     r   Ú__init__zThreadedResolver.__init__(   s   € ØÐ7�WÔ5Ñ7Ô7ˆŒ
ˆ
ˆ
r   r   r   ÚportÚfamilyc              ƒ   ó¦  K  — 	 | j                              ||t          j        |t          ¬¦  «        ƒ d {V —†}nT# t          j        $ rB t          |¦  «        s‚ | j                              ||t          j        |d¬¦  «        ƒ d {V —†}Y nw xY wg }|D ]¿\  }}}}}|t          j        k    rct          |¦  «        dk     rŒ,|d         r9| j          	                    |t          ¦  «        ƒ d {V —†\  }	}
t          |
¦  «        }n%|d d…         \  }	}n|t          j        k    sJ ‚|\  }	}|                     t          ||	|||t          ¬¦  «        ¦  «         ŒÀ|S )N)Útyper$   Úflagsr   é   é   ©Úhostnamer   r#   r$   Úprotor'   )r    r   ÚsocketÚSOCK_STREAMÚ_AI_ADDRCONFIGÚgaierrorr   Ú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ó  è è € ð	Øœ*×0Ò0ØØÝÔ'ØÝ$ð 1ñ ô ð ð ð ð ð ð ˆEˆEøõ Œð 		ð 		ð 		Ý(¨Ñ.Ô.ð ØØœ*×0Ò0ØØÝÔ'ØØð 1ñ ô ð ð ð ð ð ð ˆEˆEˆEð		øøøð &(ˆØ,1ð 	ð 	Ñ(ˆF�A�u˜a Ø�œÒ(Ð(Ý�w‘<”< !Ò#Ð#ð Ø˜1”:ð 	6ð 26´×1GÒ1GØÕ!3ñ2ô 2ð ,ð ,ð ,ð ,ð ,ð ,Ñ(�M 5õ ˜u™:œ:�D�Dà*1°"°1°"¬+Ñ'�M 4 4à¥¤Ò/Ð/Ð/Ð/Ø&-Ñ#�˜tØ�LŠLÝØ!Ø&ØØ!ØÝ/ðñ ô ñ	ô 	ð 	ð 	ð ˆs   „49 ¹AB
Â	B
c              ƒ   ó
   K  — d S r   © ©r!   s    r   ÚclosezThreadedResolver.closeb   s   è è € Øˆr   r   ©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚAbstractEventLoopr"   r-   r6   Ústrr5   ÚAddressFamilyÚlistr   r?   rC   rA   r   r   r	   r	   !   s¬   € € € € € ðð ð8ð 8˜WÔ6¸Ñ=ð 8Èð 8ð 8ð 8ð 8ð &'ÀvÄ~ð5ð 5Øð5Ø"ð5Ø06Ô0Dð5à	ˆmÔ	ð5ð 5ð 5ð 5ðnð ð ð ð ð r   r	   c                   óÈ   — e Zd ZdZ	 ddej        dz  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dS )r
   z9Use the `aiodns` package to make asynchronous DNS lookupsNr   ÚargsÚkwargsr   c                 ób  — t           €t          d¦  «        ‚|pt          j        ¦   «         | _        d | _        |s|rt          j        |i |¤Ž| _        d S t          ¦   «         | _        | j         	                    | | j        ¦  «        | _        t          | j        d¦  «        s| j        | _        d S d S )Nz Resolver requires aiodns libraryÚgethostbyname)ÚaiodnsÚRuntimeErrorr   r   r    Ú_managerÚDNSResolverÚ	_resolverÚ_DNSResolverManagerÚget_resolverÚhasattrÚ_resolve_with_queryr?   )r!   r   rN   rO   s       r   r"   zAsyncResolver.__init__i   sµ   € õ ˆ>ÝÐAÑBÔBÐBàÐ7�WÔ5Ñ7Ô7ˆŒ
Ø48ˆŒð ð 	�6ð 	Ý#Ô/°Ð@¸Ð@Ð@ˆDŒNØˆFå+Ñ-Ô-ˆŒØœ×3Ò3°D¸$¼*ÑEÔEˆŒå�t”~ Ñ7Ô7ð 	4àÔ3ˆDŒLˆLˆLð	4ð 	4r   r   r   r#   r$   c              ƒ   óH  K  — 	 	 | j                              ||t          j        |t          ¬¦  «        ƒ d {V —†}nY# t
          j        j        $ rB t          |¦  «        s‚ | j                              ||t          j        |d¬¦  «        ƒ d {V —†}Y nw xY wnT# t
          j        j        $ r=}t          |j
        ¦  «        dk    r|j
        d         nd}t          d |¦  «        |‚d }~ww xY wg }|j        D �]}|j        }	|j        t          j        k    r’t          |	¦  «        dk    r[|	d         rS| j                              |	d                              d¦  «        g|	dd …         ¢R t$          ¦  «        ƒ d {V —†}
|
j        }n^|	d                              d¦  «        }|	d         }n:|j        t          j        k    sJ ‚|	d                              d¦  «        }|	d         }|                     t-          ||||j        dt.          ¬¦  «        ¦  «         �Œ|st          d d¦  «        ‚|S )N)r#   r&   r$   r'   r   r   úDNS lookup failedr(   Úasciir*   )rV   r   r-   r.   r/   rR   ÚerrorÚDNSErrorr   r2   rN   ÚOSErrorÚnodesÚaddrr$   r1   r3   Údecoder4   Únoder6   r7   r   r8   )r!   r   r#   r$   ÚrespÚexcÚmsgr:   rd   r<   Úresultr=   s               r   r?   zAsyncResolver.resolve‚   s«  è è € ð	.ðØ!œ^×7Ò7ØØÝÔ+Ø!Ý(ð 8ñ ô ð ð ð ð ð ð ��øõ ”<Ô(ð 	ð 	ð 	Ý,¨TÑ2Ô2ð ØØ!œ^×7Ò7ØØÝÔ+Ø!Øð 8ñ ô ð ð ð ð ð ð ���ð	øøøøøõ Œ|Ô$ð 	.ð 	.ð 	.Ý!$ S¤X¡¤°!Ò!3Ð!3�#”(˜1”+�+Ð9LˆCÝ˜$ Ñ$Ô$¨#Ð-øøøøð	.øøøð &(ˆØ”Jð 	ñ 	ˆDØGKÄyˆGØŒ{�fœoÒ-Ð-Ý�w‘<”< !Ò#Ð#¨°¬
Ð#ð $(¤>×#=Ò#=Ø  œ×*Ò*¨7Ñ3Ô3ÐB°g¸a¸b¸b´kÐBÐBÝ*ñ$ô $ð ð ð ð ð ð �Fð %+¤K�M�Mà$+¨A¤J×$5Ò$5°gÑ$>Ô$>�MØ" 1œ:�D�Dà”{¥f¤nÒ4Ð4Ð4Ð4Ø '¨¤
× 1Ò 1°'Ñ :Ô :�Ø˜q”z�Ø�LŠLÝØ!Ø&ØØœ;ØÝ/ðñ ô ñ	ô 	ð 	ñ 	ð ð 	5Ý˜$Ð 3Ñ4Ô4Ð4àˆs3   …4: ¹B ºABÂB ÂBÂB ÂC%Â(8C Ã C%c           
   ƒ   ó¨  K  — |t           j        k    rdnd}	 | j                             ||¦  «        ƒ d {V —†}nT# t          j        j        $ r=}t          |j        ¦  «        dk    r|j        d         nd}t          d |¦  «        |‚d }~ww xY wg }|D ]-}	| 
                    ||	j        ||dt           j        dœ¦  «         Œ.|st          d d¦  «        ‚|S )NÚAAAAÚAr   r\   r   r*   )r-   r1   rV   ÚqueryrR   r^   r_   r2   rN   r`   r7   r   ÚAI_NUMERICHOST)
r!   r   r#   r$   Úqtypere   rf   rg   r:   Úrrs
             r   rZ   z!AsyncResolver._resolve_with_query¿   s  è è € ð "(­6¬?Ò!:Ð!:�v�vÀˆð	.Øœ×-Ò-¨d°EÑ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:ˆDˆDøÝŒ|Ô$ð 	.ð 	.ð 	.Ý!$ S¤X¡¤°!Ò!3Ð!3�#”(˜1”+�+Ð9LˆCÝ˜$ Ñ$Ô$¨#Ð-øøøøð	.øøøð ˆØð 
	ð 
	ˆBØ�LŠLà $ØœGØ Ø$ØÝ#Ô2ðð ñ	ô 	ð 	ð 	ð ð 	5Ý˜$Ð 3Ñ4Ô4Ð4àˆs   ˜!: ºBÁ8BÂBc              ƒ   óÆ   K  — | j         r0| j                              | | j        ¦  «         d | _         d | _        d S | j        �| j                             ¦   «          d | _        d S r   )rT   Úrelease_resolverr    rV   ÚcancelrB   s    r   rC   zAsyncResolver.closeÜ   sd   è è € ØŒ=ð 	àŒM×*Ò*¨4°´Ñ<Ô<Ð<Ø ˆDŒMØ!ˆDŒNØˆFàŒ>Ð%ØŒN×!Ò!Ñ#Ô#Ð#ØˆŒˆˆr   r   rD   )rE   rF   rG   rH   r   rI   r   r"   r-   r6   rJ   r5   rK   rL   r   r?   ÚdictrZ   rC   rA   r   r   r
   r
   f   s  € € € € € ØCÐCð 26ð4ð 4àÔ'¨$Ñ.ð4ð ð4ð ð	4ð
 
ð4ð 4ð 4ð 4ð4 &'ÀvÄ~ð;ð ;Øð;Ø"ð;Ø06Ô0Dð;à	ˆmÔ	ð;ð ;ð ;ð ;ð| &'°f´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 )rW   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         S r   )ru   ÚsuperÚ__new__Ú_init)ÚclsÚ	__class__s    €r   rx   z_DNSResolverManager.__new__ò   s>   ø€ ØŒ=Ð Ý!™GœGŸOšO¨CÑ0Ô0ˆCŒMØŒM×ÒÑ!Ô!Ð!ØŒ}Ðr   c                 ó6   — t          j        ¦   «         | _        d S r   )ÚweakrefÚWeakKeyDictionaryÚ
_loop_datarB   s    r   ry   z_DNSResolverManager._initø   s   € õ
 Ô%Ñ'Ô'ð 	Œˆˆr   Úclientr
   r   zaiodns.DNSResolverc                 óÌ   — || j         vr5t          j        |¬¦  «        }t          j        ¦   «         }||f| j         |<   n| 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   )r   rR   rU   r}   ÚWeakSetÚadd)r!   r€   r   ÚresolverÚ
client_sets        r   rX   z _DNSResolverManager.get_resolverÿ   sq   € ð �t”Ð&Ð&ÝÔ)¨tÐ4Ñ4Ô4ˆHÝ9@¼Ñ9JÔ9JˆJØ%-¨zÐ$:ˆDŒO˜DÑ!Ð!ð $(¤?°4Ô#8Ñ ˆH�jð 	�Š�vÑÔÐØˆr   c                 óº   — | j                              |¦  «        }|€dS |\  }}|                     |¦  «         |s |�|                     ¦   «          | j         |= dS dS )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)r   ÚgetÚdiscardrr   )r!   r€   r   Úcurrent_loop_datar„   r…   s         r   rq   z$_DNSResolverManager.release_resolver  s{   € ð !œO×/Ò/°Ñ5Ô5ÐØÐ$ØˆFØ0Ñˆ�*Ø×Ò˜6Ñ"Ô"Ð"àð 	&ØÐ#Ø—’Ñ!Ô!Ð!Ø” Ð%Ð%Ð%ð	&ð 	&r   )r   rW   rD   )rE   rF   rG   rH   ru   r   Ú__annotations__rx   ry   r   rI   rX   rq   Ú__classcell__)r{   s   @r   rW   rW   é   sÓ   ø€ € € € € € ðð ð 26€IˆxÐ-Ô.Ð5Ð5Ñ5ðð ð ð ð ð ð(ð (ð (ð (ðØ%ðØ-4Ô-Fðà	ðð ð ð ð.&Ø%ð&Ø-4Ô-Fð&à	ð&ð &ð &ð &ð &ð &ð &ð &r   rW   r   )&r   r-   Úsysr}   Útypingr   r   r   Úabcr   r   Ú__all__rR   rY   rU   Úaiodns_defaultÚImportErrorrm   ÚAI_NUMERICSERVr8   ÚNI_NUMERICHOSTÚNI_NUMERICSERVr4   ÚAI_ADDRCONFIGr/   r   Úplatformr   rJ   Úboolr   r	   r
   rW   r&   Ú_DefaultTyper   rŠ   rA   r   r   ú<module>r™      sþ  ðØ €€€€Ø €€€Ø 
€
€
€
Ø €€€Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0à
B€ðØ€M€M€Mà�W˜VÔ/°Ñ?Ô?€N€NøØð ð ð Ø€FØ€N€N€Nðøøøð
 Ô-°Ô0EÑEÐ ØÔ*¨VÔ-BÑBÐ ØÔ%€Ø
€7ˆ6�9ÑÔð %Ø�f”nÑ$€NØŒl˜gÒ%€ðF ð F¨ð Fð Fð Fð FðBð Bð Bð Bð BÐ'ñ Bô Bð BðJ@ð @ð @ð @ð @Ð$ñ @ô @ð @ðF@&ð @&ð @&ð @&ð @&ñ @&ô @&ð @&ðF �MÐ$4Ñ4Ô5€Ø1?Ð U  ÐEU€�Ð UÐ UÑ UÐ UÐ Us   §= ½	A	ÁA	