
    *Gjty                        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 d dlmZ d dlmZ d dlmZ d dlmZmZmZmZ d dlZd dlZd d	lmZ d
dlmZmZ d
dl m!Z!m"Z" d
dl#m$Z$m%Z% d
dlm&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ d
dl,m-Z- d
dl.m/Z/m0Z0 d
dl1m2Z2m3Z3 d
dl4m5Z5 d
dl6m7Z7m8Z8 d
dl9m:Z: d
dl;m<Z< d
dl=m>Z>m?Z? dZ@dZAer
d dlBZBd
dlCmDZD e	e)e3dedge<f         ZEe	e<gee?         f         ZF e)dde(i i dddd ejG        d          
  
        ZH G d  d!eI          ZJ G d" d#eI          ZK eK            ZL ejM        ddd$           G d% d&                      ZNeOe)eNz  e3f         ZP G d' de"          ZQdS )(    N)deque)	AwaitableCallableSequence)suppress)escape)
HTTPStatus)Logger)TYPE_CHECKINGAnyOptionalcast)under_cached_property   )AbstractAccessLoggerAbstractStreamWriter)PAUSE_RESUME_READING_ERRORSBaseProtocol)DEFAULT_CHUNK_SIZEceil_timeout)HttpProcessingErrorHttpRequestParserHttpVersion10RawRequestMessageStreamWriterWebSocketReader)BadHttpMethod)access_loggerserver_logger)EMPTY_PAYLOADStreamReader)tcp_keepalive)HTTPExceptionHTTPInternalServerError)AccessLogger)BaseRequest)ResponseStreamResponse)RequestHandlerRequestPayloadErrorPayloadAccessError    )Serverr)   zasyncio.Task[None]UNKNOWN/TFc                       e Zd ZdZdS )r*   zPayload parsing error.N__name__
__module____qualname____doc__     \/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/aiohttp/web_protocol.pyr*   r*   N   s            r7   r*   c                       e Zd ZdZdS )r+   z-Payload was accessed after response was sent.Nr1   r6   r7   r8   r+   r+   R   s        7777r7   r+   )auto_attribsfrozenslotsc                   .    e Zd ZU eed<   eed<   eed<   dS )_ErrInfostatusexcmessageN)r2   r3   r4   int__annotations__BaseExceptionstrr6   r7   r8   r>   r>   Y   s.         KKK	LLLLLr7   r>   c            !           e Zd ZdZdZddeeeej        ddddde	dd	d
ddde
j        dedededee         dedededededededededef  fdZdefdZeded         fd             Zedeeeeeef         z  eeef         z  d!z  fd"            Zedeeeeeef         z  eeef         z  d!z  fd#            Zedefd$            ZdNd&ed!z  dd!fd'Zd(e
j        dd!f fd)Zd*e d!z  dd!f fd+Z!	 dOd,e"d-e#g d!f         d!z  dd!fd.Z$dPd/Z%d0e&dd!fd1Z'defd2Z(dPd3Z)dPd4Z*d5edd!fd6Z+dPd7Z,dPd8Z-d9e.d:e/d;ed!z  dd!fd<Z0d=e1d>e1dd!fd?Z2d=e1d>e1dd!fd@Z3dPdAZ4d9e.dBed!z  dCe#e.ge5e/         f         dee/ef         fdDZ6dPdEZ7d9e.dFe/dBed!z  dee/ef         fdGZ8	 	 	 dQd9e.dIed*e d!z  dJed!z  de/f
dKZ9dLe:de#e.ge5e/         f         fdMZ; xZ<S )Rr)   aj  HTTP protocol implementation.

    RequestHandler handles incoming HTTP request. It reads request line,
    request headers and request payload and calls handle_request() method.
    By default it always returns with 404 response.

    RequestHandler handles errors in incoming request, like bad
    status line, bad headers or incomplete payload. If any error occurs,
    connection gets closed.

    keepalive_timeout -- number of seconds before closing
                         keep-alive connection

    tcp_keepalive -- TCP keep-alive is on, default is on

    debug -- enable debug mode

    logger -- custom logger object

    access_log_class -- custom class for access_logger

    access_log -- custom logging object

    access_log_format -- access log format string

    loop -- Optional event loop

    max_line_size -- Optional maximum header line size

    max_field_size -- Optional maximum header field size

    max_headers -- Optional maximum header size

    timeout_ceil_threshold -- Optional value to specify
                              threshold to ceil() timeout
                              values

    )"max_field_sizemax_headersmax_line_size_request_count
