Ë
    rPêj"2  ã                   óZ  — d Z ddlZddlZddlZddlmZmZmZmZm	Z	m
Z
mZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ dZej4                  dk\  rddlmZ nddlmZ eeeddf   ZdZ dej4                  cxk  xr dk  nc Z!ej4                  dk  Z"e!xs e"Z# G d„ de«      Z$ e$dd«      Z% e$dd«      Z&eeeged   f      Z'eedged   f      Z( G d„ de«      Z) ejT                  d«      Z+de,de,fd„Z-de,dddefd „Z.e.Z/	 ddl0m1Z1 e1j^                  Z2ese2Z/yy# e3$ r Y yw xY w)!z"Http related parsers and protocol.é    N)ÚTYPE_CHECKINGÚAnyÚ	AwaitableÚCallableÚIterableÚListÚ
NamedTupleÚOptional)ÚCIMultiDicté   )ÚAbstractStreamWriter)ÚBaseProtocol)ÚClientConnectionResetError)ÚZLibCompressor)ÚNO_EXTENSIONS)ÚStreamWriterÚHttpVersionÚHttpVersion10ÚHttpVersion11)é   é   )ÚBuffer)ÚUnionzmemoryview[int]zmemoryview[bytes]i   )r   é   r   )r   r   é   )r   r   é	   c                   ó"   — e Zd ZU eed<   eed<   y)r   ÚmajorÚminorN)Ú__name__Ú
__module__Ú__qualname__ÚintÚ__annotations__© ó    úX/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/aiohttp/http_writer.pyr   r   .   s   … ØƒJØ„Jr&   r   úCIMultiDict[str]c                   óœ  — e Zd ZU dZedz  ed<   dZeed<   dZeed<   dZ	e
dz  ed<   	 	 d(dedej                  d	ed
eddf
d„Zedej$                  dz  fd„«       Zedefd„«       Zd)d„Z	 d*dededz  ddfd„Zdeddfd„Zdee   ddfd„Zdeddfd„Zdededdfd„Zdddœdedededdfd„Zd ed!d"ddfd#„Zd)d$„Z d)d%„Z!d+de"ddfd&„Z#d)d'„Z$y),r   NÚlengthFÚchunkedÚ_eofÚ	_compressÚprotocolÚloopÚon_chunk_sentÚon_headers_sentÚreturnc                 óf   — || _         || _        || _        || _        d | _        d| _        d | _        y )NF)Ú	_protocolr/   Ú_on_chunk_sentÚ_on_headers_sentÚ_headers_bufÚ_headers_writtenÚon_body_write)Úselfr.   r/   r0   r1   s        r'   Ú__init__zStreamWriter.__init__B   s:   € ð "ˆŒØˆŒ	Ø.;ˆÔØ2AˆÔØ*.ˆÔØ&+ˆÔØ!ˆÕr&   c                 ó.   — | j                   j                  S ©N)r4   Ú	transport©r:   s    r'   r>   zStreamWriter.transportQ   s   € à�~‰~×'Ñ'Ð'r&   c                 ó   — | j                   S r=   )r4   r?   s    r'   r.   zStreamWriter.protocolU   s   € à�~‰~Ðr&   c                 ó   — d| _         y )NT)r+   r?   s    r'   Úenable_chunkingzStreamWriter.enable_chunkingY   s	   € Øˆ�r&   ÚencodingÚstrategyc                 ó(   — t        ||¬«      | _        y )N)rC   rD   )r   r-   )r:   rC   rD   s      r'   Úenable_compressionzStreamWriter.enable_compression\   s   € ô (°ÀHÔMˆ�r&   Úchunkc                 óö   — t        |«      }| xj                  |z  c_        | xj                  |z  c_        | j                  j                  }|�|j                  «       rt        d«      ‚|j                  |«       y )Nú!Cannot write to closing transport)ÚlenÚbuffer_sizeÚoutput_sizer4   r>   Ú
is_closingr   Úwrite)r:   rG   Úsizer>   s       r'   Ú_writezStreamWriter._writea   se   € Ü�5‹zˆØ×Ò˜DÑ ÕØ×Ò˜DÑ ÕØ—N‘N×,Ñ,ˆ	ØÐ 	× 4Ñ 4Ô 6Ü,Ð-PÓQÐQØ�‰˜Õr&   Úchunksc                 ón  — d}|D ]  }|t        |«      z  }Œ | xj                  |z  c_        | xj                  |z  c_        | j                  j                  }|�|j                  «       rt        d«      ‚t        s	|t        k  r!|j                  dj                  |«      «       y |j                  |«       y )Nr   rI   r&   )rJ   rK   rL   r4   r>   rM   r   ÚSKIP_WRITELINESÚMIN_PAYLOAD_FOR_WRITELINESrN   ÚjoinÚ
writelines)r:   rQ   rO   rG   r>   s        r'   Ú_writelineszStreamWriter._writelinesj   s    € ØˆØò 	ˆEØ”C˜“JÑ‰Dð	à×Ò˜DÑ ÕØ×Ò˜DÑ ÕØ—N‘N×,Ñ,ˆ	ØÐ 	× 4Ñ 4Ô 6Ü,Ð-PÓQÐQÝ˜dÔ%?Ò?Ø�O‰O˜CŸH™H VÓ,Õ-à× Ñ  Õ(r&   c                 óh   — t        |«      d›d�j                  d«      }| j                  ||df«       y)z+Write a chunk with proper chunked encoding.Úxú
Úasciió   
N)rJ   ÚencoderW   )r:   rG   Úchunk_len_pres      r'   Ú_write_chunked_payloadz#StreamWriter._write_chunked_payloadx   s4   € ä˜u›: a˜.¨Ð-×4Ñ4°WÓ=ˆØ×Ñ˜-¨°Ð8Õ9r&   Úis_eofc                 óž  — d| _         | j                  }d| _        t        r|€J ‚| j                  s(|r| j	                  ||f«       y| j                  |«       y|rLt        |«      d›d�j                  d«      }|r| j	                  |||df«       y| j	                  |||df«       y|r| j	                  |df«       y| j                  |«       y)	zASend buffered headers with payload, coalescing into single write.TNrY   rZ   r[   ó   
0

