asda?‰PNG  IHDR ? f ??C1 sRGB ??é gAMA ±? üa pHYs ? ??o¨d GIDATx^íüL”÷e÷Y?a?("Bh?_ò???¢§?q5k?*:t0A-o??¥]VkJ¢M??f?±8\k2íll£1]q?ù???T a bYhg@sdZgdZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlmZdZdZGdddejZGd d d ejeZGd d d ejZGd ddeZddZ da!ddZ"ddZ#GdddeZ$ddZ%eedddfddZ&e'dkrddl(Z(ddl)Z)e(*Z+e+j,ddd d!e+j,d"d#d$d%d&e+j,d'd(e -d)d*e+j,d+d,de.d-d.d/e+/Z0e0j1re$Z2neZ2Gd0d1d1eZ3e&e2e3e0j4e0j5d2dS)3z0.6) HTTPServerThreadingHTTPServerBaseHTTPRequestHandlerSimpleHTTPRequestHandlerCGIHTTPRequestHandlerN) HTTPStatusa Error response

Error response

Error code: %(code)d

Message: %(message)s.

Error code explanation: %(code)s - %(explain)s.

ztext/html;charset=utf-8c@seZdZdZddZdS)rcCs4tj||jdd\}}t||_||_dS)N) socketserver TCPServer server_bindZserver_addresssocketgetfqdn server_name server_port)selfhostportr'/usr/local/lib/python3.9/http/server.pyr s  zHTTPServer.server_bindN)__name__ __module__ __qualname__Zallow_reuse_addressr rrrrrsrc@seZdZdZdS)rTN)rrrZdaemon_threadsrrrrrsrc @s&eZdZdejdZdeZe Z e Z dZ ddZddZd d Zd d Zd4ddZd5ddZd6ddZddZddZddZd7ddZddZedd eed!ed"d#DZd$ee d%<d&d'Z!d(d)Z"d8d*d+Z#d,d-Z$gd.Z%gd/Z&d0d1Z'd2Z(e)j*j+Z,d3d e-j./DZ0d S)9rzPython/rz BaseHTTP/HTTP/0.9c Csd|_|j|_}d|_t|jd}|d}||_|}t |dkrLdSt |dkr |d}zT| dsrt |d d d }|d }t |d krt t |dt |d f}Wn*t t fy|tjd |YdS0|dkr|jdkrd|_|dkr|tjd|dS||_d t |kr9rsz!BaseHTTPRequestHandler. z\\\cGs2||}tjd||||jfdS)Nz%s - - [%s] %s )sysstderrreaddress_stringlog_date_time_string translate_control_char_table)rrzr{rWrrrrw<s z"BaseHTTPRequestHandler.log_messagecCs|jd|jS)N )server_version sys_versionrErrrrhVsz%BaseHTTPRequestHandler.version_stringcCs |durt}tjj|ddS)NT)Zusegmt)timeemailutilsZ formatdate)rZ timestamprrrriZsz'BaseHTTPRequestHandler.date_time_stringc CsBt}t|\ }}}}}}}} } d||j|||||f} | S)Nz%02d/%3s/%04d %02d:%02d:%02d)r localtime monthname) rZnowZyearZmonthZdayZhhZmmssxyzsrrrr`s z+BaseHTTPRequestHandler.log_date_time_string)ZMonZTueZWedZThuZFriZSatZSun) NZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDeccCs |jdSNr)client_addressrErrrrnsz%BaseHTTPRequestHandler.address_stringHTTP/1.0cCsi|]}||j|jfqSr)phrase description)r|vrrrr~}s)NN)N)N)ruru)N)1rrrrr=r+r __version__rDEFAULT_ERROR_MESSAGEr`DEFAULT_ERROR_CONTENT_TYPErdr$rAr<rPrQr1r]rCr^rDrrrgrMr' maketrans itertoolschainrangerordrwrhrirZ weekdaynamerrr2r5r6Z HTTPMessager8r __members__valuesr[rrrrrsBij% 5     rcsteZdZdeZdddddZZddfd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZZS)rz SimpleHTTP/zapplication/gzipapplication/octet-streamzapplication/x-bzip2zapplication/x-xz)z.gzz.Zz.bz2z.xzN directorycs2|durt}t||_tj|i|dSry)osgetcwdfspathrsuper__init__)rrr{kwargs __class__rrrs z!SimpleHTTPRequestHandler.__init__cCs6|}|r2z|||jW|n |0dSry) send_headcopyfilerJr!rfrrrdo_GETs zSimpleHTTPRequestHandler.do_GETcCs|}|r|dSry)rr!rrrrdo_HEADsz SimpleHTTPRequestHandler.do_HEADc Csf||j}d}tj|rtj|j}|jds|t j |d|d|dd|d|df}tj |}| d|| dd | dSd D]&}tj||}tj|r|}qq||S||}|dr|t jd dSzt|d }Wn$ty&|t jd YdS0z t|}d |jvrd|jvrztj|jd } WnttttfyYnz0| j dur| j!t"j#j$d} | j t"j#j$urt"j"%|j&t"j#j$} | j!dd} | | kr|t j'| |(WdS|t j)| d|| dt*|d| d|+|j&| |WS|(Yn0dS)Nrrrr rZLocationrZ0)z index.htmlz index.htmzFile not foundrbzIf-Modified-Sincez If-None-Match)tzinfo)Z microsecond Content-typez Last-Modified),translate_pathr3risdirurllibparseurlsplitendswithr]rZMOVED_PERMANENTLY urlunsplitr^rDrtexistslist_directory guess_typer1 NOT_FOUNDopenOSErrorfstatfilenor9rrZparsedate_to_datetime TypeErrorr0 OverflowErrorr.rrYdatetimetimezoneZutcZ fromtimestampst_mtimer_r!OKr'ri) rr3rpartsZ new_partsZnew_urlindexZctypefsZimsZ last_modifrrrrs~                     z"SimpleHTTPRequestHandler.send_headc Cszt|}Wn"ty0|tjdYdS0|jdddg}ztjj |j dd}Wn t y|tj |j }Yn0t j |dd}t}d |}|d |d |d ||d ||d||d|D]v}tj ||}|} } tj |r |d} |d} tj |r6|d} |dtjj| ddt j | ddfq|dd||d} t} | | | d|tj|dd||dtt| || S)NzNo permission to list directorycSs|Sry)r;)arrrrsz9SimpleHTTPRequestHandler.list_directory..)key surrogatepasserrorsFrTzDirectory listing for %szZz z@z%s z

