§
    ;xÅjÃ�  ã                   óì  — 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 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# 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/m0Z0m1Z1 ddl2m3Z3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z?m@Z@ dZAdZBer
d dlCZCddlDmEZE ee*e4de!dge=f         ZFee=ge
e@         f         ZG e*dde)i i ddd d  ejH        d¦  «        ¦
  «
        ZI G d!„ d"eJ¦  «        ZK G d#„ d$eJ¦  «        ZL eL¦   «         ZM ejN        ddd¬%¦  «         G d&„ d'¦  «        ¦   «         ZOePe*eOz  e4f         ZQ G d(„ de#¦  «        ZRdS ))é    N)ÚBaseEventLoop)Údeque)Ú	AwaitableÚCallableÚSequence)Úsuppress)Úescape)Ú
HTTPStatus)ÚLogger)ÚTYPE_CHECKINGÚAnyÚOptionalÚcast)Úunder_cached_propertyé   )ÚAbstractAccessLoggerÚAbstractStreamWriter)Ú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__© ó    úEC:\Projects\Historical\venv\Lib\site-packages\aiohttp/web_protocol.pyr*   r*   O   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+   S   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>   Z   s.   € € € € € € à€K€K�KØ	ÐÐÑØ€L€L�L€L€Lr7   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dLd&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!	 dMd,e"d-e#g d!f         d!z  dd!fd.„Z$dNd/„Z%d0e&dd!fd1„Z'dNd2„Z(d3edd!fd4„Z)dNd5„Z*dNd6„Z+d7e,d8e-d9ed!z  dd!fd:„Z.d;e/d<e/dd!fd=„Z0d;e/d<e/dd!fd>„Z1dNd?„Z2d7e,d@ed!z  dAe#e,ge3e-         f         dee-ef         fdB„Z4dNdC„Z5d7e,dDe-d@ed!z  dee-ef         fdE„Z6	 	 	 dOd7e,dGed*e d!z  dHed!z  de-f
dI„Z7dJe8de#e,ge3e-         f         fdK„Z9ˆ xZ:S )Pr)   aO  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 an idle 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Ú_message_tailÚ_read_bufsizeÚ_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  | _        || _        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é   )rI   rG   rH   Úpayload_exceptionro   Úmax_msg_queue_sizer   Tg        r7   ri   F).ÚMAX_MSG_QUEUE_SIZErU   rV   rX   r   r*   ÚsuperÚ__init__rJ   rK   rc   rL   Úrequest_handlerrM   Úrequest_factoryrN   rI   rH   rG   rO   rP   rQ   rR   ÚfloatrS   r   rT   rW   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ˆÔ õ '9¸AÑ&=ˆÔ#Ø)ˆÔÝ"ØØØØ'Ø)Ø#Ý1Ø+Ý1ð

ñ 

ô 

