
    .hhl                        S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKr/ SQr/ SQr	/ SQr
/ SQr/ SQr/ SQr/ S	QrS
rSr/ SQrS rSrSrS r\\4S jr\\4S jrS r " S S\5      r " S S\5      r " S S\5      r " S S\\5      r " S S\\5      r\" SS5      r\" S S!5      r \" S"S#5      r!S$\l"        S%\RF                  l"        S&\RH                  l"        S'\ l"        S(\ RJ                  l"        S)\ RL                  l"        S*\ RN                  l"        S+\ RP                  l"        S,\ RH                  l"        S-\!l"        \ RJ                  RD                  \!RJ                  l"        \ RL                  RD                  \!RL                  l"        \ RN                  RD                  \!RN                  l"        S.\!RR                  l"        \ RP                  RD                  \!RP                  l"        \ RH                  RD                  \!RH                  l"        \r* " S/ S\\5      r+ " S0 S \ \5      r, " S1 S"\!\5      r- " S2 S3\\5      r. " S4 S5\ \5      r/ " S6 S7\!\5      r0S8 r1\1" 5         C1SsS; jr2S< r3StS= jr4S> r5S? r6S@ r7\Rp                  " S:SA9SsSB j5       r9SC r:SD r;SuSE jr<SF r=SGr>Sq?SH r@SI\A\B-  \C-  SJ\A\B-  4SK jrD\R                  " SL5      rFSM rGSvSN jrH  SwSP jrI  SwSQ jrJSvSR jrK\L" SS5      rM\A" \M5      rNST rO " SU SV\P5      rQSxSW jrRSySX jrS\Rp                  SY 5       rTSzSZ jrUSOS9SS\S4S[ jrVS\ rWS] rXS^ rYS_ rZSq[S` r\Sa r]Sq^Sb r_Sc r`Sd raSe rbSf rcSg rdSqeSh rfS{Si jrgS{Sj jrhSk riSl rjSm rkSn rlSo rmSp rnSq roSr rpg)|    )
namedtupleN)urlparse
urlunparseurljoin	urldefragurlsplit
urlunsplit	urlencodeparse_qs	parse_qslquote
quote_plusquote_from_bytesunquoteunquote_plusunquote_to_bytesDefragResultParseResultSplitResultDefragResultBytesParseResultBytesSplitResultBytes) ftphttpgophernntpimapwaisfilehttpsshttpmmsprosperortsprtspsrtspusftpsvnsvn+sshwswss)r   r   r   r   r   telnetr   r   r    r#   r!   r"   snewsr$   r%   r&   r'   rsyncr)   r*   r(   nfsgitzgit+sshr+   r,   zitms-services)r   r   hdlr$   r   r   r!   r"   r%   r&   r'   sipsipsr#   r(   tel)
r   r2   mailtonewsr-   r   r   r.   r3   r4   )r   r   r   r   r!   r"   r#   r   r%   r&   r'   r3   r4   )r   r   r2   r   r   r7   r   r   r!   r"   r.   r    r$   zAabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-.z! 	
 )	
c                  T    [         R                  5         [        R                  5         g N)r   cache_clear_byte_quoter_factory     5/opt/python-3.13.8/usr/lib/python3.13/urllib/parse.pyclear_cacherB   ^   s    $$&r@   asciistrictc                     U $ r<   r?   )objs    rA   _nooprG   l   s    Jr@   c                 $    U R                  X5      $ r<   encode)rF   encodingerrorss      rA   _encode_resultrM   o   s    ::h''r@   c                 2   ^^ [        UU4S jU  5       5      $ )Nc              3   X   >#    U  H  o(       a  UR                  TT5      OS v   M!     g7f)r   Ndecode.0xrK   rL   s     rA   	<genexpr>_decode_args.<locals>.<genexpr>u   s#     G$Qq(F+b8$s   '*)tuple)argsrK   rL   s    ``rA   _decode_argsrY   s   s    G$GGGr@   c                      [        U S   [        5      nU SS   H+  nU(       d  M  [        U[        5      U:w  d  M"  [        S5      e   U(       a
  U [        4-   $ [	        U 5      [
        4-   $ )Nr      z$Cannot mix str and non-str arguments)
isinstancestr	TypeErrorrG   rY   rM   )rX   	str_inputargs      rA   _coerce_argsra   w   si     47C(IABx 3:c3'94BCC	 
 uh 111r@   c                   "    \ rS rSrSrSS jrSrg)_ResultMixinStr   r?   c                 :   ^^ U R                   " UU4S jU  5       6 $ )Nc              3   F   >#    U  H  oR                  TT5      v   M     g 7fr<   rI   rR   s     rA   rU   )_ResultMixinStr.encode.<locals>.<genexpr>        *Tt!88Hf+E+Et   !)_encoded_counterpartselfrK   rL   s    ``rA   rJ   _ResultMixinStr.encode       ((*Tt*TUUr@   NrC   rD   )__name__