_keepalive_manager_request_handler_request_factory_tcp_keepalive_next_keepalive_close_time_keepalive_handle_keepalive_timeout_lingering_time	_messages_max_msg_queue_size_msg_queue_resume_size_msg_queue_paused_message_tail_handler_waiter_waiter_task_handler_payload_parser_data_received_cbloggerdebug
access_logr   _close_force_close_current_request_timeout_ceil_threshold_request_in_progress_logging_enabled_cachei.  TFi     g      $@   )keepalive_timeoutr"   r^   access_log_classr`   access_log_formatr_   rI   rH   rG   lingering_timeread_bufsizeauto_decompresstimeout_ceil_thresholdmanagerr-   looprj   r"   r^   rk   r`   rl   r_   rI   rH   rG   rm   rn   ro   rp   c                p   t           | _        t           dz  | _        d| _        t	          | |||
||t
          |t           	  	        }t                                          ||           d| _        d| _	        d | _
        || _        |j        | _        |j        | _        |
| _        || _        || _        || _        d| _        d | _        || _        t/          |          | _        t3                      | _        d| _        d | _        d | _        d | _        d | _        d | _         d| _!        	 t/          |          | _!        n# tD          tF          f$ r Y nw xY w|| _$        |	| _%        || _&        |r# |||          | _'        | j'        j(        | _)        nd | _'        d| _)        d| _*        d| _+        d| _,        i | _-        d S )N   F)rI   rG   rH   payload_exceptionro   max_msg_queue_sizer   g        r7   ri   ).MAX_MSG_QUEUE_SIZErU   rV   rW   r   r*   super__init__rJ   rK   rc   rL   request_handlerrM   request_factoryrN   rI   rH   rG   rO   rP   rQ   rR   floatrS   r   rT   rX   r]   rZ   rY   r[   r\   rd   	TypeError
ValueErrorr^   r_   r`   r   enabledrf   ra   rb   re   rg   )selfrq   rr   rj   r"   r^   rk   r`   rl   r_   rI   rH   rG   rm   rn   ro   rp   parser	__class__s                     r8   ry   zRequestHandler.__init__   s   * $6  '9A&=# "'"')#1+1

 

 

 	v&&&  48'.8?8O8?8O*&,+*-'8<"3$^44*/'' <@48<@8<$(./$	+01G+H+HD((:& 	 	 	D	 
$ 	*>N>N-? ?D %)$6$>D!!!%D$)D!!$)!&(s   &D; ;EEreturnc                 T    d                     | j        j        | j        dnd          S )Nz<{} {}>	connecteddisconnected)formatr   r2   	transportr   s    r8   __repr__zRequestHandler.__repr__  s0    N#>5KK>
 
 	
r7   zssl.SSLContextc                 H    | j         dn| j                             d          S )zReturn SSLContext if available.N
sslcontextr   get_extra_infor   s    r8   ssl_contextzRequestHandler.ssl_context  s+    
 ~% D..|<<	