ˆõ 	‰Œ×Ò˜˜vÑ&Ô&Ð&ð  ˆÔØˆŒØ48ˆÔØ'.ˆŒØ8?Ô8OˆÔØ8?Ô8OˆÔà*ˆÔØ&ˆÔØ,ˆÔà+ˆÔà*-ˆÔ'Ø8<ˆÔØ"3ˆÔÝ$ ^Ñ4Ô4ˆÔå*/©'¬'ˆŒØ ˆÔØ<@ˆÔà48ˆŒØ<@ˆÔØ8<ˆÔØ$(ˆÔà./ˆÔ$ð	Ý+0Ð1GÑ+HÔ+HˆDÔ(Ð(øÝ�:Ð&ð 	ð 	ð 	Øˆ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Ô#Øœ>Ð5ˆKˆK¸>ñ
ô 
ð 	
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_timeout/  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 )z±Do 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.shutdown3  sg  è è € ð !ˆÔàÔ!Ð-ØÔ"×)Ò)Ñ+Ô+Ð+ð Ô$ð 	ð $(¤:×#;Ò#;Ñ#=Ô#=ˆDÔ ð
Ý'¨Ñ0Ô0ð /ð /ð /ð /ð /ð /ð /ð /ØÔ.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /øøåÔ*­GÔ,@ÐAð ð ð Ø'+�Ô$åÔ$¨Ò/Ð/Ý!(Ô!5Ñ!7Ô!7Ð7˜ð 0àŸšÑ)Ô)ð 0ð øøðøøøð	Ý# GÑ,Ô,ð =ð =ð =ð =ð =ð =ð =ð =ØÔ(Ð4ØÔ)×1Ò1µ'Ô2HÑ2JÔ2JÑKÔKÐKàÔ%Ð1¸$Ô:L×:QÒ:QÑ:SÔ:SÐ1Ý!œ.¨Ô);Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =øøõ Ô&­Ô(<Ð=ð 	ð 	ð 	åÔ  GÒ+Ð+Ý$Ô1Ñ3Ô3Ð3�Tð ,à—O’OÑ%Ô%ð ,ð øøð	øøøð ÔÐ)ØÔ×%Ò%Ñ'Ô'Ð'à×ÒÑÔÐÐÐ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        }| j	        dk    rC| 
                    ¦   «         | j	        z   }|| _        |                     || j        ¦  «        | _        t          j        dk    rht#          |t$          ¦  «        r)t          j        |                      ¦   «         d¬¦  «        }n‹t          j        |                      ¦   «         |d¬¦  «        }nat          j        dk    r*t          j        |                      ¦   «         |d¬¦  «        }n'|                     |                      ¦   «         ¦  «        }|| _        d S )Nr   ©r›   é   T©Úeager_start©rr   r±   ©r›   é   )rx   Úconnection_mader   r    Ú	TransportrO   r"   rL   rž   rR   ÚtimerP   Úcall_atÚ_process_keepaliverQ   r£   r¤   Ú
