ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ aNc@sdZddlZddlZddlZddlZyddlZWnek r_dZnXddlm Z ddgZ de fdYZ de fdYZde fd YZd e fd YZdddd Zdddd ZdS(s% Application that runs a CGI script. iN(t converterstCGIErrortCGIApplicationcBseZdZRS(s` Raised when the CGI script can't be found or doesn't act like a proper CGI script. (t__name__t __module__t__doc__(((s=/opt/alt/python27/lib/python2.7/site-packages/paste/cgiapp.pyRscBs)eZdZdeddZdZRS(s This object acts as a proxy to a CGI application. You pass in the script path (``script``), an optional path to search for the script (if the name isn't absolute) (``path``). If you don't give a path, then ``$PATH`` will be used. cCsA|rtdn||_|dkrKtjjddjd}n||_d|kr|dkstd||f|jdd\}}ntjj ||kr"xs|jD]C}tjj tjj ||rtjj |||_ PqqWt d||jfn ||_ ||_||_dS( Nsjglobal_conf is no longer supported for CGIApplication (use make_cgi_application); please pass None insteadtPATHtt:t?sNYou cannot have '?' in your script name (%r) and also give a query_string (%r)isScript %r not found in path %r(tNotImplementedtscript_filenametNonetostenvirontgettsplittpathtAssertionErrortabspathtexiststjointscriptRtinclude_os_environt query_string(tselft global_confRRRRtpath_dir((s=/opt/alt/python27/lib/python2.7/site-packages/paste/cgiapp.pyt__init__#s.   !  !  c Cs d|krGtj|jddtj|jdd|dR?tFalseR=R REtbuffer(RRR@((s=/opt/alt/python27/lib/python2.7/site-packages/paste/cgiapp.pyRss      cCs|jr|j|dS|j|7_xqd|jkrd|jkr|jjd|jjdkr|jjdd\}|_n|jjdd\}|_|st|_|j|j|j|_|j|j|`|`|`Pq,d|krt d|q,|jdd\}}|j }|j }|j dkrd|krwd|}n||_q,|jj ||fq,WdS( Ns s iRsBad header line: %rR>t s %s General(R=RERItfindRRGR@R>R?Rtlstriptstriptlowertappend(Rtdatatline1RBtvalue((s=/opt/alt/python27/lib/python2.7/site-packages/paste/cgiapp.pyR<|s8  3!       (RRRR<(((s=/opt/alt/python27/lib/python2.7/site-packages/paste/cgiapp.pyR3qs R8cBs2eZdZdZeeZddZRS(cCs||_||_dS(N(R#tcontent_length(RR#RS((s=/opt/alt/python27/lib/python2.7/site-packages/paste/cgiapp.pyRs cCs;|jd}|r$t|}nd}||d|S(NtCONTENT_LENGTHis wsgi.input(Rtint(tclsRtlength((s=/opt/alt/python27/lib/python2.7/site-packages/paste/cgiapp.pyR9s cCsh|js dS|dkr1|jj|j}n|jjt|j|}|jt|8_|S(NR(RSR R#R;tmintlen(Rtsizettext((s=/opt/alt/python27/lib/python2.7/site-packages/paste/cgiapp.pyR;s  N(RRRR9t classmethodR R;(((s=/opt/alt/python27/lib/python2.7/site-packages/paste/cgiapp.pyR8s   cCsg}g}d}|jo'ttd}|jri|jjtrY|j|jq{|jjn|dks{t |j r|j|j n|dkst |j r|j|j n|dkst x|s|rt j ||g\}} } |j| kr|d} }dt | } | rL| |j| 7} n| sr|jj|j|jqtj|jj| } | t | kr| | }qn|j |kr-tj|j jd}|dkr|j j|j|j n|r|j|}n|j|n|j |krtj|j jd}|dkr|j j|j|j n|r|j|}n|j|qqWy|jWn(tk r}|jdkrqnXdS(sf Run the given process, piping input/output/errors to the given file-like objects (which need not be actual file objects, unlike the arguments passed to Popen). Wait for process to terminate. Note: this is taken from the posix version of subprocess.Popen.communicate, but made more general through the use of file-like objects. Rtnewlinesiii N(tuniversal_newlinesthasattrtopenR#tflushtinputROtcloseR RR$R%R4RYR;tremoveR R<tfilenot_translate_newlinestwaittOSErrorterrno(RDR#R$R%tread_sett write_sett input_bufferttrans_nltrlisttwlisttxlisttnexttnext_lent bytes_writtenRPte((s=/opt/alt/python27/lib/python2.7/site-packages/paste/cgiapp.pyR7sd           c Cs[|dkr-|jdp'|jd}ntj|}td|d|d|d|S(s5 Paste Deploy interface for :class:`CGIApplication` This object acts as a proxy to a CGI application. You pass in the script path (``script``), an optional path to search for the script (if the name isn't absolute) (``path``). If you don't give a path, then ``$PATH`` will be used. RRRRN(R RRtasboolR(RRRRR((s=/opt/alt/python27/lib/python2.7/site-packages/paste/cgiapp.pytmake_cgi_applications !(RR R5R/R)R4t ImportErrorR t paste.utilRt__all__t ExceptionRtobjectRR3R8R7Rv(((s=/opt/alt/python27/lib/python2.7/site-packages/paste/cgiapp.pyts"       W-M