Ë
    /æj b  ã                  óX  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	Z
d dlZ
d dlZ
d dlZ
d dlZ
ddlmZ ddlmZmZmZ ddlmZmZmZ ddlmZmZmZ dd	lmZ dd
lm Z  ddl!m"Z"  ejF                  d«      Z$dd„Z% G d„ dejL                  «      Z' G d„ de"«      Z( G d„ d«      Z)y)é    )ÚannotationsN)ÚAsyncGeneratoré   )ÚAsyncNetworkStream)ÚConnectionNotAvailableÚLocalProtocolErrorÚRemoteProtocolError)ÚOriginÚRequestÚResponse)Ú	AsyncLockÚAsyncSemaphoreÚAsyncShieldCancellation)ÚTrace)Úsafe_async_iterateé   )ÚAsyncConnectionInterfacezhttpcore2.http2c                ó:   — t        d„ | j                  D «       «      S )Nc              3  ór   K  — | ]/  \  }}|j                  «       d k(  xs |j                  «       dk(  –— Œ1 y­w)s   content-lengthó   transfer-encodingN)Úlower)Ú.0ÚkÚ_vs      úY/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/httpcore2/_async/http2.pyú	<genexpr>z#has_body_headers.<locals>.<genexpr>   s7   è ø€ ÒpÑW\ÐWXÐZ\ˆq�w‰w‹yÐ-Ñ-ÒR°·±³Ð>RÑ1RÓRÑpùs   ‚57)ÚanyÚheaders)Úrequests    r   Úhas_body_headersr       s   € ÜÑpÐ`g×`oÑ`oÔpÓpÐpó    c                  ó   — e Zd ZdZdZdZy)ÚHTTPConnectionStater   r   é   N)Ú__name__Ú
__module__Ú__qualname__ÚACTIVEÚIDLEÚCLOSED© r!   r   r#   r#      s   „ Ø€FØ€DØ�Fr!   r#   c                  óZ  — e Zd ZdZej
                  j                  d¬«      Z	 d!	 	 	 	 	 d"d„Zd#d„Z	d$d„Z
d%d„Zd%d	„Zd&d
„Zd%d„Zd'd„Zd(d„Z	 	 	 	 	 	 d)d„Zd!d*d„Zd+d„Zd,d„Zd-d„Zd.d„Zd$d„Zd/d„Zd0d„Zd1d„Zd1d„Zd1d„Zd1d„Zd1d„Zd1d„Zd2d„Z d2d„Z!d3d„Z"	 	 	 d4	 	 	 	 	 	 	 d5d „Z#y)6ÚAsyncHTTP2Connectioné   F)Úvalidate_inbound_headersNc                ó¬  — || _         || _        || _        t        j                  j                  | j                  ¬«      | _        t        j                  | _
        d | _        d| _        t        «       | _        t        «       | _        t        «       | _        t        «       | _        d| _        d| _        d| _        i | _        d | _        d | _        d | _        y )N)Úconfigr   F)Ú_originÚ_network_streamÚ_keepalive_expiryÚh2Ú
