+
     ]i"1  c                  s   ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t^ RI
t^RIHt ^RIHt ^RIHtHt ^RIHt ^RIHt ]t]P.                  ! R4      t]P2                  ! ]4      t]P8                  ! R	4      t]P8                  ! R
4      tR R ltR R lt  ! R R]PB                  ],          4      t" ! R R]4      t# ! R R]4      t$R# )i    )annotationsN)
_TYPE_BODY)HTTPHeaderDict)HTTPSConnection_get_default_user_agent)ConnectionError)BaseHTTPResponseTs   ^[!#$%&'*+\-.^_`|~0-9a-z]+$s*   [\0\x00\x0a\x0d\r\n]|^[ \r\n\t]|[ \r\n\t]$c                    V ^8  d   QhRRRR/# )   namebytesreturnbool Zformat   "=/usr/lib/python3.14/site-packages/urllib3/http2/connection.py__annotate__r      s     5 5 5$ 5    c                >    \        \        P                  V 4      4      # )a  
"An implementation that validates fields according to the definitions in Sections
5.1 and 5.5 of [HTTP] only needs an additional check that field names do not
include uppercase characters." (https://httpwg.org/specs/rfc9113.html#n-field-validity)

`http.client._is_legal_header_name` does not validate the field name according to the
HTTP 1.1 spec, so we do that here, in addition to checking for uppercase characters.

This does not allow for the `:` character in the header name, so should not
be used to validate pseudo-headers.
)r   RE_IS_LEGAL_HEADER_NAMEZmatch)r
      &r   _is_legal_header_namer      s     '--d344r   c               r   )r	   valuer   r   r   r   r   r   r   r   r   ,   s     : :E :d :r   c                r   )a7  
"A field value MUST NOT contain the zero value (ASCII NUL, 0x00), line feed
(ASCII LF, 0x0a), or carriage return (ASCII CR, 0x0d) at any position. A field
value MUST NOT start or end with an ASCII whitespace character (ASCII SP or HTAB,
0x20 or 0x09)." (https://httpwg.org/specs/rfc9113.html#n-field-validity)
)r   RE_IS_ILLEGAL_HEADER_VALUEZsearch)r   r   r   _is_illegal_header_valuer   ,   s     *11%899r   c                  sB    ] tR t^6tRtR
tR R ltR R ltR R ltRt	R	# )_LockedObjecta@  
A wrapper class that hides a specific object behind a lock.
The goal here is to provide a simple way to protect access to an object
that cannot safely be simultaneously accessed from multiple threads. The
intended use of this class is simple: take hold of it with a context
manager, which returns the protected object.
c                   V ^8  d   QhRR/# )r	   objr   r   r   r   r   r   _LockedObject.__annotate__D   s      A r   c                	sF    \         P                  ! 4       V n        Wn        R # N)	threadingZRLocklock_obj)selfr   s   &&r   __init__Z_LockedObject.__init__D   s    OO%		r   c               r   )r	   r   r   r   r   r   r   r   r   H   s      1 r   c                	sN    V P                   P                  4        V P                  # r   )r!   Zacquirer"   r#   r   r   	__enter__Z_LockedObject.__enter__H   s    		yyr   c               (    V ^8  d   QhRRRRRRRR/# )	r	   exc_typeztype[BaseException] | Noneexc_valzBaseException | Noneexc_tbztypes.TracebackType | Noner   Noner   r   r   r   r   r   L   s2      , & +	
 
r   c                	s:    V P                   P                  4        R # r   )r!   Zrelease)r#   r(   r)   r*   s   &&&&r   __exit__Z_LockedObject.__exit__L   s     			r   )r"   r!   N)r!   r"   )
__name__
__module____qualname____firstlineno__Z__doc__Z	__slots__r$   r&   r,   __static_attributes__r   r   r   r   r   6   s"    I
 r   r   c                  s   a  ] tR t^UtRR V 3R llltR R ltR V 3R lltR R ltR	 R
 ltRR R llt	R R lt
