£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
B
    YI~dzT                 @   s   d dl mZmZmZ d dlmZ ddlZddlZddlZddddd	d
gZ	dddddddgZ
dddddddddddddgZdd Zd d!d"d#d$d%d&d'd(d)h
jZd*d+ Zd,d
 ZG d-d dZG d.d deZG d/d deZG d0d deZG d1d	 d	eZdS )2   )FileWrapperguess_schemeis_hop_by_hop)Headers    NBaseHandlerSimpleHandlerBaseCGIHandler
CGIHandlerIISCGIHandlerread_environZMonZTueZWedZThuZFriZSatZSunZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecc       
   	   C   s:   t | \	}}}}}}}}}	dt| |t| ||||f S )Nz#%s, %02d %3s %4d %02d:%02d:%02d GMT)timeZgmtime_weekdayname
_monthname)
Z	timestampZyearZmonthZdayZhhZmmssZwdyz r   5/opt/alt/python37/lib64/python3.7/wsgiref/handlers.pyformat_date_time   s    r   SCRIPT_NAME	PATH_INFOZQUERY_STRINGZREQUEST_METHODZ	AUTH_TYPEZCONTENT_TYPEZCONTENT_LENGTHZHTTPSZREMOTE_USERZREMOTE_IDENTc             C   s6   t | p4| dp4| dp4| do4t| dd  S )NZHTTP_ZSSL_Z	REDIRECT_	   )_is_request
startswith_needs_transcode)kr   r   r   r      s    r   c              C   s   t  } d}ydd| W n tk
r4   d}Y nX i }xtj D ]\}}t|rt jdkrtj	dd
 }|dr|dd}q|d	rq|d
rd|kr|dd}q|| dd}n|| |d}|||< qFW |S )Nsurrogateescape zutf-8replacewin32SERVER_SOFTWAREzmicrosoft-iis/z
iso-8859-1zapache/zsimplehttp/zpython/3)sysgetfilesystemencodingencodeLookupErrorosenvironitemsr   platformgetlowerr   decode)encZescr'   r   vZsoftwarer   r   r   r   "   s,    

	


c               @   s  e Zd ZdZdZdZdZdZdZdZ	e
 ZeZeZdZdZdgZdZd ZZdZdZd	Zd
d Zdd Zdd Zdd Zdd Zdd Zd:ddZdd Z dd Z!dd Z"dd Z#d d! Z$d"d# Z%d$d% Z&d&d' Z'd(d) Z(d*d+ Z)d,d- Z*d.d/ Z+d0d1 Z,d2d3 Z-d4d5 Z.d6d7 Z/d8d9 Z0dS );r   )r   r   TFz1.0Nz500 Internal Server Error)zContent-Typez
text/plains;   A server error occurred.  Please contact the administrator.r   c          
   C   sr   y$|    || j| j| _|   W nH tttfk
r>   d S    y|   W n   | 	   Y nX Y nX d S )N)
setup_environr'   start_responseresultfinish_responseConnectionAbortedErrorBrokenPipeErrorConnectionResetErrorhandle_errorclose)selfZapplicationr   r   r   run   s    zBaseHandler.runc             C   s   | j   }| _|   |  |d< |  |d< | j|d< | j|d< |  |d< | j	|d< | j
|d< | jd k	rx| j|d< | jr| jr|d	| j d S )
Nz
wsgi.inputzwsgi.errorszwsgi.versionzwsgi.run_oncezwsgi.url_schemezwsgi.multithreadzwsgi.multiprocesszwsgi.file_wrapperr!   )
os_environcopyr'   add_cgi_vars	get_stdin
get_stderrwsgi_versionwsgi_run_once
get_schemewsgi_multithreadwsgi_multiprocesswsgi_file_wrapperorigin_serverserver_software
setdefault)r8   envr   r   r   r/      s    





zBaseHandler.setup_environc             C   sh   y6|   r|  s4x| jD ]}| | qW |   W n$   t| jdrT| j   Y n
X |   d S )Nr7   )result_is_filesendfiler1   writefinish_contenthasattrr7   )r8   datar   r   r   r2      s    
zBaseHandler.finish_responsec             C   s
   t | jS )N)r   r'   )r8   r   r   r   rA      s    zBaseHandler.get_schemec          
   C   sJ   yt | j}W n tttfk
r(   Y nX |dkrFt| j| jd< d S d S )Nr   zContent-Length)lenr1   	TypeErrorAttributeErrorNotImplementedErrorstr
bytes_sentheaders)r8   Zblocksr   r   r   set_content_length   s    zBaseHandler.set_content_lengthc             C   s   d| j kr|   d S )NzContent-Length)rU   rV   )r8   r   r   r   cleanup_headers   s    
zBaseHandler.cleanup_headersc             C   sh   |r2z$| j r&|d |d |d W d d }X n| jd k	rDtd|| _| || _| |d}| jS )Nr   r      zHeaders already set!ZStatus)headers_sentwith_tracebackrU   AssertionErrorstatusheaders_class_convert_string_typerK   )r8   r\   rU   exc_infor   r   r   r0      s    
zBaseHandler.start_responsec             C   s(   t |tkr|S td|t|d S )Nz!{0} must be of type str (got {1}))typerS   r[   formatrepr)r8   valuetitler   r   r   r^      s    z BaseHandler._convert_string_typec             C   s   | j rx|  r| d| j| jf d d| jkrP| dtt  d | j	rd| jkr| d| j	 d n| d| j d d S )NzHTTP/%s %s
z
iso-8859-1ZDatez
Date: %s
ZServerzServer: %s
zStatus: %s
)
rE   client_is_modern_writehttp_versionr\   r$   rU   r   r   rF   )r8   r   r   r   send_preamble  s    
zBaseHandler.send_preamblec             C   sR   | j stdn,| js*t|| _|   n|  jt|7  _| | |   d S )Nzwrite() before start_response())r\   r[   rY   rO   rT   send_headersrf   _flush)r8   rN   r   r   r   rK     s    