connectionÚH2ConnectionÚCONFIGÚ	_h2_stater#   r)   Ú_stateÚ
_expire_atÚ_request_countr   Ú
_init_lockÚ_state_lockÚ
_read_lockÚ_write_lockÚ_sent_connection_initÚ_used_all_stream_idsÚ_connection_errorÚ_eventsÚ_connection_terminatedÚ_read_exceptionÚ_write_exception)ÚselfÚoriginÚstreamÚkeepalive_expirys       r   Ú__init__zAsyncHTTP2Connection.__init__)   sº   € ð ˆŒØ%ˆÔØ/?ˆÔÜŸ™×3Ñ3¸4¿;¹;Ð3ÓGˆŒÜ)×.Ñ.ˆŒØ(,ˆŒØˆÔÜ#›+ˆŒÜ$›;ˆÔÜ#›+ˆŒÜ$›;ˆÔØ%*ˆÔ"Ø$)ˆÔ!Ø!&ˆÔð ð 	Œð NRˆÔ#à15ˆÔØ26ˆÕr!   c           	   ƒ  óh  K  — | j                  |j                  j                  «      s/t        d|j                  j                  › d| j                  › �«      ‚| j
                  4 ƒd {  –—†  | j                  t        j                  t        j                  fv r2| xj                  dz  c_
        d | _        t        j                  | _        n
t        «       ‚d d d «      ƒd {  –—†  | j                  4 ƒd {  –—†  | j                  sÎ	 d|i}t        dt         ||«      4 ƒd {  –—†   | j"                  di |¤Žƒ d {  –—†  d d d «      ƒd {  –—†  d| _        d| _        d| _        | j.                  j0                  j2                  }t5        |«      | _        t9        || j*                  z
  «      D ]$  }| j6                  j;                  «       ƒ d {  –—†  Œ& d d d «      ƒd {  –—†  	 | j6                  j;                  «       ƒ d {  –—†  t'        «       5  | j
                  4 ƒd {  –—†  | j,                  s	 d d d «      ƒd {  –—†  d d d «       n.| xj,                  dz  c_        d d d «      ƒd {  –—†  d d d «       Œ–	 | j.                  j=                  «       }g | j>                  |<   	 ||dœ}t        d	t         ||«      4 ƒd {  –—†  | jK                  ||¬«      ƒ d {  –—†  d d d «      ƒd {  –—†  t        d
t         ||«      4 ƒd {  –—†  | jM                  ||¬«      ƒ d {  –—†  d d d «      ƒd {  –—†  t        dt         ||«      4 ƒd {  –—† }| jO                  ||¬«      ƒ d {  –—† \  }	}
|	|
f|_(        d d d «      ƒd {  –—†  tS        	
tU        | ||¬«      d| jV                  |dœ¬«      S 7 �ŒJ7 �ŒÕ# 1 ƒd {  –—†7  sw Y   �ŒæxY w7 �ŒÙ7 �Œ°7 �Œ™7 �ŒŒ# 1 ƒd {  –—†7  sw Y   �Œ�xY w# t$        $ r@}t'        «       5  | j)                  «       ƒ d {  –—†7   d d d «       |‚# 1 sw Y   |‚xY wd }~ww xY w7 �Œo7 �Œ`# 1 ƒd {  –—†7  sw Y   �ŒqxY w7 �ŒV7 �Œ97 �Œ7 �Œô# 1 ƒd {  –—†7  sw Y   �ŒxY w# 1 sw Y   �Œ
xY w# t@        jB                  jD                  $ rJ d| _#        | xj                  dz  c_
        | j6                  jI                  «       ƒ d {  –—†7   t        «       ‚w xY w7 �Œ07 �Œ7 �Œ# 1 ƒd {  –—†7  sw Y   �ŒxY w7 �Œ	7 �Œñ7 �Œä# 1 ƒd {  –—†7  sw Y   �ŒõxY w7 �Œâ7 �ŒÊ7 �Œ±# 1 ƒd {  –—†7  sw Y   �ŒÂxY w# t$        $ rÙ}t'        «       5  d|i}t        dt         ||«      4 ƒd {  –—†7   | jY                  |¬«      ƒ d {  –—†7   d d d «      ƒd {  –—†7   n# 1 ƒd {  –—†7  sw Y   nxY wd d d «       n# 1 sw Y   nxY wt[        |t@        jB                  j\                  «      r,| j^                  rta        | j^                  «      ‚tc        |«      ‚|‚d }~ww xY w­w)NzAttempted to send request to z on connection to r   r   Úsend_connection_initTr   ©r   Ú	stream_idÚsend_request_headersÚsend_request_bodyÚreceive_response_headers©rP   s   HTTP/2)Úhttp_versionÚnetwork_streamrP   )Ústatusr   ÚcontentÚ
extensionsrP   Úresponse_closedr+   )2Úcan_handle_requestÚurlrI   ÚRuntimeErrorr2   r>   r:   r#   r(   r)   r<   r;   r   r=   rA   r   ÚloggerÚ_send_connection_initÚBaseExceptionr   ÚacloseÚ_max_streamsÚ_max_streams_deficitr9   Úlocal_settingsÚmax_concurrent_streamsr   Ú_max_streams_semaphoreÚrangeÚacquireÚget_next_available_stream_idrD   r5   Ú
exceptionsÚNoAvailableStreamIDErrorrB   ÚreleaseÚ_send_request_headersÚ_send_request_bodyÚ_receive_responseÚreturn_valuer   ÚHTTP2ConnectionByteStreamr3   Ú_response_closedÚ
isinstanceÚProtocolErrorrE   r	   r   )rH   r   Ú
sci_kwargsÚexcÚlocal_settings_max_streamsÚ_rP   ÚkwargsÚtracerW   r   s              r   Úhandle_async_requestz)AsyncHTTP2Connection.handle_async_requestK   sÍ  è ø€ Ø×&Ñ& w§{¡{×'9Ñ'9Ô:ô
 Ð!>¸w¿{¹{×?QÑ?QÐ>RÐRdÐei×eqÑeqÐdrÐsÓtÐtà×#Ñ#÷ 	/ñ 	/Ø�{‰{Ô2×9Ñ9Ô;N×;SÑ;SÐTÑTØ×#Ò# qÑ(Õ#Ø"&�”Ü1×8Ñ8�•ä,Ó.Ð.÷	/÷ 	/ð —?‘?÷ 	@ñ 	@Ø×-Ò-ðØ"+¨WÐ!5�JÜ$Ð%;¼VÀWÈjÓY÷ Gñ GØ8˜d×8Ñ8ÑF¸:ÑF×FÐF÷G÷ Gð .2�Ô*ð %&�Ô!ð -.�Ô)à-1¯^©^×-JÑ-J×-aÑ-aÐ*Ü.<Ð=WÓ.X�Ô+äÐ9¸D×<MÑ<MÑMÓNò @�AØ×5Ñ5×=Ñ=Ó?×?Ñ?ð@÷/	@÷ 	@ð6 Ø×-Ñ-×5Ñ5Ó7×7Ð7Ü(Ó*ñ 3Ø×+Ñ+÷ 3ñ 3Ø×4Ò4Ø÷3÷ 3÷3ð 3ð ×-Ò-°Ñ2Õ-÷3÷ 3÷3ð ð	+ØŸ™×CÑCÓEˆIØ&(ˆD�L‰L˜Ñ#ð*	Ø!(°yÑAˆFÜÐ3´V¸WÀfÓM÷ Wñ WØ×0Ñ0¸ÈIÐ0ÓV×VÐV÷W÷ WäÐ0´&¸'À6ÓJ÷ Tñ TØ×-Ñ-°gÈÐ-ÓS×SÐS÷T÷ TäÐ7¼ÀÈ&ÓQ÷ 7ð 7ÐUZØ(,×(>Ñ(>ÀwÐZcÐ(>Ó(d×"d‘�˜Ø&,¨gÐ%6�Ô"÷7÷ 7ô ØØÜ1°$¸È9ÔUà$-Ø&*×&:Ñ&:Ø!*ñô		ð 	ð}	/ùð 	/ù÷ 	/÷ 	/ò 	/úð	@ùðGùØFùðGù÷ G÷ Gò Gûä$ò Ü0Ó2ñ ,Ø"Ÿk™k›m×+Ñ+÷,à�I÷,à�Iþðúð$ @ùð1	@ù÷ 	@÷ 	@ò 	@úð8 8ùð3ùð 3ùð 3ù÷ 3÷ 3ò 3ú÷3ñ 3ûô �}‰}×5Ñ5ò 	+Ø(,ˆDÔ%Ø×Ò 1Ñ$ÕØ×-Ñ-×5Ñ5Ó7×7Ñ7Ü(Ó*Ð*ð		+úðWùØVùðWù÷ W÷ Wò WúðTùØSùðTù÷ T÷ Tò Túð7ùØ"dùð7ù÷ 7÷ 7ò 7ûô ò 	Ü(Ó*ñ EØ% yÐ1�Ü Ð!2´F¸GÀVÓL÷ Eò EØ×/Ñ/¸)Ð/ÓD×DÑD÷E÷ E÷ E÷ Eó Eú÷E÷ Eñ Eúô
 ˜#œrŸ}™}×:Ñ:Ô;ð ×.Ò.Ü-¨d×.IÑ.IÓJÐJô )¨Ó-Ð-àˆIûð-	üsp  ‚A%X2Á'N1Á(X2Á+A)N7ÃX2ÃN4Ã X2Ã4OÃ5X2Ã8QÄO/Ä OÄ!O/Ä$OÄ:OÄ;OÄ?O/Å
OÅO/ÅA=QÇP;ÇQÇX2ÇP>Ç"X2ÈQÈX2ÈQ9È!QÈ"Q9È%Q#È3Q9È>QÈ?Q9É	X2ÉQ#É!Q9É,Q É-Q9É1	X2É;)R Ê%U Ë S0ËU ËS9ËS3ËS9Ë U Ë+S6Ë,U ÌTÌU Ì
TÌ!TÌ"TÌ&U Ì1TÌ2U ÍT.ÍU ÍT7Í'T1Í(T7Í8U ÎT4Î,U Î0X2Î4X2Î7O
Î=O Î>O
Ï	X2ÏO/ÏOÏO/ÏO,	ÏO"Ï O,	Ï'O/Ï/	P8Ï8
P3ÐP&ÐP
ÐP&Ð
P3Ð&P0Ð+P3Ð3P8Ð8QÐ>X2ÑQÑQ
ÑQÑ	X2ÑQ9ÑQ9Ñ Q9Ñ#Q6	Ñ)Q,Ñ*Q6	Ñ1Q9Ñ9RÑ>X2ÒAS-ÓSÓS-Ó-X2Ó0U Ó3S9Ó6U Ó9TÓ?TÔ TÔ	U ÔTÔU ÔT+ÔT!ÔT+Ô&	U Ô1T7Ô4U Ô7U
Ô=U Ô>U
ÕU Õ	X/Õ
X*Õ WÕ;U>
Õ<WÖ V.ÖV
ÖV.ÖWÖ'V*Ö(WÖ.W Ö4V7Ö5W Ö<W×	X*×W	×AX*Ø*X/Ø/X2c           	   ƒ  óV  K  — t         j                  j                  dt         j                  j                  j                  dt         j                  j                  j
                  dt         j                  j                  j                  di¬«      | j                  _        | j                  j                  t         j                  j                  j                  = | j                  j                  «        | j                  j                  d«       | j                  |«      ƒ d{  –—†  y7 Œ­w)z�
        The HTTP/2 connection requires some initial setup before we can start
        using individual request/response streams on it.
        Tr   éd   r.   )ÚclientÚinitial_valuesé   N)r5   ÚsettingsÚSettingsÚSettingCodesÚENABLE_PUSHÚMAX_CONCURRENT_STREAMSÚMAX_HEADER_LIST_SIZEr9   rd   ÚENABLE_CONNECT_PROTOCOLÚinitiate_connectionÚincrement_flow_control_windowÚ_write_outgoing_data)rH   r   s     r   r_   z*AsyncHTTP2Connection._send_connection_init³   sË   è ø€ ô )+¯©×(<Ñ(<Øô —‘×(Ñ(×4Ñ4°aä—‘×(Ñ(×?Ñ?ÀÜ—‘×(Ñ(×=Ñ=¸uðð )=ó 
)
ˆ�‰Ô%ð �N‰N×)Ñ)¬"¯+©+×*BÑ*B×*ZÑ*ZÐ[à�‰×*Ñ*Ô,Ø�‰×4Ñ4°UÔ;Ø×'Ñ'¨Ó0×0Ò0ús   ‚DD)Ä!D'Ä"D)c              ƒ  óX  K  — t        |«       }|j                  D ��cg c]  \  }}|j                  «       dk(  sŒ|‘Œ c}}d   }d|j                  fd|fd|j                  j
                  fd|j                  j                  fg|j                  D ��cg c])  \  }}|j                  «       dvr|j                  «       |f‘Œ+ c}}z   }| j                  j                  |||¬«       | j                  j                  d	|¬
«       | j                  |«      ƒ d{  –—†  yc c}}w c c}}w 7 Œ­w)z@
        Send the request headers to a given stream ID.
        ó   hostr   s   :methods
   :authoritys   :schemes   :path)rŒ   r   )Ú
