Ë
    Bü´j  ã                   óú   — d dl Z d dlZd dlmZmZ d dlmZmZ ddlm	Z	 	 ddgZ
ded	efd
„Zded	efd„Zded	efd„Zdeded	efd„Zdedeee      d	efd„Z	 	 	 	 	 ddededee   dedee   deee      ded	efd„Zy)é    N)ÚOptionalÚUnion)ÚunquoteÚurlparseé   )ÚWebSocketProxyExceptionÚ	parse_urlÚget_proxy_infoÚurlÚreturnc                 óª  — d| vrt        d«      ‚| j                  dd«      \  }} t        | d¬«      }|j                  r|j                  }nt        d«      ‚d}|j                  r|j                  }d}|d	k(  r|sd
}n|dk(  rd}|sd}nt        d|z  «      ‚|j
                  r|j
                  }nd}|j                  r|d|j                  › �z  }||||fS )z®
    parse url and the result is tuple of
    (hostname, port, resource path and the flag of secure mode)

    Parameters
    ----------
    url: str
        url string.
    ú:zurl is invalidr   Úhttp)Úschemezhostname is invalidr   FÚwséP   ÚwssTi»  zscheme %s is invalidú/ú?)Ú
ValueErrorÚsplitr   ÚhostnameÚportÚpathÚquery)r   r   Úparsedr   r   Ú	is_secureÚresources          úL/root/workspace/ytshorts/venv/lib/python3.12/site-packages/websocket/_url.pyr	   r	      sá   € ð �#�~ÜÐ)Ó*Ð*à—)‘)˜C Ó#�K€FˆCä�c &Ô)€FØ‡‚Ø—?‘?‰äÐ.Ó/Ð/Ø€DØ‡{‚{Ø�{‰{ˆà€IØ�‚~ÙØ‰DØ	�5ŠØˆ	ÙØ‰DäÐ/°&Ñ8Ó9Ð9à‡{‚{Ø—;‘;‰àˆà‡|‚|Ø�a˜Ÿ™�~Ð&Ñ&ˆà�T˜8 YÐ.Ð.ó    Úaddrc                 ó„   — t        | t        «      st        d«      ‚	 t        j                  | «       y# t
        $ r Y yw xY w)Nz'_is_ip_address() argument 1 must be strTF)Ú