__module____qualname____firstlineno__	__slots__rJ   __static_attributes__r?   r@   rA   rc   rc          IVr@   rc   c                   "    \ rS rSrSrSS jrSrg)_ResultMixinBytes   r?   c                 :   ^^ U R                   " UU4S jU  5       6 $ )Nc              3   F   >#    U  H  oR                  TT5      v   M     g 7fr<   rP   rR   s     rA   rU   +_ResultMixinBytes.decode.<locals>.<genexpr>   rh   ri   )_decoded_counterpartrk   s    ``rA   rQ   _ResultMixinBytes.decode   rn   r@   Nro   )rp   rq   rr   rs   rt   rQ   ru   r?   r@   rA   rx   rx      rv   r@   rx   c                   |    \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	\
" \R                  5      rSrg)_NetlocResultMixinBase   r?   c                      U R                   S   $ )Nr   	_userinforl   s    rA   username_NetlocResultMixinBase.username       ~~a  r@   c                      U R                   S   $ )Nr[   r   r   s    rA   password_NetlocResultMixinBase.password   r   r@   c                     U R                   S   nU(       d  g [        U[        5      (       a  SOSnUR                  U5      u  pnUR	                  5       U-   U-   $ )Nr   %   %)	_hostinfor\   r]   	partitionlower)rl   hostname	separatorpercentzones        rA   r   _NetlocResultMixinBase.hostname   sW    >>!$ &h44C$	"*"4"4Y"?4~~')D00r@   c                     U R                   S   nUb_  UR                  5       (       a!  UR                  5       (       a  [        U5      nO[	        SU< 35      eSUs=::  a  S::  d  O  [	        S5      eU$ )Nr[   z+Port could not be cast to integer value as r   i  zPort out of range 0-65535)r   isdigitisasciiint
ValueError)rl   ports     rA   r   _NetlocResultMixinBase.port   se    ~~a ||~~$,,..4y #Nth!WXX&& !<==r@   N)rp   rq   rr   rs   rt   propertyr   r   r   r   classmethodtypesGenericAlias__class_getitem__ru   r?   r@   rA   r   r      sh    I! ! ! ! 1 1 	 	 $E$6$67r@   r   c                   8    \ rS rSrSr\S 5       r\S 5       rSrg)_NetlocResultMixinStr   r?   c                     U R                   nUR                  S5      u  p#nU(       a   UR                  S5      u  pVnU(       d  S nXW4$ S =pWXW4$ )N@:netloc
rpartitionr   rl   r   userinfo	have_infohostinfor   have_passwordr   s           rA   r   _NetlocResultMixinStr._userinfo   s^    (.(9(9#(>%X080B0B30G-HX  !! #'&H!!r@   c                 
   U R                   nUR                  S5      u    p#UR                  S5      u  p$nU(       a)  UR                  S5      u  pbnUR                  S5      u    p'OUR                  S5      u  pbnU(       d  S nXg4$ )Nr   []r   r   rl   r   _r   have_open_br	bracketedr   r   s           rA   r   _NetlocResultMixinStr._hostinfo   s    **3/1%-%7%7%<" ) 3 3C 8H,JAq$ ( 2 23 7HD~r@   N	rp   rq   rr   rs   rt   r   r   r   ru   r?   r@   rA   r   r      -    I	" 	"  r@   r   c                   8    \ rS rSrSr\S 5       r\S 5       rSrg)_NetlocResultMixinBytes   r?   c                     U R                   nUR                  S5      u  p#nU(       a   UR                  S5      u  pVnU(       d  S nXW4$ S =pWXW4$ )N   @   :r   r   s           rA   r   !_NetlocResultMixinBytes._userinfo   s^    (.(9(9$(?%X080B0B40H-HX  !! #'&H!!r@   c                 
   U R                   nUR                  S5      u    p#UR                  S5      u  p$nU(       a)  UR                  S5      u  pbnUR                  S5      u    p'OUR                  S5      u  pbnU(       d  S nXg4$ )Nr      [   ]r   r   r   s           rA   r   !_NetlocResultMixinBytes._hostinfo   s    **401%-%7%7%=" ) 3 3D 9H-JAq$ ( 2 24 8HD~r@   Nr   r?   r@   rA   r   r      r   r@   r   r   zurl fragmentr   z!scheme netloc path query fragmentr   z(scheme netloc path params query fragmentz
DefragResult(url, fragment)

A 2-tuple that contains the url without fragment identifier and the fragment
identifier as a separate argument.
z$The URL with no fragment identifier.z
Fragment identifier separated from URL, that allows indirect identification of a
secondary resource by reference to a primary resource and additional identifying
information.
z
SplitResult(scheme, netloc, path, query, fragment)

A 5-tuple that contains the different components of a URL. Similar to
ParseResult, but does not split params.
z%Specifies URL scheme for the request.z0
Network location where the request is made to.
z@
The hierarchical path, such as the path to a file to download.
z
The query component, that contains non-hierarchical data, that along with data
in path component, identifies a resource in the scope of URI's scheme and
network location.
z
Fragment identifier, that allows indirect identification of a secondary resource
by reference to a primary resource and additional identifying information.
zq
ParseResult(scheme, netloc, path, params, query, fragment)

A 6-tuple that contains components of a parsed URL.
z
Parameters for last path element used to dereference the URI in order to provide
access to perform some operation on the resource.
c                       \ rS rSrSrS rSrg)r   iC  r?   c                 t    U R                   (       a  U R                  S-   U R                   -   $ U R                  $ N#fragmenturlr   s    rA   geturlDefragResult.geturlE  s)    ==88c>DMM1188Or@   Nrp   rq   rr   rs   rt   r   ru   r?   r@   rA   r   r   C      Ir@   c                       \ rS rSrSrS rSrg)r   iK  r?   c                     [        U 5      $ r<   r	   r   s    rA   r   SplitResult.geturlM      $r@   Nr   r?   r@   rA   r   r   K      I r@   c                       \ rS rSrSrS rSrg)r   iP  r?   c                     [        U 5      $ r<   r   r   s    rA   r   ParseResult.geturlR  r   r@   Nr   r?   r@   rA   r   r   P  r   r@   c                       \ rS rSrSrS rSrg)r   iV  r?   c                 t    U R                   (       a  U R                  S-   U R                   -   $ U R                  $ )N   #r   r   s    rA   r   DefragResultBytes.geturlX  s)    ==88d?T]]2288Or@   Nr   r?   r@   rA   r   r   V  r   r@   r   c                       \ rS rSrSrS rSrg)r   i^  r?   c                     [        U 5      $ r<   r   r   s    rA   r   SplitResultBytes.geturl`  r   r@   Nr   r?   r@   rA   r   r   ^  r   r@   r   c                       \ rS rSrSrS rSrg)r   ic  r?   c                     [        U 5      $ r<   r   r   s    rA   r   ParseResultBytes.geturle  r   r@   Nr   r?   r@   rA   r   r   c  r   r@   r   c                  x    [         [        4[        [        4[        [
        44n U  H  u  pX!l        Xl        M     g r<   )r   r   r   r   r   r   rj   r}   )_result_pairs_decoded_encodeds      rA   _fix_result_transcodingr   i  s?    	()	&'	&'M
 ,(0%(0% ,r@   r   Tc                     [        X5      u  pn[        XU5      nUu  ppnU[        ;   a  SU ;   a  [        U 5      u  pOSn[	        XXXg5      n	U" U	5      $ )N;r   )ra   r   uses_params_splitparamsr   )
r   schemeallow_fragments_coerce_resultsplitresultr   queryr   paramsresults
             rA   r   r   v  se    ( #/s";C38K+6(FC"3'VeFF&!!r@   c                     SU ;   a,  U R                  SU R                  S5      5      nUS:  a  U S4$ OU R                  S5      nU S U XS-   S  4$ )N/r   r   r   r[   )findrfind)r   is     rA   r   r     s^    
s{HHS#))C.)q57N  HHSMr7C!Ir@   c                     [        U 5      nS H'  nU R                  X15      nUS:  d  M  [        X$5      nM)     XU XS  4$ )Nz/?#r   )lenr   min)r   startdelimcwdelims        rA   _splitnetlocr    sJ    HE!#Q;&E  US[((r@   c                 J   U (       a  U R                  5       (       a  g SS KnU R                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SU5      nX#:X  a  g S H  nXC;   d  M
  [	        S	U -   S
-   S-   5      e   g )Nr   r   r   r   r   ?NFKCz/?#@:znetloc 'z' contains invalid z#characters under NFKC normalization)r   unicodedatareplace	normalizer   )r   r  nnetloc2r   s        rA   _checknetlocr    s    V^^%% sBA			#rA			#rA			#rA##FA.G|<Z&03HHBC D D r@   c                 >   U R                  S5      S   nUR                  S5      u  p#nU(       aO  U(       a  [        S5      eUR                  S5      u  pVnU(       a!  UR                  S5      (       d  [        S5      eOUR                  S5      u  pVn[	        U5        g )Nr      r   Invalid IPv6 URLr   r   )r   r   r   
startswith_check_bracketed_host)r   hostname_and_portbefore_bracketr   r   r   r   r   s           rA   _check_bracketed_netlocr    s     ))#.q1.?.I.I#.N+N)/00%//4T,,/00-77<T(#r@   c                     U R                  S5      (       a(  [        R                  " SU 5      (       d  [        S5      eg [        R
                  " U 5      n[        U[        R                  5      (       a  [        S5      eg )Nvz\Av[a-fA-F0-9]+\..+\ZzIPvFuture address is invalidz%An IPv4 address cannot be in brackets)r  rematchr   	ipaddress
ip_addressr\   IPv4Address)r   ips     rA   r  r    sl    3xx0(;;;== < !!(+b)//00DFF 1r@   )typedc                 <   [        X5      u  pnU R                  [        5      n UR                  [        5      n[         H'  nU R                  US5      n UR                  US5      nM)     [        U5      nS=n=pgU R                  S5      nUS:  aa  U S   R                  5       (       aI  U S   R                  5       (       a1  U S U  H  n	U	[        ;  d  M    O   U S U R                  5       XS-   S  pU S S S:X  aH  [        U S5      u  pPSU;   a  SU;  d  SU;   a  SU;  a  [        S	5      eSU;   a  SU;   a  [        U5        U(       a  S
U ;   a  U R                  S
S5      u  pSU ;   a  U R                  SS5      u  p[!        U5        [#        XXU5      n
U" U
5      $ )Nr   r   r   r[   r  //r   r   r  r   r  )ra   lstrip_WHATWG_C0_CONTROL_OR_SPACEstrip_UNSAFE_URL_BYTES_TO_REMOVEr  boolr   r   isalphascheme_charsr   r  r   r  splitr  r   )r   r   r   r   br   r   r   r   r   r  s              rA   r   r     s   , #/s";C **0
1C\\56F(kk!R 2& ) ?+O ""F"UA1uQ!!c!fnn&6&6RaA$  bq'--/3st9C
2Aw$"3*F]s&03f#4/00&=SF]#F+3#:		#q)
czYYsA&
FC9A!r@   c           	      d    [        U 6 u  pp4pVnU(       a	  U< SU< 3nU" [        XX5U45      5      $ )Nr   )ra   r	   )
componentsr   r   r   r   r   r   r   s           rA   r   r     s>     3?
2K AFC.f%*fc(%KLMMr@   c                 8   [        U 6 u  pp4pVU(       a  U(       a  US S S:w  a  SU-   nSU-   U-   nO5US S S:X  a  SU-   nO&U(       a  U[        ;   a  U(       a	  US S S:X  a  SU-   nU(       a  US-   U-   nU(       a  US-   U-   nU(       a  US-   U-   nU" U5      $ )Nr[   r   r  r  r   r  r   )ra   uses_netloc)r)  r   r   r   r   r   r   s          rA   r	   r	     s     +7
*C 9FC3r7c>s3Vmc!	RaDSj	Fk)3#bq'S.SjslS Ci%Ci("#r@   c           
      H   U (       d  U$ U(       d  U $ [        X5      u  pn[        U SU5      u  pEpgp[        XU5      u  pppX:w  d
  U
[        ;  a  U" U5      $ U
[        ;   a  U(       a  U" [	        XUXU45      5      $ UnU(       d)  U(       d"  UnUnU(       d  UnU" [	        XUXU45      5      $ UR                  S5      nUS   S:w  a  US	 US S S:X  a  UR                  S5      nO&UUR                  S5      -   n[        S USS 5      USS& / nU H5  nUS:X  a   UR                  5         M  US:X  a  M$  UR                  U5        M7     US   S;   a  UR                  S5        U" [	        XSR                  U5      =(       d    SXU45      5      $ ! [         a     M  f = f)Nr   r   r[   ...)r/  r.  )ra   r   uses_relativer+  r   r&  filterpop
IndexErrorappendjoin)baser   r   r   bschemebnetlocbpathbparamsbquery	bfragmentr   r   pathr   r   r   
base_partssegmentsresolved_pathsegs                       rA   r   r   /  s    
 ,T 7D~T2/ 8Gef S?3 2FD% F-7c""!*fd.4X.G #H I IEj&$*0*C D E 	E S!J"~ rN BQx3::c?

3/  hqn52M$;!!#
 CZ  %  |{" 	R *fchh7 7vh&8 9 : :   s   F
F! F!c                     [        U 5      u  pSU ;   a  [        U 5      u  p#pEpg[        X#XEUS45      nOSnU nU" [        X5      5      $ )Nr   r   )ra   r   r   r   )	r   r   sr	  paqfragdefrags	            rA   r   r   t  sU     's+C
cz&smaAQ1B/0,v455r@   0123456789ABCDEFabcdefc                 *    [        [        U 5      5      $ r<   )bytes_unquote_impl)strings    rA   r   r     s    v&''r@   rM  returnc           
      <   U (       d  U R                     g[        U [        5      (       a  U R                  S5      n U R                  S5      n[	        U5      S:X  a  U $ [        US   5      nUR                  n[        cM  [         VVs0 s H9  n[          H+  nXE-   R                  5       [        R                  XE-   5      _M-     M;     snnqUSS   H!  n U" [        US S    5        U" USS  5        M#     U$ s  snnf ! [         a    U" S5        U" U5         MJ  f = f)Nr@   utf-8r   r[   r   r  )r&  r\   r]   rJ   r   	bytearrayextend
_hextobyte_hexdigrK  fromhexKeyError)rM  bitsresr4  rE  r'  items          rA   rL  rL    s    &#w'<<D
4yA~
DG
CZZF &9&!1 unn&ae(<<07 '&9
QR	:d2Ah'(48  J9  	4L4L	s   A C7C==DDz([ -]+)c              #      #    Sn[         R                  U 5       H<  nUR                  5       u  pVXU v   [        US   5      R	                  X5      v   UnM>     XS  v   g 7f)Nr   r[   )_asciirefinditerspanrL  rQ   )rM  rK   rL   previous_match_endascii_matchr   ends          rA   _generate_unquoted_partsra    si     ((0 %%'
..KN+228DD  1 $
%%s   AA!c                     [        U [        5      (       a  [        U 5      R                  X5      $ SU ;  a  U R                    U $ Uc  SnUc  SnSR                  [        XU5      5      $ )Nr   rP  r  r   )r\   rK  rL  rQ   r&  r5  ra  rM  rK   rL   s      rA   r   r     sg     &%  V$++H==
&~77+FfEFFr@   Fc           
      v    0 n[        XUX4XVS9nU H$  u  pX;   a  Xy   R                  U
5        M  U
/Xy'   M&     U$ )N)rK   rL   max_num_fieldsr   )r   r4  )qskeep_blank_valuesstrict_parsingrK   rL   re  r   parsed_resultpairsnamevalues              rA   r   r     sU    < Mb^'%3JE  &&u-#('M	 
 r@   c                   ^^ U(       a  [        U[        [        45      (       d  [        S5      e[        U [        5      (       a+  [        U[        5      (       d  [        US5      nSnUU4S jnOCU (       d  / $ [        [	        U 5      5      n [        U[        5      (       a  [        US5      nSnS nU (       d  / $ Ub$  SU R                  U5      -   n	XY:  a  [        S5      e/ n
U R                  U5       Hv  nU(       d	  U(       d  M  UR                  U5      u  pnU(       d  U(       a  [        S	U< 35      eU(       d	  U(       d  MT  U" U5      nU" U5      nU
R                  X45        Mx     U
$ )
Nz*Separator must be of type string or bytes.rC   =c                    > [        U TTS9$ )N)rK   rL   )r   )rC  rK   rL   s    rA   _unquoteparse_qsl.<locals>._unquote  s    HVDDr@      =c                 8    [        U R                  SS5      5      $ )N   +    )r   r  )rC  s    rA   rp  rq  $  s    #AIIdD$9::r@   r[   zMax number of fields exceededzbad query field: )	r\   r]   rK  r   
memoryviewcountr&  r   r4  )rf  rg  rh  rK   rL   re  r   eqrp  
num_fieldsr
name_valuerk  has_eqrl  s      ``          rA   r   r     s@   < Jy3,??EFF"c)S))Iw/I	E I :b>"i%%i1I	; 	
 !),,
&<==
Ahhy)
","6"6r":D%n *!FGG))~ $' * Hr@   c                 >    U R                  SS5      n [        XU5      $ )N+ )r  r   rc  s      rA   r   r   >  s!     ^^C%F6V,,r@   sB   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-~c                 |    U S:X  a   [         R                  " S[        SS9  [        $ [	        S[
        < SU < 35      e)NQuoterzoDeprecated in 3.11. urllib.parse.Quoter will be removed in Python 3.14. It was not intended to be a public API.r  
stacklevelzmodule z has no attribute )warningswarnDeprecationWarning_QuoterAttributeErrorrp   )rk  s    rA   __getattr__r  M  sC    x @ )Q	8 
78,.@I
JJr@   c                   &    \ rS rSrS rS rS rSrg)r  iV  c                 8    [         R                  U5      U l        g r<   )_ALWAYS_SAFEunionsafe)rl   r  s     rA   __init___Quoter.__init__^  s     &&t,	r@   c                 "    S[        U 5      < S3$ )Nz<Quoter >)dictr   s    rA   __repr___Quoter.__repr__b  s    $t*q))r@   c                 d    XR                   ;   a  [        U5      OSR                  U5      nX U'   U$ )Nz%{:02X})r  chrformat)rl   r'  rX  s      rA   __missing___Quoter.__missing__e  s,    YYc!fI,<,<Q,?Q
r@   r  N)rp   rq   rr   rs   r  r  r  ru   r?   r@   rA   r  r  V  s    -*r@   r  c                     [        U [        5      (       a%  U (       d  U $ Uc  SnUc  SnU R                  X#5      n OUb  [        S5      eUb  [        S5      e[	        X5      $ )NrP  rD   z,quote() doesn't support 'encoding' for bytesz*quote() doesn't support 'errors' for bytes)r\   r]   rJ   r^   r   )rM  r  rK   rL   s       rA   r   r   k  sl    N &#MH>Fx0JKKHIIF))r@   c                     [        U [        5      (       a  SU ;  d  [        U [        5      (       a  SU ;  a  [        XX#5      $ [        U[        5      (       a  SnOSn[        XU-   X#5      n U R	                  SS5      $ )Nr  ru  r~  )r\   r]   rK  r   r  )rM  r  rK   rL   spaces        rA   r   r     sq     
FC	 	 S%6	FE	"	"t6'9V844$6%<:F>>#s##r@   c                 ,    [        U 5      R                  $ r<   )r  __getitem__r  s    rA   r>   r>     s    4=$$$r@   c                    [        U [        [        45      (       d  [        S5      eU (       d  g[        U[        5      (       a  UR                  SS5      nO#[        U Vs/ s H  o"S:  d  M
  UPM     sn5      nU R                  [        U-   5      (       d  U R                  5       $ [        U5      n[        U 5      =nS:  a  SR                  [        X05      5      $ [        R                  " U5      n[        SXE5       Vs/ s H"  nSR                  [        X0XfU-    5      5      PM$     nnSR                  U5      $ s  snf s  snf )Nz!quote_from_bytes() expected bytesr   rC   ignore   i@ r   )r\   rK  rQ  r^   r]   rJ   rstrip_ALWAYS_SAFE_BYTESrQ   r>   r   r5  mapmathisqrtrange)bsr  r   quoterbs_len
chunk_sizer   chunkss           rA   r   r     s   
 b5),--;<<${{7H- 1ASa1299'$.//yy{!$'Fb'W$wws6'' ZZ'
 F797a ''#fZ<&89:7 	 9wwv 29s    	D=-D=)Ec                    [        U S5      (       a  U R                  5       n O/ [        U 5      (       a  [        U S   [        5      (       d  [
        e/ nU(       d  U  H~  u  p[        U[        5      (       a	  U" X5      nOU" [        U5      X#U5      n[        U	[        5      (       a	  U" X5      n	OU" [        U	5      X#U5      n	UR                  US-   U	-   5        M     GOU  GH  u  p[        U[        5      (       a	  U" X5      nOU" [        U5      X#U5      n[        U	[        5      (       a!  U" X5      n	UR                  US-   U	-   5        Mm  [        U	[        5      (       a"  U" XX45      n	UR                  US-   U	-   5        M   [        U	5      n
U	 HK  n[        U[        5      (       a	  U" X5      nOU" [        U5      X#U5      nUR                  US-   U-   5        MM     GM     SR                  U5      $ ! [
         a  n[        S5      UeS nAff = f! [
         a/    U" [        U	5      X#U5      n	UR                  US-   U	-   5         GMm  f = f)Nitemsr   z1not a valid non-string sequence or mapping objectrn  &)
hasattrr  r   r\   rW   r^   rK  r]   r4  r5  )r   doseqr  rK   rL   	quote_viaerrlkr  rT   elts               rA   r
   r
     s   " ug	: 5zz*U1Xu"="= 	ADA!U##a&c!fdf=!U##a&c!fdf=HHQWq[!  DA!U##a&c!fdf=!U##a&S1%As##ax8S1%0AA  !%c511"+C"6C"+CHdf"MCS3/  !- 8 88A;]  	: 0 169:	:D ! *!#a&$&AAHHQWq[))*s)   .G: H:
HHH4IIc                 L    [         R                  " S[        SS9  [        U 5      $ )Nz/urllib.parse.to_bytes() is deprecated as of 3.8r  r  )r  r  r  	_to_bytesr   s    rA   to_bytesr  "  s     MMC$4S>r@   c                     [        U [        5      (       a"   U R                  S5      R                  5       n U $ U $ ! [         a    [	        S[        U 5      -   S-   5      ef = f)NASCIIzURL z contains non-ASCII characters)r\   r]   rJ   rQ   UnicodeErrorreprr  s    rA   r  r  (  so    
 #s	A**W%,,.C J3J  	AvS	1? @ A A	As	   : %Ac                     [        U 5      R                  5       n U S S S:X  a  U SS  S:X  a  U SS R                  5       n U S S S:X  a  U SS  R                  5       n U $ )Nr[   <r-  r     zURL:)r]   r!  r  s    rA   unwrapr  6  sc    
 c(..
C
2Aw#~#bc(c/!Bioo
2Aw&!"gmmoJr@   c                 L    [         R                  " S[        SS9  [        U 5      $ )NzUurllib.parse.splittype() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr  r  )r  r  r  
_splittyper  s    rA   	splittyper  C  $    MM 8$4 c?r@   c                     [         c%  [        R                  " S[        R                  5      q [         R	                  U 5      nU(       a$  UR                  5       u  p#UR                  5       U4$ S U 4$ )Nz([^/:]+):(.*))	_typeprogr  compileDOTALLr  groupsr   )r   r  r   datas       rA   r  r  K  sW     JJ		:	OOC E||~||~t##9r@   c                 L    [         R                  " S[        SS9  [        U 5      $ )NzUurllib.parse.splithost() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr  r  )r  r  r  
_splithostr  s    rA   	splithostr  X  r  r@   c                     [         c%  [        R                  " S[        R                  5      q [         R	                  U 5      nU(       a*  UR                  5       u  p#U(       a  US   S:w  a  SU-   nX#4$ S U 4$ )Nz//([^/#?]*)(.*)r   r   )	_hostprogr  r  r  r  r  )r   r  	host_portr=  s       rA   r  r  `  se     JJ0"))<	OOC E,,.	DGsN:D9r@   c                 L    [         R                  " S[        SS9  [        U 5      $ )NzUurllib.parse.splituser() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr  r  )r  r  r  
_splituserhosts    rA   	splituserr  o  %    MM 8$4 dr@   c                 F    U R                  S5      u  pn U(       a  X4$ S U 4$ )Nr   r   )r  userr   s      rA   r  r  v  s*    ,DD**td**r@   c                 L    [         R                  " S[        SS9  [        U 5      $ )NzWurllib.parse.splitpasswd() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr  r  )r  r  r  _splitpasswd)r  s    rA   splitpasswdr  |  s%    MM 8$4 r@   c                 D    U R                  S5      u  pnX(       a  U4$ S 4$ Nr   r   )r  r   passwds      rA   r  r    s*    ..-DE&,,t,,r@   c                 L    [         R                  " S[        SS9  [        U 5      $ )NzUurllib.parse.splitport() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr  r  )r  r  r  
_splitportr  s    rA   	splitportr    r  r@   c                     [         c%  [        R                  " S[        R                  5      q [         R	                  U 5      nU(       a  UR                  5       u  pU(       a  X4$ U S 4$ )Nz(.*):([0-9]*))	_portprogr  r  r  	fullmatchr  )r  r  r   s      rA   r  r    sS     JJ		:	%E\\^
::r@   c                 L    [         R                  " S[        SS9  [        X5      $ )NzVurllib.parse.splitnport() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr  r  )r  r  r  _splitnport)r  defports     rA   
splitnportr    s%    MM 8$4 t%%r@   c                     U R                  S5      u  pnU(       d  Un X4$ U(       a=  UR                  5       (       a#  UR                  5       (       a  [        U5      nX4$ S nX4$ X4$ r  )r   r   r   r   )r  r  r   r   nports        rA   r  r    sm    
 ,D = 
<<>>dllnnIE { E{=r@   c                 L    [         R                  " S[        SS9  [        U 5      $ )NzVurllib.parse.splitquery() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr  r  )r  r  r  _splitqueryr  s    rA   
splitqueryr    s%    MM 8$4 sr@   c                 F    U R                  S5      u  pnU(       a  X4$ U S 4$ )Nr  r  )r   r=  r   r   s       rA   r  r    s*    ,D{9r@   c                 L    [         R                  " S[        SS9  [        U 5      $ )NzTurllib.parse.splittag() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr  r  )r  r  r  	_splittagr  s    rA   splittagr    s$    MM 8$4 S>r@   c                 F    U R                  S5      u  pnU(       a  X4$ U S 4$ r   r  )r   r=  r   tags       rA   r  r    s*    ~~c*Dy9r@   c                 L    [         R                  " S[        SS9  [        U 5      $ )NzUurllib.parse.splitattr() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr  r  )r  r  r  
_splitattrr  s    rA   	splitattrr    r  r@   c                 8    U R                  S5      nUS   USS  4$ )Nr   r   r[   )r&  )r   wordss     rA   r  r    s&     IIcNE8U12Yr@   c                 L    [         R                  " S[        SS9  [        U 5      $ )NzWurllib.parse.splitvalue() is deprecated as of 3.8, use urllib.parse.parse_qsl() insteadr  r  )r  r  r  _splitvalue)attrs    rA   
splitvaluer    s%    MM 9$4 tr@   c                 D    U R                  S5      u  pnX(       a  U4$ S 4$ )Nrn  r  )r  r   rl  s      rA   r   r     s*    ,D5%++d++r@   )r   T)r   )T)rP  r  )FFrP  r  Nr  )r   NN)r   NN)r   )r-  )qcollectionsr   	functoolsr  r  r   r  r  __all__r0  r+  r   non_hierarchical
uses_queryuses_fragmentr%  r   r"  rB   _implicit_encoding_implicit_errorsrG   rM   rY   ra   objectrc   rx   r   r   r   _DefragResultBase_SplitResultBase_ParseResultBase__doc__r   r   r   r   r=  r   r   
ResultBaser   r   r   r   r   r   r   r   r   r  r  r  r  	lru_cacher   r   r	   r   r   rT  rS  r   rK  rQ  r]   rL  r  r[  ra  r   r   r   r   	frozensetr  r  r  r  r  r   r   r>   r   r
   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r?   r@   rA   <module>r     s  D #   	   H0
--F A
%
 \  1 '    "4/( !3.H2"Vf VV V#8V #8L2O <46G < ~~> 68 =?    !K    &    "   #N    #    !    "    %    !
   #3"9"9"A"A    "2"9"9"A"A     0 5 5 = =    #    
 "2!7!7!?!?    $4$=$=$E$E    ! #
$o  "$9  
 "$9  )+<  ')@  
 ')@  1  "<)D$$&G 4 5 !5n	N.B:J6  #
(%)+c1 ei6G : ::&'&G. :?PS'T ;@QTGR-  ! " <( Kd *4*l$$ % %6 !rD"M`
 	
 	+- 	&",r@   