
    Jii                        S SK Jr  S SKrS SKrS SKrSSKJr  SSKJ	r	  SSK
JrJr  SSKJr  SSKJrJr  / S	Qr\R&                   " S
 S5      5       rSS jrSS jr\4       SS jjrg)    )annotationsN   )Headers)InvalidProxy)build_authorization_basic
build_host)
USER_AGENT)DELIMSWebSocketURI)	get_proxyparse_proxyProxyc                  h    \ rS rSr% SrS\S'   S\S'   S\S'   SrS	\S
'   SrS	\S'   \SS j5       r	Sr
g)r      a  
Proxy address.

Attributes:
    scheme: ``"socks5h"``, ``"socks5"``, ``"socks4a"``, ``"socks4"``,
        ``"https"``, or ``"http"``.
    host: Normalized to lower case.
    port: Always set even if it's the default.
    username: Available when the proxy address contains `User Information`_.
    password: Available when the proxy address contains `User Information`_.

.. _User Information: https://datatracker.ietf.org/doc/html/rfc3986#section-3.2.1

strschemehostintportN
str | Noneusernamepasswordc                l    U R                   c  g U R                  c   eU R                   U R                  4$ )N)r   r   )selfs    R/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/websockets/proxy.py	user_infoProxy.user_info(   s2    == }}(((t}}--     )returnztuple[str, str] | None)__name__
__module____qualname____firstlineno____doc____annotations__r   r   propertyr   __static_attributes__r   r   r   r   r      s>     K
I
IHjHj. .r   r   c                t   [         R                  R                  U 5      nUR                  S;  a  [	        U SUR                   S35      eUR
                  c  [	        U S5      eUR                  S;  a  [	        U S5      eUR                  S:w  a  [	        U S5      eUR                  S:w  a  [	        U S	5      eUR                  nUR
                  nUR                  =(       d    UR                  S
:X  a  SOSnUR                  nUR                  nUb  Uc  [	        U S5      e U R                  S5        [#        X#XEU5      $ ! [         an    UR                  S5      R                  5       nUbI  Uc   e[         R                  R                  U[         S9n[         R                  R                  U[         S9n Nf = f)z
Parse and validate a proxy.

Args:
    proxy: proxy.

Returns:
    Parsed proxy.

Raises:
    InvalidProxy: If ``proxy`` isn't a valid proxy.

)socks5hsocks5socks4asocks4httpshttpzscheme z isn't supportedzhostname isn't provided) /zpath is meaninglessr0   zquery is meaninglesszfragment is meaninglessr.   i  P   z"username provided without passwordasciiidna)safe)urllibparseurlparser   r   hostnamepathqueryfragmentr   r   r   encodeUnicodeEncodeErrordecodequoter
   r   )proxyparsedr   r   r   r   r   s          r   r   r   0   s    \\""5)F}}WW5GFMM?:J"KLL5";<<{{)#5"788||r5"899"5";<<]]F??D;;C&--7":3DHH  05"FGG	AW tx88  A {{6"))+'''||))()@H||))()@HAs   !D? ?A5F76F7c                z   [         R                  R                  U R                   SU R                   35      (       a  g[         R                  R                  5       nU R                  (       a  / SQnO/ SQnU H?  nUR                  U5      nUc  M  US:X  a  UR                  S5      (       a  SUSS -   nUs  $    g)	zM
Return the proxy to use for connecting to the given WebSocket URI, if any.

:N)wsssocksr.   )wsrF   r.   r/   rF   zhttp://z
socks5h://   )	r6   requestproxy_bypassr   r   
getproxiessecureget
startswith)uriproxiesschemesr   rA   s        r   r   r   b   s    
 ~~""chhZq
#;<< nn'')G
zz+2F# U%5%5i%@%@$uQRy0L  r   c                   [        UR                  UR                  UR                  SS9n[	        5       n[        UR                  UR                  UR                  5      US'   Ub  X$S'   U R
                  b2  U R                  c   e[        U R
                  U R                  5      US'   SU S3R                  5       UR                  5       -   $ )NT)always_include_portHostz
User-AgentzProxy-AuthorizationzCONNECT z HTTP/1.1
)
r   r   r   rL   r   r   r   r   r=   	serialize)rA   ws_uriuser_agent_headerr   headerss        r   prepare_connect_requestrY      s    
 fkk6;;SWXDiG fkk6==IGFO$ 1~~!~~))))BNNENN*
%& dV=)002W5F5F5HHHr   )rA   r   r    r   )rO   r   r    r   )rA   r   rV   r   rW   r   r    bytes)
__future__r   dataclassesurllib.parser6   urllib.requestdatastructuresr   
exceptionsr   rX   r   r   http11r	   rO   r
   r   __all__	dataclassr   r   r   rY   r   r   r   <module>rd      s    "    # $ :  % 0 . . .</9d!N %/III "I 	Ir   