zBaseHandler.writec             C   s   dS )NFr   )r8   r   r   r   rJ   (  s    zBaseHandler.sendfilec             C   s"   | j s| jdd |   n d S )NzContent-Length0)rY   rU   rG   ri   )r8   r   r   r   rL   =  s    
zBaseHandler.finish_contentc          	   C   sF   zt | jdr| j  W d d  | _ | _ | _| _d| _d| _X d S )Nr7   r   F)rM   r1   r7   rU   r\   r'   rT   rY   )r8   r   r   r   r7   G  s     zBaseHandler.closec             C   s8   |    d| _| jr|  r4|   | t| j d S )NT)rW   rY   rE   re   rh   rf   bytesrU   )r8   r   r   r   ri   T  s
    zBaseHandler.send_headersc             C   s   | j }|d k	ot| j|S )N)rD   
isinstancer1   )r8   wrapperr   r   r   rI   ]  s    zBaseHandler.result_is_filec             C   s   | j d  dkS )NZSERVER_PROTOCOLzHTTP/0.9)r'   upper)r8   r   r   r   re   c  s    zBaseHandler.client_is_modernc             C   sJ   z>ddl m} |  }||d |d |d | j| |  W d d }X d S )Nr   )print_exceptionr   rX   )	tracebackrp   r>   traceback_limitflush)r8   r_   rp   stderrr   r   r   log_exceptionh  s    
zBaseHandler.log_exceptionc             C   s2   |  t  | js.| | j| j| _|   d S )N)	ru   r"   r_   rY   error_outputr'   r0   r1   r2   )r8   r   r   r   r6   x  s    zBaseHandler.handle_errorc             C   s$   || j | jd d  t  | jgS )N)error_statuserror_headersr"   r_   
error_body)r8   r'   r0   r   r   r   rv     s    zBaseHandler.error_outputc             C   s   t d S )N)rR   )r8   rN   r   r   r   rf     s    zBaseHandler._writec             C   s   t d S )N)rR   )r8   r   r   r   rj     s    zBaseHandler._flushc             C   s   t d S )N)rR   )r8   r   r   r   r=     s    zBaseHandler.get_stdinc             C   s   t d S )N)rR   )r8   r   r   r   r>     s    zBaseHandler.get_stderrc             C   s   t d S )N)rR   )r8   r   r   r   r<     s    zBaseHandler.add_cgi_vars)N)1__name__
__module____qualname__r?   rB   rC   r@   rE   rg   rF   r   r:   r   rD   r   r]   rr   rw   rx   ry   r\   r1   rY   rU   rT   r9   r/   r2   rA   rV   rW   r0   r^   rh   rK   rJ   rL   r7   ri   rI   re   ru   r6   rv   rf   rj   r=   r>   r<   r   r   r   r   r   ^   sT   

		c               @   s>   e Zd ZdddZdd Zdd Zd	d
 Zdd Zdd ZdS )r   TFc             C   s(   || _ || _|| _|| _|| _|| _d S )N)stdinstdoutrt   base_envrB   rC   )r8   r}   r~   rt   r'   multithreadmultiprocessr   r   r   __init__  s    zSimpleHandler.__init__c             C   s   | j S )N)r}   )r8   r   r   r   r=     s    zSimpleHandler.get_stdinc             C   s   | j S )N)rt   )r8   r   r   r   r>     s    zSimpleHandler.get_stderrc             C   s   | j | j d S )N)r'   updater   )r8   r   r   r   r<     s    zSimpleHandler.add_cgi_varsc             C   sb   | j |}|d ks |t|kr$d S ddlm} |dt x"||d  }|sNP | j |}q<W d S )Nr   )warnz9SimpleHandler.stdout.write() should not do partial writes)r~   rK   rO   warningsr   DeprecationWarning)r8   rN   r1   r   r   r   r   rf     s    zSimpleHandler._writec             C   s   | j   | j j| _d S )N)r~   rs   rj   )r8   r   r   r   rj     s    
zSimpleHandler._flushN)TF)	rz   r{   r|   r   r=   r>   r<   rf   rj   r   r   r   r   r     s   
	c               @   s   e Zd ZdZdS )r	   FN)rz   r{   r|   rE   r   r   r   r   r	     s   c               @   s   e Zd ZdZi Zdd ZdS )r
   Tc          	   C   s(   t j| tjjtjjtjt ddd d S )NFT)r   r   )r	   r   r"   r}   bufferr~   rt   r   )r8   r   r   r   r     s    zCGIHandler.__init__N)rz   r{   r|   r@   r:   r   r   r   r   r   r
     s   c               @   s   e Zd ZdZi Zdd ZdS )r   Tc          	   C   sj   t  }|dd}|dd}|d |d rD|t|d  |d< tj| tjjtj	jtj
|ddd d S )Nr   r   r   /FT)r   r   )r   r*   r   rO   r	   r   r"   r}   r   r~   rt   )r8   r'   pathZscriptr   r   r   r   1  s    zIISCGIHandler.__init__N)rz   r{   r|   r@   r:   r   r   r   r   r   r     s   )utilr   r   r   rU   r   r"   r&   r   __all__r   r   r   __contains__r   r   r   r   r   r	   r
   r   r   r   r   r   <module>   s(   
<  U2