
    F jR                       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Jr  S SK	J
r
Jr  S SKJr  S SKrS SKJr  S SKJrJrJrJrJrJrJr  S SKJr  S S	KJr  S S
KJrJrJ r J!r!  S SK"J#r#J$r$J%r%J&r&J'r'  S SK(J)r)  SS jr*\+" SS5       V s0 s H  o \*" U 5      _M     sn r, " S S\RZ                  5      r. " S S5      r/gs  sn f )    )annotationsN)Callable)AnyLiteral)unquote)!DEFAULT_MAX_INCOMPLETE_EVENT_SIZE)ASGI3ApplicationASGIReceiveEventASGISendEventHTTPRequestEventHTTPResponseBodyEventHTTPResponseStartEvent	HTTPScope)Config)TRACE_LOG_LEVEL)CLOSE_HEADERHIGH_WATER_LIMITFlowControlservice_unavailable)get_client_addrget_local_addrget_path_with_query_stringget_remote_addris_ssl)ServerStatec                     [         R                  " U 5      R                  R                  5       $ ! [         a     gf = f)N    )http
HTTPStatusphraseencode
ValueErrorstatus_codes    Ic:\Py\emelo-reg\venv\Lib\site-packages\uvicorn/protocols/http/h11_impl.py_get_status_phraser&      s7    {+2299;; s   -0 
==d   iX  c                      \ rS rSr S         SS jjr    SS jrSS jrSS jrSS jrSS jr	SS	 jr
SS
 jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSrg) H11Protocol)   Nc                T   UR                   (       d  UR                  5         Xl        UR                  U l        U=(       d    [
        R                  " 5       U l        [        R                  " S5      U l
        [        R                  " S5      U l        U R                  R                  5       U l        [        R                  " [        R                   UR"                  b  UR"                  O[$        5      U l        UR(                  U l        UR*                  U l        UR,                  U l        X0l        S U l        UR2                  U l        X l        UR6                  U l        UR8                  U l        S U l        S U l        S U l        S U l         S U l!        S U l"        S U l#        S U l$        g )Nzuvicorn.errorzuvicorn.access)%loadedloadconfig
loaded_appappasyncioget_event_looplooplogging	getLoggerloggeraccess_loggerhasHandlers
access_logh11
ConnectionSERVERh11_max_incomplete_event_sizer   connws_protocol_class	root_pathlimit_concurrency	app_statetimeout_keep_alive_tasktimeout_keep_aliveserver_stateconnectionstasks	transportflowserverclientschemescopeheaderscycle)selfr.   rE   rB   _loops        r%   __init__H11Protocol.__init__*   sQ    }}KKM$$5W335	''8$../?@,,88:NNJJ33? 002	
	 "(!9!9))!'!9!9" DH$"(";"; )'33!''
 -1!%	59.27; !%
26+/
r   c                   U R                   R                  U 5        Xl        [        U5      U l        [        U5      U l        [        U5      U l        [        U5      (       a  SOSU l
        U R                  R                  [        ::  aD  U R                  (       a  SU R                  -  OSnU R                  R                  [        SU5        g g )Nhttpsr   %s:%d -  z%sHTTP connection made)rF   addrH   r   rI   r   rJ   r   rK   r   rL   r6   levelr   log)rP   rH   prefixs      r%   connection_madeH11Protocol.connection_made[   s     	T""	*	$Y/%i0!'	!2!2g;;/15Z$++-"FKKOOO-EvN 0r   c                h   U R                   R                  U 5        U R                  R                  [        ::  aC  U R
                  (       a  SU R
                  -  OSnU R                  R                  [        SU5        U R                  (       a,  U R                  R                  (       d  SU R                  l	        U R                  R                  [        R                  :w  a1  [        R                  " 5       n U R                  R                  U5        U R                  b$  U R                  R"                  R%                  5         U R&                  b  U R&                  R)                  5         Uc+  U R*                  R-                  5         U R/                  5         g g ! [        R                    a     Nf = f)NrV   rW   z%sHTTP connection lostT)rF   discardr6   rY   r   rK   rZ   rO   response_completedisconnectedr>   	our_stater:   ERRORConnectionClosedsendLocalProtocolErrormessage_eventsetrI   resume_writingrH   close_unset_keepalive_if_required)rP   excr[   events       r%   connection_lostH11Protocol.connection_lostj   s'     &;;/15Z$++-"FKKOOO-EvN::djj::&*DJJ#99#))+((*E		u%
 ::!JJ$$((*99 II$$&;NN  "--/  )) s   8F F10F1c                    g N rP   s    r%   eof_receivedH11Protocol.eof_received   s    r   c                b    U R                   b"  U R                   R                  5         S U l         g g rq   )rC   cancelrs   s    r%   rk   (H11Protocol._unset_keepalive_if_required   s-    ''3((//1+/D( 4r   c                   / nS nU R                    H_  u  p4US:X  a<  UR                  S5       Vs/ s H   oUR                  5       R                  5       PM"     nnUS:X  d  MO  UR                  5       nMa     SU;   a  U$ g s  snf )N
   connection   ,s   upgrade)rN   splitlowerstrip)rP   
connectionupgradenamevaluetokens         r%   _get_upgradeH11Protocol._get_upgrade   s{    
<<KD}$AFTARSARkkm113AR
Sz!++-	 (
 #N Ts   'A=c                     U R                   c  ggNFT)r?   rs   s    r%   _should_upgrade_to_ws!H11Protocol._should_upgrade_to_ws   s    !!)r   c                    SnU R                   R                  U5        U R                  5       (       d  SnU R                   R                  U5        g g )NzUnsupported upgrade request.zNo supported WebSocket library detected. Please use "pip install 'uvicorn[standard]'", or install 'websockets' or 'wsproto' manually.)r6   warningr   )rP   msgs     r%   _unsupported_upgrade_warning(H11Protocol._unsupported_upgrade_warning   sG    ,C ))++ \CKK$ ,r   c                    U R                  5       nUS:X  a  U R                  5       (       a  gUb  U R                  5         g)Ns	   websocketTF)r   r   r   )rP   r   s     r%   _should_upgradeH11Protocol._should_upgrade   s>    ##%l"t'A'A'C'C--/r   c                z    U R                  5         U R                  R                  U5        U R                  5         g rq   )rk   r>   receive_datahandle_events)rP   datas     r%   data_receivedH11Protocol.data_received   s,    ))+		t$r   c                     U R                   R                  5       nU[        R                  L a  g U[        R                  L a  U R                  R                  5         g [        U[        R                  5      (       Ga  UR                   VVs/ s H  u  p4UR                  5       U4PM     snnU l        UR                  R!                  S5      u  pVn[#        UR%                  S5      5      nU R&                  U-   n	U R&                  R)                  S5      U-   n
SU R*                  R,                  SS.UR.                  R%                  S5      U R0                  U R2                  U R4                  UR6                  R%                  S5      U R&                  U	U
UU R                  U R8                  R;                  5       S.U l        U R?                  5       (       a  U RA                  U5        g U RB                  bj  [E        U RF                  5      U RB                  :  d#  [E        U RH                  5      U RB                  :  a$  [J        nSnU R                  R                  U5        OU RL                  nU RO                  5         [Q        U R<                  U R                   U RR                  U R                  U R                  U RT                  U RV                  U RX                  RZ                  [\        R^                  " 5       U R`                  S	9
U l1        U R*                  Rd                  (       a  [f        Rh                  S
:  aG  U Rj                  Rm                  U Rb                  Ro                  U5      [p        Rr                  " 5       S9nO[p        Rr                  " 5       Ru                  U Rj                  Rl                  U Rb                  Ro                  U5      5      nO4U Rj                  Rm                  U Rb                  Ro                  U5      5      nURw                  U RH                  Rx                  5        U RH                  R{                  U5        GO[        U[        R|                  5      (       a  U R                   R~                  [        R                  L a  GM  U Rb                  =R                  UR                  -  slA        [E        U Rb                  R                  5      [        :  a  U R                  R                  5         U Rb                  R                  R                  5         O[        U[        R                  5      (       a  U R                   R~                  [        R                  L a7  U RR                  R                  5         U R                   R                  5         GM  SU Rb                  lI        U Rb                  R                  R                  5         U R                   R                  [        R                  :X  a  g GM  ! [        R                   a1    SnU R                  R                  U5        U R                  U5         g f = fs  snnf )NzInvalid HTTP request received.   ?asciir   z2.3)versionspec_version)typeasgihttp_versionrJ   rK   rL   methodr@   pathraw_pathquery_stringrN   statezExceeded concurrency limit.)
rM   r>   rH   rI   r6   r7   r9   default_headersrg   on_response)      )contextF)Lr>   
next_eventr:   RemoteProtocolErrorr6   r   send_400_response	NEED_DATAPAUSEDrI   pause_reading
isinstanceRequestrN   r}   target	partitionr   decoder@   r!   r.   asgi_versionr   rJ   rK   rL   r   rB   copyrM   r   handle_websocket_upgraderA   lenrF   rG   r   r0   rk   RequestResponseCyclerH   r7   r9   rE   r   r1   Eventon_response_completerO   reset_contextvarssysversion_infor3   create_taskrun_asgicontextvarsContextrunadd_done_callbackr_   rX   Datarb   DONEbodyr   r   rg   rh   EndOfMessageresume_readingstart_next_cycle	more_bodytheir_state
MUST_CLOSE)rP   rm   r   keyr   r   _r   r   	full_pathfull_raw_pathr0   messagetasks                 r%   r   H11Protocol.handle_events   sm   		,,. %#**$
 		'')E3;;//GL}}U}e 4}U,1LL,B,B4,H)\xw78 NNT1	 $ 5 5g > I"(,(@(@RWX$)$6$6$=$=g$F"kk"kk"kk#ll11':!%% -$0#||!^^002
 ''))11%8 ))5(()T-C-CCs4::Z^ZpZpGp-C;GKK''0((C 1131**"nn;;"&"4"4#$($5$5$E$E")--/ $ 9 9
 ;;00 ''72#yy44TZZ5H5H5MWbWjWjWl4m*224889N9NPTPZPZPcPcdgPhi99001D1DS1IJD&&tzz'9'9:

t$E388,,99&&#((2

5::-tzz'*::II++-

((,,.E3#3#34499&&#((2NN113II..0',

$

((,,.99((CNN:Q  ** 6##C(&&s+	$  Vs   W? Y?AYYc                   U R                   R                  [        ::  aC  U R                  (       a  SU R                  -  OSnU R                   R	                  [        SU5        U R
                  R                  U 5        UR                  SUR                  S/nU R                   H  u  pEX4SUS/-  nM     UR                  S5        U R                  U R                  U R                  U R                  S9nUR                  U R                   5        UR#                  S	R%                  U5      5        U R                   R'                  U5        g )
NrV   rW   z%sUpgrading to WebSocket    s    HTTP/1.1
s   : s   
)r.   rE   rB   r   )r6   rY   r   rK   rZ   rF   r_   r   r   rN   appendr?   r.   rE   rB   r\   rH   r   joinset_protocol)rP   rm   r[   outputr   r   protocols          r%   r   $H11Protocol.handle_websocket_upgrade  s    ;;/15Z$++-"FKKOOO-GP  &,,ell4DE<<KDUE733F (g));;**nn * 

 	  0sxx/0##H-r   c                    [         S   nSS/n[        R                  " SX2S9nU R                  R	                  U5      nU R
                  R                  U5        U R                  R	                  [        R                  " UR                  S5      S9S9nU R
                  R                  U5        U R                  R	                  [        R                  " 5       S9nU R
                  R                  U5        U R
                  R                  5         g )Ni  s   content-types   text/plain; charset=utf-8rz   s   closer$   rN   reasonr   r   rm   )STATUS_PHRASESr:   Responser>   re   rH   writer   r!   r   rj   )rP   r   r   rN   rm   r   s         r%   r   H11Protocol.send_400_response/  s    $;%.
 gM&V$chhCJJw4G&HIV$c&6&6&89V$r   c                4   U R                   =R                  S-  sl        U R                  R                  5       (       a  g U R	                  5         U R
                  R                  U R                  U R                  5      U l	        U R                  R                  5         U R                  R                  [        R                  L aS  U R                  R                   [        R                  L a+  U R                  R#                  5         U R%                  5         g g g )N   )rE   total_requestsrH   
is_closingrk   r3   
call_laterrD   timeout_keep_alive_handlerrC   rI   r   r>   rb   r:   r   r   r   r   rs   s    r%   r    H11Protocol.on_response_completeA  s    ((A-(>>$$&& 	))+'+yy';';D<S<SUYUtUt'u$ 			  " 99#((*tyy/D/D/PII&&(  0Q*r   c                   U R                   b  U R                   R                  (       aK  [        R                  " 5       nU R                  R                  U5        U R                  R                  5         gSU R                   l        g)z7
Called by the server to commence a graceful shutdown.
NF)	rO   r`   r:   rd   r>   re   rH   rj   
keep_aliverP   rm   s     r%   shutdownH11Protocol.shutdownT  sT     ::!=!=((*EIINN5!NN  "$)DJJ!r   c                8    U R                   R                  5         g)zL
Called by the transport when the write buffer exceeds the high water mark.
N)rI   pause_writingrs   s    r%   r   H11Protocol.pause_writing_  s     			!r   c                8    U R                   R                  5         g)zO
Called by the transport when the write buffer drops below the low water mark.
N)rI   ri   rs   s    r%   ri   H11Protocol.resume_writinge  s     			  "r   c                    U R                   R                  5       (       dK  [        R                  " 5       nU R                  R                  U5        U R                   R                  5         gg)zS
Called on a keep-alive connection if no new data is received after a short
delay.
N)rH   r   r:   rd   r>   re   rj   r   s     r%   r   &H11Protocol.timeout_keep_alive_handlerk  sJ    
 ~~((**((*EIINN5!NN  " +r   )r9   r7   r0   rB   rK   r.   r>   rF   rO   rI   rN   rA   r6   r3   r@   rL   rM   rJ   rE   rG   rD   rC   rH   r?   rq   )
r.   r   rE   r   rB   zdict[str, Any]rQ   z asyncio.AbstractEventLoop | NonereturnNone)rH   asyncio.Transportr   r   )rl   zException | Noner   r   r   r   )r   zbytes | None)r   bool)r   bytesr   r   )rm   zh11.Requestr   r   )r   strr   r   )__name__
__module____qualname____firstlineno__rR   r\   rn   rt   rk   r   r   r   r   r   r   r   r   r   r   r   ri   r   __static_attributes__rr   r   r%   r)   r)   )   s     37.0.0 ".0 "	.0
 0.0 
.0bO*O	O020


%iV.&$!&	*"##r   r)   c                  r    \ rS rSr                      S	S jrS
S jrSS jrSS jrSS jrSr	g)r   iv  c                   Xl         X l        X0l        X@l        XPl        X`l        Xpl        Xl        Xl        Xl	        SU l
        SU l        UR                  U l        [        5       U l        SU l        SU l        SU l        g r   )rM   r>   rH   rI   r6   r7   r9   r   rg   r   ra   r   !they_are_waiting_for_100_continuewaiting_for_100_continue	bytearrayr   r   response_startedr`   )rP   rM   r>   rH   rI   r6   r7   r9   r   rg   r   s              r%   rR   RequestResponseCycle.__init__w  s}     
	"	*$.*& "(,(N(N% K	 !&!&r   c                n  #     U" U R                   U R                  U R                  5      I S h  vN nUb8  SnU R                  R	                  X25        U R
                  R                  5         OU R                  (       dG  U R                  (       d6  SnU R                  R	                  U5        U R                  5       I S h  vN   OYU R                  (       dH  U R                  (       d7  SnU R                  R	                  U5        U R
                  R                  5         S U l        g  N Ni! [         an  nSnU R                  R	                  X4S9  U R                  (       d  U R                  5       I S h  vN     S nANaU R
                  R                  5          S nANS nAff = f! S U l        f = f7f)Nz4ASGI callable should return None, but returned '%s'.z1ASGI callable returned without starting response.z3ASGI callable returned without completing response.zException in ASGI application
)exc_infoc                     g rq   rr   rr   r   r%   <lambda>/RequestResponseCycle.run_asgi.<locals>.<lambda>  s    tr   )rM   receivere   r6   errorrH   rj   r  ra   send_500_responser`   BaseExceptionr   )rP   r0   resultr   rl   s        r%   r   RequestResponseCycle.run_asgi  sC    	,

DLL$)) F !L!!#.$$&**43D3DI!!#&,,...++D4E4EK!!#&$$&+D1$ /  	'3CKKc0((,,...$$&&	'*  ,Ds{   F5+D- D)D- BF( D+AF(  	F5)D- +F( -
F%7?F 6E97F <F( F F(  F%%F( (
F22F5c                   #    SSSS/S.nU R                  U5      I S h  vN   SSSS	.nU R                  U5      I S h  vN   g  N$ N7f)
Nhttp.response.starti  r   r   )r   statusrN   http.response.bodys   Internal Server ErrorFr   r   r   )re   )rP   response_start_eventresponse_body_events      r%   r  &RequestResponseCycle.send_500_response  sc     )?)8
 ii,---(,6

 ii+,,, 	. 	-s   AAAAAAc                "  #    U R                   R                  (       a3  U R                  (       d"  U R                   R                  5       I S h  vN   U R                  (       a  g U R                  (       GdF  US   S:w  a  [        SUS    S35      eSU l        SU l        US   nU R                  [        UR                  S/ 5      5      -   n[        U R                  S   ;   a  [        U;  a
  U[        /-   nU R                  (       a`  U R                  R                  S	[        U R                  5      U R                  S
   [!        U R                  5      U R                  S   U5        ["        U   n[$        R&                  " X#US9nU R(                  R+                  US9nU R,                  R/                  U5        GO0U R0                  (       Gd  US   S:w  a  [        SUS    S35      eUR                  SS5      nUR                  SS5      nU R                  S
   S:X  a  SOUn	U R(                  R+                  [$        R2                  " U	S9S9nU R,                  R/                  U5        U(       dh  SU l        U R4                  R7                  5         U R(                  R+                  [$        R8                  " 5       S9nU R,                  R/                  U5        O[        SUS    S35      eU R0                  (       a  U R(                  R:                  [$        R<                  L d  U R>                  (       dF  U R(                  R+                  [$        R@                  " 5       S9  U R,                  RC                  5         U RE                  5         g g  GN@7f)Nr   r  z6Expected ASGI message 'http.response.start', but got 'z'.TFr  rN   z%s - "%s %s HTTP/%s" %dr   r   r   r   r  z5Expected ASGI message 'http.response.body', but got 'r   r   r   HEADr   zUnexpected ASGI message 'z)' sent, after response already completed.)#rI   write_pausedra   drainr  RuntimeErrorr
  r   listgetr   rM   r9   r7   infor   r   r   r:   r   r>   re   rH   r   r`   r   rg   rh   r   rb   r   r   rd   rj   r   )
rP   r   r  rN   r   responser   r   r   r   s
             r%   re   RequestResponseCycle.send  s    99!!$*;*;))//###$$$v"77"%[\cdj\k[lln#opp$(D!,1D)X&F**T'++i2L-MMGtzz)44W9T!\N2""''-#DJJ/JJx(.tzz:JJ~. $F+F||PVWHYY^^(^3FNN  ('''v"66"%Z[bci[jZkkm#noo;;vs+DK7I **X.&83dDYY^^#((*=^>FNN  ( )-&""&&(c.>.>.@A$$V, !:76?:KKtuvv!!yy""cnn4DOO		S%9%9%;<$$&	 "w $s   A
NNM Nc                  #    U R                   (       ar  U R                  R                  5       (       dS  / n[        R                  " SUSS9nU R
                  R                  US9nU R                  R                  U5        SU l         U R                  (       dg  U R                  (       dV  U R                  R                  5         U R                  R                  5       I S h  vN   U R                  R                  5         U R                  (       d  U R                  (       a  SS0$ S[        U R                   5      U R"                  S	.n[%        5       U l        U$  Nx7f)
Nr'   Continuer   r   Fr   zhttp.disconnectzhttp.requestr  )r
  rH   r   r:   InformationalResponser>   re   r   ra   r`   rI   r   rg   waitclearr   r   r   r  )rP   rN   rm   r   r   s        r%   r  RequestResponseCycle.receive  s     ((1J1J1L1L-/G--#wWabEYY^^%^0FNN  (,1D)  )?)?II$$&$$))+++$$& 6 6-..-;U499EUdhdrdr$sK	 ,s   CEE A9E)r9   r7   r   r>   r   ra   rI   r   r6   rg   r   r   r`   r  rM   rH   r
  N)rM   r   r>   zh11.ConnectionrH   r   rI   r   r6   logging.Loggerr7   r1  r9   r   r   zlist[tuple[bytes, bytes]]rg   zasyncio.Eventr   zCallable[..., None]r   r   )r0   r	   r   r   r   )r   r   r   r   )r   r
   )
r  r  r  r  rR   r   r  re   r  r  rr   r   r%   r   r   v  s    #'#' #' %	#'
 #' #' &#' #' 3#' %#' )#' 
#'L,8-$AFr   r   )r$   intr   r   )0
__future__r   r1   r   r   r4   r   collections.abcr   typingr   r   urllib.parser   r:   h11._connectionr   uvicorn._typesr	   r
   r   r   r   r   r   uvicorn.configr   uvicorn.loggingr   #uvicorn.protocols.http.flow_controlr   r   r   r   uvicorn.protocols.utilsr   r   r   r   r   uvicorn.serverr   r&   ranger   Protocolr)   r   r#   s   0r%   <module>r@     s    "     
 $    
 =   " + p p x x & SXX[]`RabRa;1+>>RabJ#'"" J#Z
j ja
 cs   B<