§
    Ÿ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m	Z	m
Z
 d dlmZmZ d dlmZ dZ ej        d¦  «        Z ej        e¦  «        Z G d„ d	¦  «        Z G d
„ de j        ¦  «        Zd„ Zd„ Zd„ Zd„ Zd„ Z G d„ d¦  «        ZdS )é    N)ÚTOKEN_RE)ÚConfigurationProblemÚInvalidHeaderÚInvalidHeaderName)ÚSERVER_SOFTWAREÚSERVER)Úutiliÿÿÿ?z[ \t\x21-\x7e\x80-\xff]*c                   ó(   — e Zd Zdd„Zd„ Zd„ Zd„ ZdS )ÚFileWrapperé    c                 ó^   — || _         || _        t          |d¦  «        r|j        | _        d S d S )NÚclose)ÚfilelikeÚblksizeÚhasattrr   )Úselfr   r   s      ú_/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/gunicorn/http/wsgi.pyÚ__init__zFileWrapper.__init__   s9   € Ø ˆŒØˆŒÝ�8˜WÑ%Ô%ð 	(Ø!œˆDŒJˆJˆJð	(ð 	(ó    c                 óV   — | j                              | j        ¦  «        }|r|S t          ‚©N)r   Úreadr   Ú
IndexError)r   ÚkeyÚdatas      r   Ú__getitem__zFileWrapper.__getitem__#   s,   € ØŒ}×!Ò! $¤,Ñ/Ô/ˆØð 	ØˆKÝÐr   c                 ó   — | S r   © ©r   s    r   Ú__iter__zFileWrapper.__iter__)   s   € Øˆr   c                 óV   — | j                              | j        ¦  «        }|r|S t          ‚r   )r   r   r   ÚStopIteration)r   r   s     r   Ú__next__zFileWrapper.__next__,   s,   € ØŒ}×!Ò! $¤,Ñ/Ô/ˆØð 	ØˆKÝÐr   N)r   )Ú__name__Ú
__module__Ú__qualname__r   r   r    r#   r   r   r   r   r      sU   € € € € € ð(ð (ð (ð (ðð ð ðð ð ðð ð ð ð r   r   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚWSGIErrorsWrapperc                 ó$  — t          j        d¦  «        }|j        }g | _        |j        dk    r.| j                             t          j        ¦  «         |dd …         }|D ]1}t          |d¦  «        r| j                             |j	        ¦  «         Œ2d S )Nzgunicorn.errorú-é   Ústream)
ÚloggingÚ	getLoggerÚhandlersÚstreamsÚerrorlogÚappendÚsysÚstderrr   r,   )r   Úcfgr1   r/   Úhs        r   r   zWSGIErrorsWrapper.__init__5   sš   € õ Ô$Ð%5Ñ6Ô6ˆØÔ$ˆØˆŒàŒ<˜3ÒÐØŒL×Ò¥¤
Ñ+Ô+Ð+Ø   ”|ˆHàð 	.ð 	.ˆAÝ�q˜(Ñ#Ô#ð .Ø”×#Ò# A¤HÑ-Ô-Ð-øð	.ð 	.r   c                 óà   — | j         D ]e}	 |                     |¦  «         n8# t          $ r+ |                     |                     d¦  «        ¦  «         Y nw xY w|                     ¦   «          Œfd S )NzUTF-8)r0   ÚwriteÚUnicodeErrorÚencodeÚflush)r   r   r,   s      r   r8   zWSGIErrorsWrapper.writeE   s…   € Ø”lð 	ð 	ˆFð3Ø—’˜TÑ"Ô"Ð"Ð"øÝð 3ð 3ð 3Ø—’˜TŸ[š[¨Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2ð3øøøà�LŠL‰NŒNˆNˆNð	ð 	s   ‹!¡2AÁAN)r$   r%   r&   r   r8   r   r   r   r(   r(   3   s2   € € € € € ð.ð .ð .ð ð ð ð ð r   r(   c           	      óX   — t          | ¦  «        dd| j        dk    dt          dt          dœS )N©r+   r   Fr+   T)zwsgi.errorszwsgi.versionzwsgi.multithreadzwsgi.multiprocesszwsgi.run_oncezwsgi.file_wrapperzwsgi.input_terminatedr   )r(   Úworkersr   r   )r5   s    r   Úbase_environr?   N   s7   € å(¨Ñ-Ô-ØØ!Ø!œk¨AšoØÝ(Ø!%Ý*ð	ð 	ð 	r   c                 óÎ   — t          |¦  «        }|                     | j        || j        | j        | j        dd                     d„ | j        D ¦   «         ¦  «        z  dœ¦  «         |S )NzHTTP/%sú.c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   )Ústr)Ú.0Úvs     r   ú
<listcomp>z#default_environ.<locals>.<listcomp>c   s   € Ð0MÐ0MÐ0M¸Aµ°Q±´Ð0MÐ0MÐ0Mr   )z
wsgi.inputzgunicorn.socketÚREQUEST_METHODÚQUERY_STRINGÚRAW_URIÚSERVER_PROTOCOL)r?   ÚupdateÚbodyÚmethodÚqueryÚuriÚjoinÚversion)ÚreqÚsockr5   Úenvs       r   Údefault_environrU   [   sr   € Ý
�sÑ
Ô
€CØ‡J‚JØ”hØØœ*Øœ	Ø”7Ø$ s§x¢xÐ0MÐ0MÀÄÐ0MÑ0MÔ0MÑ'NÔ'NÑNðð ñ ô ð ð €Jr   c                 ó˜   — | j         }|si S |d         |d         t          |d         ¦  «        |d         t          |d         ¦  «        dœS )NÚproxy_protocolÚclient_addrÚclient_portÚ
proxy_addrÚ
proxy_port)ÚPROXY_PROTOCOLÚREMOTE_ADDRÚREMOTE_PORTÚ
PROXY_ADDRÚ
PROXY_PORT)Úproxy_protocol_inforC   )rR   Úinfos     r   Úproxy_environrc   h   sa   € ØÔ"€Dàð Øˆ	ð Ð/Ô0Ø˜MÔ*Ý˜4 Ô.Ñ/Ô/Ø˜<Ô(Ý˜$˜|Ô,Ñ-Ô-ðð ð r   c                 ó   ‡ ‡‡— ˆ ˆˆfd„}|S )a   Create a wsgi.early_hints callback for sending 103 Early Hints.

    This allows WSGI applications to send 103 Early Hints responses
    before the final response, enabling browsers to preload resources.

    Args:
        req: The request object
        sock: The socket to write to
        resp: The Response object to check if headers have been sent

    Returns:
        A callback function that accepts a list of (name, value) header tuples
        and sends a 103 Early Hints response.

    Note:
        - Early hints are only sent for HTTP/1.1 or later clients
        - HTTP/1.0 clients will silently ignore the callback
        - Multiple calls are allowed (sending multiple 103 responses)
        - Calls after response has started are silently ignored
    c                 ó.  •— ‰j         rdS ‰j        dk     rdS d}| D ]Þ\  }}t          |t          ¦  «        r|                     d¦  «        }t          |t          ¦  «        r|                     d¦  «        }t          j        |¦  «        st          d|z  ¦  «        ‚t                               |¦  «        st          d|z  ¦  «        ‚| 
                    d¦  «        }||› d|› d�                     d¦  «        z  }Œß|d	z  }t          j        ‰|¦  «         dS )