r7   Nc                 H    | j         dn| j                             d          S )zReturn peername if available.Npeernamer   r   s    r8   r   zRequestHandler.peername  +     ~% D..z::	
r7   c                 H    | j         dn| j                             d          S )zReturn sockname if available.Nsocknamer   r   s    r8   r   zRequestHandler.sockname&  r   r7   c                     | j         S N)rR   r   s    r8   rj   z RequestHandler.keepalive_timeout1  s    &&r7         .@timeoutc                 l  K   d| _         | j        | j                                         | j        r| j                                        | _        	 t          |          4 d{V  | j         d{V  ddd          d{V  n# 1 d{V swxY w Y   nb# t          j	        t          j
        f$ rD d| _        t          j        dk    r*t          j                    x}r|                                r Y nw xY w	 t          |          4 d{V  | j        +| j                            t          j	                               | j        8| j                                        st          j        | j                   d{V  ddd          d{V  n# 1 d{V swxY w Y   n[# t          j	        t          j
        f$ r= t          j        dk    r*t          j                    x}r|                                r Y nw xY w| j        | j                                         |                                  dS )zDo worker process exit preparations.

        We need to clean up everything and stop accepting requests.
        It is especially important for keep-alive connections.
        TN      )rb   rQ   cancelre   _loopcreate_futurerY   r   asyncioCancelledErrorTimeoutErrorsysversion_infocurrent_task
cancellingrc   _cancelr[   doneshieldforce_close)r   r   tasks      r8   shutdownzRequestHandler.shutdown5  sg      !!-"))+++ $ 	 $(:#;#;#=#=D 
'00 / / / / / / / /......../ / / / / / / / / / / / / / / / / / / / / / / / / / /*G,@A   '+$$//!(!5!7!77 0)) 0 	#G,, = = = = = = = =(4)11'2H2J2JKKK%1$:L:Q:Q:S:S1!.);<<<<<<<<<= = = = = = = = = = = = = = = = = = = = = = = = = = = &(<= 	 	 	 G++$1333T ,OO%% , 	 )%%'''so   B %B3B 
BB BB AC65C6:F% A2FF% 
FF%  F!F% %AG=<G=r   c                    t                                          |           t          t          j        |          }| j        rt          |           | j        J | j                            | |           | j        }t          j
        dk    r*t          j        |                                 |d          }n'|                    |                                           }|| _        d S )Nr      Trr   eager_start)rx   connection_mader   r   	TransportrO   r"   rL   r   r   r   Taskstartcreate_taskr[   )r   r   real_transportrr   r   r   s        r8   r   zRequestHandler.connection_madeg  s    	***g/;; 	*.)))}(((%%dN;;;zw&&<

4TJJJDD##DJJLL11D!r7   r@   c                 R   | j         d S | j                             | |           | j         j        }|                                  t	                                          |           d | _         d | _        d | _        d | _        | j        | j        	                                 | j
        +|t          d          }| j
                            |           |r | j        | j        	                                 d | _        | j        "| j                                         d | _        d S d S )NzConnection lost)rL   connection_losthandler_cancellationr   rx   rN   rM   _parserrQ   r   rc   ConnectionResetErrorr   r[   r\   feed_eof)r   r@   r   r   s      r8   r   zRequestHandler.connection_lostx  s/   = F%%dC000  $}A$$$ $ $!-"))+++ ,{*+<==!))#... 	(D$6$B%%'''!+ ))+++#'D    ,+r7   r   data_received_cbc                     | j         J || _         || _        | j        r(| j                             | j                   d| _        d S d S )Nr7   )r\   r]   rX   	feed_data)r   r   r   s      r8   
