Ë
    $Æ%h€]  ã                  ó@  — 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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  ej>                  d«      Z dd„Z! G d„ dejD                  «      Z# G d„ de«      Z$ G d„ d«      Z%y)é    )ÚannotationsNé   )ÚAsyncNetworkStream)ÚConnectionNotAvailableÚLocalProtocolErrorÚRemoteProtocolError)ÚOriginÚRequestÚResponse)Ú	AsyncLockÚAsyncSemaphoreÚAsyncShieldCancellation)ÚTraceé   )ÚAsyncConnectionInterfacezhttpcore.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      úS/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/httpcore/_async/http2.pyú	<genexpr>z#has_body_headers.<locals>.<genexpr>   s<   è ø€ ò áˆAˆqð 	
�‰‹	Ð&Ñ&ÒK¨!¯'©'«)Ð7KÑ*KÓKñùs   ‚57)ÚanyÚheaders)Úrequests    r   Úhas_body_headersr      s    € Üñ à—O‘Oôó ð ó    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                  ó†  — 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d.d„Zd/d„Zd/d„Zd/d„Zd/d„Zd0d„Zd0d„Zd1d„Z 	 	 	 d2	 	 	 	 	 	 	 d3d„Z!y)4Ú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           	   ƒ  óÒ
  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| _        | j,                  j.                  j0                  }t3        |«      | _        t7        || j*                  z
  «      D ]$  }| j4                  j9                  «       ƒ d {  –—†  Œ& d d d «      ƒd {  –—†  | j4                  j9                  «       ƒ d {  –—†  	 | j,                  j;                  «       }g | j<                  |<   	 ||dœ}t        dt         ||«      4 ƒd {  –—†  | jG                  ||¬«      ƒ d {  –—†  d d d «      ƒd {  –—†  t        d	t         ||«      4 ƒd {  –—†  | jI                  ||¬«      ƒ d {  –—†  d d d «      ƒd {  –—†  t        d
t         ||«      4 ƒd {  –—† }| jK                  ||¬«      ƒ d {  –—† \  }	}
|	|
f|_&        d d d «      ƒd {  –—†  tO        	
tQ        | ||¬«      d| jR                  |dœ¬«      S 7 �ŒÎ7 �ŒY# 1 ƒd {  –—†7  sw Y   �ŒjxY w7 �Œ]7 �Œ47 �Œ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 �Œú7 �Œë# 1 ƒd {  –—†7  sw Y   �ŒüxY w7 �Œâ# t>        j@                  jB                  $ r' d| _"        | xj                  dz  c_
        t        «       ‚w 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7 �Œ“7 �Œ{7 �Œb# 1 ƒd {  –—†7  sw Y   �ŒsxY w# t$        $ rÙ}t'        «       5  d|i}t        dt         ||«      4 ƒd {  –—†7   | jU                  |¬«      ƒ 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tW        |t>        j@                  jX                  «      r,| jZ                  rt]        | jZ                  «      ‚t_        |«      ‚|‚d }~ww xY w­w)NzAttempted to send request to z on connection to r   r   Úsend_connection_initT©r   Ú	stream_idÚsend_request_headersÚsend_request_bodyÚreceive_response_headers©rN   s   HTTP/2)Úhttp_versionÚnetwork_streamrN   )Ústatusr   ÚcontentÚ
extensionsrN   Úresponse_closedr)   )0Úcan_handle_requestÚurlrG   ÚRuntimeErrorr0   r<   r8   r!   r&   r'   r:   r9   r   r;   r?   r   ÚloggerÚ_send_connection_initÚBaseExceptionr   ÚacloseÚ_max_streamsr7   Úlocal_settingsÚmax_concurrent_streamsr   Ú_max_streams_semaphoreÚrangeÚacquireÚget_next_available_stream_idrB   r3   Ú
exceptionsÚNoAvailableStreamIDErrorr@   Ú_send_request_headersÚ_send_request_bodyÚ_receive_responseÚreturn_valuer   ÚHTTP2ConnectionByteStreamr1   Ú_response_closedÚ
isinstanceÚProtocolErrorrC   r   r   )rF   r   Ú
sci_kwargsÚexcÚlocal_settings_max_streamsÚ_rN   ÚkwargsÚtracerU   r   s              r   Úhandle_async_requestz)AsyncHTTP2Connection.handle_async_requestU   s9  è ø€ Ø×&Ñ& w§{¡{×'9Ñ'9Ô:ô
 Ø/°·±×0BÑ0BÐ/Cð DØ—l‘l�^ð%óð ð
 ×#Ñ#÷ 	/ñ 	/Ø�{‰{Ô2×9Ñ9Ô;N×;SÑ;SÐTÑTØ×#Ò# qÑ(Õ#Ø"&�”Ü1×8Ñ8�•ä,Ó.Ð.÷	/÷ 	/ð —?‘?÷ 	@ñ 	@Ø×-Ò-ð	Ø"+¨WÐ!5�JÜ$Ø.´¸Àó ÷ Gñ Gð 9˜d×8Ñ8ÑF¸:ÑF×FÐF÷G÷ Gð .2�Ô*ð %&�Ô!ð —N‘N×1Ñ1×HÑHð +ô /=Ð=WÓ.X�Ô+äÐ9¸D×<MÑ<MÑMÓNò @�AØ×5Ñ5×=Ñ=Ó?×?Ñ?ð@÷1	@÷ 	@ð6 ×)Ñ)×1Ñ1Ó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äØ*¬F°G¸Vó÷ 7ð 7àØ(,×(>Ñ(>Ø#¨yð )?ó )÷ #‘�˜ð '-¨gÐ%6�Ô"÷7÷ 7ô ØØÜ1°$¸È9ÔUà$-Ø&*×&:Ñ&:Ø!*ñô		ð 	ðw	/ùð 	/ù÷ 	/÷ 	/ò 	/úð	@ùðGùð GùðGù÷ G÷ Gò Gûô %ò Ü0Ó2ñ ,Ø"Ÿk™k›m×+Ñ+÷,à�I÷,à�Iþðúð" @ùð3	@ù÷ 	@÷ 	@ò 	@úð6 	4úô
 �}‰}×5Ñ5ò 	+Ø(,ˆDÔ%Ø×Ò 1Ñ$ÕÜ(Ó*Ð*ð	+úðWùØVùðWù÷ W÷ Wò WúðTùØSùðTù÷ T÷ Tò Túð7ùð#ùð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ûð-	üsà  ‚A%U'Á'L5Á(U'Á+A)L;ÃU'ÃL8Ã U'Ã4MÃ5U'Ã8OÄM3Ä MÄ!M3Ä$MÄ:MÄ;MÄ?M3Å
MÅM3ÅA6OÇN?ÇOÇU'ÇOÇ!U'Ç9OÇ:U'Ç?)O È)R ÉP%ÉR ÉP.ÉP(É P.É$R É/P+É0R Ê
QÊR ÊQÊ%QÊ&QÊ*R Ê5Q
Ê6R ËQ#ËR ËQ,Ë+Q&Ë,Q,Ë<R ÌQ)Ì,R Ì4U'Ì8U'Ì;MÍMÍMÍ		U'ÍM3ÍMÍM3ÍM0	Í#M&Í$M0	Í+M3Í3	N<Í<
N7ÎN*ÎN
ÎN*Î 
N7Î*N4Î/N7Î7N<Î<OÏU'ÏOÏOÏOÏ	U'ÏAP"Ð"U'Ð%R Ð(P.Ð+R Ð.QÐ4P7Ð5QÐ<	R ÑQÑ
R ÑQ ÑQÑQ Ñ	R Ñ&Q,Ñ)R Ñ,Q?Ñ2Q5Ñ3Q?Ñ:R Ò	U$Ò
UÒTÒ0R3
Ò1TÒ5S#ÓS
ÓS#ÓTÓSÓTÓ#S5Ó)S,Ó*S5Ó1TÓ8	UÔT
	ÔAUÕU$Õ$U'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)r3   ÚsettingsÚSettingsÚSettingCodesÚENABLE_PUSHÚMAX_CONCURRENT_STREAMSÚMAX_HEADER_LIST_SIZEr7   ra   ÚENABLE_CONNECT_PROTOCOLÚinitiate_connectionÚincrement_flow_control_windowÚ_write_outgoing_data)rF   r   s     r   r]   z*AsyncHTTP2Connection._send_connection_init½   sÐ   è ø€ ô )+¯©×(<Ñ(<Øô —‘×(Ñ(×4Ñ4°aä—‘×(Ñ(×?Ñ?ÀÜ—‘×(Ñ(×=Ñ=¸uðð )=ó 
)
ˆ�‰Ô%ð �N‰N×)Ñ)Ü�K‰K×$Ñ$×<Ñ<ð
ð 	�‰×*Ñ*Ô,Ø�‰×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|   rR   N)r   r   r   ÚmethodrZ   ÚschemeÚtargetr7   Úsend_headersr…   r†   )rF   r   rN   r‰   r   r   Ú	authorityr   s           r   ri   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 ‚|j                  2 3 d{  –—† }| j                  |||«      ƒ d{  –—†  Œ%7 Œ 7 Œ6 | j                  ||«      ƒ d{  –—†7   y­w)zP
        Iterate over the request body sending it to a given stream ID.
        N)r   ro   rH   ÚtypingÚAsyncIterableÚ_send_stream_dataÚ_send_end_stream)rF   r   rN   Údatas       r   rj   z'AsyncHTTP2Connection._send_request_bodyý   s€   è ø€ ô   Ô(Øä˜'Ÿ.™.¬&×*>Ñ*>Ô?Ð?Ð?Ø!Ÿ.™.÷ 	Cð 	C�$Ø×(Ñ(¨°)¸TÓB×BÑBð	CøØBøð )à×#Ñ# G¨YÓ7×7Ò7ùsG   ‚?BÁA*ÁA&ÁA*Á	BÁ A(Á!BÁ&A*Á(BÁ*BÂ BÂBc              ƒ  óü   K  — |rr| j                  ||«      ƒ d{  –—† }t        t        |«      |«      }|d| ||d }}| j                  j	                  ||«       | j                  |«      ƒ d{  –—†  |rŒqyy7 Œ]7 Œ­w)zI
        Send a single chunk of data in one or more data frames.
        N)Ú_wait_for_outgoing_flowÚminÚlenr7   Ú	send_datar†   )rF   r   rN   r”   Úmax_flowÚ