a}  Send 103 Early Hints response.

        Args:
            headers: List of (name, value) header tuples, typically Link headers
                     Example: [('Link', '</style.css>; rel=preload; as=style')]

        Raises:
            InvalidHeaderName: If a header name is not a valid HTTP token.
            InvalidHeader: If a header value contains invalid characters.
        N)r+   r+   s   HTTP/1.1 103 Early Hints
úlatin-1ú%rú 	ú: ú
ó   
)Úheaders_sentrQ   Ú
isinstanceÚbytesÚdecoder   Ú	fullmatchr   ÚHEADER_VALUE_REr   Ústripr:   r	   r8   )ÚheadersÚresponseÚnameÚvaluerR   ÚresprS   s       €€€r   Úsend_early_hintsz4_make_early_hints_callback.<locals>.send_early_hintsŒ   s:  ø€ ð Ôð 	ØˆFð Œ;˜ÒÐØˆFð 3ˆØ"ð 	Að 	A‰KˆD�%Ý˜$¥Ñ&Ô&ð .Ø—{’{ 9Ñ-Ô-�Ý˜%¥Ñ'Ô'ð 0ØŸš YÑ/Ô/�õ
 Ô% dÑ+Ô+ð 5Ý'¨¨t©Ñ4Ô4Ð4Ý"×,Ò,¨UÑ3Ô3ð 1õ
 $ D¨4¡KÑ0Ô0Ð0à—K’K Ñ&Ô&ˆEØ˜4Ð.Ð. 5Ð.Ð.Ð.×5Ò5°iÑ@Ô@Ñ@ˆHˆHØ�GÑˆåŒ
