+
    Qi                         R t ^ RIt^ RIt^ RIHt ^ RIHtHt ^RIH	t	H
t
 Rt. ROt]! ]4      t]]]]]]3,          tR R ltR R	 lt]R
 R l4       tR R lt]RR R ll4       tR R ltR# )zURL parsing utilities.N)	lru_cache)scheme_charsuses_netloc)QUOTERUNQUOTER_PLUSz! 	
 c                0    V ^8  d   QhR\         R\        /# )   urlreturn)strSplitURLType)formats   "`/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/yarl/_parse.py__annotate__r      s     :0 :03 :0< :0    c                   V P                  \        4      p \         F  pW9   g   K  V P                  VR4      p K  	  R;p;p;rEV P	                  R4      pV^ 8  dI   V ^ ,          \
        9   d7   V ^V  F  pV\
        9  g   K   M	  V RV P                  4       W^,           R rRV 9   pRV 9   p	V R,          R8X  Ed*   \        V 4      p
V'       d   V	'       d   RpMV	'       d   R	pMV'       d   R
pMRpV F(  pV P	                  V^4      pV^ 8  g   K  W8  g   K&  Tp
K*  	  V ^V
 pW
R p RV9   pRV9   pV'       d	   V'       d   V'       d   V'       g   \        R4      hV'       d   VP                  R4      ^,          P                  R4      ^ ,          pV'       d8   V^ ,          R8X  d*   \        P                  ! RV4      '       g   \        R4      hMRV9  d   \        R4      hV'       d   V P                  R4      w  p ppV	'       d   V P                  R4      w  p ppV'       d"   VP                  4       '       g   \        V4       W#WV3# )zSplit URL into parts. :N#?Nr   N//z/?#z/?z/#/[]zInvalid IPv6 URLvz\Av[a-fA-F0-9]+\..+\ZzIPvFuture address is invalidz.The IPv6 content between brackets is not valid)lstripWHATWG_C0_CONTROL_OR_SPACEUNSAFE_URL_BYTES_TO_REMOVEreplacefindr   lowerlen
ValueError	partitionrematchisascii_check_netloc)r	   bschemenetlocqueryfragmentichas_hashhas_question_markdelimdelim_charswdelimhas_left_brackethas_right_bracketbracketed_host_s   &                r   	split_urlr9      s   
 **/
0C'8++a$C ( *,+F+V+eA1uQ<'QqA$  bq'--/31uw<CczHs

2w$C)KKKKAXXa^F{v~  Qu&k&=6M%6&6/00#--c215??DQGN ."3s":xx 8.II$%CDD JN* !QRR==-Qc*Qfnn&&f3x//r   c                (    V ^8  d   QhR\         RR/# r   r+   r
   Nr   )r   s   "r   r   r   U   s      # $ r   c                    V P                  R R4      P                  RR4      P                  RR4      P                  RR4      p\        P                  ! RV4      pW8X  d   R# R F  pW29   g   K  \        RV  R	24      h	  R# )
@r   r   r   r   NFKCNz/?#@:znetloc 'z6' contains invalid characters under NFKC normalization)r   unicodedata	normalizer#   )r+   nnormalized_netlocr/   s   &   r   r(   r(   U   s     	sB''R088bAII#rRA#--fa8 !6( #6 6  r   c          	          V ^8  d   QhR\         R\        \         R,          \         R,          \         R,          \        R,          3,          /# r;   )r   tupleint)r   s   "r   r   r   l   s:     > >>
3:sTz3:sTz9:>r   c                *   RV 9  d   RpRpT pM2V P                  R4      w  rEpVP                  R4      w  rpV'       g   RpRV9   d>   VP                  R4      w   rWVP                  R4      w  rp	V	P                  R4      w   rYMVP                  R4      w  rp	V	'       g   T;'       g    RY(;'       g    RR3#  \        V	4      p
^ T
u;8:  d   R8:  g   M \        R4      hT;'       g    RY(;'       g    RT
3#   \         d    \        R4      hi ; i)	z4Split netloc into username, password, host and port.r>   Nr   r   r   z/Invalid URL: port can't be converted to integeri  zPort out of range 0-65535)
rpartitionr$   rF   r#   )r+   usernamepasswordhostinfouserinfor8   have_password	bracketedhostnameport_strports   &          r   split_netlocrR   k   s.   
 &## & 1 1# 6X,4,>,>s,C)H
h",,S11 ) 3 3C 8X!++C01h ( 2 23 7X4+;+;tTAAL8} 455tX'7'74==	  LJKKLs   ;C; ;Dc                `    V ^8  d   QhR\         R\         R\         R\         R\         R\         /# )r   r*   r+   r	   r,   r-   r
   r<   )r   s   "r   r   r      s<     4 444#&4/24>A44r   c                D   V'       g"   V '       d   V \         9   g   VR,          R8X  dJ   V'       d)   VR,          R8w  d   V '       d   V  RV RV 2MV  RV 2pM(V '       d
   V  RV V 2MRV V 2pMV '       d   V  RV 2pV'       d   V RV 2pV'       d   V RV 2# T# )	z(Unsplit a URL without any normalization.r   r   :N   Nr   z://r   r   r   )USES_AUTHORITY)r*   r+   r	   r,   r-   s   &&&&&r   unsplit_resultrW      s     &V~5#b'T/3r7c>28VHCxq.#>OC17VHCxu-r&#=OC	#Qug"*cU!H:33r   c                    V ^8  d   QhR\         R,          R\         R,          R\         R,          R\        R,          R\        R\         /# )r   userNrJ   hostrQ   encoder
   )r   rF   bool)r   s   "r   r   r      sT     , ,
*,Dj, *, *	,
 , 	,r   c                   Vf   R# TpVe   V RV 2pV f   Vf   V# Ve:   V '       g   Rp MV'       d   \        V 4      p V'       d   \        V4      pV  RV 2p MV '       d   V'       d   \        V 4      p V '       d   V  RV 2# T# )zMake netloc from parts.

The user and password are encoded if encode is True.

The host must already be encoded with _encode_host.
r   r   r>   )r   )rY   rJ   rZ   rQ   r[   rets   &&&&& r   make_netlocr_      s     |
CQtfo|(
D$<Dh'Hq
#	&d|"dV1SE?++r   c                h    V ^8  d   QhR\         R\        \        \         \         3,          ,          /# )r   query_stringr
   )r   listrE   )r   s   "r   r   r      s'       eCHo)> r   c                    . pV '       g   V# V P                  R4       F<  pVP                  R4      w  r4pVP                  \        V4      \        V4      34       K>  	  V# )zeParse a query given as a string argument.

Works like urllib.parse.parse_qsl with keep empty values.
&=)splitr$   appendr   )ra   pairsk_vkr8   r   s   &     r   query_to_pairsrk      sZ    
 $&E!!#&--$amA&a(89: ' Lr   )	
)F)__doc__r%   r@   	functoolsr   urllib.parser   r   _quotersr   r   r   r   	frozensetrV   rE   r   r   r9   r(   rR   rW   r_   rk    r   r   <module>ru      s     	   2 +
D  0 ;'S#sC,-:0z, > >B4  , ,Br   