set_parserzRequestHandler.set_parser  s`    
 #+++%!1 	% **4+=>>>!$D	% 	%r7   c                     d S r   r6   r   s    r8   eof_receivedzRequestHandler.eof_received  s    r7   datac                 h   | j         s| j        rd S | j        #| j        s| j        J 	 | j                            |          \  }}}n:# t          $ r-}t          d||j                  t          fg}d}d}Y d }~nd }~ww xY w|D ]1\  }}| xj
        dz  c_
        | j                            ||f           2| j        }|r+|)|                                s|                    d            | j        s1t#          | j                  | j        k    r|                                  || _        |r|r|| _        d S d S d S | j        | j        r|r| xj        |z  c_        d S |rP| j        |                                  | j                            |          \  }	}|	r|                                  d S d S d S )Ni  )r?   r@   rA   Fr7   r   )rb   ra   r\   	_upgradedr   r   r   r>   rA   r    rJ   rT   appendrZ   r   
set_resultrW   lenrU   _pause_msg_queue_readingrX   r]   close)
r   r   messagesupgradedtailr@   msgpayloadwaitereofs
             r8   data_receivedzRequestHandler.data_received  s:    	 	F ''<++++/<+A+A$+G+G((DD&   Sc3;GGGW ! !) 6 6W##q(##%%sGn5555\F (F.v{{}}.!!$'''
 *0''4+CCC--///%DN *D *%)"""* * * * !)dn))$&  	%1&&(((,66t<<IC 

	 	 s   A
 

B#A<<Bc                     | j         S r   )rW   r   s    r8   _reading_paused_for_msg_queuez,RequestHandler._reading_paused_for_msg_queue  s    %%r7   c                 |    d| _         | j        -	 | j                                         d S # t          $ r Y d S w xY wd S )NT)rW   r   pause_readingr   r   s    r8   r   z'RequestHandler._pause_msg_queue_reading  s]    !%>%,,......     &%s   + 
99c                    | j         s4|                     d           t          | j                  | j        k    rd S d| _        | j        s4| j        /	 | j                                         d S # t          $ r Y d S w xY wd S d S )Nr7   F)
r   r   r   rT   rU   rW   _reading_pausedr   resume_readingr   r   s    r8   _resume_msg_queue_readingz(RequestHandler._resume_msg_queue_reading  s    ~ 	 s###4>""d&>>>!&# 	(B--/////.    	 	(B(Bs   A- -
A;:A;valc                 f    || _         | j        r"| j                                         d| _        dS dS )zMSet keep-alive connection mode.

        :param bool val: new state.
        N)rK   rQ   r   )r   r   s     r8   
keep_alivezRequestHandler.keep_alive  sC    
 ! 	*"))+++%)D"""	* 	*r7   c                 X    d| _         | j        r| j                                         dS dS )zClose connection.

        Stop accepting new pipelining messages and close
        connection when handlers done processing messages.
        TN)ra   rZ   r   r   s    r8   r   zRequestHandler.close  s9     < 	"L!!!!!	" 	"r7   c                     d| _         | j        r| j                                         | j        "| j                                         d| _        dS dS )zForcefully close connection.TN)rb   rZ   r   r   r   r   s    r8   r   zRequestHandler.force_close  sW     < 	"L!!!>%N  """!DNNN &%r7   requestresponsetimec                     | j         rJ| j        Et          r|J | j                            ||| j                                        |z
             d S d S d S r   )rf   r   r   logr   r   )r   r   r   r   s       r8   
log_accesszRequestHandler.log_access  sp       	PT%7%C ('''""7Hdjoo6G6G$6NOOOOO	P 	P%C%Cr7   argskwc                 <    | j         r | j        j         |i | d S d S r   )r_   r^   r   r   r   s      r8   	log_debugzRequestHandler.log_debug  s6    : 	+DKt*r*****	+ 	+r7   c                 *     | j         j        |i | d S r   )r^   	exceptionr   s      r8   log_exceptionzRequestHandler.log_exception!  s"    t*r*****r7   c                 8   d | _         | j        s| j        sd S | j        }|                                }| j        }||k     r"|                    || j                  | _         d S | j        r/| j        	                                s| 
                                 d S d S d S r   )rQ   rb   rK   r   r   rP   call_at_process_keepaliverZ   r   r   )r   rr   now
close_times       r8   r   z!RequestHandler._process_keepalive$  s    !% 	DO 	Fziikk4
%)\\*d>U%V%VD"F < 	 1 1 3 3 		 	 	 	r7   
start_timerz   c                   K   d| _         	 	 || _         ||           d {V }d | _        n# d | _        w xY w	 t          |dd          rt          j        dt
                     |                     |||           d {V \  }}n# t          $ r,}|}|                     |||           d {V \  }}Y d }~nd }~wt          j	        $ r  t          j
        $ rW}|                     d|           |                     |d          }|                     |||           d {V \  }}Y d }~nQd }~wt          $ rA}|                     |d|          }|                     |||           d {V \  }}Y d }~nd }~ww xY wd| _         | j        | j                            d            n.# d| _         | j        | j                            d            w w xY w||fS )	NT__http_exception__Fzlreturning HTTPException object is deprecated (#2415) and will be removed, please raise the exception insteadzRequest handler timed out.exc_infoi    )re   rc   getattrwarningswarnDeprecationWarningfinish_responser#   r   r   r   r   handle_error	ExceptionrY   r   )r   r   r   rz   respresetr@   s          r8   _handle_requestzRequestHandler._handle_request5  s      %)! 	6-(/%,_W55555555(,%%%,,,,% t1599 9 '	   !% 4 4WdJ O OOOOOOOKD%%-  	P 	P 	PD $ 4 4WdJ O OOOOOOOKD%%%%%%% 	 	 	# 	P 	P 	PNN7#NFFF$$Wc22D $ 4 4WdJ O OOOOOOOKD%%%%%% 	P 	P 	P$$Wc377D $ 4 4WdJ O OOOOOOOKD%%%%%%	P ).D%#/$//555 ).D%#/$//5555 0 U{sa   , B 	5B AF# 
E7"B61F# 6!E7AD)$F# )E767E2-F# 2E77F# #+Gc           	        K   | j         }| j        }|J | j        }d}| j        J | j        J | j        sb| j        s;	 |                                | _        | j         d{V  d| _        n# d| _        w xY w| j        	                                \  }}| j
        | j
                                         | j        r1t          | j                  | j        k    r|                                  | j        r|                                nd}|xj        dz  c_        t'          | |          }t)          |t*                    r|                     |          }	t.          }n| j        }	|                     ||| || j        pt3          j        |                    }
	 |                     |
||	          }t8          j        dk    rt3          j        ||d          }n|                    |          }	 | d{V \  }}nK# t@          $ r> | !                    d           Y d|
_"        | j#        || !                    d           n[w xY w~|r=| !                    d           	 d|
_"        | j#        || !                    d           ntI          |j%                  | _&        |'                                s| j(        }| j        s-|r*| !                    d	|           |                                }||z   }	 |'                                s||k     rtS          ||z
            4 d{V  |*                                 d{V  ddd          d{V  n# 1 d{V swxY w Y   |                                }|'                                s||k     n[# t2          j+        t2          j,        f$ r= t8          j        d
k    r*t3          j                    x}r|-                                r Y nw xY w|'                                s0| j        s)| !                    d           | .                                 |/                    t`                     n# t2          j+        $ r+ | !                    d           | 1                                  td          $ r5}| 3                    d|           | 1                                 Y d}~n&d}~wth          $ r | 1                                  w xY wd|
_"        | j#        || !                    d           n,# d|
_"        | j#        || !                    d           w w w xY w| j&        rT| j5        sM| j        sF|                                |z   }|| _6        | j7         |8                    || j9                  | _7        nn| j        b| j        s)d| _        | j#        | j#        .                                 dS dS dS )a_  Process incoming request.

        It reads request line, request headers and request payload, then
        calls handle_request() method. Subclass has to override
        handle_request(). start() handles various exceptions in request
        or response handling. Connection is being closed always unless
        keep_alive(True) specified.
        Nr   r   Tr   z&Ignored premature client disconnectionz'Ignored premature client disconnection.z(Ignored premature client disconnection 2z'Start lingering close timer for %s sec.r   zUncompleted request.zUnhandled exceptionr   ):r   rL   rR   rN   rM   rb   rT   r   rZ   popleftr   message_consumedrW   r   rV   r   rf   r   requests_countr   