end_streamr€   rT   N)r    r   r   Úmethodr\   ÚschemeÚtargetr9   Úsend_headersr‰   rŠ   )rH   r   rP   r�   r   ÚvÚ	authorityr   s           r   rm   z*AsyncHTTP2Connection._send_request_headersÒ   s  è ø€ ô *¨'Ó2Ð2ˆ
ð $+§?¡?×K™4˜1˜a°a·g±g³iÀ7Ó6J’QÓKÈAÑNˆ	ð ˜Ÿ™Ð(Ø˜IÐ&Ø˜Ÿ™×+Ñ+Ð,Ø�w—{‘{×)Ñ)Ð*ð	
ð  Ÿ™÷
á��1Ø�w‰w‹yðñð �W‰W‹Y˜ŠNó
ñ
ˆð 	�‰×#Ñ# I¨wÀ:Ð#ÔNØ�‰×4Ñ4°UÀiÐ4ÔPØ×'Ñ'¨Ó0×0Ñ0ùó' Lùó
ð 	1ús.   ‚D*žDºD¾AD*Â.D"ÃAD*ÄD(ÄD*c              ƒ  óŒ  K  — t        |«      syt        |j                  t        j                  «      sJ ‚t        |j                  «      4 ƒd{  –—† }|2 3 d{  –—† }| j                  |||«      ƒ d{  –—†  Œ%7 Œ+7 Œ"7 Œ	6 ddd«      ƒd{  –—†7   n# 1 ƒd{  –—†7  sw Y   nxY w| j                  ||«      ƒ d{  –—†7   y­w)zP
        Iterate over the request body sending it to a given stream ID.
        N)r    rs   rJ   ÚtypingÚAsyncIterabler   Ú_send_stream_dataÚ_send_end_stream)rH   r   rP   ÚiteratorÚchunks        r   rn   z'AsyncHTTP2Connection._send_request_bodyñ   s¾   è ø€ ô   Ô(Øä˜'Ÿ.™.¬&×*>Ñ*>Ô?Ð?Ð?Ü% g§n¡nÓ5÷ 	Hð 	H¸Ø'÷ Hð H�eØ×,Ñ,¨W°iÀÓG×GÑGð	HøðHøØGøð  (÷	H÷ 	H÷ 	H÷ 	Hó 	Húð ×#Ñ# G¨YÓ7×7Ò7ùsŠ   ‚ACÁA:ÁCÁBÁB ÁA<ÁB ÁBÁ4A>Á5BÁ:CÁ<B Á>BÂ BÂCÂBÂCÂB%ÂBÂB%Â!CÂ=C Â>Cc              ƒ  ó  K  — d}|t        |«      k  ru| j                  ||«      ƒ d{  –—† }||||z    }|t        |«      z  }| j                  j                  ||«       | j	                  |«      ƒ d{  –—†  |t        |«      k  rŒtyy7 Œ`7 Œ­w)zI
        Send a single chunk of data in one or more data frames.
        r   N)ÚlenÚ_wait_for_outgoing_flowr9   Ú	send_datarŠ   )rH   r   rP   ÚdataÚpositionÚmax_flowrš   s          r   r—   z&AsyncHTTP2Connection._send_stream_dataÿ   sŒ   è ø€ ð ˆØœ˜T›Ò"Ø!×9Ñ9¸'À9ÓM×MˆHØ˜ H¨xÑ$7Ð8ˆEØœ˜E›
