§
    ÈtºfÕ%  ã                   óð  — d Z ddlmZmZmZmZmZmZmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZ ddlmZmZ ddlmZ ddlmZ dd	l m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& dd
l'm(Z( ddl)m*Z* ddl+m,Z, erddl-m.Z.  ee#¦  «         G d„ d¦  «        ¦   «         Z/ e0eeg¦  «        Z1 e0eg¦  «        e e0eg¦  «        ee1eiZ2eeeeiZ3eedœZ4edediZ5eeeee6e7eee7e6f         ee7e6e6e6f         f         f                  Z8 ee"¦  «         G d„ d¦  «        ¦   «         Z9 ee"¦  «         G d„ d¦  «        ¦   «         Z: ee%¦  «         G d„ d¦  «        ¦   «         Z; ee&¦  «         G d„ d¦  «        ¦   «         Z<dS )z=
IPv6-aware hostname resolution.

@see: L{IHostnameResolver}
é    )	ÚAF_INETÚAF_INET6Ú	AF_UNSPECÚ
SOCK_DGRAMÚSOCK_STREAMÚAddressFamilyÚ
SocketKindÚgaierrorÚgetaddrinfo)	ÚTYPE_CHECKINGÚCallableÚListÚNoReturnÚOptionalÚSequenceÚTupleÚTypeÚUnion)Úimplementer)Ú
_idnaBytes)ÚIPv4AddressÚIPv6Address)ÚDeferred)ÚDNSLookupError)ÚIAddressÚIHostnameResolverÚIHostResolutionÚIReactorThreadsÚIResolutionReceiverÚIResolverSimple)ÚdeferToThreadPool)ÚLogger)ÚnativeString)Ú
ThreadPoolc                   ó*   — e Zd ZdZdefd„Zdefd„ZdS )ÚHostResolutionz9
    The in-progress resolution of a given hostname.
    Únamec                 ó   — || _         dS )zA
        Create a L{HostResolution} with the given name.
        N)r'   )Úselfr'   s     úY/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/internet/_resolver.pyÚ__init__zHostResolution.__init__?   s   € ð ˆŒ	ˆ	ˆ	ó    Úreturnc                 ó   — t          ¦   «         ‚©N)ÚNotImplementedError©r)   s    r*   ÚcancelzHostResolution.cancelE   s   € å!Ñ#Ô#Ð#r,   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr+   r   r2   © r,   r*   r&   r&   9   sT   € € € € € ðð ð˜Sð ð ð ð ð$˜ð $ð $ð $ð $ð $ð $r,   r&   )ÚTCPÚUDPr9   r:   c                   ó¬   — e Zd ZdZdefdedeeg df                  deee	e	e	ge
f         fd„Z	 	 	 dd
edede	deeee                           dedefd„ZdS )ÚGAIResolverzp
    L{IHostnameResolver} implementation that resolves hostnames by calling
    L{getaddrinfo} in a thread.
    NÚreactorÚgetThreadPoolr$   r   c                 óB   — || _         |€|j        n|| _        || _        dS )a‘  
        Create a L{GAIResolver}.

        @param reactor: the reactor to schedule result-delivery on
        @type reactor: L{IReactorThreads}

        @param getThreadPool: a function to retrieve the thread pool to use for
            scheduling name resolutions.  If not supplied, the use the given
            C{reactor}'s thread pool.
        @type getThreadPool: 0-argument callable returning a
            L{twisted.python.threadpool.ThreadPool}

        @param getaddrinfo: a reference to the L{getaddrinfo} to use - mainly
            parameterized for testing.
        @type getaddrinfo: callable with the same signature as L{getaddrinfo}
        N)Ú_reactorr>   Ú_getThreadPoolÚ_getaddrinfo)r)   r=   r>   r   s       r*   r+   zGAIResolver.__init__t   s3   € ð,  ˆŒà%2Ð%:ˆGÔ!Ð!Àð 	Ôð (ˆÔÐÐr,   r   r9   ÚresolutionReceiverÚhostNameÚ
portNumberÚaddressTypesÚtransportSemanticsr-   c                 óh  ‡ ‡‡‡‡‡— ‰                       ¦   «         }t          |€t          nt          |¦  «                 Št          |         Šdt
          fˆˆˆˆ ˆfd„}t          ‰ j        ||¦  «        }t          ‰¦  «        }	‰ 	                    |	¦  «         |j
        dt
          ddfˆfd„¦   «         }