�4˜Ñ"Ô"Ð"Ð"Ð"r   r   )rR   rS   rw   rx   s   ``` r   Ú_make_early_hints_callbackry   w   s1   øøø€ ð*+#ð +#ð +#ð +#ð +#ð +#ð +#ðZ Ðr   c                 óî  — t          | ||¦  «        }t          | ||¦  «        }d }t          j                             dd¦  «        }| j        r|                     d¦  «         | j        D ]^\  }	}
|	dk    r|
}n!|	dk    r|
}n|	dk    r|
|d<   Œ#|	dk    r|
|d<   Œ/d	|	                     d
d¦  «        z   }||v r||         ›d|
›�}
|
||<   Œ_| j	        |d<   t          |t          ¦  «        r||d<   nPt          |t          ¦  «        r|                     ¦   «         |d<   n#|d         |d<   t          |d         ¦  «        |d<   t          |t          ¦  «        r¿|                     d¦  «        }t          |¦  «        dk    r—|r€|                     d¦  «        }t          |¦  «        dk    rW| j	        dk    r|                     d¦  «         nL| j	        dk    r|                     d¦  «         n+|                     d¦  «         n|                     d¦  «         |d         |d<   t          |d         ¦  «        |d<   | j        }|rA|                     |¦  «        st'          d|›d|›�¦  «        ‚|t          |¦  «        d …         }t)          j        |¦  «        |d<   ||d<   |                     t/          | ¦  «        ¦  «         t1          | ||¦  «        |d<   t3          | d¦  «        r| j        |d<   | j        |d<   ||fS ) NÚSCRIPT_NAMEÚ s   HTTP/1.1 100 Continue