r\   ó   0

)r8   r7   r   r+   rW   rP   rJ   r]   )r:   rG   r`   Úheaders_bufr^   s        r'   Ú_send_headers_with_payloadz'StreamWriter._send_headers_with_payload}   sÙ   € ð !%ˆÔØ×'Ñ'ˆØ ˆÔåð Ð*Ð*Ð*à�|Š|áØ× Ñ  +¨uÐ!5Ô6ð ð —‘˜KÔ(Øñ Ü" 5›z¨!˜n¨DÐ1×8Ñ8¸ÓAˆMÙØ× Ñ  +¨}¸eÐEUÐ!VÕWà× Ñ  +¨}¸eÀWÐ!MÕNÙØ×Ñ˜k¨<Ð8Õ9à�K‰K˜Õ$r&   Ti   )ÚdrainÚLIMITrf   rg   c             ƒ   ó´  K  — | j                   �| j                  |«      ƒ d{  –—†  | j                  }t        |t        «      r,|j                  }|t        |«      k7  r!|j                  d«      }n|�t        |«      nd}| j                  �=| j                  j                  |«      ƒ d{  –—† }|s|�|r ||| j                  «       y| j                  �Tt        |«      }| j                  |k\  r| j                  |z
  | _
        n%| j                  }|d| j                   }d| _
        |sy| j                  r| j                  s| j                  |d«       n3|r0| j                  r| j                  |«       n| j!                  |«       ny|�|r ||| j                  «       |r0| j"                  |kD  r d| _        | j%                  «       ƒ d{  –—†  yyy7 �Œ­7 �Œ*7 Œ­w)zÊ
        Writes chunk of data to a stream.

        write_eof() indicates end of stream.
        writer can't be used after write_eof() method being called.
        write() return drain future.
        NÚcr   F)r5   r9   Ú
isinstanceÚ
memoryviewÚnbytesrJ   Úcastr-   ÚcompressrL   r*   r7   r8   re   r+   r_   rP   rK   rf   )r:   rG   rf   rg   ÚnotifyÚ	body_sizeÚ	chunk_lens          r'   rN   zStreamWriter.write�   s¨  è ø€ ð ×ÑÐ*Ø×%Ñ% eÓ,×,Ð,à×#Ñ#ˆÜ�eœZÔ(ØŸ™ˆIØœC ›JÒ&àŸ
™
 3›‘à&,Ð&8œ˜Eœ
¸aˆIà�>‰>Ð%ØŸ.™.×1Ñ1°%Ó8×8ˆEÙØÐ%©)Ù˜9 d×&6Ñ&6Ô7Øà�;‰;Ð"Ü˜E›
ˆIØ�{‰{˜iÒ'Ø"Ÿk™k¨IÑ5�•ð !ŸK™K�	Ø˜m §¡Ð,�Ø�”ÙØð ×Ò T×%:Ò%:Ø×+Ñ+¨E°5Õ9ÙØ�|Š|Ø×+Ñ+¨EÕ2à—‘˜EÕ"ààÐ¡)Ù�9˜d×.Ñ.Ô/Ù�T×%Ñ%¨Ò-Ø ˆDÔØ—*‘*“,×Ñð .ˆ5ðW -ùð 9ùðB ús5   ‚!G£G¤BGÂ)GÂ*DGÇGÇ	GÇGÇGÚstatus_lineÚheadersr(   c              ƒ   óŽ   K  — | j                   �| j                  |«      ƒ d{  –—†  t        ||«      }d| _        || _        y7 Œ­w)zWrite headers to the stream.NF)r6   Ú_serialize_headersr8   r7   )r:   rr   rs   Úbufs       r'   Úwrite_headerszStreamWriter.write_headers×   sI   è ø€ ð × Ñ Ð,Ø×'Ñ'¨Ó0×0Ð0ä  ¨gÓ6ˆØ %ˆÔØˆÕð	 1ús   ‚!A£A¤ Ac                 ó    — | j                   r| j                  ryd| _        | j                   }d| _         t        r|€J ‚| j                  |«       y)z3Force sending buffered headers if not already sent.NT)r7   r8   r   rP   ©r:   rd   s     r'   Úsend_headerszStreamWriter.send_headersâ   sL   € à× Ò  D×$9Ò$9Øà $ˆÔØ×'Ñ'ˆØ ˆÔåàÐ*Ð*Ð*à�‰�KÕ r&   c                 óv  — | j                   ry| j                  rp| j                  sdd| _        | j                  }d| _        t        r|€J ‚| j                  r| j                  |df«       d| _         y| j                  |«       d| _         y| j                  r| j                  r| j                  d«       d| _         y)z&Indicate that the message is complete.NTrc   )r,   r7   r8   r   r+   rW   rP   ry   s     r'   Úset_eofzStreamWriter.set_eofñ   s©   € à�9Š9Øð ×Ò T×%:Ò%:Ø$(ˆDÔ!Ø×+Ñ+ˆKØ $ˆDÔåà"Ð.Ð.Ð.ð �|Š|Ø× Ñ  +¨|Ð!<Ô=ð ˆ�	ð —‘˜KÔ(ð
 ˆ�	ð	 �\Š\˜d×3Ò3à�K‰K˜Ô%àˆ�	r&   c              ƒ   óP  K  — | j                   ry |r%| j                  �| j                  |«      ƒ d {  –—†  | j                  �rvg }d}|rA| j                  j                  |«      ƒ d {  –—† x}rt	        |«      }|j                  |«       | j                  j                  «       }|t	        |«      z  }|j                  |«       |sJ ‚| j                  rx| j                  sld| _        | j                  }d | _        | j                  r/|d›d�j                  d«      }| j                  ||g|¢d‘­«       �n| j                  |g|¢­«       �n| j                  r-|d›d�j                  d«      }| j                  |g|¢d‘­«       nÍt	        |«      dkD  r| j                  |«       n­| j                  |d   «       n˜| j                  r| j                  s| j                  |d«       nm| j                  rE|r1| j                  t	        |«      d›d�j                  d«      |df«       n.| j                  d«       n|r| j                  |«       nd| _         y |r*| j                  x}� |t	        |«      | j                  «       | j!                  «       ƒ d {  –—†  d| _         y 7 �Œl7 �Œ97 Œ­w)	Nr   TrY   rZ   r[   rb   r   rc   )r,   r5   r-   rn   rJ   ÚappendÚflushr7   r8   r+   r]   rW   rP   re   r9   rL   rf   )	r:   rG   rQ   Ú
chunks_lenÚcompressed_chunkÚflush_chunkrd   r^   ro   s	            r'   Ú	write_eofzStreamWriter.write_eof  sr  è ø€ Ø�9Š9Øá�T×(Ñ(Ð4Ø×%Ñ% eÓ,×,Ð,ð �>‹>Ø"$ˆFØˆJÙ°D·N±N×4KÑ4KÈEÓ4R×.RÐRÐ*ÐRÜ Ð!1Ó2�
Ø—‘Ð.Ô/àŸ.™.×.Ñ.Ó0ˆKØœ#˜kÓ*Ñ*ˆJØ�M‰M˜+Ô&ÙÐ�:ð × Ò ¨×)>Ò)>Ø(,�Ô%Ø"×/Ñ/�Ø$(�Ô!à—<’<à'1°! n°DÐ$9×$@Ñ$@ÀÓ$I�MØ×$Ñ$Ø$ mÐO°fÐOÐ>NÑOöð
 ×$Ñ$ kÐ%;°FÑ%;Ö<à—’Ø#-¨a .°Ð 5× <Ñ <¸WÓ E�Ø× Ñ  -Ð!K°&Ð!KÐ:JÑ!KÕLÜ�V“˜q’Ø× Ñ  Õ(à—‘˜F 1™IÕ&à×Ò t×'<Ò'<à×+Ñ+¨E°4Õ8à�\Š\Ùà× Ñ Ü˜E›
 1�~ TÐ*×1Ñ1°'Ó:¸EÐCSÐTõð —‘˜LÕ)ÙØ�K‰K˜ÕàˆDŒIØá × 2Ñ 2Ð2�fÐ?Ù”3�u“:˜t×/Ñ/Ô0Ø�j‰j‹l×ÐØˆ�	ðy -ùð /Sùðj 	ús4   ‚0J&²J³5J&Á(J!Á)H(J&ÊJ$ÊJ&Ê!J&Ê$J&c              ƒ   óŒ   K  — | j                   }|j                  �&|j                  r|j                  «       ƒ d{  –—†  yyy7 Œ­w)zFlush the write buffer.

        The intended use is to write

          await w.write(data)
          await w.drain()
        N)r4   r>   Ú_pausedÚ_drain_helper)r:   r.   s     r'   rf   zStreamWriter.drainO  sB   è ø€ ð —>‘>ˆØ×ÑÐ)¨h×.>Ò.>Ø×(Ñ(Ó*×*Ñ*ð /?Ð)Ø*ús   ‚8AºA»A)NN)r2   N)ÚdeflateN)r&   )%r    r!   r"   r*   r#   r$   r+   Úboolr,   r-   r   r   ÚasyncioÚAbstractEventLoopÚ_T_OnChunkSentÚ_T_OnHeadersSentr;   ÚpropertyÚ	Transportr>   r.   rB   ÚstrrF   r   rP   r   rW   r_   re   rN   rw   rz   r|   Úbytesrƒ   rf   r%   r&   r'   r   r   ;   s±  … à€FˆC�$‰JÓØ€GˆTÓØ€Dˆ$ÓØ'+€Iˆ~ Ñ$Ó+ð )-Ø,0ñ"àð"ð ×'Ñ'ð"ð &ð	"ð
 *ð"ð 
ó"ð ð(˜7×,Ñ,¨tÑ3ò (ó ð(ð ð˜,ò ó ðóð AEñNØðNØ36¸±:ðNà	óNð
˜Fð  tó ð) (¨6Ñ"2ð )°tó )ð:¨Fð :°tó :ð
%°ð %Àð %Èó %ðB /3Àò8Øð8Ø'+ð8Ø;>ð8à	ó8ðt	 Øð	 Ø);ð	 à	ó	 ó!óñ6A Uð A°Tó AôF
+r&   r   z[\x00-\x08\x0a-\x1f\x7f]Ústringr2   c                 óF   — t         j                  | «      �t        d«      ‚| S )NzSForbidden control character detected in headers. Potential header injection attack.)Ú_FORBIDDEN_HEADER_CHARS_REÚsearchÚ
ValueError)r‘   s    r'   Ú_safe_headerr–   a  s,   € Ü!×(Ñ(¨Ó0Ð<Üð1ó
ð 	
ð €Mr&   rr   rs   c                 óœ   — t        | «       d„ |j                  «       D «       }| dz   dj                  |«      z   dz   }|j                  d«      S )Nc              3   óV   K  — | ]!  \  }}t        |«      d z   t        |«      z   –— Œ# y­w)z: N)r–   )Ú.0ÚkÚvs      r'   ú	<genexpr>z(_py_serialize_headers.<locals>.<genexpr>l  s&   è ø€ ÒXÁÀÀ1”< “? TÑ)¬L¸«OÕ;ÑXùs   ‚')rZ   z

zutf-8)r–   ÚitemsrU   r]   )rr   rs   Úheaders_genÚlines       r'   Ú_py_serialize_headersr    j  sF   € Ü�ÔÙXÈÏÉËÔX€KØ˜Ñ &§+¡+¨kÓ":Ñ:¸ZÑG€DØ�;‰;�wÓÐr&   )4Ú__doc__r‰   ÚreÚsysÚtypingr   r   r   r   r   r   r	   r
   Ú	multidictr   Úabcr   Úbase_protocolr   Úclient_exceptionsr   Úcompression_utilsr   Úhelpersr   Ú__all__Úversion_infoÚcollections.abcr   r   r�   Ú	bytearrayrT   ÚIS_PY313_BEFORE_313_2ÚIS_PY_BEFORE_312_9rS   r   r   r   r‹   rŒ   r   Úcompiler“   r�   r–   r    ru   Úaiohttp._http_writerÚ_http_writerÚ_c_serialize_headersÚImportErrorr%   r&   r'   ú<module>r¶      s‰  ðÙ (ã Û 	Û 
÷	÷ 	ó 	õ "å %Ý 'Ý 9Ý -Ý "à
K€à×Ñ�wÒÞ&åà�5˜)Ð%6Ð8KÐKÑL€Fð "Ð Ø" c×&6Ñ&6ÖC¸ÔCÐ Ø×%Ñ%¨
Ñ2Ð Ø'Ò=Ð+=€ô�*ô ñ
 ˜A˜qÓ!€Ù˜A˜qÓ!€ð ˜( F 8¨Y°t©_Ð#<Ñ=Ñ>€Ø˜HÐ&8Ð%9¸9ÀT¹?Ð%JÑKÑLÐ ô^+Ð'ô ^+ðF	 (˜RŸZ™ZÐ(CÓDÐ ð˜ð  ó ð  sð  Ð5Gð  ÈEó  ð +Ð ð	Ý/à'×:Ñ:ÐÙØ1Ñð øàò 	Ùð	ús   Ä
D" Ä"D*Ä)D*