isinstancer>   _make_error_handlerERRORr[   r   r   r  r   r   r   r   ConnectionErrorr   _taskr   boolr   rK   is_eofrS   r   readanyr   r   r   r   set_exception_PAYLOAD_ACCESS_ERRORr   r   r   rD   ra   rP   rQ   r   r   )r   rr   rq   rj   r  rA   r   r   writerrz   r   coror   r  rm   r   end_ttr@   r   s                       r8   r   zRequestHandler.start`  s!      z-""" 3$000$000# |	> ((#'#5#5#7#7DL,&&&&&&&#'DLL4DL''''#~5577GW |'--///&1''4+FFF..000 $(#8BDIIKKKdE""a'""!$--F'8,, 8"&":":7"C"C"&"7
 ++"@g&:4&@&@ GCN++GUOLL#w.."<4TJJJDD++D11D(,******KD%%&   NN#KLLLl !%>)d.>NN#LMMMu
  NN#MNNN` !%>)d.>NN#LMMM_ #'t"7"7 ~~'' %%)%9N, & &E~   #iikk #n 4&&-nn&6&6 23;;+7+D+D !< !< !< !< !< !< !< !<*1//*;*;$;$;$;$;$;$;$;!< !< !< !< !< !< !< !< !< !< !< !< !< !< !< !< !< !< !< !< !< !< !< !< !< !< !< '+iikk	 '.nn&6&6 23;;
 !( 68LM & & & # 0G ; ;*1*>*@*@%@Q !<$%LLNN !< !&& #>>++ %D4E %'=>>>

%%&;<<<<)   GHHH  """ # # #""#83"GGG  """"""""      """ !%>)d.>NN#LMMM !%>)d.>NN#LMMMM *.>  	t{ 	4;L 	!YY[[+<<
2</)1-1\\"D$;. .D* y # |	~   	'!%D~)$$&&&&&	' 	'))s    &A. .	A7AQ ,G8 7Q 8I Q ?I  Q A/Q 32N %M N 
MN M 1N Q AO*'Q )O**A!Q T
 AS!+R>9T
 >#S!!T
 
)T3r  c                 J  K   |                                  | j        | j                            d           d| _        | j        rg| j                            | j                  \  }}}|| _        |D ]1\  }}| xj        dz  c_        | j                            ||f           2| j	        J 	 |j
        }	n|# t          $ ro ||                     d           n|                     d|           t                      }