ÚHOSTzCONTENT-TYPEÚCONTENT_TYPEzCONTENT-LENGTHÚCONTENT_LENGTHÚHTTP_r*   Ú_ú,zwsgi.url_schemer]   r   r+   r^   ú:ÚhttpéP   Úhttpsi»  ÚSERVER_NAMEÚSERVER_PORTzRequest path z! does not start with SCRIPT_NAME Ú	PATH_INFOzwsgi.early_hintsÚpriority_weightzgunicorn.http2.priority_weightz"gunicorn.http2.priority_depends_on)ÚResponserU   ÚosÚenvironÚgetÚ_expected_100_continueÚsendrs   ÚreplaceÚschemerm   rC   rn   ro   ÚsplitÚlenr2   ÚpathÚ
startswithr   r	   Úunquote_to_wsgi_strrK   rc   ry   r   rŠ   Úpriority_depends_on)rR   rS   ÚclientÚserverr5   rw   r�   ÚhostÚscript_nameÚhdr_nameÚ	hdr_valuer   Ú	path_infos                r   Úcreater    ¼   sl  € Ý�C˜˜sÑ#Ô#€Dõ ˜c 4¨Ñ-Ô-€Gð €DÝ”*—.’. °Ñ3Ô3€Kà
Ô!ð 4Ø�	Š	Ð2Ñ3Ô3Ð3ð
  #œ{ð !ð !Ñˆ�)Ø�vÒÐØˆDˆDØ˜Ò&Ð&Ø#ˆKˆKØ˜Ò'Ð'Ø&/ˆG�NÑ#ØØÐ)Ò)Ð)Ø(1ˆGÐ$Ñ%Øð ˜×(Ò(¨¨cÑ2Ô2Ñ2ˆØ�'ˆ>ˆ>Ø#*¨3¤< < <°°Ð;ˆIØ ˆ�‰ˆð "%¤€GÐÑõ �&�#ÑÔð 0Ø!'ˆ�ÑÐÝ	�F�EÑ	"Ô	"ð 0Ø!'§¢¡¤ˆ�ÑÐà!'¨¤ˆ�ÑÝ!$ V¨A¤Y¡¤ˆ�Ñõ �&�#ÑÔð "Ø—’˜cÑ"Ô"ˆÝˆv‰;Œ;˜!ÒÐàð "ØŸš C™œ�Ý�v‘;”; !Ò#Ð#Ø”z VÒ+Ð+ØŸš bÑ)Ô)Ð)Ð)Øœ wÒ.Ð.ØŸš cÑ*Ô*Ð*Ð*àŸš bÑ)Ô)Ð)øð —’˜bÑ!Ô!Ð!Ø# AœY€GˆMÑÝ  ¨¤™^œ^€GˆMÑð ”€IØð 1Ø×#Ò# KÑ0Ô0ð 	*Ý&Ð&à��˜K˜Kð)ñ*ô *ð *ð �c +Ñ.Ô.Ð/Ð/Ô0ˆ	ÝÔ3°IÑ>Ô>€GˆKÑØ(€GˆMÑð ‡N‚N•= Ñ%Ô%Ñ&Ô&Ð&õ #=¸SÀ$ÈÑ"MÔ"M€GÐÑõ ˆsÐ%Ñ&Ô&ð PØ47Ô4GˆÐ0Ñ1Ø8;Ô8OˆÐ4Ñ5à�ˆ=Ðr   c                   ó^   — e Zd Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ ZdS )r‹   c                 ó¸   — || _         || _        t          | _        d | _        d| _        d| _        g | _        d| _        d | _	        d| _
        d| _        || _        d S )NFr   )rR   rS   r   rQ   ÚstatusÚchunkedÚ
must_closers   rl   Úresponse_lengthÚsentÚupgrader5   )r   rR   rS   r5   s       r   r   zResponse.__init__"  s\   € ØˆŒØˆŒ	ÝˆŒØˆŒØˆŒØˆŒØˆŒØ!ˆÔØ#ˆÔØˆŒ	ØˆŒØˆŒˆˆr   c                 ó   — d| _         d S )NT)r¥   r   s    r   Úforce_closezResponse.force_close0  s   € ØˆŒˆˆr   c                 óº   — | j         s| j                             ¦   «         rdS | j        €| j        rdS | j        j        dk    rdS | j        dk     s	| j        dv rdS dS )NTFÚHEADéÈ   ©éÌ   i0  )r¥   rR   Úshould_closer¦   r¤   rM   Ústatus_coder   s    r   r°   zResponse.should_close3  st   € ØŒ?ð 	˜dœh×3Ò3Ñ5Ô5ð 	Ø�4ØÔÐ+¨t¬|Ð+Ø�5ØŒ8Œ?˜fÒ$Ð$Ø�5ØÔ˜cÒ!Ð! TÔ%5¸Ð%CÐ%CØ�5Øˆtr   Nc                 óÀ  — |rA	 | j         r/| j        r(t          j        |d         |d         |d         ¦  «         d }n# d }w xY w| j         �t	          d¦  «        ‚|| _         	 t          | j                              ¦   «         d         ¦  «        | _        n# t          $ r
 d | _        Y nw xY w|  	                    |¦  «         |  
                    ¦   «         | _        | j        S )Nr   r+   é   zResponse headers already set!)r£   rl   r	   ÚreraiseÚAssertionErrorÚintr“   r±   Ú
