ó
    öÞ j"1  ã                  ó”  • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SK	rS SK
rSSKJr  SSKJr  SSKJrJr  SSKJr  SSKJr  \r\R.                  " S	5      r\R2                  " \5      r\R8                  " S
5      r\R8                  " S5      rSS jrSS jr  " S S\RB                  \   5      r" " S S\5      r# " S S\5      r$g)é    )Ú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                ó>   • [        [        R                  U 5      5      $ )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.
)ÚboolÚRE_IS_LEGAL_HEADER_NAMEÚmatch)Únames    ÚR/var/www/html/gaurav/venv/lib/python3.13/site-packages/urllib3/http2/connection.pyÚ_is_legal_header_namer      s   € ô Ô'×-Ñ-¨dÓ3Ó4Ð4ó    c                ó>   • [        [        R                  U 5      5      $ )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_VALUEÚsearch)Úvalues    r   Ú_is_illegal_header_valuer   ,   s   € ô Ô*×1Ñ1°%Ó8Ó9Ð9r   c                  óJ   • \ rS rSrSrSrS	S jrS
S jr        SS jrSr	g)Ú_LockedObjecté6   a@  
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.
)ÚlockÚ_objc                óD   • [         R                  " 5       U l        Xl        g ©N)Ú	threadingÚRLockr   r   )ÚselfÚobjs     r   Ú__init__Ú_LockedObject.__init__D   s   € Ü—O’OÓ%ˆŒ	Ø�	r   c                óN   • U R                   R                  5         U R                  $ r   )r   Úacquirer   ©r"   s    r   Ú	__enter__Ú_LockedObject.__enter__H   s   € Ø�	‰	×ÑÔØ�y‰yÐr   c                ó8   • U R                   R                  5         g r   )r   Úrelease)r"   Úexc_typeÚexc_valÚexc_tbs       r   Ú__exit__Ú_LockedObject.__exit__L   s   € ð 	�	‰	×ÑÕr   )r   r   N)r#   r   )Úreturnr   )r-   ztype[BaseException] | Noner.   zBaseException | Noner/   ztypes.TracebackType | Noner2   ÚNone)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__r$   r)   r0   Ú__static_attributes__© r   r   r   r   6   sC   † ñð€Iô
ôðà,ðð &ðð +ð	ð
 
÷r   r   c                  ó  ^ • \ rS rSr S       SU 4S jjjrSS jrSU 4S jjr        SS jrSS jrSSS jjr	SS jr
   S         SS	 jjr  SS
 jr  SSSSS.                 SS jjjrSU 4S jjrSrU =r$ )ÚHTTP2ConnectionéU   c                óÌ   >• U R                  5       U l        S U l        / U l        SU;   d  SU;   a  [	        S5      e[
        TU ]  " X40 UD6  U R                  b  [	        S5      eg )NÚproxyÚ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$   Ú_tunnel_host)r"   ÚhostÚportÚkwargsÚ	__class__s       €r   r$   ÚHTTP2Connection.__init__V   sm   ø€ ð ×)Ñ)Ó+ˆŒØ&*ˆŒØ35ˆŒà�fÓ °&Ó 8Ü%Ð&LÓMÐMä‰Ò˜Ñ. vÒ.à×ÑÑ(Ü%Ð&MÓNÐNð )r   c                óˆ   • [         R                  R                  SS9n[        [         R                  R                  US95      $ )NT)Úclient_side)Úconfig)Úh2rP   ÚH2Configurationr   Ú
connectionÚH2Connection)r"   rP   s     r   rB   ÚHTTP2Connection._new_h2_conne   s6   € Ü—‘×*Ñ*°tÐ*Ð<ˆÜœRŸ]™]×7Ñ7¸vÐ7ÐFÓGÐGr   c                óò   >• [         TU ]  5         U R                   nUR                  5         UR	                  5       =n(       a  U R
                  R                  U5        S S S 5        g ! , (       d  f       g = fr   )rG   ÚconnectrC   Úinitiate_connectionÚdata_to_sendÚsockÚsendall)r"   ÚconnrY   rL   s      €r   rW   ÚHTTP2Connection.connecti   sR   ø€ Ü‰‰ÔØ�]Š]˜dØ×$Ñ$Ô&Ø#×0Ñ0Ó2Ð2ˆ|Õ2Ø—	‘	×!Ñ! ,Ô/÷ �]Ž]ús   œAA(Á(