|	S )á<  
        See L{IHostnameResolver.resolveHostName}

        @param resolutionReceiver: see interface

        @param hostName: see interface

        @param portNumber: see interface

        @param addressTypes: see interface

        @param transportSemantics: see interface

        @return: see interface
        Nr-   c                  óZ   •— 	 ‰                      ‰‰‰ ‰¦  «        S # t          $ r g cY S w xY wr/   )rB   r
   )ÚaddressFamilyrD   rE   r)   Ú
socketTypes   €€€€€r*   Úgetz(GAIResolver.resolveHostName.<locals>.get­   sO   ø€ ðØ×(Ò(Ø˜j¨-¸ñô ð øõ ð ð ð Ø�	�	�	ðøøøs   ƒ ›*©*Úresultc           	      óÊ   •— | D ]J\  }}}}}t           |         }‰                      |t                               |d¦  «        g|¢R Ž ¦  «         ŒK‰                     ¦   «          d S ©Nr9   )Ú	_afToTypeÚaddressResolvedÚ_socktypeToTyperM   ÚresolutionComplete)rN   ÚfamilyÚsocktypeÚprotoÚ	cannonameÚsockaddrÚaddrTyperC   s          €r*   ÚdeliverResultsz3GAIResolver.resolveHostName.<locals>.deliverResults¹   sƒ   ø€ à@Fð ð Ñ<�˜ %¨°HÝ$ VÔ,�Ø"×2Ò2Ø�H�_×0Ò0°¸5ÑAÔAÐMÀHÐMÐMÐMñô ð ð ð ×1Ò1Ñ3Ô3Ð3Ð3Ð3r,   )rA   Ú
_typesToAFÚ_anyÚ	frozensetÚ_transportToSocketÚ_GETADDRINFO_RESULTr!   r@   r&   ÚresolutionBeganÚaddCallback)r)   rC   rD   rE   rF   rG   ÚpoolrM   ÚdÚ
resolutionr[   rK   rL   s   ````       @@r*   ÚresolveHostNamezGAIResolver.resolveHostName�   s÷   øøøøøø€ ð. ×"Ò"Ñ$Ô$ˆÝ"Ø Ð(�DˆD­i¸Ñ.EÔ.Eô
ˆõ (Ð(:Ô;ˆ
ð	Õ(ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	õ ˜dœm¨T°3Ñ7Ô7ˆÝ# HÑ-Ô-ˆ
Ø×*Ò*¨:Ñ6Ô6Ð6à	
Œð	4Õ#6ð 	4¸4ð 	4ð 	4ð 	4ð 	4ð 	4ñ 
Œð	4ð Ðr,   ©r   Nr9   )r3   r4   r5   r6   r   r   r   r   r7   Úintr`   r+   r   r   r   r   r   rf   r8   r,   r*   r<   r<   m   sì   € € € € € ðð ð ?CØKVð	(ð (à ð(ð   ¨¨\Ð)9Ô :Ô;ð(ð ˜s C¨¨cÐ2Ð4GÐGÔHð	(ð (ð (ð (ð@ Ø;?Ø"'ð2ð 2à/ð2ð ð2ð ð	2ð
 ˜x¨¨X¬Ô7Ô8ð2ð  ð2ð 
ð2ð 2ð 2ð 2ð 2ð 2r,   r<   c                   ó~   — e Zd ZdZ e¦   «         Zdefd„Z	 	 	 ddede	d	e
d
eeee                           de	defd„ZdS )ÚSimpleResolverComplexifierzF
    A converter from L{IResolverSimple} to L{IHostnameResolver}.
    ÚsimpleResolverc                 ó   — || _         dS )zW
        Construct a L{SimpleResolverComplexifier} with an L{IResolverSimple}.
        N)Ú_simpleResolver)r)   rk   s     r*   r+   z#SimpleResolverComplexifier.__init__Í   s   € ð  .ˆÔÐÐr,   r   Nr9   rC   rD   rE   rF   rG   r-   c                 óœ  ‡ ‡‡‡— 	 ‰                      d¦  «        }n# t          $ r t          ‰¦  «        }Y nw xY wt          |¦  «        Št	          ‰¦  «        }‰                     |¦  «         ‰ j                             ‰¦  «                             ˆˆfd„¦  «         	                    ˆˆ fd„¦  «                             ˆfd„¦  «         |S )rI   Úasciic                 óL   •— ‰                      t          d| ‰¦  «        ¦  «        S rP   )rR   r   )ÚaddressrE   rC   s    €€r*   ú<lambda>z<SimpleResolverComplexifier.resolveHostName.<locals>.<lambda>ü   s'   ø€ Ð 2× BÒ BÝ  w°
Ñ;Ô;ñ!ô !€ r,   c                 ó‚   •— |                       t          ¦  «        rd n"‰j                             d| ‰‰j        ¬¦  «        S )Nz'while looking up {name} with {resolver})r'   Úresolver)Úcheckr   Ú_logÚfailurerm   )ÚerrorrD   r)   s    €€r*   rr   z<SimpleResolverComplexifier.resolveHostName.<locals>.<lambda>  sI   ø€ Ø—;’;�~Ñ.Ô.ð˜d˜dà”Y×&Ò&Ø=ØØ!Ø!Ô1ð	 'ñ ô ð r,   c                 ó,   •— ‰                      ¦   «         S r/   )rT   )ÚnothingrC   s    €r*   rr   z<SimpleResolverComplexifier.resolveHostName.<locals>.<lambda>
  s   ø€ Ð);×)NÒ)NÑ)PÔ)P€ r,   )
ÚencodeÚUnicodeEncodeErrorr   r#   r&   ra   rm   ÚgetHostByNamerb   Ú
addErrback)r)   rC   rD   rE   rF   rG   ÚhostName_bytesre   s   ````    r*   rf   z*SimpleResolverComplexifier.resolveHostNameÓ   s  øøøø€ ð0	2Ø%Ÿ_š_¨WÑ5Ô5ˆNˆNøÝ!ð 	2ð 	2ð 	2õ
 (¨Ñ1Ô1ˆNˆNˆNð	2øøøõ   Ñ/Ô/ˆå# HÑ-Ô-ˆ
Ø×*Ò*¨:Ñ6Ô6Ð6àÔ ×.Ò.¨xÑ8Ô8ßŠ[ðð ð ð ð ñô ÷
 ŠZðð ð ð ð ñ	ô 	÷ Š[ÐPÐPÐPÐPÑQÔQÐQàÐs   † œ8·8rg   )r3   r4   r5   r6   r"   rv   r    r+   r   r7   rh   r   r   r   r   r   rf   r8   r,   r*   rj   rj   Å   s²   € € € € € ðð ð ˆ6‰8Œ8€Dð. ð .ð .ð .ð .ð Ø;?Ø"'ð9ð 9à/ð9ð ð9ð ð	9ð
 ˜x¨¨X¬Ô7Ô8ð9ð  ð9ð 
ð9ð 9ð 9ð 9ð 9ð 9r,   rj   c                   óB   — e Zd ZdZdd„Zdeddfd„Zd	eddfd
„Zdd„Z	dS )ÚFirstOneWinszT
    An L{IResolutionReceiver} which fires a L{Deferred} with its first result.
    ÚdeferredúDeferred[str]c                 ó"   — || _         d| _        dS )zp
        @param deferred: The L{Deferred} to fire when the first resolution
            result arrives.
        FN)Ú	_deferredÚ	_resolved)r)   r‚   s     r*   r+   zFirstOneWins.__init__  s   € ð
 "ˆŒØˆŒˆˆr,   re   r-   Nc                 ó   — || _         dS )zƒ
        See L{IResolutionReceiver.resolutionBegan}

        @param resolution: See L{IResolutionReceiver.resolutionBegan}
        N)Ú_resolution)r)   re   s     r*   ra   zFirstOneWins.resolutionBegan  s   € ð &ˆÔÐÐr,   rq   c                 ó’   — | j         rdS d| _         t          |t          ¦  «        sJ ‚| j                             |j        ¦  «         dS )z€
        See L{IResolutionReceiver.addressResolved}

        @param address: See L{IResolutionReceiver.addressResolved}
        NT)r†   Ú
isinstancer   r…   ÚcallbackÚhost)r)   rq   s     r*   rR   zFirstOneWins.addressResolved%  sP   € ð Œ>ð 	ØˆFØˆŒõ ˜'¥;Ñ/Ô/Ð/Ð/Ð/ØŒ×Ò ¤Ñ-Ô-Ð-Ð-Ð-r,   c                 óz   — | j         rdS | j                             t          | j        j        ¦  «        ¦  «         dS )z?
        See L{IResolutionReceiver.resolutionComplete}
        N)r†   r…   Úerrbackr   rˆ   r'   r1   s    r*   rT   zFirstOneWins.resolutionComplete3  s=   € ð Œ>ð 	ØˆFØŒ×Ò�~¨dÔ.>Ô.CÑDÔDÑEÔEÐEÐEÐEr,   )r‚   rƒ   )r-   N)
r3   r4   r5   r6   r+   r   ra   r   rR   rT   r8   r,   r*   r�   r�     s�   € € € € € ðð ðð ð ð ð&¨/ð &¸dð &ð &ð &ð &ð. xð .°Dð .ð .ð .ð .ðFð Fð Fð Fð Fð Fr,   r�   c                   ó@   — e Zd ZdZdefd„Zddedee         ddfd	„Z	d
S )ÚComplexResolverSimplifierzE
    A converter from L{IHostnameResolver} to L{IResolverSimple}
    ÚnameResolverc                 ó   — || _         dS )z”
        Create a L{ComplexResolverSimplifier} with an L{IHostnameResolver}.

        @param nameResolver: The L{IHostnameResolver} to use.
        N)Ú_nameResolver)r)   r‘   s     r*   r+   z"ComplexResolverSimplifier.__init__B  s   € ð *ˆÔÐÐr,   r8   r'   Útimeoutsr-   rƒ   c                 ó‚   — t          ¦   «         }| j                             t          |¦  «        |dt          g¦  «         |S )zç
        See L{IResolverSimple.getHostByName}

        @param name: see L{IResolverSimple.getHostByName}

        @param timeouts: see L{IResolverSimple.getHostByName}

        @return: see L{IResolverSimple.getHostByName}
        r   )r   r“   rf   r�   r   )r)   r'   r”   rN   s       r*   r}   z'ComplexResolverSimplifier.getHostByNameJ  s9   € õ #+¡*¤*ˆØÔ×*Ò*­<¸Ñ+?Ô+?ÀÀqÍ;È-ÑXÔXÐXØˆr,   N)r8   )
r3   r4   r5   r6   r   r+   r7   r   rh   r}   r8   r,   r*   r�   r�   <  sl   € € € € € ðð ð*Ð%6ð *ð *ð *ð *ðð  #ð °¸#´ð Èð ð ð ð ð ð r,   r�   N)=r6   Úsocketr   r   r   r   r   r   r	   r
   r   Útypingr   r   r   r   r   r   r   r   r   Úzope.interfacer   Útwisted.internet._idnar   Útwisted.internet.addressr   r   Útwisted.internet.deferr   Útwisted.internet.errorr   Útwisted.internet.interfacesr   r   r   r   r   r    Útwisted.internet.threadsr!   Útwisted.loggerr"   Útwisted.python.compatr#   Útwisted.python.threadpoolr$   r&   r^   r]   r\   rQ   r_   rS   rh   r7   r`   r<   rj   r�   r�   r8   r,   r*   ú<module>r¢      s  ðð
ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 'Ð &Ð &Ð &Ð &Ð &à -Ð -Ð -Ð -Ð -Ð -Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø +Ð +Ð +Ð +Ð +Ð +Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 7Ð 6Ð 6Ð 6Ð 6Ð 6Ø !Ð !Ð !Ð !Ð !Ð !Ø .Ð .Ð .Ð .Ð .Ð .àð 5Ø4Ð4Ð4Ð4Ð4Ð4ð €ˆ_ÑÔð$ð $ð $ð $ð $ñ $ô $ñ Ôð$ð  €y�+˜{Ð+Ñ,Ô,€ð €Iˆ{ˆmÑÔ˜gØ€Iˆ{ˆmÑÔ˜hØˆ)ð€
ð ˆ[Øˆkð€	ð Øðð Ð ð �Ø�ð€ð Ø	ØØØØØˆe�C˜�HŒo˜u S¨#¨s°CÐ%7Ô8Ð8Ô9ð		;ôôÐ ð €ÐÑÔðTð Tð Tð Tð Tñ Tô Tñ  ÔðTðn €ÐÑÔðFð Fð Fð Fð Fñ Fô Fñ  ÔðFðR €Ð Ñ!Ô!ð)Fð )Fð )Fð )Fð )Fñ )Fô )Fñ "Ô!ð)FðX €ˆ_ÑÔðð ð ð ð ñ ô ñ Ôðð ð r,   