Ñ"ˆHØ�N‰N×$Ñ$ Y°Ô6Ø×+Ñ+¨GÓ4×4Ð4ð œ˜T›Õ"ØMøð 5ús(   ‚&B¨B	©A
BÁ3BÁ4BÂBÂBc              ƒ  óx   K  — | j                   j                  |«       | j                  |«      ƒ d{  –—†  y7 Œ­w)z`
        Send an empty data frame on on a given stream ID with the END_STREAM flag set.
        N)r9   r�   rŠ   )rH   r   rP   s      r   r˜   z%AsyncHTTP2Connection._send_end_stream  s.   è ø€ ð 	�‰×!Ñ! )Ô,Ø×'Ñ'¨Ó0×0Ò0ús   ‚0:²8³:c              ƒ  ór  K  — 	 | j                  ||«      ƒ d{  –—† }t        |t        j                  j                  «      rnŒ@d}g }|j
                  €J ‚|j
                  D ]L  \  }}|dk(  rt        |j                  dd¬«      «      }Œ(|j                  d«      rŒ:|j                  ||f«       ŒN ||fS 7 Œ›­w)zT
        Return the response status code and headers for a given stream ID.
        NéÈ   s   :statusÚasciiÚignore)Úerrorsó   :)
Ú_receive_stream_eventrs   r5   ÚeventsÚResponseReceivedr   ÚintÚdecodeÚ
startswithÚappend)rH   r   rP   ÚeventÚstatus_coder   r   r’   s           r   ro   z&AsyncHTTP2Connection._receive_response  s¼   è ø€ ð Ø×4Ñ4°W¸iÓH×HˆEÜ˜%¤§¡×!;Ñ!;Ô<Øð ð
 ˆØ-/ˆØ�}‰}Ð(Ð(Ð(Ø—M‘Mò 	'‰DˆAˆqØ�JŠÜ! !§(¡(¨7¸8 (Ó"DÓE‘Ø—\‘\ $Õ'Ø—‘  1˜vÕ&ð		'ð ˜WÐ%Ð%ð Iús   ‚B7™B5šBB7ÂB7c               ó¶  K  — 	 | j                  ||«      ƒ d{  –—† }t        |t        j                  j                  «      rm|j
                  €J ‚|j                  €J ‚|j
                  }| j                  j                  ||«       | j                  |«      ƒ d{  –—†  |j                  ­–— n%t        |t        j                  j                  «      ryŒÑ7 Œ»7 Œ<­w)z]
        Iterator that returns the bytes of the response body for a given stream ID.
        N)r©   rs   r5   rª   ÚDataReceivedÚflow_controlled_lengthrŸ   r9   Úacknowledge_received_datarŠ   ÚStreamEnded)rH   r   rP   r°   Úamounts        r   Ú_receive_response_bodyz+AsyncHTTP2Connection._receive_response_body(  s¸   è ø€ ð Ø×4Ñ4°W¸iÓH×HˆEÜ˜%¤§¡×!7Ñ!7Ô8Ø×3Ñ3Ð?Ð?Ð?Ø—z‘zÐ-Ð-Ð-Ø×5Ñ5�Ø—‘×8Ñ8¸ÀÔKØ×/Ñ/°Ó8×8Ð8Ø—j‘jÔ Ü˜E¤2§9¡9×#8Ñ#8Ô9Øð ØHøð 9ús"   ‚C™CšB CÂCÂ;CÃCc              ƒ  óN  K  — | j                   j                  |«      s6| j                  ||«      ƒ d{  –—†  | j                   j                  |«      sŒ6| j                   |   j                  d«      }t	        |t
        j                  j                  «      rt        |«      ‚|S 7 Œo­w)zƒ
        Return the next available event for a given stream ID.

        Will read more data from the network if required.
        Nr   )	rD   ÚgetÚ_receive_eventsÚpoprs   r5   rª   ÚStreamResetr	   )rH   r   rP   r°   s       r   r©   z*AsyncHTTP2Connection._receive_stream_event8  s†   è ø€ ð —,‘,×"Ñ" 9Ô-Ø×&Ñ& w°	Ó:×:Ð:ð —,‘,×"Ñ" 9Õ-à—‘˜YÑ'×+Ñ+¨AÓ.ˆÜ�eœRŸY™Y×2Ñ2Ô3Ü% eÓ,Ð,Øˆð	 ;ús   ‚1B%³B#´B%ÁAB%c           	   ƒ  ó¨  K  — | j                   4 ƒd{  –—†  | j                  �S| j                  j                  }|r&|r$||kD  r| xj                  dz  c_        t	        «       ‚t        | j                  «      ‚|�| j                  j                  |«      �sX| j                  |«      ƒ d{  –—† }|D �]9  }t        |t        j                  j                  «      r2t        dt        |«      4 ƒd{  –—† }||_        ddd«      ƒd{  –—†  ŒZt        |t        j                  j                   t        j                  j"                  t        j                  j$                  t        j                  j&                  f«      rC|j(                  | j                  v sŒã| j                  |j(                     j+                  |«       �Œt        |t        j                  j,                  «      s�Œ3|| _        �Œ< ddd«      ƒd{  –—†  | j/                  |«      ƒ d{  –—†  y7 �Œ7 �Œq7 �Œ07 �Œ# 1 ƒd{  –—†7  sw Y   �Œ†xY w7 Œ@# 1 ƒd{  –—†7  sw Y   ŒPxY w7 Œ>­w)zp
        Read some data from the network until we see one or more events
        for a given stream ID.
        Nr   Úreceive_remote_settings)r?   rE   Úlast_stream_idr<   r   r	   rD   rº   Ú_read_incoming_datars   r5   rª   ÚRemoteSettingsChangedr   r^   rp   r«   r³   r¶   r½   rP   r¯   ÚConnectionTerminatedrŠ   )rH   r   rP   rÀ   rª   r°   rz   s          r   r»   z$AsyncHTTP2Connection._receive_eventsG  sã  è ø€ ð
 —?‘?÷ "	<ñ "	<Ø×*Ñ*Ð6Ø!%×!<Ñ!<×!KÑ!K�Ù¡°IÀÒ4NØ×'Ò'¨1Ñ,Õ'Ü0Ó2Ð2Ü)¨$×*EÑ*EÓFÐFð Ð ¨¯©×(8Ñ(8¸Õ(CØ#×7Ñ7¸Ó@×@�Ø#ó <�EÜ! %¬¯©×)HÑ)HÔIÜ#(Ð)BÄFÈGÓ#T÷ 7ð 7ÐX]Ø16˜EÔ.÷7÷ 7ð 7ô $ØäŸI™I×6Ñ6ÜŸI™I×2Ñ2ÜŸI™I×1Ñ1ÜŸI™I×1Ñ1ð	ôð !Ÿ?™?¨d¯l©lÒ:Ø ŸL™L¨¯©Ñ9×@Ñ@ÀÖGä# E¬2¯9©9×+IÑ+IÖJØ6;˜Ö3ð%<÷!"	<÷ "	<ðH ×'Ñ'¨Ó0×0Ñ0ðI"	<ùð Aùð7ùð 7ù÷ 7÷ 7ò 7úð%"	<ø÷ "	<÷ "	<ñ "	<úðH 	1úsº   ‚I“H”I—BH;Â)HÂ*AH;Ã-H
Ã.H;Ã1H#Ã9H;ÄH ÄBH;ÆAH;Ç#
H;Ç-IÇ8H9Ç9IÈIÈIÈH;ÈH;È H;È#H6È)H,È*H6È1H;È9IÈ;IÉIÉIÉ	Ic              ƒ  óÞ  K  — |j                   j                  t        j                  j                  j
                  «      }|�r't        |j                  | j                  j                  j                  «      }|rð|| j                  k7  rà|| j                  kD  rl| j                  dkD  r| xj                  dz  c_        n"| j                  j                  «       ƒ d {  –—†  | xj                  dz  c_        || j                  kD  rŒl|| j                  k  rU| j                  j                  «       s| xj                  dz  c_        | xj                  dz  c_        || j                  k  rŒTy y y y y 7 Œ‘­w©Nr   r   )Úchanged_settingsrº   r5   r�   rƒ   r…   ÚminÚ	new_valuer9   rd   re   rb   rc   rf   rl   Úacquire_if_available)rH   r°   re   Únew_max_streamss       r   Ú_receive_remote_settings_changez4AsyncHTTP2Connection._receive_remote_settings_changer  s5  è ø€ Ø!&×!7Ñ!7×!;Ñ!;¼B¿K¹K×<TÑ<T×<kÑ<kÓ!lÐÚ!Ü!Ø&×0Ñ0Ø—‘×-Ñ-×DÑDóˆOñ  ?°d×6GÑ6GÒ#Gà%¨×(9Ñ(9Ò9Ø×0Ñ0°1Ò4Ø×1Ò1°QÑ6Ö1à"×9Ñ9×AÑAÓC×CÐCØ×%Ò%¨Ñ*Õ%ð &¨×(9Ñ(9Ó9ð &¨×(9Ñ(9Ò9Ø×6Ñ6×KÑKÔMØ×1Ò1°QÑ6Õ1Ø×%Ò%¨Ñ*Õ%ð &¨×(9Ñ(9Õ9ð $Hˆð "ð Dús   ‚CE-ÃE+Ã(E-ÄA"E-Å&E-c              ƒ  óè  K  — | j                   4 ƒd {  –—†  || j                  v rT| j                  dkD  r| xj                  dz  c_        n"| j                  j	                  «       ƒ d {  –—†  | j                  |= | j
                  r%| j                  s| j                  «       ƒ d {  –—†  n–| j                  t        j                  k(  ry| j                  smt        j                  | _        | j                  �(t        j                  «       }|| j                  z   | _        | j                  r| j                  «       ƒ d {  –—†  d d d «      ƒd {  –—†  y 7 �Œ?7 Œì7 Œ±7 Œ7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­wrÅ   )r>   rD   rc   rf   rl   rE   ra   r:   r#   r(   r)   r4   ÚtimeÚ	monotonicr;   rB   )rH   rP   Únows      r   rr   z%AsyncHTTP2Connection._response_closed†  s&  è ø€ Ø×#Ñ#÷ 	(ñ 	(Ø˜DŸL™LÑ(Ø×,Ñ,¨qÒ0Ø×-Ò-°Ñ2Ö-à×5Ñ5×=Ñ=Ó?×?Ð?Ø—L‘L Ð+Ø×*Ò*°4·<²<Ø—k‘k“m×#Ñ#à—‘Ô 3× :Ñ :Ò:À4Ç<Â<Ü1×6Ñ6�”Ø×)Ñ)Ð5ÜŸ.™.Ó*�CØ&)¨D×,BÑ,BÑ&B�D”OØ×,Ò,ØŸ+™+›-×'Ð'÷!	(÷ 	(ñ 	(ùð
 @øð $øð (øð!	(ø÷ 	(÷ 	(ñ 	(üs|   ‚E2“E”E2—AEÁ(EÁ)<EÂ%EÂ&BEÄ<EÄ=EÅE2ÅEÅE2ÅEÅEÅEÅE2ÅE/Å#E&Å$E/Å+E2c              ƒ  ó²   K  — | j                   j                  «        t        j                  | _        | j
                  j                  «       ƒ d {  –—†  y 7 Œ­w©N)r9   Úclose_connectionr#   r*   r:   r3   ra   ©rH   s    r   ra   zAsyncHTTP2Connection.aclose™  s=   è ø€ ð 	�‰×'Ñ'Ô)Ü)×0Ñ0ˆŒØ×"Ñ"×)Ñ)Ó+×+Ò+ús   ‚AAÁAÁAc              ƒ  óà  K  — |j                   j                  di «      }|j                  dd «      }| j                  �| j                  ‚	 | j                  j	                  | j
                  |«      ƒ d {  –—† }|dk(  rt        d«      ‚	 t        «       5  | j                  4 ƒd {  –—†  | j                  j                  |«      }|D ]@  }t        |t        j                  j                   «      sŒ(| j#                  |«      ƒ d {  –—†  ŒB d d d «      ƒd {  –—†  d d d «       S 7 Œ¯# t        $ r}|| _        d| _        |‚d }~ww xY w7 Œ¡7 ŒE7 Œ5# 1 ƒd {  –—†7  sw Y   ŒExY w# 1 sw Y   S xY w­w)NÚtimeoutÚreadr!   zServer disconnectedT)rY   rº   rF   r3   rÖ   ÚREAD_NUM_BYTESr	   Ú	ExceptionrC   r   r>   r9   Úreceive_datars   r5   rª   rÂ   rË   )rH   r   ÚtimeoutsrÕ   rŸ   rv   rª   r°   s           r   rÁ   z(AsyncHTTP2Connection._read_incoming_data¢  sq  è ø€ Ø×%Ñ%×)Ñ)¨)°RÓ8ˆØ—,‘,˜v tÓ,ˆà×ÑÐ+Ø×&Ñ&Ð&ð	Ø×-Ñ-×2Ñ2°4×3FÑ3FÈÓP×PˆDØ�sŠ{Ü)Ð*?Ó@Ð@ð ô  %Ó&ñ 	JØ×'Ñ'÷ Jñ JØ04·±×0KÑ0KÈDÓ0Q�Ø#ò J�EÜ! %¬¯©×)HÑ)HÕIØ"×BÑBÀ5ÓI×IÑIðJ÷J÷ J÷	Jð ˆð1 Qùô ò 	ð $'ˆDÔ Ø%)ˆDÔ"ØˆIûð	úðJøð Jøð	Jø÷ J÷ Jñ Jú÷	Jð ˆüsµ   ‚AE.Á
)D% Á3D#Á4D% ÂE.ÂE!Â$EÂ%E!Â(AEÃ.EÄE
ÄEÄ	E!ÄE
ÄE!Ä
E.Ä#D% Ä%	EÄ.D>Ä>EÅE.ÅE!ÅEÅ
E!ÅE	ÅEÅE	ÅE!Å!E+Å&E.c              ƒ  óØ  K  — |j                   j                  di «      }|j                  dd «      }| j                  4 ƒd {  –—†  | j                  j	                  «       }| j
                  �| j
                  ‚	 | j                  j                  ||«      ƒ d {  –—†  d d d «      ƒd {  –—†  y 7 Œl7 Œ# t        $ r}|| _        d| _	        |‚d }~ww xY w7 Œ*# 1 ƒd {  –—†7  sw Y   y xY w­w)NrÕ   ÚwriteT)
rY   rº   r@   r9   Údata_to_sendrG   r3   rÜ   rØ   rC   )rH   r   rÚ   rÕ   rÝ   rv   s         r   rŠ   z)AsyncHTTP2Connection._write_outgoing_dataÄ  sÞ   è ø€ Ø×%Ñ%×)Ñ)¨)°RÓ8ˆØ—,‘,˜w¨Ó-ˆà×#Ñ#÷ 	ñ 	ØŸ>™>×6Ñ6Ó8ˆLà×$Ñ$Ð0Ø×+Ñ+Ð+ðØ×*Ñ*×0Ñ0°¸wÓG×GÐG÷	÷ 	ñ 	øð HùÜò ð ),�Ô%Ø)-�Ô&Ø�	ûðúð	ø÷ 	÷ 	ñ 	üsw   ‚?C*ÁB.ÁC*Á3CÁ9B2ÂB0ÂB2ÂC*Â(CÂ)C*Â0B2Â2	CÂ;CÃCÃCÃC*ÃC'ÃCÃC'Ã#C*c              ƒ  óN  K  — | j                   j                  |«      }| j                   j                  }t        ||«      }|dk  r\| j	                  |«      ƒ d{  –—†  | j                   j                  |«      }| j                   j                  }t        ||«      }|dk  rŒ\|S 7 ŒI­w)a  
        Returns the maximum allowable outgoing flow for a given stream.

        If the allowable flow is zero, then waits on the network until
        WindowUpdated frames have increased the flow rate.
        https://tools.ietf.org/html/rfc7540#section-6.9
        r   N)r9   Úlocal_flow_control_windowÚmax_outbound_frame_sizerÇ   r»   )rH   r   rP   Ú
local_flowÚmax_frame_sizeÚflows         r   r�   z,AsyncHTTP2Connection._wait_for_outgoing_flowß  s–   è ø€ ð Ÿ.™.×BÑBÀ9ÓMˆ
Ø"Ÿn™n×DÑDˆÜ�:˜~Ó.ˆØ�aŠiØ×&Ñ& wÓ/×/Ð/ØŸ™×AÑAÀ)ÓLˆJØ!Ÿ^™^×CÑCˆNÜ�z >Ó2ˆDð	 �a‹ið
 ˆð	 0ús   ‚AB%ÁB#ÁAB%Â!B%c                ó    — || j                   k(  S rÑ   )r2   ©rH   rI   s     r   r[   z'AsyncHTTP2Connection.can_handle_requestó  s   € Ø˜Ÿ™Ñ%Ð%r!   c                ó$   — | j                  «        S rÑ   )Ú	is_closedrÓ   s    r   Úis_connectedz!AsyncHTTP2Connection.is_connectedö  s   € Ø—>‘>Ó#Ð#Ð#r!   c                ó  — | j                   t        j                  k7  xrd | j                   xrU | j                   xrF | j
                  j                  j                  t        j                  j                  j                  k(   S rÑ   )r:   r#   r*   rC   rB   r9   Ústate_machineÚstater5   r6   ÚConnectionStaterÓ   s    r   Úis_availablez!AsyncHTTP2Connection.is_availableù  sq   € à�K‰KÔ.×5Ñ5Ñ5ò aØ×*Ñ*Ð*òaà×-Ñ-Ð-òað —^‘^×1Ñ1×7Ñ7¼2¿=¹=×;XÑ;X×;_Ñ;_Ñ_Ð`ð		
r!   c                óX   — t        j                  «       }| j                  }|d uxr ||kD  S rÑ   )rÍ   rÎ   r;   )rH   rÏ   Ú	expire_ats      r   Úhas_expiredz AsyncHTTP2Connection.has_expired  s-   € Ü�n‰nÓˆð —O‘Oˆ	Ø Ð$Ò8¨¨y©Ð8r!   c                ó<   — | j                   t        j                  k(  S rÑ   )r:   r#   r)   rÓ   s    r   Úis_idlezAsyncHTTP2Connection.is_idle  s   € Ø�{‰{Ô1×6Ñ6Ñ6Ð6r!   c                 ó   — y)NTr+   rÓ   s    r   Úcan_multiplexz"AsyncHTTP2Connection.can_multiplex  s   € Ør!   c                ó<   — | j                   t        j                  k(  S rÑ   )r:   r#   r*   rÓ   s    r   rç   zAsyncHTTP2Connection.is_closed  s   € Ø�{‰{Ô1×8Ñ8Ñ8Ð8r!   c                ó|   — t        | j                  «      }|›d| j                  j                  › d| j                  › �S )Nz
, HTTP/2, ú, Request Count: )Ústrr2   r:   Únamer<   rå   s     r   ÚinfozAsyncHTTP2Connection.info  s:   € Ü�T—\‘\Ó"ˆØ�˜: d§k¡k×&6Ñ&6Ð%7Ð7HÈ×I\ÑI\ÐH]Ð^Ð^r!   c           	     ó²   — | j                   j                  }t        | j                  «      }d|› d|›d| j                  j
                  › d| j                  › d�	S )Nú<z [z, r÷   z]>)Ú	__class__r%   rø   r2   r:   rù   r<   )rH   Ú