RR R lltR R ltRRRRRRR/R R llltR V 3R lltRtV ;t# )HTTP2Connectionc               r'   )	r	   hoststrport
int | Nonekwargs
typing.Anyr   r+   r   r   r   r   r   HTTP2Connection.__annotate__V   s2     O OO)O<FO	Or   c                	s   < V P                  4       V n        R V n        . V n        RV9   g   RV9   d   \	        R4      h\
        SV `  ! W3/ VB  V P                  e   \	        R4      hR # )NZproxyZproxy_configz$Proxies aren't supported with HTTP/2z%Tunneling isn't supported with HTTP/2)_new_h2_conn_h2_conn
_h2_stream_headersNotImplementedErrorsuperr$   Z_tunnel_host)r#   r3   r5   r7   	__class__s   &&&,r   r$   ZHTTP2Connection.__init__V   sm     ))+&*35f& 8%&LMM.v.(%&MNN )r   c               r   )r	   r   z)_LockedObject[h2.connection.H2Connection]r   r   r   r   r   r9   e   s     H HG Hr   c                	s    \         P                  P                  R R7      p\        \         P                  P                  VR7      4      # )T)Zclient_side)config)h2rA   ZH2Configurationr   
connectionZH2Connection)r#   rA   s   & r   r:   ZHTTP2Connection._new_h2_conne   s6    **t*<R]]77v7FGGr   c               r   r	   r   r+   r   r   r   r   r   r9   i   s     0 0 0r   c                	s  < \         SV `  4        V P                  ;_uu_ 4       pVP                  4        VP	                  4       ;p'       d   V P
                  P                  V4       R R R 4       R #   + '       g   i     R # ; ir   )r?   connectr;   Zinitiate_connectiondata_to_sendsocksendall)r#   connrF   r@      &  r   rE   ZHTTP2Connection.connecti   sV    ]]]d$$&#0022|2		!!,/ ]]]s   AA22B	c               s(    V ^8  d   QhRRRRRRRR/# )r	   methodr4   urlr7   r8   r   r+   r   r   r   r   r   r9   p   s8     B BB B 	B
 
Br   c                s   RV9   d   \        R4      hRV9   d   \        R4      hT;'       g    RV n        V P                  V4       RV P                  9   d(   RV P                   RV P                  ;'       g    R	 2pM%V P                   RV P                  ;'       g    R	 2pV P
                  P                  R4       V P
                  P                  R
VP                  4       34       V P
                  P                  RVP                  4       34       V P
                  P                  RVP                  4       34       V P                  ;_uu_ 4       pVP                  4       V n
        RRR4       R#   + '       g   i     R# ; i)zputrequest
This deviates from the HTTPConnection method signature since we never need to override
sending accept-encoding headers or the host header.
Z	skip_hostz`skip_host` isn't supportedZskip_accept_encodingz&`skip_accept_encoding` isn't supportedZ/Z:Z[z]:i  s   :methods
   :authoritys   :pathN)s   :schemes   https)r>   _request_urlZ_validate_pathr3   r5   r=   appendencoder;   Zget_next_available_stream_idr<   )r#   rK   rL   r7   Z	authorityrI   s   &&&,  r   
putrequestZHTTP2Connection.putrequestp   s,    & %&CDD!V+%&NOOJJ3C $))DII;b)9)9c(:;I99+Qtyy'7'7C&89I34j&--/:;mY-=-=-?@Ah

56]]]d"??ADO ]]]s   E44F	c               s$    V ^8  d   QhRRRRRR/# )r	   headerzstr | bytesvaluesr   r+   r   r   r   r   r   r9      s!     2 2 2k 2d 2r   c                	s   \        V\        4      '       d   VP                  4       MTpVP                  4       p\	        V4      '       g   \        R \        V4       24      hV Fo  p\        V\        4      '       d   VP                  4       MTp\        V4      '       d   \        R\        V4       24      hV P                  P                  W34       Kq  	  R# )zIllegal header name zIllegal header value N)	
isinstancer4   rO   lowerr   Z
ValueErrorr   r=   rN   )r#   rQ   rR   r   s   &&* r   	putheaderZHTTP2Connection.putheader   s    $.vs$;$;$V,,3CK=ABBE&0&<&<ELLN%E'.. #8U!EFFMM  &1	 r   c               r   )r	   message_bodyr8   r   r+   r   r   r   r   r   r9      s      z T r   c                	s`   V P                   f   \        R4      hV P                  ;_uu_ 4       pVP                  V P                   V P                  VR J R7       VP                  4       ;p'       d   V P                  P                  V4       R R R 4       . V n        R #   + '       g   i     L; i)NMust call `putrequest` first.)	stream_idheaders
end_stream)r<   r   r;   Zsend_headersr=   rF   rG   rH   )r#   rV   rI   rF   s   &&  r   
endheadersZHTTP2Connection.endheaders   s    ??"!"ABB]]]d//(D0  
  $0022|2		!!,/   ]s   ABB-	c               r   )r	   datar8   r   r+   r   r   r   r   r   r9      s     + + + +r   c           	     s   V P                   f   \        R4      hV P                  ;_uu_ 4       pVP                  4       ;p'       d   V P                  P                  V4       \        VR4      '       d    VP                  V P                  4      pV'       g   M{\        V\        4      '       d   VP                  4       pVP                  V P                   VRR7       VP                  4       ;p'       g   K  V P                  P                  V4       K  VP                  V P                   4        RRR4       R# \        V\        4      '       d   VP                  4       p \        V\        4      '       dS   VP                  V P                   VRR7       VP                  4       ;p'       d   V P                  P                  V4       MxV FV  pVP                  V P                   VRR7       VP                  4       ;p'       g   K;  V P                  P                  V4       KX  	  VP                  V P                   4        RRR4       R#   \         d    \        R\!        T4      ,          4      hi ; i  + '       g   i     R# ; i)zySend data to the server.