ValueErrorÚprocess_headersÚ
is_chunkedr¤   r8   )r   r£   rs   Úexc_infos       r   Ústart_responsezResponse.start_response>  sû   € Øð 	Bð Ø”;ð H 4Ô#4ð HÝ”L ¨!¤¨h°q¬k¸8ÀA¼;ÑGÔGÐGà��ø˜4�����ØŒ[Ð$Ý Ð!@ÑAÔAÐAàˆŒð
	$Ý" 4¤;×#4Ò#4Ñ#6Ô#6°qÔ#9Ñ:Ô:ˆDÔÐøÝð 	$ð 	$ð 	$Ø#ˆDÔÐÐð	$øøøð 	×Ò˜WÑ%Ô%Ð%Ø—’Ñ(Ô(ˆŒØŒzÐs   „6= ½AÁ"1B ÂB(Â'B(c                 ó  — |D �]|\  }}t          |t          ¦  «        st          d|z  ¦  «        ‚t          j        |¦  «        st          d|z  ¦  «        ‚t          |t          ¦  «        st          d|z  ¦  «        ‚t                               |¦  «        st          d|z  ¦  «        ‚|                     d¦  «        }| 	                    ¦   «         }|dk    rt          |¦  «        | _        nvt          j        |¦  «        rb|dk    r | 	                    ¦   «         dk    rd| _        n:|dk    r4| 	                    ¦   «         dk    r| j                             ||f¦  «         �Œ`| j                             ||f¦  «         �Œ~d S )	Nz%r is not a stringrg   rh   zcontent-lengthÚ
connectionr¨   TÚ	websocket)rm   rC   Ú	TypeErrorr   rp   r   rq   r   rr   Úlowerr¶   r¦   r	   Ú
is_hoppishr¨   rs   r2   )r   rs   ru   rv   Úlnames        r   r¸   zResponse.process_headersV  s‡  € Ø"ð 	/ñ 	/‰KˆD�%Ý˜d¥CÑ(Ô(ð =ÝÐ 4°tÑ ;Ñ<Ô<Ð<åÔ% dÑ+Ô+ð 5Ý'¨¨t©Ñ4Ô4Ð4å˜e¥SÑ)Ô)ð >ÝÐ 4°uÑ <Ñ=Ô=Ð=å"×,Ò,¨UÑ3Ô3ð 2Ý# D¨5¡LÑ1Ô1Ð1ð —K’K Ñ&Ô&ˆEØ—J’J‘L”LˆEØÐ(Ò(Ð(Ý'*¨5¡z¤z�Ô$Ð$Ý” Ñ&Ô&ð 
Ø˜LÒ(Ð(à—{’{‘}”}¨	Ò1Ð1Ø'+˜œøØ˜iÒ'Ð'Ø—{’{‘}”}¨Ò3Ð3Øœ×+Ò+¨T°5¨MÑ:Ô:Ð:ñ ØŒL×Ò  u Ñ.Ô.Ð.Ñ.ð;	/ð 	/r   c                 óv   — | j         �dS | j        j        dk    rdS | j        j        dk    rdS | j        dv rdS dS )NFr=   r¬   r®   T)r¦   rR   rQ   rM   r±   r   s    r   r¹   zResponse.is_chunkedv  sU   € ð ÔÐ+Ø�5ØŒXÔ Ò'Ð'Ø�5ØŒXŒ_ Ò&Ð&à�5ØÔ Ð+Ð+ð �5Øˆtr   c                 ó,  — | j         rd}n|                      ¦   «         rd}nd}d| j        j        d         ›d| j        j        d         ›d| j        ›d	�d
| j        z  dt          j        ¦   «         z  d|z  g}| j        r|                     d¦  «         |S )Nr¨   r   z
keep-alivezHTTP/r   rA   r+   ú rj   zServer: %s
z
Date: %s
zConnection: %s
zTransfer-Encoding: chunked
)	r¨   r°   rR   rQ   r£   r	   Ú	http_dater¤   r2   )r   r½   rs   s      r   Údefault_headerszResponse.default_headers‡  s·   € àŒ<ð 	&Ø"ˆJˆJØ×ÒÑ Ô ð 	&Ø ˆJˆJà%ˆJøð $(¤8Ô#3°AÔ#6Ð#6Ð#6Ø#'¤8Ô#3°AÔ#6Ð#6Ð#6¸¼¸¸ðEà˜tœ|Ñ+Ø�Tœ^Ñ-Ô-Ñ-Ø  :Ñ-ð
ˆð Œ<ð 	=Ø�NŠNÐ;Ñ<Ô<Ð<Øˆr   c                 ó   — | j         rd S |                      ¦   «         }|                     d„ | j        D ¦   «         ¦  «         dd                     |¦  «        z  }t          j        | j        t          j        |d¦  «        ¦  «         d| _         d S )Nc                 ó$   — g | ]\  }}|›d |›d�‘ŒS )ri   rj   r   )rD   ÚkrE   s      r   rF   z)Response.send_headers.<locals>.<listcomp>Ÿ  s)   € ÐFÐFÐF±°°A q q q¨!¨!¨!Ð,ÐFÐFÐFr   z%s
r|   rf   T)	rl   rÇ   Úextendrs   rP   r	   r8   rS   Úto_bytestring)r   ÚtosendÚ
header_strs      r   Úsend_headerszResponse.send_headers›  s‰   € ØÔð 	ØˆFØ×%Ò%Ñ'Ô'ˆØ�ŠÐFÐF¸¼ÐFÑFÔFÑGÔGÐGà §¢¨¡¤Ñ/ˆ
ÝŒ
�4”9�dÔ0°¸YÑGÔGÑHÔHÐHØ ˆÔÐÐr   c                 ó¨  — |                       ¦   «          t          |t          ¦  «        st          d|z  ¦  «        ‚t	          |¦  «        }|}| j        �?| j        | j        k    rd S t          | j        | j        z
  |¦  «        }||k     r