t          |
j        |
j        |
j        |
j                  }|j
        }	Y nw xY w	  |	|           d{V  |                                 d{V  n+# t(          $ r |                     |||           |dfcY S w xY w|                     |||           |dfS )a   Prepare the response and write_eof, then log access.

        This has to
        be called within the context of any exception so the access logger
        can get exception information. Returns True if the client disconnects
        prematurely.
        NFr   z+Missing return statement on request handlerz3Web-handler should return a response instance, got )r?   reasontextheadersT)_finishr   set_upgradedr   rX   r   rJ   rT   r   rZ   prepareAttributeErrorr   r$   r'   r?   r  r  r  	write_eofr  r   )r   r   r  r   r   r   r   r   r   prepare_methr@   s              r8   r   zRequestHandler.finish_response  s      	<#L%%e,,,"DN! ,,0L,B,B4CU,V,V))T%)"$, : :LC''1,''N))3.9999 |+++	(<LL 	( 	( 	(|""#PQQQQ""R$RR   *++Cz#*38S[  D  <LLL	(	,w'''''''''.."""""""""" 	 	 	OOGT:666:	 	z222U{s%   .B6 6A6D/.D/3+E %FFr   r?   rA   c                    | j         dk    r8t          |t                    r#| j                            d|j        |           n|                     d|j        |           |j        j        dk    rt          d          d}|t          j        k    rt          j        j         dt          j        j         }t          j        j        }d}| j        r?t          t                     5  t#          j                    }ddd           n# 1 swxY w Y   d	|j                            d
d          v r&|rt+          |          }d| d}d| d| d| d}d	}n|r|}|dz   |z   }t-          |||          }	|	                                 |	S )zHandle errors.

        Returns HTTP response with specific status code. Logs additional
        information. It always closes current connection.
        r   zError handling request from %sr   r   zMResponse is sent already, cannot send another response with the error messagez
text/plain Nz	text/htmlAccept z<h2>Traceback:</h2>
<pre>z</pre>z<html><head><title>z</title></head><body>
<h1>z</h1>
z
</body></html>
z

)r?   r  content_type)rJ   r  r   r^   r_   remoter   r  output_sizer  r	   INTERNAL_SERVER_ERRORvaluephrasedescriptionr   r   	traceback
format_excr  gethtml_escaper'   r   )
r   r   r?   r@   rA   cttitler   tbr  s
             r8   r   zRequestHandler.handle_error$  s*    !##
3(F(F#
 K0'.3      0'.3    
 >%))!)  
 Z555!7=ii
@`@giiE2>CBz 0i(( 0 0"-//B0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 go11(B???? B$RBArAAAC1#1 1*/1 1 1 1 1  ! C&.3.vG"EEEs   %DD	D	err_infoc                 4     dt           dt          f fd}|S )Nr   r   c                 V   K                        | j        j        j                  S r   )r   r?   r@   rA   )r   r2  r   s    r8   handlerz3RequestHandler._make_error_handler.<locals>.handlere  s/      $$(,8H  r7   )r&   r(   )r   r2  r5  s   `` r8   r	  z"RequestHandler._make_error_handlerb  s<    	; 	> 	 	 	 	 	 	 	
 r7   )r   r   )r   N)r   NN)=r2   r3   r4   r5   	__slots__r   r%   r   
LOG_FORMATr   r   AbstractEventLoopr|   r  r
   typer   rE   rB   ry   r   r   r   r   tupler   r   propertyrj   r   BaseTransportr   rD   r   r   r   r   r   bytesr   r   r   r   r   r   r   r&   r(   r   r   r   r   r   r   r  r   r   r   r>   r	  __classcell__)r   s   @r8   r)   r)   c   s       % %N#IV $("&7C*!-!8!" $. $()'Z) Z) Z)Z) '	Z) !Z) Z) Z) 34Z) Z) Z) Z) Z) Z) Z)  !Z)" #Z)$ %Z)& !&'Z) Z) Z) Z) Z) Z)x
# 
 
 
 
 
X&67 
 
 
 
 
	uS#sC'(	(5c?	:T	A
 
 
 
 
	uS#sC'(	(5c?	:T	A
 
 
 
 '5 ' ' ' X'0 0edl 0d 0 0 0 0d")> "4 " " " " " ""(=4#7 (D ( ( ( ( ( (F 7;% %% #2t8,t3% 
	% % % %   /% /D / / / /b&t & & & &      "*d *t * * * *" " " "" " " "P"P.<PDIDLP	P P P P+s +# +$ + + + ++3 +c +d + + + +   ")) DL) ";->1J"JK	)
 
~t#	$) ) ) )VS' S' S' S'j-"-*8-FKdl-	~t#	$- - - -d $("< << < T!	<
 t< 
< < < <| 	;->!::	;       r7   )Rr   asyncio.streamsr   r+  r   collectionsr   collections.abcr   r   r   
contextlibr   htmlr   r.  httpr	   loggingr
   typingr   r   r   r   attryarl	propcacher   abcr   r   base_protocolr   r   helpersr   r   r   r   r   r   r   r   http_exceptionsr   r   r   r   streamsr    r!   tcp_helpersr"   web_exceptionsr#   r$   web_logr%   web_requestr&   web_responser'   r(   __all__rw   ssl
web_serverr-   _RequestFactory_RequestHandlerURLr
  r   r*   r+   r  sr>   r:  _MsgTyper)   r6   r7   r8   <module>r\     s        



            9 9 9 9 9 9 9 9 9 9       & & & & & &             5 5 5 5 5 5 5 5 5 5 5 5   + + + + + + ; ; ; ; ; ; ; ; D D D D D D D D 5 5 5 5 5 5 5 5                + * * * * * - - - - - - - - 0 0 0 0 0 0 0 0 & & & & & & B B B B B B B B ! ! ! ! ! ! $ $ $ $ $ $ 2 2 2 2 2 2 2 2
I
   #JJJ""""""  	 K=)N*CCD		DHSMM	 	! ! ! ! !) ! ! !8 8 8 8 8 8 8 8 +*,,  T$d333       43 "X-|;<G G G G G\ G G G G Gr7   