`data` can be: `str`, `bytes`, an iterable, or file-like objects
that support a .read() method.
NrW   readTF)rZ   z6`data` should be str, bytes, iterable, or file. got %r)r<   r   r;   rF   rG   rH   Zhasattrr]   Z	blocksizerS   r4   rO   Z	send_datarZ   r   Z	TypeErrorZtype)r#   r\   rI   rF   Zchunks   &&   r   sendZHTTP2Connection.send   s   
 ??"!"ABB]]]d#0022|2		!!,/tV$$ IIdnn5E !%-- %NN4??EeNL'+'8'8'::|::		)),70 ]" $$${{}dE**NN4??DTNJ'+'8'8'::|:		)),7!%t%P+/+<+<+>><>> II--l; "& OODOO4= ]>  L4j! ? ]]sP   A)I5AI579I5:&I5!AI-II5	8I:I I5'I22I55J	c          
     s,    V ^8  d   QhRRRRRRRRRR	/# )
r	   r3   r4   r5   r6   rY   typing.Mapping[str, str] | Noneschemer   r+   r   r   r   r   r   r9      s<     	
 	
	
 	
 1		

 	
 
	
r   c                	s    \        R 4      h)z;HTTP/2 does not support setting up a tunnel through a proxy)r>   )r#   r3   r5   rY   r`   s   &&&&&r   
set_tunnelZHTTP2Connection.set_tunnel   s     "I
 	
