ÿØÿà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@sdZddlZddlZddlZyddlmZWn!ek raddlmZnXddlmZm Z m Z ddl m Z ddl m Z ddgZd efd YZeZdefd YZd efd YZdefdYZdefdYZeeddeddddedded ZedZdZdZejjeZxMee eD]9Z!ee!j"j#drdj$ee!e_PqqW[![dS(s Error handler middleware iN(tStringIO(t formattert collectortreporter(twsgilib(trequesttErrorMiddlewarethandle_exceptiont _NoDefaultcBseZdZRS(cCsdS(Ns ((tself((sQ/opt/alt/python27/lib/python2.7/site-packages/paste/exceptions/errormiddleware.pyt__repr__s(t__name__t __module__R (((sQ/opt/alt/python27/lib/python2.7/site-packages/paste/exceptions/errormiddleware.pyRscBsYeZdZdeddeddddedddd ZdZdZdZ RS(s Error handling middleware Usage:: error_catching_wsgi_app = ErrorMiddleware(wsgi_app) Settings: ``debug``: If true, then tracebacks will be shown in the browser. ``error_email``: an email address (or list of addresses) to send exception reports to ``error_log``: a filename to append tracebacks to ``show_exceptions_in_wsgi_errors``: If true, then errors will be printed to ``wsgi.errors`` (frequently a server error log, or stderr). ``from_address``, ``smtp_server``, ``error_subject_prefix``, ``smtp_username``, ``smtp_password``, ``smtp_use_tls``: variables to control the emailed exception reports ``error_message``: When debug mode is off, the error message to show to users. ``xmlhttp_key``: When this key (default ``_``) is in the request GET variables (not POST!), expect that this is an XMLHttpRequest, and the response should be more minimal; it should not be a complete HTML page. Environment Configuration: ``paste.throw_errors``: If this setting in the request environment is true, then this middleware is disabled. This can be useful in a testing situation where you don't want errors to be caught and transformed. ``paste.expected_exceptions``: When this middleware encounters an exception listed in this environment variable and when the ``start_response`` has not yet occurred, the exception will be re-raised instead of being caught. This should generally be set by middleware that may (but probably shouldn't be) installed above this middleware, and wants to get certain exceptions. Exceptions raised after ``start_response`` have been called are always caught since by definition they are no longer expected. cCsddlm}||_|dkr.i}n|tkrU|j|jd}n|tkr||j|jd}n|j||_|dkr|jdp|jdp|jdp|jd}n|j||_ ||_ ||_ |dkr|jd d }n||_ |dkrH|jd d }n||_ | pc|jd |_| p{|jd|_| p|j|jd|_| pd|_| dkr|jd} n| |_|dkr|jdd}n||_dS(Ni(t converterstdebugtshow_exceptions_in_wsgi_errorst error_emailt admin_emailtwebmaster_emailtsysadmin_emailterror_from_addressserrors@localhostt smtp_servert localhostt smtp_usernamet smtp_passwordt smtp_use_tlstt error_messaget xmlhttp_keyt_(t paste.utilR t applicationtNonet NoDefaulttasbooltgett debug_modetaslistRt error_logRt from_addressRRRRterror_subject_prefixRR(R Rt global_confRRR&RR'RRRRR(RRR ((sQ/opt/alt/python27/lib/python2.7/site-packages/paste/exceptions/errormiddleware.pyt__init__QsB             !   c Cs|jdr|j||St|dError in .close():
%ss500 Internal Server Errors content-types text/html(s content-types text/html(R,RLR3RMt StopIterationRJtnextR+t_closeR R/R0R2RKRF(R R5tclose_responseR0R9((sQ/opt/alt/python27/lib/python2.7/site-packages/paste/exceptions/errormiddleware.pyRPs4                cCs|js|jndS(N(RMRQ(R ((sQ/opt/alt/python27/lib/python2.7/site-packages/paste/exceptions/errormiddleware.pytcloses cCsXt|jdsdSy|jjdSWn&|jjtj|j}|SXdS(s"Close and return any error messageRSN( thasattrRHR RSRLR2R/R0R3(R RR((sQ/opt/alt/python27/lib/python2.7/site-packages/paste/exceptions/errormiddleware.pyRQs  (R R RER*RNRPRSRQ(((sQ/opt/alt/python27/lib/python2.7/site-packages/paste/exceptions/errormiddleware.pyR=s    R,cBs^eZdZdZdZidd 6dd6dd6dd6d d6d d6d d6d d6ZRS(s^ This is a supplement used to display standard WSGI information in the traceback. cCs(||_||_tj||_dS(N(t middlewareR3Rt construct_urlt source_url(R RUR3((sQ/opt/alt/python27/lib/python2.7/site-packages/paste/exceptions/errormiddleware.pyR*s  c CsHi}i}|dtfilenametfilesError - %s: %s tinclude_hidden_framestinclude_reusabletshow_extra_datas An error occurred. See the error logs for more information. (Turn debug on to display exception reports here) tshow_hidden_framess t-i<N(RARtcollect_exceptionRt EmailReportert send_reportR+t LogReportert FileReportertwritetexception_typetexception_valueRt format_htmlt error_cssthide_display_jsterror_templateR t format_text(R0t error_streamR>R$RR&RR?RRRRR(RR@treportedtexc_datat extra_datatreptrep_errt return_errort error_htmlt head_htmltmsgt err_report((sQ/opt/alt/python27/lib/python2.7/site-packages/paste/exceptions/errormiddleware.pyR?sv                    cCsy|j|Wnct}tjd||rYdtjt||jfSdt||jfSnXdSdS(NRnsw

Additionally an error occurred while sending the %s report:

%s

s>Additionally an error occurred while sending the %s report: %sR(treportRt tracebackt print_exctcgitescapetstrtgetvalue(RRR>toutput((sQ/opt/alt/python27/lib/python2.7/site-packages/paste/exceptions/errormiddleware.pyRvs  cCsd|||fS(Ns Server Error %s

Server Error

%s %s ((Rt exceptionRX((sQ/opt/alt/python27/lib/python2.7/site-packages/paste/exceptions/errormiddleware.pyRs cKst|d||S(NR)(R(tappR)tkw((sQ/opt/alt/python27/lib/python2.7/site-packages/paste/exceptions/errormiddleware.pytmake_error_middlewarestSettings(%RER/RRt cStringIORt ImportErrortpaste.exceptionsRRRtpasteRRt__all__tobjectRR!RR-R=R,R+RAR RRvRRt splitlinest doc_linestrangetlentitstript startswithtjoin(((sQ/opt/alt/python27/lib/python2.7/site-packages/paste/exceptions/errormiddleware.pytsN       F2 W