|d |…         }| j        r|dk    rd S | xj        |z  c_        t          j
        | j        || j        ¦  «         d S )Nz%r is not a byter   )rÏ   rm   rn   r¿   r”   r¦   r§   Úminr¤   r	   r8   rS   )r   ÚargÚarglenrÍ   s       r   r8   zResponse.write¥  sÞ   € Ø×ÒÑÔÐÝ˜#�uÑ%Ô%ð 	6ÝÐ.°Ñ4Ñ5Ô5Ð5Ý�S‘”ˆØˆØÔÐ+ØŒy˜DÔ0Ò0Ð0à�å˜Ô-°´	Ñ9¸6ÑBÔBˆFØ˜ŠˆØ˜'˜6˜'”l�ð Œ<ð 	˜F ašK˜KØˆFàˆ	Œ	�VÑˆ	Œ	ÝŒ
�4”9˜c 4¤<Ñ0Ô0Ð0Ð0Ð0r   c                 ó   — | j         j        duS )NF)r5   Úsendfiler   s    r   Úcan_sendfilezResponse.can_sendfile¼  s   € ØŒxÔ ¨Ð-Ð-r   c                 ó*  — | j         j        s|                      ¦   «         sdS t          j        |j        ¦  «        sdS |j                             ¦   «         }	 t          j        |dt          j	        ¦  «        }| j
        €t          j        |¦  «        j        }||z
  }n| j
        }n# t          t          j        f$ r Y dS w xY w|                      ¦   «          |                      ¦   «         r2d|z  }| j                             |                     d¦  «        ¦  «         |dk    r"| j                             |j        ||¬¦  «         |                      ¦   «         r| j                             d¦  «         t          j        ||t          j        ¦  «         dS )NFr   z%X