r   c               r   )r	   r   HTTP2Responser   r   r   r   r   r9      s     (
 (
	(
r   c           
     	s*   R p\        4       pV P                  ;_uu_ 4       pRpV'       Eg   V P                  P                  R4      ;p'       EdN   VP	                  V4      pV EF5  p\        V\        P                  P                  4      '       dt   \        4       pVP                   FW  w  rV	R8X  d   \        V
P                  4       4      pK'  VP                  V	P                  R4      V
P                  R4      4       KY  	  K  \        V\        P                  P                  4      '       d<   W'P                  ,          pVP!                  VP"                  VP$                  4       EK  \        V\        P                  P&                  4      '       g   EK3  RpEK8  	  VP)                  4       ;p'       g   EK  V P                  P+                  V4       EK   R R R 4       \-        VXV P.                  \1        V4      R7      #   + '       g   i     L2; i)NFi  s   :statusZasciiT)statusrY   request_urlr\   )Z	bytearrayr;   rG   ZrecvZreceive_datarS   rB   eventsZResponseReceivedr   rY   intZdecodeZaddZDataReceivedr\   Zacknowledge_received_dataZflow_controlled_lengthrX   ZStreamEndedrF   rH   rb   rM   r   )r#   rc   r\   rI   rZ   Zreceived_datare   ZeventrY   rQ   r   rF   s   &           r   getresponseZHTTP2Connection.getresponse   s    {]]]dJ j$(IINN5$99=9!..}=F!'%eRYY-G-GHH&4&6G16#)Z#7-0-@F$+KK(.g(>W@U%&	 2? (ryy/E/EFF JJ.D :: % < <eoo (ryy/D/DEE)-J% "(( $(#4#4#66<66II%%l33 ! < ))t	
 	
= ]s#   H#HE HH9HH	preload_contentTdecode_contentenforce_content_lengthc               s<    V ^8  d   QhRRRRRRRRRR	R
R	RR	RRRR/	# )r	   rK   r4   rL   bodyz_TYPE_BODY | NonerY   r_   rh   r   ri   rj   r7   r8   r   r+   r   r   r   r   r   r9     sd     % %% %  	%
 1% % % !%% % 
%r   c               s(   RV9   d    V P                   e&   V P                   P                  V P                  4       V P                  W4       T;'       g    / pVP	                  4        F4  w  rV	P                  4       R8X  d
   V
R8X  d   K#  V P                  W4       K6  	  R\        V P                  4      9  d   V P                  R\        4       4       V'       d&   V P                  VR7       V P                  V4       R# V P                  4        R# )zSend an HTTP/2 requestZchunkedNztransfer-encodings
   user-agent)rV   )rG   Z
settimeoutZtimeoutrP   ZitemsrT   rU   Zdictr=   r   r[   r^   )r#   rK   rL   rk   rY   rh   ri   rj   r7   ZkZvs   &&&&&$$$,  r   requestZHTTP2Connection.request  s      99 II  .$--RMMODAwwy//ANq$	 $ T]] 33NN=*A*CDOOO.IIdOOOr   c               r   rD   r   r   r   r   r   r9   3  s      t r   c                	st  < V P                   ;_uu_ 4       p VP                  4        VP                  4       ;p'       d   V P                  P	                  V4       R R R 4       T P                  4       T n         R T n        . T n        \        ST `)  4        R #   \
         d     LHi ; i  + '       g   i     LT; ir   )r;   Zclose_connectionrF   rG   rH   Z	Exceptionr:   r<   r=   r?   close)r#   rI   r\   r@   rJ   r   rm   ZHTTP2Connection.close3  s    ]]]d%%',,..4.II%%d+	  ))+   ]s)   B'ABB$!B'#B$$B''B7	)r;   r<   r=   rM   r   )NNZhttp)NN)r-   r.   r/   r0   r$   r:   rE   rP   rU   r[   r^   ra   rg   rl   rm   r1   __classcell__r@      @r   r2   r2   U   ss    O OH0 0B>2+Z	
(
T% !%%  $% (,% %N r   r2   c                  s`   a  ] tR tRtRR V 3R lllt]R R l4       tR R ltR R	 ltR
t	V ;t
# )rb   iD  c               s0    V ^8  d   QhRRRRRRRRR	R
RR/# )r	   rc   rf   rY   r   rd   r4   r\   r   ri   r   r   r+   r   r   r   r   r   HTTP2Response.__annotate__F  sF     " ""  " 	"
 " " 
"r   c           
     	sN   < \         SV `  VV^RRVVR7       W@n        ^ V n        R# )i   zHTTP/2N)rc   rY   ZversionZversion_stringZreasonri   rd   )r?   r$   _datalength_remaining)r#   rc   rY   rd   r\   ri   r@   s   &&&&&&r   r$   ZHTTP2Response.__init__F  s;     	#)# 	 
	
 
 !r   c               r   )r	   r   r   r   r   r   r   r   rq   ]  s      e r   c                	s    V P                   # r   )rr   r%   r   r   r\   ZHTTP2Response.data\  s    zzr   c               r   rD   r   r   r   r   r   rq   `  s      t r   c                	    R # r   r   r%   r   r   get_redirect_locationZ#HTTP2Response.get_redirect_location`  s    r   c               r   rD   r   r   r   r   r   rq   c  s      t r   c                	rt   r   r   r%   r   r   rm   ZHTTP2Response.closec  s    r   )rr   rs   )F)r-   r.   r/   r0   r$   Zpropertyr\   ru   rm   r1   rn   ro   rp   r   rb   rb   D  s0    " ",   r   rb   )%Z
__future__r    ZloggingZrer    ZtypesZtypingZ	h2.configrB   Zh2.connectionZ	h2.eventsZ_base_connectionr   Z_collectionsr   rC   r   r   Z
exceptionsr   Zresponser   Zorig_HTTPSConnectionZTypeVarr   Z	getLoggerr-   ZlogZcompiler   r   r   r   ZGenericr   r2   rb   r   r   r   <module>rv      s    "  	       ) ) A ( '& 
NN3!**%DE ZZ(VW 5:FNN1% >lo l^ $  r   