class_namerI   s      r   Ú__repr__zAsyncHTTP2Connection.__repr__  sU   € Ø—^‘^×,Ñ,ˆ
Ü�T—\‘\Ó"ˆØ�:�,˜b  
¨"¨T¯[©[×-=Ñ-=Ð,>Ð>OÐPT×PcÑPcÐOdÐdfÐgÐgr!   c              ƒ  ó   K  — | S ­wrÑ   r+   rÓ   s    r   Ú
__aenter__zAsyncHTTP2Connection.__aenter__  s   è ø€ Øˆùs   ‚c              ƒ  ó@   K  — | j                  «       ƒ d {  –—†  y 7 Œ­wrÑ   )ra   )rH   Úexc_typeÚ	exc_valueÚ	tracebacks       r   Ú	__aexit__zAsyncHTTP2Connection.__aexit__   s   è ø€ ð �k‰k‹m×Òús   ‚–—rÑ   )rI   r
   rJ   r   rK   zfloat | None)r   r   Úreturnr   )r   r   r  ÚNone)r   r   rP   r¬   r  r  )r   r   rP   r¬   rŸ   Úbytesr  r  )r   r   rP   r¬   r  z%tuple[int, list[tuple[bytes, bytes]]])r   r   rP   r¬   r  úAsyncGenerator[bytes])r   r   rP   r¬   r  zKh2.events.ResponseReceived | h2.events.DataReceived | h2.events.StreamEnded)r   r   rP   z