isinstanceÚstrÚ	TypeErrorÚ	ipaddressÚ
ip_addressr   )r!   s    r   Ú_is_ip_addressr(   K   sD   € Ü�dœCÔ ÜÐAÓBÐBðÜ×Ñ˜TÔ"ð øô ò Ùðús   �3 ³	?¾?r   c                 óN   — 	 t        j                  | «       y# t        $ r Y yw xY w)NTF)r&   Ú
ip_networkr   )r   s    r   Ú_is_subnet_addressr+   V   s.   € ðÜ×Ñ˜XÔ&ð øô ò Ùðús   ‚ ˜	$£$ÚipÚnetc                 ó¤   — 	 t        j                  | «      }t        j                  |«      }|j                  |«      S # t        t        f$ r Y yw xY w)NF)r&   r*   Ú	subnet_ofr%   r   )r,   r-   Úip_netÚ
target_nets       r   Ú_is_address_in_networkr2   _   sY   € ð	ä× Ñ  Ó$ð 	ô × Ñ  Ó%ð 	ð ×Ñ 
Ó+Ð+øÜ”zÐ"ò Ùðús   ‚:= ½AÁAÚno_proxyc           	      ó  — |sat         j                  j                  dt         j                  j                  dd«      «      j                  dd«      x}r|j	                  d«      }|sg }d|v ry| |v ryt        | «      r.t        |D �cg c]  }t        |«      rt        | |«      ‘Œ c}«      S |D ]S  }|j                  d«      r%|j                  d«      }| j                  |«      sŒ7 y| |k(  s| j                  d|z   «      sŒS y y	c c}w )
Nr3   ÚNO_PROXYÚ ú ú,Ú*Tú.F)ÚosÚenvironÚgetÚreplacer   r(   Úanyr+   r2   Ú
startswithÚlstripÚendswith)r   r3   ÚvÚsubnetÚdomainÚstripped_domains         r   Ú_is_no_proxy_hostrG   l   s  € ÙÜ—
‘
—‘˜z¬2¯:©:¯>©>¸*ÀbÓ+IÓJ×RÑRØ�ó
ð 
ˆ1ð 
ð —w‘w˜s“|ˆHáØˆà
ˆh�ØØ�8ÑØÜ�hÔÜð 'öàÜ% fÔ-ô ' x°Õ8òó
ð 	
ð ò 
ˆØ×Ñ˜SÔ!à$Ÿm™m¨CÓ0ˆOØ× Ñ  Õ1Ùð ˜6Ò! X×%6Ñ%6°s¸V±|Õ%DÙð
ð ùò's   ÂDr   Ú
proxy_hostÚ
proxy_portÚ
proxy_authÚ
proxy_typec                 óÞ  — t        | |«      ry|r|st        d«      ‚|}|}|||fS |rdnd}	t        j                  j	                  |	t        j                  j	                  |	j                  «       d«      «      j                  dd«      }
|
rdt        |
«      }|j                  r2t        |j                  xs d«      t        |j                  xs d«      fnd}|j                  |j                  |fS y)a½  
    Try to retrieve proxy host and port from environment
    if not provided in options.
    Result is (proxy_host, proxy_port, proxy_auth).
    proxy_auth is tuple of username and password
    of proxy authentication information.

    Parameters
    ----------
    hostname: str
        Websocket server name.
    is_secure: bool
        Is the connection secure? (wss) looks for "https_proxy" in env
        instead of "http_proxy"
    proxy_host: str
        http proxy host name.
    proxy_port: str or int
        http proxy port. Required when proxy_host is set.
    no_proxy: list
        Whitelisted host names that don't use the proxy.
    proxy_auth: tuple
        HTTP proxy auth information. Tuple of username and password. Default is None.
    proxy_type: str
        Specify the proxy protocol (http, socks4, socks4a, socks5, socks5h). Default is "http".
        Use socks4a or socks5h if you want to send DNS requests through the proxy.
    )Nr   Nz+Cannot use port 0 when proxy_host specifiedÚhttps_proxyÚ
http_proxyr6   r7   N)rG   r   r;   r<   r=   Úupperr>   r   Úusernamer   Úpasswordr   r   )r   r   rH   rI   rJ   r3   rK   r   ÚauthÚenv_keyÚvalueÚproxys               r   r
   r
   ’   sÜ   € ôF ˜ 8Ô,ØáÙÜ)Ð*WÓXÐXØˆØˆØ˜4 Ð%Ð%á(‰m¨l€GÜ�J‰J�N‰N˜7¤B§J¡J§N¡N°7·=±=³?ÀBÓ$GÓH×PÑPØˆRó€Eñ Ü˜“ˆð �~Š~ô �U—^‘^Ò) rÓ*¬G°E·N±NÒ4HÀbÓ,IÑJàð 	ð
 �~‰~˜uŸz™z¨4Ð/Ð/àr    )Nr   NNr   )r&   r;   Útypingr   r   Úurllib.parser   r   Ú_exceptionsr   Ú__all__r$   Útupler	   Úboolr(   r+   r2   ÚlistrG   Úintr
   © r    r   ú<module>r_      s  ðÛ Û 	ß "ß *Ý 0ðð& Ð(Ð
)€ð+/�3ð +/˜5ó +/ð\˜ð  ó ð ð ¨ó ð
˜sð 
¨ð 
°ó 
ð# ð #¨x¸¸S¹	Ñ/Bð #Àtó #ðR !%ØØ"&Ø$(Øñ:Øð:àð:ð ˜‘ð:ð ð	:ð
 ˜‘ð:ð �t˜C‘yÑ!ð:ð ð:ð ô:r    