chunk_sizeÚchunks          r   r’   z&AsyncHTTP2Connection._send_stream_data	  s}   è ø€ ñ Ø!×9Ñ9¸'À9ÓM×MˆHÜœS ›Y¨Ó1ˆJØ˜{ 
Ð+¨T°*°+Ð->�4ˆEØ�N‰N×$Ñ$ Y°Ô6Ø×+Ñ+¨GÓ4×4Ð4ô ØMøð 5ús(   ‚A<šA8›AA<Á.A:Á/A<Á6A<Á:A<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)r7   r‰   r†   )rF   r   rN   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_eventro   r3   ÚeventsÚResponseReceivedr   ÚintÚdecodeÚ
startswithÚappend)rF   r   rN   ÚeventÚstatus_coder   r   r   s           r   rk   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¤   ro   r3   r¥   ÚDataReceivedÚflow_controlled_lengthr”   r7   Úacknowledge_received_datar†   ÚStreamEnded)rF   r   rN   r«   Úamounts        r   Ú_receive_response_bodyz+AsyncHTTP2Connection._receive_response_body5  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   )	rB   ÚgetÚ_receive_eventsÚpopro   r3   r¥   ÚStreamResetr   )rF   r   rN   r«   s       r   r¤   z*AsyncHTTP2Connection._receive_stream_eventG  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                  |«      �sq| j                  |«      ƒ d{  –—† }|D �]R  }t        |t        j                  j                  «      rKt        dt        |«      4 ƒd{  –—† }| j                  |«      ƒ d{  –—†  ||_        ddd«      ƒd{  –—†  Œst        |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�ŒL|| _        �ŒU ddd«      ƒd{  –—†  | j1                  |«      ƒ d{  –—†  y7 �Œ7 �ŒŠ7 �ŒI7 �Œ37 �Œ# 1 ƒd{  –—†7  sw Y   �Œ¢xY w7 ŒC# 1 ƒd{  –—†7  sw Y   ŒSxY w7 ŒA­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=   rC   Úlast_stream_idr:   r   r   rB   rµ   Ú_read_incoming_dataro   r3   r¥   ÚRemoteSettingsChangedr   r\   Ú_receive_remote_settings_changerl   r¦   r®   r±   r¸   rN   rª   ÚConnectionTerminatedr†   )rF   r   rN   r»   r¥   r«   rv   s          r   r¶   z$AsyncHTTP2Connection._receive_eventsV  s   è ø€ ð —?‘?÷ %	<ñ %	<Ø×*Ñ*Ð6Ø!%×!<Ñ!<×!KÑ!K�Ù¡°IÀÒ4NØ×'Ò'¨1Ñ,Õ'Ü0Ó2Ð2Ü)¨$×*EÑ*EÓFÐFð Ð ¨¯©×(8Ñ(8¸Õ(CØ#×7Ñ7¸Ó@×@�Ø#ó <�EÜ! %¬¯©×)HÑ)HÔIÜ#(Ø5´v¸wó$÷ 7ð 7à"Ø"&×"FÑ"FÀuÓ"M×MÐMØ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ð+<÷!%	<÷ %	<ðN ×'Ñ'¨Ó0×0Ñ0ðO%	<ùð Aùð7ùð Nùð7ù÷ 7÷ 7ò 7úð%%	<ø÷ %	<÷ %	<ñ %	<úðN 	1úsÌ   ‚I.“H0”I.—BIÂ)H3Â*AIÃ-H6
Ã.IÃ1H?ÄH9
ÄH?ÄIÄH<ÄBIÆ,AIÇ<
IÈI.ÈIÈI.È*I,È+I.È3IÈ6IÈ9H?È<IÈ?IÉIÉIÉIÉ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  rG| j                  j                  «       ƒ d {  –—†  | xj                  dz  c_        || j                  kD  rŒG|| j                  k  rH| j                  j                  «       ƒ d {  –—†  | xj                  dz  c_        || j                  k  rŒGy y y y y 7 Œ„7 Œ0­w)Nr   )Úchanged_settingsrµ   r3   r}   r   r�   r—   Ú	new_valuer7   ra   rb   r`   rc   Úreleasere   )rF   r«   rb   Únew_max_streamss       r   r¾   z4AsyncHTTP2Connection._receive_remote_settings_change†  s  è ø€ ð "'×!7Ñ!7×!;Ñ!;Ü�K‰K×$Ñ$×;Ñ;ó"
Ðñ "Ü!Ø&×0Ñ0Ø—‘×-Ñ-×DÑDóˆOñ  ?°d×6GÑ6GÒ#GØ%¨×(9Ñ(9Ò9Ø×5Ñ5×=Ñ=Ó?×?Ð?Ø×%Ò%¨Ñ*Õ%ð &¨×(9Ñ(9Ó9ð &¨×(9Ñ(9Ò9Ø×5Ñ5×=Ñ=Ó?×?Ð?Ø×%Ò%¨Ñ*Õ%ð &¨×(9Ñ(9Õ9ð	 $Hˆð "ð @øð @ús0   ‚B1D<Â3D8Â4(D<Ã,D<Ä	D:Ä
(D<Ä3D<Ä:D<c              ƒ  ó€  K  — | j                   j                  «       ƒ d {  –—†  | j                  |= | j                  4 ƒd {  –—†  | 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©N)rc   rÃ   rB   r<   rC   r_   r8   r!   r&   r'   r2   ÚtimeÚ	monotonicr9   r@   )rF   rN   Únows      r   rn   z%AsyncHTTP2Connection._response_closed™  sý   è ø€ Ø×)Ñ)×1Ñ1Ó3×3Ð3Ø�L‰L˜Ð#Ø×#Ñ#÷ 
	(ñ 
	(Ø×*Ò*°4·<²<Ø—k‘k“m×#Ñ#à—‘Ô 3× :Ñ :Ò:À4Ç<Â<Ü1×6Ñ6�”Ø×)Ñ)Ð5ÜŸ.™.Ó*�CØ&)¨D×,BÑ,BÑ&B�D”OØ×,Ò,ØŸ+™+›-×'Ð'÷
	(÷ 
	(ð 
	(ð 	4øð
	(øà#øð (øð
	(ø÷ 
	(÷ 
	(ñ 
	(üs|   ‚D> D¡!D>ÁD!ÁD>Á,D)Á2D#Á3BD)Ä	D%Ä
D)ÄD>ÄD'ÄD>Ä!D>Ä#D)Ä%D)Ä'D>Ä)D;Ä/D2Ä0D;Ä7D>c              ƒ  ó²   K  — | j                   j                  «        t        j                  | _        | j
                  j                  «       ƒ d {  –—†  y 7 Œ­wrÆ   )r7   Úclose_connectionr!   r(   r8   r1   r_   ©rF   s    r   r_   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«      ‚	 | j                  j                  |«      }|S 7 Œ2# t        $ r}|| _        d| _        |‚d }~ww xY w­w)NÚtimeoutÚreadr   zServer disconnectedT)rW   rµ   rD   r1   rÏ   ÚREAD_NUM_BYTESr   Ú	ExceptionrA   r7   Úreceive_data)rF   r   ÚtimeoutsrÎ   r”   rr   r¥   s          r   r¼   z(AsyncHTTP2Connection._read_incoming_data±  sÍ   è ø€ Ø×%Ñ%×)Ñ)¨)°RÓ8ˆØ—,‘,˜v tÓ,ˆà×ÑÐ+Ø×&Ñ&Ð&ð	Ø×-Ñ-×2Ñ2°4×3FÑ3FÈÓP×PˆDØ�sŠ{Ü)Ð*?Ó@Ð@ð ð )-¯©×(CÑ(CÀDÓ(Iˆàˆð% Qùô ò 	ð $'ˆDÔ Ø%)ˆDÔ"ØˆIûð	üs<   ‚AC	Á
)B( Á3B&Á4B( ÂC	Â&B( Â(	CÂ1CÃCÃC	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)
rW   rµ   r>   r7   Údata_to_sendrE   r1   rÕ   rÑ   rA   )rF   r   rÓ   rÎ   rÖ   rr   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)r7   Úlocal_flow_control_windowÚmax_outbound_frame_sizer—   r¶   )rF   r   rN   Ú
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Æ   )r0   ©rF   rG   s     r   rY   z'AsyncHTTP2Connection.can_handle_requestü  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Æ   )r8   r!   r(   rA   r@   r7   Ústate_machineÚstater3   r4   ÚConnectionStaterÌ   s    r   Úis_availablez!AsyncHTTP2Connection.is_availableÿ  ss   € à�K‰KÔ.×5Ñ5Ñ5ò Ø×*Ñ*Ð*òà×-Ñ-Ð-òð —‘×,Ñ,×2Ñ2Ü—=‘=×0Ñ0×7Ñ7ñ8ðð		
r   c                óh   — t        j                  «       }| j                  d uxr || j                  kD  S rÆ   )rÇ   rÈ   r9   )rF   rÉ   s     r   Úhas_expiredz AsyncHTTP2Connection.has_expired
  s+   € Ü�n‰nÓˆØ�‰ dÐ*ÒD¨s°T·_±_Ñ/DÐDr   c                ó<   — | j                   t        j                  k(  S rÆ   )r8   r!   r'   rÌ   s    r   Úis_idlezAsyncHTTP2Connection.is_idle  s   € Ø�{‰{Ô1×6Ñ6Ñ6Ð6r   c                ó<   — | j                   t        j                  k(  S rÆ   )r8   r!   r(   rÌ   s    r   Ú	is_closedzAsyncHTTP2Connection.is_closed  s   € Ø�{‰{Ô1×8Ñ8Ñ8Ð8r   c                ó|   — t        | j                  «      }|›d| j                  j                  › d| j                  › �S )Nz
, HTTP/2, ú, Request Count: )Ústrr0   r8   Únamer:   rÞ   s     r   ÚinfozAsyncHTTP2Connection.info  sA   € Ü�T—\‘\Ó"ˆàˆj˜
 4§;¡;×#3Ñ#3Ð"4ð 5Ø"×1Ñ1Ð2ð4ð	
r   c           	     ó²   — | j                   j                  }t        | j                  «      }d|› d|›d| j                  j
                  › d| j                  › d�	S )Nú<z [z, rë   z]>)Ú	__class__r#   rì   r0   r8   rí   r:   )rF   Ú
class_namerG   s      r   Ú__repr__zAsyncHTTP2Connection.__repr__  sZ   € Ø—^‘^×,Ñ,ˆ
Ü�T—\‘\Ó"ˆà�
ˆ|˜2˜f˜Z r¨$¯+©+×*:Ñ*:Ð);ð <Ø"×1Ñ1Ð2°"ð6ð	
r   c              ƒ  ó   K  — | S ­wrÆ   r)   rÌ   s    r   Ú
__aenter__zAsyncHTTP2Connection.__aenter__&  s   è ø€ Øˆùs   ‚c              ƒ  ó@   K  — | j                  «       ƒ d {  –—†  y 7 Œ­wrÆ   )r_   )rF   Úexc_typeÚ	exc_valueÚ	tracebacks       r   Ú	__aexit__zAsyncHTTP2Connection.__aexit__)  s   è ø€ ð �k‰k‹m×Òús   ‚–—rÆ   )rG   r	   rH   r   rI   zfloat | None)r   r
   Úreturnr   )r   r
   rû   ÚNone)r   r
   rN   r§   rû   rü   )r   r
   rN   r§   r”   Úbytesrû   rü   )r   r
   rN   r§   rû   z%tuple[int, list[tuple[bytes, bytes]]])r   r
   rN   r§   rû   útyping.AsyncIterator[bytes])r   r
   rN   r§   rû   zKh2.events.ResponseReceived | h2.events.DataReceived | h2.events.StreamEnded)r   r
   rN   z
int | Nonerû   rü   )r«   zh2.events.RemoteSettingsChangedrû   rü   )rN   r§   rû   rü   ©rû   rü   )r   r
   rû   zlist[h2.events.Event])r   r
   rN   r§   rû   r§   )rG   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Ð   r3   r/   ÚH2Configurationr6   rJ   rw   r]   ri   rj   r’   r“   rk   r³   r¤   r¶   r¾   rn   r_   r¼   r†   r–   rY   rã   rå   rç   ré   rî   ró   rõ   rú   r)   r   r   r+   r+   *   s�  „ Ø€NØ�Y‰Y×&Ñ&ÀÐ&ÓF€Fð *.ð	%7àð%7ð #ð%7ð 'ó	%7óNfóP1óB1ó>
8ð5Øð5Ø+.ð5Ø6;ð5à	ó5ó1ð&Øð&Ø+.ð&à	.ó&ð,ØðØ+.ðà	$óð$ØðØ+.ðà	Tóð  9=ð.1Øð.1Ø+5ð.1à	ó.1ð`+Ø4ð+à	ó+ó&(ó,óó8ó6ó(&ó	
óEó7ó9ó
ó
óð
 04Ø*.Ø04ð	à,ðð (ðð .ð	ð
 
ôr   r+   c                  ó4   — e Zd Z	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zy)rm   c                ó<   — || _         || _        || _        d| _        y )NF)Ú_connectionÚ_requestÚ
_stream_idÚ_closed)rF   r4   r   rN   s       r   rJ   z"HTTP2ConnectionByteStream.__init__3  s!   € ð &ˆÔØˆŒØ#ˆŒØˆ�r   c               óø  K  — | j                   | j                  dœ}	 t        dt        | j                   |«      4 ƒd {  –—†  | j                  j                  | j                   | j                  ¬«      2 3 d {  –—† }|­–— Œ7 ŒD7 Œ6 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)NrM   Úreceive_response_body)	r  r  r   r\   r  r³   r^   r   r_   )rF   ru   rœ   rr   s       r   Ú	__aiter__z#HTTP2ConnectionByteStream.__aiter__;  sß   è ø€ Ø!Ÿ]™]¸¿¹ÑIˆð	ÜÐ4´f¸d¿m¹mÈVÓT÷  ñ  Ø#'×#3Ñ#3×#JÑ#JØ ŸM™M°T·_±_ð $Kó $÷  ð  ˜%ð  ”Kð	 øð øð $÷ ÷  ÷  ÷  ó  ûô
 ò 	ô )Ó*ñ $Ø—k‘k“m×#Ñ#÷$àˆI÷$àˆIþð	üs¼   ‚C:� B. ½B¾B. Á2BÁ3BÁ7BÁ8BÁ;BÂB. ÂBÂBÂB. ÂBÂB. ÂC:ÂB+ÂB"Â B+Â'B. Â*C:Â+B. Â.	C7Â7
C2ÃC%ÃCÃC%Ã
C2Ã%C/	Ã*C2Ã2C7Ã7C: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)NTrN   rX   rR   )r  r  r   r\   r  r  rn   )rF   ru   s     r   r_   z HTTP2ConnectionByteStream.acloseK  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)r4   r+   r   r
   rN   r§   rû   rü   )rû   rþ   rÿ   )r#   r$   r%   rJ   r
  r_   r)   r   r   rm   rm   2  s2   „ ðØ.ðØ9@ðØMPðà	óóô Sr   rm   )r   r
   rû   r   )&Ú
__future__r   ÚenumÚloggingrÇ   Útypesr�   Ú	h2.configr3   Úh2.connectionÚ	h2.eventsÚh2.exceptionsÚh2.settingsÚ_backends.baser   Ú_exceptionsr   r   r   Ú_modelsr	   r
   r   Ú_synchronizationr   r   r   Ú_tracer   Ú
interfacesr   Ú	getLoggerr\   r   ÚIntEnumr!   r+   rm   r)   r   r   ú<module>r     s‹   ðÝ "ã Û Û Û Û ã Û Û Û Û å /÷ñ ÷
 0Ñ /ß QÑ QÝ Ý 0à	ˆ×	Ñ	Ð+Ó	,€óô˜$Ÿ,™,ô ôEÐ3ô E÷PSò Sr   