int | Noner  r  )r°   zh2.events.RemoteSettingsChangedr  r  )rP   r¬   r  r  ©r  r  )r   r   r  zlist[h2.events.Event])r   r   rP   r¬   r  r¬   )rI   r
   r  Úbool)r  r  )r  rø   )r  r-   )NNN)r  ztype[BaseException] | Noner  zBaseException | Noner  ztypes.TracebackType | Noner  r  )$r%   r&   r'   r×   r5   r1   ÚH2Configurationr8   rL   r{   r_   rm   rn   r—   r˜   ro   r¸   r©   r»   rË   rr   ra   rÁ   rŠ   r�   r[   rè   rí   rð   rò   rô   rç   rú   rÿ   r  r  r+   r!   r   r-   r-   %   s  „ Ø€NØ�Y‰Y×&Ñ&ÀÐ&ÓF€Fð *.ð	 7àð 7ð #ð 7ð 'ó	 7óDfóP1ó>1ó>8ó
5ó1ó&ó(ð ØðØ+.ðà	Tóô)1óV+ó((ó&,ó óDó6ó(&ó$ó
ó9ó7óó9ó_óhóð
 04Ø*.Ø04ð	à,ðð (ðð .ð	ð
 
ôr!   r-   c                  ó$   — e Zd Zdd„Zdd„Zdd„Zy)rq   c                ó<   — || _         || _        || _        d| _        y )NF)Ú_connectionÚ_requestÚ
_stream_idÚ_closed)rH   r6   r   rP   s       r   rL   z"HTTP2ConnectionByteStream.__init__*  s   € Ø%ˆÔØˆŒØ#ˆŒØˆ�r!   c               ór  K  — | j                   | j                  dœ}	 t        dt        | j                   |«      4 ƒd {  –—†  t	        | j
                  j                  | j                   | j                  ¬«      «      4 ƒd {  –—† }|2 3 d {  –—† }|­–— Œ7 ŒX7 Œ7 Œ6 d d d «      ƒd {  –—†7   n# 1 ƒd {  –—†7  sw Y   nxY wd d d «      ƒd {  –—†7   y # 1 ƒd {  –—†7  sw Y   y xY w# t        $ r@}t        «       5  | j                  «       ƒ d {  –—†7   d d d «       |‚# 1 sw Y   |‚xY wd }~ww xY w­w)NrO   Úreceive_response_body)
r  r  r   r^   r   r  r¸   r`   r   ra   )rH   ry   r™   rš   rv   s        r   Ú	__aiter__z#HTTP2ConnectionByteStream.__aiter__0  s  è ø€ Ø!Ÿ]™]¸¿¹ÑIˆð	ÜÐ4´f¸d¿m¹mÈVÓT÷ $ñ $Ü-Ø×$Ñ$×;Ñ;ÀDÇMÁMÐ]a×]lÑ]lÐ;Ómó÷ $ð $àØ'/÷ $ð $˜eØ#œð$øð$øð$ø x÷$÷ $÷ $÷ $ó $ú÷$÷ $÷ $÷ $ó $ûô ò 	ô )Ó*ñ $Ø—k‘k“m×#Ñ#÷$àˆI÷$àˆIþð	üsþ   ‚D7� C+ ½B¾C+ Á?CÂ BÂCÂB/ÂBÂB
ÂBÂB/ÂC+ ÂCÂBÂB/ÂCÂ(B+Â)CÂ/C	Â5B8Â6C	Â=CÃC+ ÃCÃC+ ÃD7ÃC(ÃCÃC(Ã$C+ Ã'D7Ã(C+ Ã+	D4Ã4
D/Ã>D"ÄDÄD"Ä
D/Ä"D,	Ä'D/Ä/D4Ä4D7c              ƒ  óL  K  — | j                   syd| _         d| j                  i}t        dt        | j                  |«      4 ƒd {  –—†  | j
                  j                  | j                  ¬«      ƒ d {  –—†  d d d «      ƒd {  –—†  y y 7 ŒD7 Œ7 Œ
# 1 ƒd {  –—†7  sw Y   y xY w­w)NTrP   rZ   rT   )r  r  r   r^   r  r  rr   )rH   ry   s     r   ra   z HTTP2ConnectionByteStream.acloseA  s�   è ø€ Ø�|Š|ØˆDŒLØ! 4§?¡?Ð3ˆFÜÐ.´¸¿¹ÀvÓN÷ Sñ SØ×&Ñ&×7Ñ7À$Ç/Á/Ð7ÓR×RÐR÷S÷ Sð Sð ðSøØRøðSø÷ S÷ Sñ SüsZ   ‚AB$ÁB	ÁB$Á*BÁ2BÁ3BÁ7B$ÂBÂB$ÂBÂB$ÂB!ÂBÂB!ÂB$N)r6   r-   r   r   rP   r¬   r  r  )r  r
  r  )r%   r&   r'   rL   r  ra   r+   r!   r   rq   rq   )  s   „ óóô"Sr!   rq   )r   r   r  r  )*Ú
__future__r   ÚenumÚloggingrÍ   Útypesr•   Úcollections.abcr   Ú	h2.configr5   Úh2.connectionÚ	h2.eventsÚh2.exceptionsÚh2.settingsÚ_backends.baser   Ú_exceptionsr   r   r	   Ú_modelsr
   r   r   Ú_synchronizationr   r   r   Ú_tracer   Ú_utilsr   Ú
interfacesr   Ú	getLoggerr^   r    ÚIntEnumr#   r-   rq   r+   r!   r   ú<module>r+     sŒ   ðÝ "ã Û Û Û Û Ý *ã Û Û Û Û å /ß YÑ Yß /Ñ /ß QÑ QÝ Ý 'Ý 0à	ˆ×	Ñ	Ð,Ó	-€óqô˜$Ÿ,™,ô ôAÐ3ô A÷HSò Sr!   