A6c                óì  • SU;   a  [        S5      eSU;   a  [        S5      eU=(       d    SU l        U R                  U5        SU R                  ;   a&  SU R                   SU R                  =(       d    S	 3nO$U R                   SU R                  =(       d    S	 3nU R
                  R                  S
5        U R
                  R                  SUR                  5       45        U R
                  R                  SUR                  5       45        U R
                  R                  SUR                  5       45        U R                   nUR                  5       U l
        SSS5        g! , (       d  f       g= f)z–putrequest
This deviates from the HTTPConnection method signature since we never need to override
sending accept-encoding headers or the host header.
Ú	skip_hostz`skip_host` isn't supportedÚskip_accept_encodingz&`skip_accept_encoding` isn't supportedÚ/Ú:Ú[z]:i»  )s   :schemes   httpss   :methods
   :authoritys   :pathN)rF   Ú_request_urlÚ_validate_pathrI   rJ   rE   ÚappendÚencoderC   Úget_next_available_stream_idrD   )r"   ÚmethodÚurlrK   Ú	authorityr\   s         r   Ú
putrequestÚHTTP2Connection.putrequestp   s   € ð ˜&Ó Ü%Ð&CÓDÐDØ! VÓ+Ü%Ð&NÓOÐOàŸJ 3ˆÔØ×Ñ˜CÔ à�$—)‘)ÓØ˜DŸI™I˜; b¨¯©×)9°cÐ(:Ð;‰IàŸ9™9˜+ Q t§y¡y×'7°CÐ&8Ð9ˆIà�‰×ÑÐ3Ô4Ø�‰×Ñ˜j¨&¯-©-«/Ð:Ô;Ø�‰×Ñ˜m¨Y×-=Ñ-=Ó-?Ð@ÔAØ�‰×Ñ˜h¨¯
©
«Ð5Ô6à�]Š]˜dØ"×?Ñ?ÓAˆDŒO÷ �]Ž]ús   ÅE%Å%
E3c                ó¦  • [        U[        5      (       a  UR                  5       OUnUR                  5       n[	        U5      (       d  [        S[        U5       35      eU Hm  n[        U[        5      (       a  UR                  5       OUn[        U5      (       a  [        S[        U5       35      eU R                  R                  X45        Mo     g )NzIllegal header name zIllegal header value )	Ú
isinstanceÚstrrg   Úlowerr   Ú
ValueErrorr   rE   rf   )r"   ÚheaderÚvaluesr   s       r   Ú	putheaderÚHTTP2Connection.putheader�   s¡   € ä$.¨v´s×$;Ñ$;�—‘”ÀˆØ—‘“ˆÜ$ V×,Ñ,ÜÐ3´C¸³K°=ÐAÓBÐBãˆEÜ&0°¼×&<Ñ&<�E—L‘L”NÀ%ˆEÜ'¨×.Ñ.Ü Ð#8¼¸U»¸Ð!EÓFÐFØ�M‰M× Ñ  & Ö1ò	 r   c                ó@  • U R                   c  [        S5      eU R                   nUR                  U R                   U R                  US L S9  UR                  5       =n(       a  U R                  R                  U5        S S S 5        / U l        g ! , (       d  f       N= f)NúMust call `putrequest` first.)Ú	stream_idÚheadersÚ
end_stream)rD   r	   rC   Úsend_headersrE   rY   rZ   r[   )r"   Úmessage_bodyr\   rY   s       r   Ú
endheadersÚHTTP2Connection.endheadersœ   sˆ   € Ø�?‰?Ñ"Ü!Ð"AÓBÐBà�]Š]˜dØ×ÑØŸ/™/ØŸ™Ø(¨DÐ0ð ñ ð
  $×0Ñ0Ó2Ð2ˆ|Õ2Ø—	‘	×!Ñ! ,Ô/÷ ð ˆ�÷ �]ús   ¥ABÂ
Bc                óÄ  • U R                   c  [        S5      eU R                   nUR                  5       =n(       a  U R                  R                  U5        [        US5      (       a½   UR                  U R                  5      nU(       d  Ot[        U[        5      (       a  UR                  5       nUR                  U R                   USS9  UR                  5       =n(       a  U R                  R                  U5        M—  UR                  U R                   5         SSS5        g[        U[        5      (       a  UR                  5       n [        U[        5      (       aN  UR                  U R                   USS9  UR                  5       =n(       a  U R                  R                  U5        OtU HR  nUR                  U R                   USS9  UR                  5       =n(       d  M7  U R                  R                  U5        MT     UR                  U R                   5         SSS5        g! [         a    [        S[!        U5      -  5      ef = f! , (       d  f       g= f)zySend data to the server.
`data` can be: `str`, `bytes`, an iterable, or file-like objects
that support a .read() method.
Nrx   ÚreadTF)r{   z6`data` should be str, bytes, iterable, or file. got %r)rD   r	   rC   rY   rZ   r[   Úhasattrr�   Ú	blocksizero   rp   rg   Ú	send_datar{   ÚbytesÚ	TypeErrorÚtype)r"   Údatar\   rY   Úchunks        r   ÚsendÚHTTP2Connection.sendª   sã  € ð
 �?‰?Ñ"Ü!Ð"AÓBÐBà�]Š]˜dØ#×0Ñ0Ó2Ð2ˆ|Õ2Ø—	‘	×!Ñ! ,Ô/ä�t˜V×$Ñ$ØØ ŸI™I d§n¡nÓ5�EÞ ØÜ! %¬×-Ñ-Ø %§¡£˜Ø—N‘N 4§?¡?°EÀe�NÑLØ'+×'8Ñ'8Ó':Ð:�|Õ:ØŸ	™	×)Ñ)¨,Ô7ñ ð —‘ §¡Ô0Ø÷ ˆ]ô" ˜$¤×$Ñ$Ø—{‘{“}�ðÜ˜d¤E×*Ñ*Ø—N‘N 4§?¡?°DÀT�NÑJØ'+×'8Ñ'8Ó':Ð:�|Õ:ØŸ	™	×)Ñ)¨,Ô7øã!%˜ØŸ™ t§¡¸È%˜ÑPØ+/×+<Ñ+<Ó+>Ð>˜<×>Ø ŸI™I×-Ñ-¨lÖ;ñ "&ð —O‘O D§O¡OÕ4÷= ˆ]øô> ó ÜØLÜ˜4“jñ!óð ðú÷? �]ús=   ¥C8IÄ&%IÅA"H,Æ.IÆ/5H,Ç(:H,È"IÈ,"IÉIÉ
Ic                ó   • [        S5      e)Nz;HTTP/2 does not support setting up a tunnel through a proxy)rF   )r"   rI   rJ   rz   Úschemes        r   Ú
set_tunnelÚHTTP2Connection.set_tunnel×   s   € ô "ØIó
ð 	
r   c           	     ó  • S n[        5       nU R                   nSnU(       Gd£  U R                  R                  S5      =n(       GaD  UR	                  U5      nU GH,  n[        U[        R                  R                  5      (       ar  [        5       nUR                   HV  u  pšU	S:X  a  [        U
R                  5       5      nM&  UR                  U	R                  S5      U
R                  S5      5        MX     MŸ  [        U[        R                  R                  5      (       a6  X'R                  -  nUR!                  UR"                  UR$                  5        Mþ  [        U[        R                  R&                  5      (       d  GM*  SnGM/     UR)                  5       =n(       a  U R                  R+                  U5        U(       d  GM£  S S S 5        Uc   e[-        UWU R.                  [1        U5      S9$ ! , (       d  f       N2= f)NFiÿÿ  s   :statusÚasciiT)Ústatusrz   Úrequest_urlrˆ   )Ú	bytearrayrC   rZ   ÚrecvÚreceive_dataro   rQ   ÚeventsÚResponseReceivedr   rz   ÚintÚdecodeÚaddÚDataReceivedrˆ   Úacknowledge_received_dataÚflow_controlled_lengthry   ÚStreamEndedrY   r[   ÚHTTP2Responserd   r…   )r"   r’   rˆ   r\   r{   Úreceived_datar—   Úeventrz   rs   r   rY   s               r   ÚgetresponseÚHTTP2Connection.getresponseâ   sŠ  € ð ˆÜ‹{ˆØ�]Š]˜dØˆJß à$(§I¡I§N¡N°5Ó$9Ð9�=Ö9Ø!×.Ñ.¨}Ó=�FÜ!'˜Ü% e¬R¯Y©Y×-GÑ-G×HÑHÜ&4Ó&6˜GØ16·´¡ Ø#)¨ZÓ#7Ü-0°·±³Ó-@¢Fà$+§K¡KØ(.¯©°gÓ(>ÀÇÁÈWÓ@Uö%&ó	 2?ô (¨¬r¯y©y×/EÑ/E×FÑFØ §J¡JÑ.˜DØ ×:Ñ:Ø %× <Ñ <¸e¿o¹oöô (¨¬r¯y©y×/DÑ/D×EÔEØ)-›Jñ% "(ð( $(×#4Ñ#4Ó#6Ð6�<Õ6Ø—I‘I×%Ñ% lÔ3÷3 !‘j÷ ð: Ñ!Ð!Ð!ÜØØØ×)Ñ)Ü�t“ñ	
ð 	
÷= �]ús   ™E&G3ÆA G3Ç3
HT)Úpreload_contentÚdecode_contentÚenforce_content_lengthc               ó  • SU;   a   U R                   b%  U R                   R                  U R                  5        U R                  X5        U=(       d    0 nUR	                  5        H2  u  pšU	R                  5       S:X  a  U
S:X  a  M!  U R                  Xš5        M4     S[        U R                  5      ;  a  U R                  S[        5       5        U(       a!  U R                  US9  U R                  U5        gU R                  5         g)zSend an HTTP/2 requestÚchunkedNztransfer-encodings
   user-agent)r}   )rZ   Ú
settimeoutÚtimeoutrl   Úitemsrq   ru   ÚdictrE   r   r~   rŠ   )r"   ri   rj   Úbodyrz   r¥   r¦   r§   rK   ÚkÚvs              r   ÚrequestÚHTTP2Connection.request  sÇ   € ð ˜Óð à�9‰9Ñ Ø�I‰I× Ñ  §¡Ô.à�‰˜Ô$à—-˜RˆØ—M‘M–O‰DˆAØ�w‰w‹yÐ/Ó/°A¸³NÙà—‘˜qÖ$ñ	 $ð ¤ T§]¡]Ó 3Ó3Ø�N‰N˜=Ô*AÓ*CÔDæØ�O‰O¨ˆOÑ.Ø�I‰I�d�Oà�O‰OÕr   c                óZ  >• U R                    n UR                  5         UR                  5       =n(       a  U R                  R	                  U5        S S S 5        U R                  5       U l         S U l        / U l        [        TU ])  5         g ! [
         a     NFf = f! , (       d  f       NP= fr   )rC   Úclose_connectionrY   rZ   r[   Ú	ExceptionrB   rD   rE   rG   Úclose)r"   r\   rˆ   rL   s      €r   r¶   ÚHTTP2Connection.close3  s�   ø€ Ø�]Š]˜dðØ×%Ñ%Ô'Ø×,Ñ,Ó.Ð.�4Õ.Ø—I‘I×%Ñ% dÔ+÷	 ð ×)Ñ)Ó+ˆŒØˆŒØˆŒä‰‰�øô ó Ùðú÷ �]ús)   ŽB�ABÂ
BÂBÂBÂBÂ
B*)rC   rD   rE   rd   r   )rI   rp   rJ   ú
int | NonerK   ú
typing.Anyr2   r3   )r2   z)_LockedObject[h2.connection.H2Connection]©r2   r3   )ri   rp   rj   rp   rK   r¹   r2   r3   )rs   ústr | bytesrt   r»   r2   r3   )r}   r¹   r2   r3   )rˆ   r¹   r2   r3   )NNÚhttp)
rI   rp   rJ   r¸   rz   útyping.Mapping[str, str] | Noner�   rp   r2   r3   )r2   r    )NN)ri   rp   rj   rp   r®   z_TYPE_BODY | Nonerz   r½   r¥   r   r¦   r   r§   r   rK   r¹   r2   r3   )r4   r5   r6   r7   r$   rB   rW   rl   ru   r~   rŠ   rŽ   r£   r±   r¶   r:   Ú__classcell__©rL   s   @r   r=   r=   U   sO  ø† à,0ðOØðOØ)ðOØ<FðOà	÷Oð OôH÷0ðBàðBð ðBð ð	Bð
 
ôBô>2öô+ð`  Ø37Øð	
àð	
ð ð	
ð 1ð		
ð
 ð	
ð 
õ	
ð(
à	ô(
ð\ #'Ø37ð%ð !%Ø#Ø'+ñ%àð%ð ð%ð  ð	%ð
 1ð%ð ð%ð ð%ð !%ð%ð ð%ð 
ö%÷Nõ r   r=   c                  óp   ^ • \ rS rSr S           SU 4S jjjr\S	S j5       rS
S jrS
S jrSr	U =r
$ )r    iD  c           
     óF   >• [         TU ]  UUSSS UUS9  X@l        SU l        g )Né   zHTTP/2)r’   rz   ÚversionÚversion_stringÚreasonr¦   r“   r   )rG   r$   Ú_dataÚlength_remaining)r"   r’   rz   r“   rˆ   r¦   rL   s         €r   r$   ÚHTTP2Response.__init__F  s;   ø€ ô 	‰ÑØØàØ#àØ)Ø#ð 	ñ 
	
ð Œ
Ø !ˆÕr   c                ó   • U R                   $ r   )rÆ   r(   s    r   rˆ   ÚHTTP2Response.data\  s   € à�z‰zÐr   c                ó   • g r   r;   r(   s    r   Úget_redirect_locationÚ#HTTP2Response.get_redirect_location`  s   € Ør   c                ó   • g r   r;   r(   s    r   r¶   ÚHTTP2Response.closec  s   € Ør   )rÆ   rÇ   )F)r’   r™   rz   r   r“   rp   rˆ   r…   r¦   r   r2   r3   )r2   r…   rº   )r4   r5   r6   r7   r$   Úpropertyrˆ   rÌ   r¶   r:   r¾   r¿   s   @r   r    r    D  so   ø† ð  %ð"àð"ð  ð"ð ð	"ð
 ð"ð ð"ð 
÷"ð "ð, óó ðô÷ò r   r    )r   r…   r2   r   )r   r…   r2   r   )%Ú
__future__r   ÚloggingÚrer    ÚtypesÚtypingÚ	h2.configrQ   Úh2.connectionÚ	h2.eventsÚ_base_connectionr   Ú_collectionsr   rS   r   r   Ú
exceptionsr	   Úresponser
   Úorig_HTTPSConnectionÚTypeVarr   Ú	getLoggerr4   ÚlogÚcompiler   r   r   r   ÚGenericr   r=   r    r;   r   r   Ú<module>rã      s®   ðÝ "ã Û 	Û Û Û ã Û Û å )Ý )ß AÝ (Ý 'à&Ð à
‡N‚N�3Ó€à×Ò˜Ó!€àŸ*š*Ð%DÓEÐ ØŸZšZÐ(VÓWÐ ô5ô:ô�F—N‘N 1Ñ%ô ô>l�oô lô^ Ð$õ  r   