%s

z
    r@z
  • %s
  • z

 surrogateescaperrztext/html; charset=%srZ) rlistdirrr1rrsortrrunquoter3UnicodeDecodeErrorrarbrgetfilesystemencodingrnrtrislinkrUrcioBytesIOreseekr]rr^r'r,rD) rr3listrZ displaypathenctitlenamefullnameZ displaynameZlinknameencodedrrrrrsh            z'SimpleHTTPRequestHandler.list_directorycCs|ddd}|ddd}|d}ztjj|dd}Wnty`tj|}Yn0t|}|d}t d|}|j }|D]0}t j |s|t jt jfvrqt j ||}q|r|d7}|S)N?rr#rrr)r+r)rrrrr posixpathnormpathfilterrrr3dirnamecurdirpardirrt)rr3Ztrailing_slashr>Zwordrrrr?s$     z'SimpleHTTPRequestHandler.translate_pathcCst||dSry)shutil copyfileobj)rsourceZ outputfilerrrr]sz!SimpleHTTPRequestHandler.copyfilecCsXt|\}}||jvr"|j|S|}||jvr>|j|St|\}}|rT|SdS)Nr)rsplitextextensions_mapr; mimetypesr)rr3baseextZguess_rrrrms    z#SimpleHTTPRequestHandler.guess_type)rrrrrrZ_encodings_map_defaultrrrrrrrr __classcell__rrrrrs   X:rc Cs|d\}}}tj|}|d}g}|ddD],}|dkrL|q6|r6|dkr6||q6|r|}|r|dkr|d}q|dkrd}nd}|rd||f}dd||f}d|}|S)Nrrrz..rr ) partitionrrrr+poprnrt) r3rquery path_partsZ head_partspartZ tail_partZ splitpathcollapsed_pathrrr_url_collapse_paths.      rcCsntrtSz ddl}Wnty(YdS0z|ddaWn,tyhdtdd|DaYn0tS)Nrrnobodyr rcss|]}|dVqdS)r Nr)r|rrrr rsznobody_uid..)rpwd ImportErrorgetpwnamr\maxgetpwall)r rrr nobody_uids    rcCst|tjSry)raccessX_OK)r3rrr executablesrc@sReZdZeedZdZddZddZddZ d d gZ d d Z d dZ ddZ dS)rforkrcCs$|r|n|tjddS)NzCan only POST to CGI scripts)is_cgirun_cgir1rrHrErrrdo_POSTs  zCGIHTTPRequestHandler.do_POSTcCs|r|St|SdSry)rrrrrErrrrszCGIHTTPRequestHandler.send_headcCszt|j}|dd}|dkrB|d||jvrB|d|d}q|dkrv|d|||dd}}||f|_dSdS)NrrrTF)rr3findcgi_directoriescgi_info)rrZdir_sepheadtailrrrrs   zCGIHTTPRequestHandler.is_cgiz/cgi-binz/htbincCst|Sry)r)rr3rrr is_executablesz#CGIHTTPRequestHandler.is_executablecCstj|\}}|dvS)N)z.pyz.pyw)rr3rr;)rr3rrrrr is_pythonszCGIHTTPRequestHandler.is_pythonc) Csl|j\}}|d|}|dt|d}|dkr|d|}||dd}||}tj|r||}}|dt|d}q*qq*|d\}}} |d}|dkr|d|||d} }n |d} }|d| } || } tj| s | t j d| dStj | s.| t j d| dS|| } |jsF| sh|| sh| t j d| dSttj}||d <|jj|d <d |d <|j|d <t|jj|d<|j|d<tj|}||d<|||d<| |d<| r| |d<|jd|d<|j d}|r|!}t|dkrddl"}ddl#}|d|d<|d$dkrz"|d%d}|&|'d}Wn|j(t)fyYn&0|!d}t|dkr|d|d<|j ddur|j*|d<n|jd|d<|j d}|r||d<|j d }|r||d!<|j+d"d#}d$,||d%<|j d&}|rP||d'<t-d|j+d(g}d),|}|r|||d*<d+D]}|.|dq|/t j0d,|1| 2d-d.}|jr| g}d/|vr|3|t4}|j56t7}|dkr^t8|d\}}t99|j:gggddr:|j:;ds q:q t<|}|rZ|=d0|dSzZzt>|Wnt?yYn0t@|j:Adt@|j5AdtB| ||Wn(|jC|jD|jtEd1Yn0nddlF} | g}!|| r:tGjH}"|"$Id2r.|"dd3|"d4d}"|"d5g|!}!d/| vrN|!3| |Jd6| K|!z tL|}#WntMtNfyd}#Yn0| jO|!| jP| jP| jP|d7}$|j$d8kr|#dkr|j:;|#}%nd}%t99|j:jQgggddr|j:jQRdsАqq|$S|%\}&}'|j5T|&|'r0|=d9|'|$jUV|$jWV|$jX}(|(r^|=d:|(n |Jd;dS)Ss  s0