zutf-8)ÚoffsetÚcountrk   T)r5   Úis_sslrÖ   r	   Ú
has_filenor   ÚfilenorŒ   ÚlseekÚSEEK_CURr¦   ÚfstatÚst_sizeÚOSErrorÚioÚUnsupportedOperationrÏ   r¹   rS   Úsendallr:   rÕ   ÚSEEK_SET)r   ÚrespiterrÜ   rØ   ÚfilesizeÚnbytesÚ
chunk_sizes          r   rÕ   zResponse.sendfile¿  sˆ  € ØŒ8Œ?ð 	 $×"3Ò"3Ñ"5Ô"5ð 	Ø�5åŒ˜xÔ0Ñ1Ô1ð 	Ø�5àÔ"×)Ò)Ñ+Ô+ˆð	Ý”X˜f a­¬Ñ5Ô5ˆFØÔ#Ð+Ýœ8 FÑ+Ô+Ô3�Ø! FÑ*��àÔ-�øøÝ�Ô0Ð1ð 	ð 	ð 	Ø�5�5ð	øøøð 	×ÒÑÔÐà�?Š?ÑÔð 	:Ø! FÑ*ˆJØŒI×Ò˜j×/Ò/°Ñ8Ô8Ñ9Ô9Ð9Ø�AŠ:ˆ:ØŒI×Ò˜xÔ0¸ÀvÐÑNÔNÐNà�?Š?ÑÔð 	'ØŒI×Ò˜gÑ&Ô&Ð&å
Œ�˜¥¤Ñ-Ô-Ð-àˆts   ÁAB& Â&C Â?C c                 óh   — |                       |¦  «        s|D ]}|                      |¦  «         Œd S d S r   )rÕ   r8   )r   ræ   Úitems      r   Ú
write_filezResponse.write_fileà  sN   € Ø�}Š}˜XÑ&Ô&ð 	!Ø ð !ð !�Ø—
’
˜4Ñ Ô Ð Ð ð	!ð 	!ð!ð !r   c                 ó‚   — | j         s|                      ¦   «          | j        rt          j        | j        d¦  «         d S d S )Nr   )rl   rÏ   r¤   r	   Úwrite_chunkrS   r   s    r   r   zResponse.closeå  sN   € ØÔ ð 	 Ø×ÒÑÔÐØŒ<ð 	-ÝÔ˜TœY¨Ñ,Ô,Ð,Ð,Ð,ð	-ð 	-r   r   )r$   r%   r&   r   rª   r°   r»   r¸   r¹   rÇ   rÏ   r8   rÖ   rÕ   rì   r   r   r   r   r‹   r‹      sÞ   € € € € € ðð ð ðð ð ð	ð 	ð 	ðð ð ð ð0/ð /ð /ð@ð ð ð"ð ð ð(!ð !ð !ð1ð 1ð 1ð..ð .ð .ðð ð ðB!ð !ð !ð
-ð -ð -ð -ð -r   r‹   )râ   r-   rŒ   Úrer3   Úgunicorn.http.messager   Úgunicorn.http.errorsr   r   r   Úgunicornr   r   r	   ÚBLKSIZEÚcompilerq   r.   r$   Úlogr   Ú	RawIOBaser(   r?   rU   rc   ry   r    r‹   r   r   r   ú<module>r÷      sž  ðð
 
€	€	€	Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
à *Ð *Ð *Ð *Ð *Ð *Ø WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð ð €ð �"”*Ð8Ñ9Ô9€à€gÔ˜Ñ!Ô!€ðð ð ð ð ñ ô ð ð0ð ð ð ð ˜œñ ô ð ð6
ð 
ð 
ð
ð 
ð 
ðð ð ðBð Bð BðJað að aðHI-ð I-ð I-ð I-ð I-ñ I-ô I-ð I-ð I-ð I-r   