isinstancer   Úcreate_taskÚstartÚTaskr[   )r€   rˆ   Úreal_transportrr   Ú
close_timer«   r‚   s         €r8   rµ   zRequestHandler.connection_madee  sp  ø€ Ý‰Œ×Ò 	Ñ*Ô*Ð*å�gÔ/°Ñ;Ô;ˆØÔð 	*Ý˜.Ñ)Ô)Ð)àŒ}Ð(Ð(Ð(ØŒ×%Ò% d¨NÑ;Ô;Ð;àŒzˆð Ô" QÒ&Ð&ØŸš™œ tÔ'>Ñ>ˆJØ.8ˆDÔ+Ø%)§\¢\°*¸dÔ>UÑ%VÔ%VˆDÔ"åÔ˜wÒ&Ð&Ý˜$¥Ñ.Ô.ð OÝÔ*¨4¯:ª:©<¬<ÀTÐJÑJÔJ��å”| D§J¢J¡L¤L°tÈÐNÑNÔN��ÝÔ Ò(Ð(Ý”< §
¢
¡¤°4ÀTÐJÑJÔJˆDˆDà×#Ò# D§J¢J¡L¤LÑ1Ô1ˆDØ!ˆÔÐÐ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_lost‚  s/  ø€ ØŒ=Ð ØˆFØŒ×%Ò% d¨CÑ0Ô0Ð0ð  $œ}ÔAÐà×ÒÑÔÐÝ‰Œ×Ò Ñ$Ô$Ð$ØˆŒØ $ˆÔØ $ˆÔØˆŒàÔ!Ð-ØÔ"×)Ò)Ñ+Ô+Ð+àÔ Ð,Øˆ{Ý*Ð+<Ñ=Ô=�ØÔ!×)Ò)¨#Ñ.Ô.Ð.àð 	( DÔ$6Ð$BØÔ×%Ò%Ñ'Ô'Ð'à!ˆÔàÔÐ+ØÔ ×)Ò)Ñ+Ô+Ð+Ø#'ˆDÔ Ð Ð ð ,Ð+r7   r�   Údata_received_cbc                 óÈ   — | j         �J ‚|| _         || _        | j        r&| j                              | j        ¦  «         d| _        | j        r|                      ¦   «          d S d S ©Nr7   )r\   r]   rW   Ú	feed_dataÚ_buffer_pausedÚ_resume_reading_if_drained)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                 óà  — | 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        €W| j        rP|rN| xj        |z  c_        | j        s3t#          | j        ¦  «        | j        k    r|                      ¦   «          d S d S d S |rP| j        �|                      ¦   «          | j                             |¦  «        \  }	}|	r|                      ¦   «          d S d S d S )Né�  ©r?   r@   rA   Fr7   r   )rb   ra   r\   Ú	_upgradedrÃ   rÉ   r   r>   rA   r    rJ   rT   ÚappendrZ   r¨   Ú
set_resultrÊ   ÚlenrU   Ú_pause_reading_for_bufferrW   rX   r]   Úclose)
r€   rÏ   ÚmessagesÚupgradedÚtailr@   ÚmsgÚpayloadÚwaiterÚeofs
             r8   Údata_receivedzRequestHandler.data_received¶  s€  € ØÔð 	 ¤ð 	ØˆFð ÔÑ'°´Ñ'Ø”<Ð+Ð+Ð+ðØ+/¬<×+AÒ+AÀ$Ñ+GÔ+GÑ(�˜( D DøÝ&ð ð ð å S¨c¸3¼;ÐGÑGÔGÍÐWð�ð !�Ø������øøøøðøøøð !)ð 6ð 6‘��WØÐ#Ô# qÑ(Ð#Ô#Ø”×%Ò% s¨G nÑ5Ô5Ð5Ð5à”\ˆFØð (˜FÐ.°v·{²{±}´}Ð.à×!Ò! $Ñ'Ô'Ð'ð
 Ô'ð1å˜œÑ'Ô'¨4Ô+CÒCÐCà×.Ò.Ñ0Ô0Ð0à%ˆDŒNØð *˜Dð *Ø%)�Ô"Ð"Ð"ð*ð *ð *ð *ð Ô!Ð)¨d¬nÐ)ÀÐ)ØÐÔ $Ñ&ÐÔàÔ'ð1å˜Ô*Ñ+Ô+¨tÔ/AÒAÐAà×.Ò.Ñ0Ô0Ð0Ð0Ð0ð	1ð 1àAÐAð
 ð 	ØÔ%Ð1Ø×&Ò&Ñ(Ô(Ð(ØÔ,×6Ò6°tÑ<Ô<‰IˆC�Øð Ø—
’
‘”���ð	ð 	ðð s   «A
 Á

BÁ#A<Á<Bc                 óð   — | j         rt          | j         ¦  «        | j        k    rd S | j        s4|                      d¦  «         t          | j        ¦  «        | j        k    rd S |                      ¦   «          d S rÈ   )rW   rÖ   rX   rÓ   rà   rT   rU   Ú_resume_reading_for_bufferr‰   s    r8   rË   z)RequestHandler._resume_reading_if_drainedì  s   € àÔð 	¥# dÔ&8Ñ"9Ô"9¸TÔ=OÒ"OÐ"OØˆFàŒ~ð 	ð ×Ò˜sÑ#Ô#Ð#Ý�4”>Ñ"Ô" dÔ&>Ò>Ð>Ø�Ø×'Ò'Ñ)Ô)Ð)Ð)Ð)r7   Ú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 )z�Close 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× Ò Ñ"Ô"Ð"Ø!ˆDŒNˆNˆNð &Ð%r7   ÚrequestÚresponser·   c                 ó¬   — | 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Ýð (ØÐ'Ð'Ð'ØÔ×"Ò" 7¨H°d´j·o²oÑ6GÔ6GÈ$Ñ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   € ØŒ:ð 	+ØˆDŒKÔ˜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   r¸   r¹   rZ   r¨   rª   )r€   rr   Únowr¿   s       r8   r¹   z!RequestHandler._process_keepalive&  sµ   € Ø!%ˆÔØÔð 	 D¤Oð 	ØˆFàŒzˆØ�iŠi‰kŒkˆØÔ4ˆ
Ø�ÒÐà%)§\¢\°*¸dÔ>UÑ%VÔ%VˆDÔ"Øˆ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 }~nÄd }~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_request7  s—  è è € ð %)ˆÔ!ð 	6ð-Ø(/�Ô%Ø,˜_¨WÑ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5�à(,�Ô%Ð%ø¨�Ô%Ð,Ð,Ð,Ð,Ð%õ �tÐ1°5Ñ9Ô9ð Ý”ð9õ 'ñ	ô ð ð !%× 4Ò 4°W¸dÀJÑ OÔ OÐOÐOÐOÐOÐOÐO‰KˆD�%�%øõ- ð 	Pð 	Pð 	PØˆDØ $× 4Ò 4°W¸dÀJÑ OÔ OÐOÐOÐOÐOÐOÐO‰KˆD�%�%�%�%�%�%øøøøÝÔ%ð 	ð 	ð 	ØÝÔ#ð 	Pð 	Pð 	PØ�NŠNÐ7À#ˆNÑFÔFÐFØ×$Ò$ W¨cÑ2Ô2ˆDØ $× 4Ò 4°W¸dÀJÑ OÔ OÐOÐOÐOÐOÐOÐO‰KˆD�%�%�%�%�%�%øøøøÝð 	Pð 	Pð 	PØ×$Ò$ W¨c°3Ñ7Ô7ˆDØ $× 4Ò 4°W¸dÀJÑ OÔ OÐOÐOÐOÐOÐOÐO‰KˆD�%�%�%�%�%�%øøøøð	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           	   ƒ   óD  K  — | j         }| j        }|€J ‚| j        }d}| j        €J ‚| j        €J ‚| j        �s¶| 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    rDt)          |t<          ¦  «        rt3          j        |d¬¦  «        }nUt3          j         ||d¬¦  «        }n=t8          j        dk    rt3          j         ||d¬¦  «        }n|                     |¦  «        }	 |ƒ d{V —†\  }}nK# tB          $ r> |  "                    d¦  «         Y d|
_#        | j$        €|�|  "                    d	¦  «         �n[w xY w~|r=|  "                    d
¦  «         	 d|
_#        | j$        €|�|  "                    d	¦  «         �ntK          |j&        ¦  «        | _'        | (                    ¦   «         �s€| j)        }| j        �s-|�r*|  "                    d|¦  «         |                     ¦   «         }||z   }	 | (                    ¦   «         sŠ||k     r„tU          ||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¦  «         |  /                    ¦   «          | 0                    tb          ¦  «         n˜# t2          j,        $ r+ |  "                    d¦  «         |  2                    ¦   «          ‚ tf          $ r5}|  4                    d|¬¦  «         |  2                    ¦   «          Y d}~n&d}~wtj          $ r |  2                    ¦   «          ‚ w xY wd|
_#        | j$        €|�|  "                    d	¦  «         n,# d|
_#        | j$        €|�|  "                    d	¦  «         w w w xY w| j'        rT| j6        sM| j        sF|                     ¦   «         |z   }|| _7        | j8        € | 9                    || j:        ¦  «        | _8        nn| j        �¯¶| 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°   r²   r³   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_consumedrÊ   rÖ   rV   rË   rf   r·   Úrequests_countr   rº   r>   Ú_make_error_handlerÚERRORr[   r    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.startb  sq  è è € ð ŒzˆØ”-ˆØÐ"Ð"Ð"Ø Ô3ÐØˆØÔ$Ð0Ð0Ð0ØÔ$Ð0Ð0Ð0àÔ#ñ A	Ø”>ð (ð(à#'×#5Ò#5Ñ#7Ô#7�D”LØœ,Ð&Ð&Ð&Ð&Ð&Ð&Ð&à#'�D”L�Lø 4�D”LÐ'Ð'Ð'Ð'à#œ~×5Ò5Ñ7Ô7ÑˆG�Wð Œ|Ð'Ø”×-Ò-Ñ/Ô/Ð/àÔ#ð2å˜œÑ'Ô'¨4Ô+FÒFÐFà×/Ò/Ñ1Ô1Ð1ð $(Ô#8ÐB�D—I’I‘K”K�K¸dˆEàÐ"Ô" aÑ'Ð"Ô"Ý! $¨Ñ-Ô-ˆFÝ˜'¥8Ñ,Ô,ð 8à"&×":Ò":¸7Ñ"CÔ"C�Ý��à"&Ô"7�ð
 ×+Ò+ØØØØØÔ"Ð@¥gÔ&:¸4Ñ&@Ô&@ñô ˆGðHNà×+Ò+¨G°U¸OÑLÔL�ÝÔ# wÒ.Ð.Ý! $­Ñ6Ô6ð OÝ&Ô2°4ÀTÐJÑJÔJ˜˜å&œ|¨D°tÈÐNÑNÔN˜˜ÝÔ%¨Ò0Ð0Ý"œ<¨°4ÀTÐJÑJÔJ�D�Dà×+Ò+¨DÑ1Ô1�DðØ(, * * * * * *‘K�D˜%˜%øÝ&ð ð ð Ø—N’NÐ#KÑLÔLÐLØðl !%�”Ø”>Ð)¨dÐ.>Ø—N’NÐ#LÑMÔMÐMùðuøøøð
 Øð Ø—N’NÐ#MÑNÔNÐNØð` !%�”Ø”>Ð)¨dÐ.>Ø—N’NÐ#LÑMÔMÐMùõ_ #' t¤Ñ"7Ô"7�”ð —~’~Ñ'Ô'ñ %Ø%)Ô%9�NØÔ,ñ &°ñ &ØŸšØEÀ~ñô ð ð #Ÿiši™kœk˜Ø # nÑ 4˜ð&Ø&-§n¢nÑ&6Ô&6ð 2¸3Àº;¸;Ý+7¸À¹Ñ+DÔ+Dð !<ð !<ð !<ð !<ð !<ð !<ð !<ð !<à*1¯/ª/Ñ*;Ô*;Ð$;Ð$;Ð$;Ð$;Ð$;Ð$;Ð$;ð!<ð !<ð !<ñ !<ô !<ð !<ð !<ð !<ð !<ð !<ð !<ð !<ð !<ð !<ð !<ð !<ð !<ð !<ð !<ð !<ð !<ð !<ð !<øøøð !<ð !<ð !<ð !<ð '+§i¢i¡k¤k ð	 '.§n¢nÑ&6Ô&6ð 2¸3Àº;¸;øøõ
 !(Ô 6½Ô8LÐMð &ð &ð &å #Ô 0°GÒ ;Ð ;Ý*1Ô*>Ñ*@Ô*@Ð%@ Qð !<à$%§L¢L¡N¤Nð !<ð !&øøð&øøøð #Ÿ>š>Ñ+Ô+ð %°DÔ4Eð %ØŸšÐ'=Ñ>Ô>Ð>ØŸ
š
™œ˜à×%Ò%Õ&;Ñ<Ô<Ð<Ð<øåÔ)ð ð ð Ø—’ÐGÑHÔHÐHØ× Ò Ñ"Ô"Ð"ØÝð #ð #ð #Ø×"Ò"Ð#8À3Ð"ÑGÔGÐGØ× Ò Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"øøøøÝ ð ð ð Ø× Ò Ñ"Ô"Ð"Øðøøøð !%�”Ø”>Ð)¨dÐ.>Ø—N’NÐ#LÑMÔMÐMøøð !%�”Ø”>Ð)¨dÐ.>Ø—N’NÐ#LÑMÔMÐMÐMð *Ð.>øøøð Œð 	 t¤{ð 	¸4Ô;Lð 	à!ŸYšY™[œ[Ð+<Ñ<�
Ø2<�Ô/ØÔ)Ð1Ø-1¯\ª\Ø" DÔ$;ñ.ô .�DÔ*øð ðC Ô#ñ A	ðH Ô ð 	'Ø!%ˆDÔØŒ~Ð)Ø”×$Ò$Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'à)Ð)s³   Á &A. Á.	A7ÆB(R  É I ÉR  ÉJÉ+R  ÊJÊR  ËA/R  Í2O& Í9N&ÎO& Î&
N0Î0O& Î3N0Î41O& Ï%R  Ï&AP>Ð;R  Ð=P>Ð>A!R  ÒU Ò AT5Ó"+TÔU Ô#T5Ô5U Õ)Vr  c              ƒ   óœ  K  — |                      ¦   «          | j        �r7| j        �s/| j        �€'| j        ��| j                             d¦  «         d| _        | j        r÷	 | 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¦  «         Œ2t          | j        ¦  «        | j        k    r|                      ¦   «          n| j        r|                      ¦   «          | j        �J ‚	 |j        }
n|# t*          $ ro |€|                      d¦  «         n|                      d|›�¦  «         t/          ¦   «         }t1          |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Ñ   rÒ   r7   r   z+Missing return statement on request handlerz3Web-handler should return a response instance, got )r?   ÚreasonÚtextÚheadersT) Ú_finishrÓ   rT   r\   rÃ   Úset_upgradedrW   rÉ   r   r>   rA   r    rJ   rÔ   rÖ   rU   r×   rÊ   rË   rZ   ÚprepareÚAttributeErrorrô   r$   r'   r?   r  r  r  Ú	write_eofr  rì   )r€   rè   r  r÷   rÙ   rÚ   rÛ   Ú	parse_excrÜ   rÝ   Úprepare_methr@   s               r8   r  zRequestHandler.finish_responseü  s  è è € ð 	�ŠÑÔÐð ŒNñ,	,à”Nñ,	,ð Ô$Ñ,Ø”Ñ(àŒL×%Ò% eÑ,Ô,Ð,Ø"ˆDŒNØÔ!ð $,ðØ/3¬|×/EÒ/EØÔ*ñ0ô 0Ñ,�H˜h¨¨øõ +ð ð ð õ %Ø'*Ø$-Ø(1Ô(9ðñ ô õ
 *ðð	 �Hð  %�HØ�D�D�D�D�D�Døøøøðøøøð" "*�”Ø%)�Ô"Ø$,ð :ð :‘L�C˜ØÐ'Ô'¨1Ñ,Ð'Ô'Ø”N×)Ò)¨3°¨.Ñ9Ô9Ð9Ð9Ý�t”~Ñ&Ô&¨$Ô*BÒBÐBà×2Ò2Ñ4Ô4Ð4Ð4ØÔ(ð 6à×3Ò3Ñ5Ô5Ð5ð ”|Ð+Ð+Ð+ð	(Øœ<ˆLˆLøÝð 	(ð 	(ð 	(Øˆ|Ø×"Ò"Ð#PÑQÔQÐQÐQà×"Ò"ØRÈ$ÐRÐRñô ð õ *Ñ+Ô+ˆCÝØ”z¨#¬*¸3¼8ÈSÌ[ðñ ô ˆDð  œ<ˆLˆLˆLð	(øøøð	Ø�,˜wÑ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ø—.’.Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"øÝð 	ð 	ð 	Ø�OŠO˜G T¨:Ñ6Ô6Ð6Ø˜�:ÐÐÐð	øøøð 	�Š˜  zÑ2Ô2Ð2Ø�Uˆ{Ðs=   Á #B Â
B;Â#B6Â6B;ÅE ÅA6GÇGÇ+H È%H0È/H0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    rÍt          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 )z›Handle 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_errorR  s*  € ð Ô !Ò#Ð#­
°3½Ñ(FÔ(FÐ#ð
 ŒK×ÒØ0°'´.È3ð ñ ô ð ð ð ×ÒØ0°'´.È3ð ñ ô ð ð
 Œ>Ô%¨Ò)Ð)Ý!ð)ñô ð ð
 ˆØ•ZÔ5Ò5Ð5Ý!Ô7Ô=ÐiÐiÅ
Ô@`Ô@gÐiÐiˆEÝÔ2Ô>ˆCØˆBØŒzð 0Ý�iÑ(Ô(ð 0ð 0Ý"Ô-Ñ/Ô/�Bð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð ˜gœo×1Ò1°(¸BÑ?Ô?Ð?Ð?Øð BÝ$ R™œ�BØA°rÐAÐAÐA�Cð1Ø#ð1ð 1à*/ð1ð 1ð ð1ð 1ð 1ð ð !��àð Ø�CØ &™.¨3Ñ.�å˜v¨GÀ"Ð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è   r5  r€   s    €€r8   Úhandlerz3RequestHandler._make_error_handler.<locals>.handler“  s/   øè è € Ø×$Ò$Ø˜œ¨(¬,¸Ô8Hñô ð r7   )r&   r(   )r€   r5  r8  s   `` r8   r  z"RequestHandler._make_error_handler�  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  Ú__classcell__)r‚   s   @r8   r)   r)   d   s¶  ø€ € € € € ð$ð $ðL#€IðV $(Ø"Ø&Ø7CØ*Ø!-Ô!8ØØ!ØØ"Ø $Ø.Ø $Ø()ð'X)ð X)ð X)àðX)ð Ô'ð	X)ð !ðX)ð ðX)ð ðX)ð Ð3Ô4ðX)ð ðX)ð ðX)ð ðX)ð ðX)ð ðX)ð ðX)ð  ð!X)ð" ð#X)ð$ ð%X)ð& !&ð'X)ð X)ð X)ð X)ð X)ð X)ðt
˜#ð 
ð 
ð 
ð 
ð ð
˜XÐ&6Ô7ð 
ð 
ð 
ñ Ôð
ð ð
à	ˆu�S˜#˜s CÐ'Ô(Ñ	(¨5°°c°¬?Ñ	:¸TÑ	Að
ð 
ð 
ñ Ôð
ð ð
à	ˆu�S˜#˜s CÐ'Ô(Ñ	(¨5°°c°¬?Ñ	:¸TÑ	Að
ð 
ð 
ñ Ôð
ð ð' 5ð 'ð 'ð 'ñ „Xð'ð0ð 0 e¨d¡lð 0¸dð 0ð 0ð 0ð 0ðd"¨Ô)>ð "À4ð "ð "ð "ð "ð "ð "ð:( =°4Ñ#7ð (¸Dð (ð (ð (ð (ð (ð (ðF 7;ð.ð .àð.ð # 2 t 8Ô,¨tÑ3ð.ð 
ð	.ð .ð .ð .ð"ð ð ð ð4 %ð 4¨Dð 4ð 4ð 4ð 4ðl*ð *ð *ð *ð*˜dð * tð *ð *ð *ð *ð"ð "ð "ð "ð"ð "ð "ð "ðPØ"ðPØ.<ðPØDIÈDÁLðPà	ðPð Pð Pð Pð+˜sð +¨#ð +°$ð +ð +ð +ð +ð+ 3ð +¨cð +°dð +ð +ð +ð +ðð ð ð ð")àð)ð ˜D‘Lð)ð " ; -°¸>Ô1JÐ"JÔKð	)ð
 
ˆ~˜tÐ#Ô	$ð)ð )ð )ð )ðVX'ð X'ð X'ð X'ðtTØ"ðTØ*8ðTØFKÈdÁlðTà	ˆ~˜tÐ#Ô	$ðTð Tð Tð Tðr Ø$(Ø"ð<ð <àð<ð ð<ð ˜TÑ!ð	<ð
 �t‘ð<ð 
ð<ð <ð <ð <ð|Ø ðà	�;�- ¨>Ô!:Ð:Ô	;ðð ð ð ð ð ð ð r7   )Sr    Úasyncio.streamsr£   r.  rþ   Úasyncio.base_eventsr   Úcollectionsr   Úcollections.abcr   r   r   Ú
contextlibr   Úhtmlr	   r1  Úhttpr
   Úloggingr   Útypingr   r   r   r   ÚattrÚyarlÚ	propcacher   Úabcr   r   Úbase_protocolr   Ú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à €€€Ø €€€Ø +Ð +Ð +Ð +Ð +Ð +à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 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€ð
 Ð àð #Ø€J€J€Jà"Ð"Ð"Ð"Ð"Ð"ð àØØØØðð ðô	€ð ˜K˜=¨)°NÔ*CÐCÔD€àÐØØØØØØØØ	Ø	Ø€D„HˆS�M„Mñ	ô 	€ð!ð !ð !ð !ð !˜)ñ !ô !ð !ð8ð 8ð 8ð 8ð 8˜ñ 8ô 8ð 8ð +Ð*Ñ,Ô,Ð ð €„�T $¨dÐ3Ñ3Ô3ðð ð ð ð ñ ô ñ 4Ô3ðð Ð" XÑ-¨|Ð;Ô<€ðtð tð tð tð t�\ñ tô tð tð tð tr7   