Files
proxmox/venv/lib/python3.12/site-packages/werkzeug/__pycache__/serving.cpython-312.pyc

356 lines
45 KiB
Plaintext
Raw Normal View History

<EFBFBD>
<0A>Hi<48><69><00><01><><00>UdZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl
Z ddl m Z ddl mZddl mZddlmZddlmZdd lmZdd
lmZd d lmZd d lmZd dlmZd dlmZ ddlZeej>ej@fZ!de"d<dZ%ejLdk(r e'd<16>e(ed<18>Z)e)r ejTZ*n
Gd<19>d<1A>Z* ejVZ,dZ.e j^e j`de1e2e j^e2fe jfdfZ4e jjrddl6m7Z7ddl6m8Z8dd l9m:Z:dd!l;m<Z<Gd"<22>d#ejz<00>Z>Gd$<24>d%e<11>Z?d8d&<26>Z@ d9 d:d'<27>ZA d; d<d(<28>ZBd=d)<29>ZC d; d>d*<2A>ZDd9d?d+<2B>ZEd@d,<2C>ZF dAd-<2D>ZGdBd.<2E>ZHGd/<2F>d0e<12>ZIGd1<64>d2ej<>eI<65>ZKGd3<64>d4e*eI<65>ZL dC dDd5<64>ZMdEd6<64>ZN dF dGd7<64>ZOy#e#$r#Gd<12>d<13>Z$e$<24>Zeej>fZ!Y<00><01><>wxYw#e#$rdZ%Y<00><01><>wxYw#e-$rdZ,Y<00><01><>wxYw)Ha<48>A WSGI and HTTP server for use **during development only**. This
server is convenient to use, but is not designed to be particularly
stable, secure, or efficient. Use a dedicate WSGI server and HTTP
server when deploying to production.
It provides features like interactive debugging and code reloading. Use
``run_simple`` to start the server. Put this in a ``run.py`` script:
.. code-block:: python
from myapp import create_app
from werkzeug import run_simple
<EFBFBD>)<01> annotationsN)<01>datetime)<01> timedelta)<01>timezone)<01>BaseHTTPRequestHandler)<01>
HTTPServer)<01>unquote)<01>urlsplit<69><00><01>_log)<01>_wsgi_encoding_dance)<01>InternalServerError)<01>
uri_to_iriztuple[type[Exception], ...]<5D>connection_dropped_errorsc<01><00>eZdZdd<01>Zy)<04> _SslDummyc<01><00>td<01><00>)NzUSSL is unavailable because this Python runtime was not compiled with SSL/TLS support.)<01> RuntimeError)<02>self<6C>names <20>R/home/intlc/projects/proxmox/venv/lib/python3.12/site-packages/werkzeug/serving.py<70> __getattr__z_SslDummy.__getattr__1s<00><00><1E>2<><0E> <0E>N<>r<00>str<74>return<72>t.Any)<04>__name__<5F>
__module__<EFBFBD> __qualname__r<00>rrrr0s<00><00> rrT<>nt<6E>coloramaF<61>forkc<01> <00>eZdZy)<02> ForkingMixInN)rr r!r"rrr'r'Hs<00><00> rr'<00><><00>ssl.SSLContext<78>adhoc)<01>WSGIApplication)<01>WSGIEnvironment)<01>RSAPrivateKeyWithSerialization)<01> Certificatec<01>0<00>eZdZdZdd<02>Zdd<03>Zd d<04>Zd
d<05>Zy) <0B>DechunkedInputz8An input stream that handles Transfer-Encoding 'chunked'c<01>.<00>||_d|_d|_y)NFr)<03>_rfile<6C>_done<6E>_len)r<00>rfiles r<00>__init__zDechunkedInput.__init__cs<00><00><1B><04> <0B><1A><04>
<EFBFBD><15><04> rc<01><00>y)NTr"<00>rs r<00>readablezDechunkedInput.readablehs<00><00>rc<01><><00> |jj<00>jd<01>}t|j <00>d<02>}|dkr t d<05><00>|S#t
$r}t d<03>|<03>d}~wwxYw)N<>latin1<6E>zInvalid chunk headerrz!Negative chunk length not allowed)r2<00>readline<6E>decode<64>int<6E>strip<69>
ValueError<EFBFBD>OSError)r<00>liner4<00>es r<00>read_chunk_lenzDechunkedInput.read_chunk_lenksp<00><00> 9<><17>;<3B>;<3B>'<27>'<27>)<29>0<>0<><18>:<3A>D<EFBFBD><16>t<EFBFBD>z<EFBFBD>z<EFBFBD>|<7C>R<EFBFBD>(<28>D<EFBFBD> <10>!<21>8<EFBFBD><19>=<3D>><3E> ><3E><13> <0B><> <1A> 9<><19>0<>1<>q<EFBFBD> 8<><38> 9<>s<00>AA<00> A1<03> A,<03>,A1c<01><00>d}|j<00>sn|t|<01>k<00>r_|jdk(r|j<00>|_|jdk(rd|_|jdkDr<>t t|<01>|j<00>}||zt|<01>kDrW|j
j t|<01>|z
<00>||d|xjt|<01>|z
zc_t|<01>}n;|j
j |<03>||||z|xj|zc_||z }|jdk(r)|j
j<00>}|dvr td<04><00>|js|t|<01>kr<02><01>_|S)NrT)<03>
<EFBFBD>
<EFBFBD> z!Missing chunk terminating newline) r3<00>lenr4rE<00>minr2<00>readr=rB)r<00>bufrL<00>n<>
terminators r<00>readintozDechunkedInput.readintousB<00><00><10><04><16>*<2A>*<2A><14><03>C<EFBFBD><08><1F><13>y<EFBFBD>y<EFBFBD>A<EFBFBD>~<7E>!<21>/<2F>/<2F>1<><04> <09><13>y<EFBFBD>y<EFBFBD>A<EFBFBD>~<7E>"<22><04>
<EFBFBD><13>y<EFBFBD>y<EFBFBD>1<EFBFBD>}<7D><18><03>C<EFBFBD><08>$<24>)<29>)<29>,<2C><01>
<18>!<21>8<EFBFBD>c<EFBFBD>#<23>h<EFBFBD>&<26>!%<25><1B><1B>!1<>!1<>#<23>c<EFBFBD>(<28>T<EFBFBD>/<2F>!B<>C<EFBFBD><04><05>J<EFBFBD><18>I<EFBFBD>I<EFBFBD><13>S<EFBFBD><18>D<EFBFBD><1F>0<>I<EFBFBD><1E>s<EFBFBD>8<EFBFBD>D<EFBFBD>+/<2F>;<3B>;<3B>+;<3B>+;<3B>A<EFBFBD>+><3E>C<EFBFBD><04>t<EFBFBD>a<EFBFBD>x<EFBFBD>(<28><18>I<EFBFBD>I<EFBFBD><11>N<EFBFBD>I<EFBFBD><18>A<EFBFBD>I<EFBFBD>D<EFBFBD><13>y<EFBFBD>y<EFBFBD>A<EFBFBD>~<7E>"<22>[<5B>[<5B>1<>1<>3<>
<EFBFBD><1D>%<<3C><<3C>!<21>"E<>F<>F<>E<17>*<2A>*<2A><14><03>C<EFBFBD><08><1F>H<14> rN)r5z t.IO[bytes]r<00>None<6E>r<00>bool<6F>rr?)rM<00> bytearrayrr?)rr r!<00>__doc__r6r9rErPr"rrr0r0`s<00><00>B<><16>
<14><14>&rr0c
<01>6<00><02>eZdZUdZded<edd<04><04>Zdd<05>Zdd<06>Zd<19>fd<07> Z d dd<08>Z
d<1C>fd <09> Z dd
<EFBFBD>Z dd <0B>Z ejged <0C><00>ed d<0E><00>D<00><00>cic] }|d|d<10><04><02><02> c}}<00>Zdeed<12><ddd<13>Zd d<14>Zd d<15>Zd!d<16>Z<16>xZScc}}w)"<22>WSGIRequestHandlerz3A request handler that implements WSGI dispatching.<2E>BaseWSGIServer<65>serverc<01>.<00>|jjS<00>N)rZ<00>_server_versionr8s r<00>server_versionz!WSGIRequestHandler.server_version<6F>s<00><00><13>{<7B>{<7B>*<2A>*<2A>*rc<01><><00>t|j<00>}|jj<00>dnd}|jsd|_n-t |jt <00>r|jdf|_|js(|jrd|j<00>|j<00><00>}n |j}t|<03>}idd<07>d|<02>d |j<00>d
tj<00>d |jj<00>d |jj<00>d d<0E>d|j<00>d|j <00>d|j"<00>dd<13>dt%|<03><00>dt%|j&<00><00>dt%|j<00><00>dt%|j<00><00>d|j)<00><00>d|j+<00><00>|jj,dt |jj,d<00>|j.d<1B><03>}|j0j3<00>D]X\}}d|vr<01> |j5<00>j7dd<1C>}|j7dd<13>}|dvrd |<05><00>}||vr
||<00>d!|<06><00>}|||<<00>Z|j9d"d<13>j;<00>j=<00>d#k(rd$|d%<t?|d <00>|d <|jr|jr|j|d&< |jjAd$<24>'<27>}|<07>tCjD|<07>|d(<|S#tF$r |jjId)d*<2A>Y|StJ$rY|SwxYw)+N<>http<74>https)<02><local>rr<00>/z wsgi.version)r rzwsgi.url_schemez
wsgi.inputz wsgi.errorszwsgi.multithreadzwsgi.multiprocessz wsgi.run_onceFzwerkzeug.socket<65>SERVER_SOFTWARE<52>REQUEST_METHOD<4F> SCRIPT_NAME<4D><00> PATH_INFO<46> QUERY_STRING<4E> REQUEST_URI<52>RAW_URI<52> REMOTE_ADDR<44> REMOTE_PORTr )<03> SERVER_NAME<4D> SERVER_PORT<52>SERVER_PROTOCOL<4F>_<>-z
)<02> CONTENT_TYPE<50>CONTENT_LENGTH<54>HTTP_<50>,<2C>HTTP_TRANSFER_ENCODING<4E>chunkedTzwsgi.input_terminated<65> HTTP_HOST)<01> binary_form<72>SSL_CLIENT_CERT<52>errorz&Cannot fetch SSL peer certificate info)&r
<00>pathrZ<00> ssl_context<78>client_address<73>
isinstancer<00>scheme<6D>netlocr r5<00>sys<79>stderr<72> multithread<61> multiprocess<73>
connectionr^<00>commandr<00>query<72>address_string<6E> port_integer<65>server_address<73>request_version<6F>headers<72>items<6D>upper<65>replace<63>getr@<00>lowerr0<00> getpeercert<72>ssl<73>DER_cert_to_PEM_certrA<00>log<6F>AttributeError)r<00> request_url<72>
url_scheme<EFBFBD> path_info<66>environ<6F>key<65>value<75> peer_certs r<00> make_environzWSGIRequestHandler.make_environ<6F>s<00><00><1E>t<EFBFBD>y<EFBFBD>y<EFBFBD>)<29> <0B>#<23>{<7B>{<7B>6<>6<>><3E>V<EFBFBD>G<EFBFBD>
<EFBFBD><13>"<22>"<22>"0<>D<EFBFBD> <1F> <17><04>+<2B>+<2B>S<EFBFBD> 1<>#'<27>#6<>#6<><01>":<3A>D<EFBFBD> <1F>
<1B>!<21>!<21>k<EFBFBD>&8<>&8<><1B>K<EFBFBD>.<2E>.<2E>/<2F> <0B>0@<40>0@<40>/A<>B<>I<EFBFBD>#<23>(<28>(<28>I<EFBFBD><1B>I<EFBFBD>&<26> <09>$
<EFBFBD> <1A>F<EFBFBD>$
<EFBFBD> <1D>z<EFBFBD>$
<EFBFBD> <19>$<24>*<2A>*<2A>$
<EFBFBD> <1A>3<EFBFBD>:<3A>:<3A> $
<EFBFBD>
<1F><04> <0B> <0B> 7<> 7<> $
<EFBFBD> <20><14><1B><1B>!9<>!9<> $
<EFBFBD> <1C>U<EFBFBD>$
<EFBFBD> <1E>t<EFBFBD><EFBFBD><EFBFBD>$
<EFBFBD> <1E>t<EFBFBD>2<>2<>$
<EFBFBD> <1D>d<EFBFBD>l<EFBFBD>l<EFBFBD>$
<EFBFBD> <1A>2<EFBFBD>$
<EFBFBD> <18>-<2D>i<EFBFBD>8<>$
<EFBFBD> <1B>0<><1B>1B<31>1B<31>C<>$
<EFBFBD> <1A>/<2F><04> <09> <09>:<3A>$
<EFBFBD>" <16>+<2B>D<EFBFBD>I<EFBFBD>I<EFBFBD>6<>#$
<EFBFBD>$ <1A>4<EFBFBD>.<2E>.<2E>0<>%$
<EFBFBD>& <1A>4<EFBFBD>,<2C>,<2C>.<2E>'$
<EFBFBD>( <20>;<3B>;<3B>5<>5<>a<EFBFBD>8<><1E>t<EFBFBD>{<7B>{<7B>9<>9<>!<21><<3C>=<3D>#<23>3<>3<>-$
<EFBFBD><07>2<1F>,<2C>,<2C>,<2C>,<2C>.<2E>
!<21>J<EFBFBD>C<EFBFBD><15><12>c<EFBFBD>z<EFBFBD><18><15>)<29>)<29>+<2B>%<25>%<25>c<EFBFBD>3<EFBFBD>/<2F>C<EFBFBD><19>M<EFBFBD>M<EFBFBD>&<26>"<22>-<2D>E<EFBFBD><12><<3C><<3C><1D>c<EFBFBD>U<EFBFBD>m<EFBFBD><03><16>'<27>><3E>&<26>s<EFBFBD>|<7C>n<EFBFBD>A<EFBFBD>e<EFBFBD>W<EFBFBD>5<>E<EFBFBD> <20>G<EFBFBD>C<EFBFBD>L<EFBFBD>
!<21> <13>;<3B>;<3B>/<2F><12> 4<> :<3A> :<3A> <<3C> B<> B<> D<> <09> Q<>/3<>G<EFBFBD>+<2B> ,<2C>$2<>7<EFBFBD><<3C>3H<33>$I<>G<EFBFBD>L<EFBFBD> !<21> <17> <1D> <1D>+<2B>"4<>"4<>#.<2E>#5<>#5<>G<EFBFBD>K<EFBFBD> <20> <11><1D><0F><0F>3<>3<><04>3<>E<>I<EFBFBD><18>$<24>-0<>-E<>-E<>i<EFBFBD>-P<><07>)<29>*<2A><17><0E><><1A> O<01> <10>K<EFBFBD>K<EFBFBD>O<EFBFBD>O<EFBFBD>G<EFBFBD>%M<> N<>
<17><0E> <1E> <11> <10><16><0E>  <11>s<00>6L<00>%M<03>8M<03>Mc<01><><00><00><05><06><07><08> <09>
<EFBFBD> <0B> <0C><00>jjdd<02>j<00>j<00>dk(r<1B>jj d<04><00>j <00>x<01>_<00>d<00> d<00>d<00>
d<00>d<05>d<0E><05><06><07><08><00>
<EFBFBD> fd<06> <0C> d<0F><07><08> <0B> fd<07> <09> d<10><05><06><07><00> <09> fd<08> } |<01>jj<00>y#t$r}<02>j|<02><06>Yd}~yd}~wt$r<>}<02>jjr<01><00>
<EFBFBD> <09>rd <09>_ <00>
<EFBFBD>d<00> d<00>|t<00><00>n#t$rYnwxYwd
d lm}||<02>j%<00>}<04>jj'd d |<04><00><02>Yd}~yd}~wwxYw)N<>Expectrgz 100-continuesHTTP/1.1 100 Continue
Fc<01><><00><07><00> <0A>Jd<01><00><01>
<EFBFBD>Jd<01><00><01> <0C>މ <0A> <0C>
<EFBFBD> <00> jdd<02>\}}t|<01>}<03> j||<02>t <00>}<04> D]6\}}<06> j ||<06>|j |j<00><00><00>8d|vs<<3C>ddk(s4d|cxkrdks)n|d vs#<23> jd
k\rd <0B><07> j d d <0A><00> j dd<0F><00> j<00>t|t<00>sJd<10><00>|r<><72>rY<72> jjtt|<00><00>ddj!<00><00><00> jjd<12><00> jj|<00><00>r<1B> jjd<12><00> jj#<00>y#t$r<00> d}}Y<00><01><>wxYw)Nzwrite() before start_responser rgzcontent-lengthre<00>HEAD<41>d<00><>><00>0<00><><00>HTTP/1.1TzTransfer-Encodingrx<00>
Connection<EFBFBD>closezapplications must write bytes<65>rH)<12>splitrAr?<00> send_response<73>set<65> send_header<65>addr<64><00>protocol_version<6F> end_headersr<73><00>bytes<65>wfile<6C>write<74>hexrJ<00>encode<64>flush)<0E>data<74>code_str<74>msg<73>code<64> header_keysr<73>r<><00>chunk_responser<65><00> headers_sent<6E> headers_setr<00> status_sent<6E>
status_sets <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rr<>z*WSGIRequestHandler.run_wsgi.<locals>.writes<><00><><00><1D>)<29> J<>+J<> J<>)<29><1E>*<2A> K<>,K<> K<>*<2A><1A>"<22>(<28> <0B>*<2A> <0C>4<>$/<2F>$5<>$5<>d<EFBFBD>A<EFBFBD>$><3E>M<EFBFBD>H<EFBFBD>c<EFBFBD><1B>8<EFBFBD>}<7D><04><14>"<22>"<22>4<EFBFBD><13>-<2D>!<21>e<EFBFBD> <0B>".<2E>1<>J<EFBFBD>C<EFBFBD><15><18>$<24>$<24>S<EFBFBD>%<25>0<><1F>O<EFBFBD>O<EFBFBD>C<EFBFBD>I<EFBFBD>I<EFBFBD>K<EFBFBD>0<>1<>)<29>K<EFBFBD>7<>"<22>#3<>4<><06>><3E><1F>4<EFBFBD>-<2D>#<23>-<2D><1F>:<3A>-<2D><1C>-<2D>-<2D><1A>;<3B>%)<29>N<EFBFBD><18>$<24>$<24>%8<>)<29>D<> <15> <20> <20><1C>w<EFBFBD>7<><14> <20> <20>"<22><1D>d<EFBFBD>E<EFBFBD>*<2A> K<>,K<> K<>*<2A><13>!<21><18>J<EFBFBD>J<EFBFBD>$<24>$<24>S<EFBFBD><13>T<EFBFBD><19>^<5E>A<EFBFBD>B<EFBFBD>%7<>%><3E>%><3E>%@<40>A<><18>J<EFBFBD>J<EFBFBD>$<24>$<24>W<EFBFBD>-<2D><14>
<EFBFBD>
<EFBFBD> <20> <20><14>&<26>!<21><18>J<EFBFBD>J<EFBFBD>$<24>$<24>W<EFBFBD>-<2D> <10>J<EFBFBD>J<EFBFBD> <1C> <1C> <1E><>]"<22>4<>$/<2F><12>c<EFBFBD>H<EFBFBD>4<>s<00>F;<00>; G <03> G c<01>x<00><04>|r <00>r|dj|d<00><00> d}n <0A>r td<03><00>|<00>|<01><04>S#d}wxYw)Nr r<>zHeaders already set)<02>with_traceback<63>AssertionError)<07>statusr<73><00>exc_infor<6F>r<>r<>r<>s <20><><EFBFBD><EFBFBD>r<00>start_responsez3WSGIRequestHandler.run_wsgi.<locals>.start_response<sZ<00><><00><17>$<24>#<23>&<26>q<EFBFBD>k<EFBFBD>8<>8<><18>!<21><1B>E<>E<>$<24> $<24>H<EFBFBD><1C>$<24>%:<3A>;<3B>;<3B><1F>J<EFBFBD>!<21>K<EFBFBD><18>L<EFBFBD><4C> $<24>H<EFBFBD>s<00>5<00>9c<01><><00><06>|<00><07>
<EFBFBD>} |D]
}<00> |<02><00> <00>s<00> d<01><00>r<1B> jjd<02>tj<00>}|j <00> j
tj <00>d}d}|jd<04><05>rN<72> jjd<06>}|t|<02>z }|dz }|r
|dk\s|d kDrn|jd<04><05>r<01>N|j<00>t|d
<EFBFBD>r|j<00>yy#tj<00>}|j <00> j
tj <00>d}d}|jd<04><05>rN<72> jjd<06>}|t|<02>z }|dz }|r
|dk\s|d kDrn|jd<04><05>r<01>N|j<00>t|d
<EFBFBD>r|j<00>wwxYw) Nrs0
rg{<14>G<EFBFBD>z<EFBFBD>?)<01>timeouti<74><69><EFBFBD>r ld( i<>r<>) r<>r<><00> selectors<72>DefaultSelector<6F>registerr<72><00>
EVENT_READ<EFBFBD>selectr5rLrJr<><00>hasattr) <0C>app<70>application_iterr<72><00>selector<6F>
total_size<EFBFBD> total_readsr<73>r<>r<>rr<>r<>s <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>r<00>executez,WSGIRequestHandler.run_wsgi.<locals>.executeJs<><00><><00>"<22>7<EFBFBD>N<EFBFBD>;<3B> <1C># -<2D>,<2C> <20>D<EFBFBD><19>$<24>K<EFBFBD> <20>#<23><19>#<23>J<EFBFBD>!<21><18>J<EFBFBD>J<EFBFBD>$<24>$<24>\<5C>2<>%<25>4<>4<>6<><08><18>!<21>!<21>$<24>/<2F>/<2F>9<EFBFBD>3G<33>3G<33>H<><1E>
<EFBFBD><1F> <0B><1F>o<EFBFBD>o<EFBFBD>d<EFBFBD>o<EFBFBD>3<><1F>:<3A>:<3A>?<3F>?<3F>:<3A>6<>D<EFBFBD><1E>#<23>d<EFBFBD>)<29>+<2B>J<EFBFBD><1F>1<EFBFBD>$<24>K<EFBFBD> <20>:<3A><1E>#?<3F>;<3B>QU<51>CU<43><1D><1F>o<EFBFBD>o<EFBFBD>d<EFBFBD>o<EFBFBD>3<><19><0E><0E> <20><1A>+<2B>W<EFBFBD>5<>$<24>*<2A>*<2A>,<2C>6<><36>)%<25>4<>4<>6<><08><18>!<21>!<21>$<24>/<2F>/<2F>9<EFBFBD>3G<33>3G<33>H<><1E>
<EFBFBD><1F> <0B><1F>o<EFBFBD>o<EFBFBD>d<EFBFBD>o<EFBFBD>3<><1F>:<3A>:<3A>?<3F>?<3F>:<3A>6<>D<EFBFBD><1E>#<23>d<EFBFBD>)<29>+<2B>J<EFBFBD><1F>1<EFBFBD>$<24>K<EFBFBD> <20>:<3A><1E>#?<3F>;<3B>QU<51>CU<43><1D><1F>o<EFBFBD>o<EFBFBD>d<EFBFBD>o<EFBFBD>3<><19><0E><0E> <20><1A>+<2B>W<EFBFBD>5<>$<24>*<2A>*<2A>,<2C>6<>s<00>6D<00>B"G#<03>5.G#Tr )<01>DebugTracebackr|zError on request:
)r<>r<>rrQr\)r<>r+rrQ)r<>r<>r<>r@r<>r<>r<>r<>rZr<>r<00>connection_dropped<65> Exception<6F>passthrough_errors<72>close_connectionr<00> debug.tbtoolsr<73><00>render_traceback_textr<74>) rr<>rDr<>r<>r<>r<>r<>r<>r<>r<>r<>r<>s ` @@@@@@@@r<00>run_wsgizWSGIRequestHandler.run_wsgi<67>s^<00><><EFBFBD><00> <0F><<3C><<3C> <1B> <1B>H<EFBFBD>b<EFBFBD> )<29> /<2F> /<2F> 1<> 7<> 7<> 9<>^<5E> K<> <10>J<EFBFBD>J<EFBFBD> <1C> <1C>=<3D> ><3E>!%<25>!2<>!2<>!4<>4<><04> <0C>w<EFBFBD>!%<25>
<EFBFBD>48<EFBFBD> <0B>"&<26> <0B>59<35> <0C>$<24><0E>7 <1F>7 <1F>r <19> <19>% -<2D>% -<2D>N B<01> <13>D<EFBFBD>K<EFBFBD>K<EFBFBD>O<EFBFBD>O<EFBFBD> $<24><>(<28> 0<> <10> #<23> #<23>A<EFBFBD>w<EFBFBD> /<2F> /<2F><><18> B<01><13>{<7B>{<7B>-<2D>-<2D><15><1A>&<26>><3E>(,<2C><04>%<25> <15><1F>&<26>!%<25>J<EFBFBD>"&<26>K<EFBFBD><17>+<2B>-<2D>.<2E><><1C> <15><14> <15><> 6<> <20><11>#<23>9<>9<>;<3B>C<EFBFBD> <10>K<EFBFBD>K<EFBFBD>O<EFBFBD>O<EFBFBD>G<EFBFBD>':<3A>3<EFBFBD>%<25>%@<40> A<> A<><41>) B<01>sH<00>"B?<00>? E9<03>C<03> E9<03>+"E4<03>D%<02>$E4<03>% D1<05>.E4<03>0D1<05>1>E4<03>4E9c<01><00><01> t<00>|<00><00>y#ttjf$r}|j |<01>Yd}~yd}~wt $r?}|jj<00>t|<01>r|jd|<01>n<01>Yd}~yd}~wwxYw)z/Handles a request ignoring dropped connections.NzSSL error occurred: %s) <0B>super<65>handle<6C>ConnectionError<6F>socketr<74>r<>r<>rZr~<00> is_ssl_error<6F> log_error)rrD<00> __class__s <20>rr<>zWSGIRequestHandler.handle<6C>sr<00><><00> <16> <11>G<EFBFBD>N<EFBFBD> <1C><><1F><16><1E><1E>0<> '<27> <10> #<23> #<23>A<EFBFBD> &<26> &<26><><18> <16><13>{<7B>{<7B>&<26>&<26>2<>|<7C>A<EFBFBD><EFBFBD><14><0E><0E>7<><11>;<3B><15><<3C><> <16>s <00><00>B <03>A<03> B <03> 5B<03>B c<01><00>y)z`Called if the connection was closed by the client. By default
nothing happens.
Nr")rr|r<>s rr<>z%WSGIRequestHandler.connection_dropped<65>s<00>rc<01>f<00><01>|jd<01>r |jStt<00>|<01>S)N<>do_)<04>
startswithr<EFBFBD><00>getattrr<72>)rrr<>s <20>rrzWSGIRequestHandler.__getattr__<5F>s*<00><><00> <0F>?<3F>?<3F>5<EFBFBD> !<21><17>=<3D>=<3D> <20><17>u<EFBFBD>w<EFBFBD><04>%<25>%rc<01>r<00>t|dd<00>r|jdS|jsy|jdS)Nr<4E>rlrbr)r<>r<>rr8s rr<>z!WSGIRequestHandler.address_string<6E>s:<00><00> <12>4<EFBFBD><19>D<EFBFBD> )<29><17><<3C><<3C> <0A>.<2E> .<2E><13>"<22>"<22><1C><13>"<22>"<22>1<EFBFBD>%<25>%rc<01> <00>|jdS)Nr )rr8s rr<>zWSGIRequestHandler.port_integer<65>s<00><00><13>"<22>"<22>1<EFBFBD>%<25>%r<00> <00><00><>z\x<>02xz\\<5C>\c<01><00> t|j<00>}|j<00>d|<03>d|j<00><00>}|j |j<00>}t|<01>}|ddk(r t|d<04>}nb|dk(rn\|dk(r t|d<07>}nJ|ddk(r t|d <09>}n5|d
k(r t|d <0B>}n#|dd k(rt|dd <0A>}n t|dd<0E>}|jdd|||<02>y#t$r|j
}Y<00><>wxYw)N<> r<00>1<>bold<6C>200<30>304<30>cyan<61>3<>green<65>404<30>yellow<6F>4<>red<65>magenta<74>infoz
"%s" %s %s) rr}r<>r<>r<><00> requestline<6E> translate<74>_control_char_tabler<00> _ansi_styler<65>)rr<><00>sizer}r<>s r<00> log_requestzWSGIRequestHandler.log_request<73>s
<00><00> #<23><1D>d<EFBFBD>i<EFBFBD>i<EFBFBD>(<28>D<EFBFBD><19>\<5C>\<5C>N<EFBFBD>!<21>D<EFBFBD>6<EFBFBD><11>4<EFBFBD>+?<3F>+?<3F>*@<40>A<>C<EFBFBD> <12>m<EFBFBD>m<EFBFBD>D<EFBFBD>4<>4<>5<><03><12>4<EFBFBD>y<EFBFBD><04> <0F><01>7<EFBFBD>c<EFBFBD>><3E><1D>c<EFBFBD>6<EFBFBD>*<2A>C<EFBFBD> <11>U<EFBFBD>]<5D> <10> <11>U<EFBFBD>]<5D><1D>c<EFBFBD>6<EFBFBD>*<2A>C<EFBFBD> <11>!<21>W<EFBFBD><03>^<5E><1D>c<EFBFBD>7<EFBFBD>+<2B>C<EFBFBD> <11>U<EFBFBD>]<5D><1D>c<EFBFBD>8<EFBFBD>,<2C>C<EFBFBD> <11>!<21>W<EFBFBD><03>^<5E><1D>c<EFBFBD>6<EFBFBD>5<EFBFBD>1<>C<EFBFBD><1D>c<EFBFBD>6<EFBFBD>9<EFBFBD>5<>C<EFBFBD> <0C><08><08><16><1C>s<EFBFBD>D<EFBFBD>$<24>7<><37>/<1E> #<23><16>"<22>"<22>C<EFBFBD> #<23>s<00>3C(<00>(D<03>?Dc<01>,<00>|jd|g|<02><01><06>y)Nr|<00>r<><00>r<00>format<61>argss rr<>zWSGIRequestHandler.log_error<6F>s<00><00><10><04><08><08><17>&<26>(<28>4<EFBFBD>(rc<01>,<00>|jd|g|<02><01><06>y)Nrr
r s r<00> log_messagezWSGIRequestHandler.log_message<67>s<00><00><10><04><08><08><16><16>'<27>$<24>'rc <01><><00>|j<00>jdd<02>}t||<04>d|j<00><00>d|<02>d<05>g|<03><01><06>y)N<>%z%%z - - [z] <20>
)r<>r<>r <00>log_date_time_string)r<00>type<70>messager r<>s rr<>zWSGIRequestHandler.log<6F>sS<00><00><1D>,<2C>,<2C>.<2E>6<>6<>s<EFBFBD>D<EFBFBD>A<><0E> <0C> <10><1D><1E>f<EFBFBD>T<EFBFBD>%><3E>%><3E>%@<40>$A<><12>G<EFBFBD>9<EFBFBD>B<EFBFBD> O<>
<EFBFBD><12>
r)rr)rr,<00>rrQr\)r|<00> BaseExceptionr<6E>zWSGIEnvironment | NonerrQrrT)rrrr)r<><00> int | strrrrrQ)r rr rrrQ<00>rrrrr rrrQ)rr r!rV<00>__annotations__<5F>propertyr^r<>r<>r<>r<>rr<>r<>r<00> maketrans<6E>ranger<00>ordrr<>rr<><00> __classcell__)<03>.0<EFBFBD>cr<63>s00@rrXrX<00>s<><00><><00>=<3D> <1A><1A> <0A>+<2B><0E>+<2B>O<17>bQB<01>f
<16>GK<01> <0C>"<22> <0C>-C<> <0C> <0A> <0C>&<26>&<26>&<26><1E>-<2D>-<2D>#E<>U<EFBFBD>4<EFBFBD>[<5B>#E<>5<EFBFBD><14>t<EFBFBD>3D<33>#E<>F<>a<EFBFBD><11>r<EFBFBD>!<21>C<EFBFBD><17>M<EFBFBD> <19>F<><06><17>&+<2B><17><03>D<EFBFBD> <09>"<22>8<>:)<29>(<28>
<EFBFBD><EFBFBD>O Gs<00>B
rXc<01>R<00>ts|Sddddddd<07>}|D] }d||<00>d |<00><00>}<00>|<00>d
<EFBFBD>S) Nr <00>r<><00>!<00>#<00>$)r<>rr<>r<>rr<>z[<5B>mz)<01>_log_add_style)r<><00>styles<65>codes<65>styles rrr<00>s[<00><00> <19><14> <0C><12><11><13><14><15><12>  <06>E<EFBFBD><18>/<2F><05><17><05>e<EFBFBD> <0C>~<7E>Q<EFBFBD>u<EFBFBD>g<EFBFBD>.<2E><05>/<2F><14>W<EFBFBD>G<EFBFBD> <1C>rc <01><00> ddlm}ddlm}ddlm}ddlm}ddlm }|<02>}|jdd |<06>
<EFBFBD>}|<00>d }|j|j|jd <0C>|j|j |<00>g<02>}|<02>}|j#<00>j%|<08>j'|<08>j)|j)<00><00>j+|j-<00><00>j/t1j2t4j6<00><00>j9t1j2t4j6<00>t;d <0A><0E>z<00>j=|j?|j@g<01>d<0F><10>j=|jC|jE|<00>|jEd|<00><00><02>g<02>d<0F><10>jG||jI<00>|<06>} | |fS#t$r td<07>d<00>wxYw)Nr)<01>x509)<01>default_backend)<01>hashes)<01>rsa)<01>NameOIDz<Using ad-hoc certificates requires the cryptography library.ii)<03>public_exponent<6E>key_size<7A>backend<6E>*zDummy Certificateim)<01>daysF)<01>criticalz*.)%<25> cryptographyr-<00>cryptography.hazmat.backendsr.<00>cryptography.hazmat.primitivesr/<00>)cryptography.hazmat.primitives.asymmetricr0<00>cryptography.x509.oidr1<00> ImportError<6F> TypeError<6F>generate_private_key<65>Name<6D> NameAttribute<74>ORGANIZATION_NAME<4D> COMMON_NAME<4D>CertificateBuilder<65> subject_name<6D> issuer_name<6D>
public_key<EFBFBD> serial_number<65>random_serial_number<65>not_valid_before<72>dt<64>nowr<00>utc<74>not_valid_afterr<00> add_extension<6F>ExtendedKeyUsage<67>OID_SERVER_AUTH<54>SubjectAlternativeName<6D>DNSName<6D>sign<67>SHA256)
<EFBFBD>cnr-r.r/r0r1r4<00>pkey<65>subject<63>certs
r<00>generate_adhoc_ssl_pairrZ<00>s<><00><00> <14>%<25>@<40>9<>A<>1<> <1E><1F>G<EFBFBD> <0E> #<23> #<23><1D><04>g<EFBFBD> $<24> <06>D<EFBFBD>

<EFBFBD>z<EFBFBD> <10><02><12>i<EFBFBD>i<EFBFBD> <10> <1E> <1E>w<EFBFBD>8<>8<>:M<> N<> <10> <1E> <1E>w<EFBFBD>2<>2<>B<EFBFBD> 7<>
<EFBFBD><06>G<EFBFBD><1E><1F>G<EFBFBD> <0C><1F><1F>!<21> <15><1C>g<EFBFBD> <1E> <14><1B>W<EFBFBD> <1D> <13><1A>D<EFBFBD>O<EFBFBD>O<EFBFBD>%<25> &<26> <16><1D>t<EFBFBD>0<>0<>2<> 3<> <19> <19>"<22>&<26>&<26><18><1C><1C>.<2E> /<2F> <18><1F><12><16><16><08> <0C> <0C>-<2D> <09>s<EFBFBD>0C<30>C<> D<> <16><1D>t<EFBFBD>,<2C>,<2C>d<EFBFBD>.B<>.B<>-C<>D<>u<EFBFBD><1D> U<> <16><1D> <10> '<27> '<27><14><1C><1C>b<EFBFBD>)9<>4<EFBFBD><<3C><<3C>"<22>R<EFBFBD>D<EFBFBD> <09>;R<>(S<> T<><1A>
<17>
<EFBFBD>
<0E><14>d<EFBFBD>F<EFBFBD>M<EFBFBD>M<EFBFBD>O<EFBFBD>W<EFBFBD> -<2D> <09> <10><14>:<3A><15><>K <17><14><17> J<>
<EFBFBD><13> <14><14>s <00>G3<00>3H c <01><><00>|<01>|}t|<02><02>\}}ddlm}|<00>d<05>}|<00>d<06>}t|d<07>5}|j |j |j j<00><00>ddd<01>t|d<07>5}|j |j|j j|jj|j<00><00><08><00>ddd<01>||fS#1swY<00>{xYw#1swY||fSxYw) a<>Creates an SSL key for development. This should be used instead of
the ``'adhoc'`` key which generates a new cert on each server start.
It accepts a path for where it should store the key and cert and
either a host or CN. If a host is given it will use the CN
``*.host/CN=host``.
For more information see :func:`run_simple`.
.. versionadded:: 0.9
:param base_path: the path to the certificate and key. The extension
``.crt`` is added for the certificate, ``.key`` is
added for the key.
:param host: the name of the host. This can be used as an alternative
for the `cn`.
:param cn: the `CN` to use.
N)rVr<00><01> serializationz.crtz.key<65>wb<77><03>encodingr <00>encryption_algorithm) rZr:r]<00>openr<6E><00> public_bytes<65>Encoding<6E>PEM<45> private_bytes<65> PrivateFormat<61>TraditionalOpenSSL<53> NoEncryption) <09> base_path<74>hostrVrYrWr]<00> cert_file<6C> pkey_file<6C>fs r<00>make_ssl_devcertro)s<><00><00>* <0C><17> <11><02>(<28>B<EFBFBD>/<2F>J<EFBFBD>D<EFBFBD>$<24><<3C><1C>+<2B>T<EFBFBD>"<22>I<EFBFBD><1C>+<2B>T<EFBFBD>"<22>I<EFBFBD> <0A>i<EFBFBD><14> <1E>?<3F>!<21> <09><07><07><04>!<21>!<21>-<2D>"8<>"8<>"<<3C>"<<3C>=<3D>><3E>?<3F> <0A>i<EFBFBD><14> <1E>
<EFBFBD>!<21> <09><07><07> <10> <1E> <1E>&<26>/<2F>/<2F>3<>3<>$<24>2<>2<>E<>E<>%2<>%?<3F>%?<3F>%A<> <1F> <0E>
<EFBFBD>
<EFBFBD> <15>i<EFBFBD> <1F><1F>?<3F>?<3F><>
<EFBFBD> <15>i<EFBFBD> <1F><1F>s<00>5C<03>9AC+<03>C(<07>+C7c <01><><00>ddl}ddl}t<00>\}}ddlm}|j <00>\}}|j <00>\}}|j tj|<08>|j tj|<06>tj||j|jj<00><00>tj||j|jj|jj|j!<00><00><04><00>tj"|<05>tj"|<07>t%||<08>} | S)z:Generates an adhoc SSL context for the development server.rNr\r_)<13>atexit<69>tempfilerZr:r]<00>mkstempr<70><00>os<6F>remover<65>rcrdrerfrgrhrir<><00>load_ssl_context)
rqrrrYrWr]<00> cert_handlerl<00> pkey_handlerm<00>ctxs
r<00>generate_adhoc_ssl_contextrzUs<><00><00><11><13>(<28>*<2A>J<EFBFBD>D<EFBFBD>$<24><<3C>%<25>-<2D>-<2D>/<2F><1A>K<EFBFBD><19>%<25>-<2D>-<2D>/<2F><1A>K<EFBFBD><19>
<EFBFBD>O<EFBFBD>O<EFBFBD>B<EFBFBD>I<EFBFBD>I<EFBFBD>y<EFBFBD>)<29>
<EFBFBD>O<EFBFBD>O<EFBFBD>B<EFBFBD>I<EFBFBD>I<EFBFBD>y<EFBFBD>)<29><06>H<EFBFBD>H<EFBFBD>[<5B>$<24>+<2B>+<2B>M<EFBFBD>,B<>,B<>,F<>,F<>G<>H<><06>H<EFBFBD>H<EFBFBD><13> <0C><1A><1A>"<22>+<2B>+<2B>/<2F>/<2F> <20>.<2E>.<2E>A<>A<>!.<2E>!;<3B>!;<3B>!=<3D> <1B>
<EFBFBD><06><07>H<EFBFBD>H<EFBFBD>[<5B><19><06>H<EFBFBD>H<EFBFBD>[<5B><19>
<1A>9<EFBFBD>i<EFBFBD>
0<EFBFBD>C<EFBFBD> <0E>Jrc<01>x<00>|<02>tj}tj|<02>}|j||<01>|S)a<>Loads SSL context from cert/private key files and optional protocol.
Many parameters are directly taken from the API of
:py:class:`ssl.SSLContext`.
:param cert_file: Path of the certificate to use.
:param pkey_file: Path of the private key to use. If not given, the key
will be obtained from the certificate file.
:param protocol: A ``PROTOCOL`` constant from the :mod:`ssl` module.
Defaults to :data:`ssl.PROTOCOL_TLS_SERVER`.
)r<><00>PROTOCOL_TLS_SERVER<45>
SSLContext<EFBFBD>load_cert_chain)rlrm<00>protocolrys rrvrvss8<00><00><10><17><16>*<2A>*<2A><08>
<0A>.<2E>.<2E><18>
"<22>C<EFBFBD><07><17><17> <09>9<EFBFBD>-<2D> <0E>Jrc<01><><00>|<00>/tjttj<00>d<00>}t |t j<00>S)z?Checks if the given error (or the current one) is an SSL error.r )<08>t<>castr<74>r<>r<>r<>r<><00>SSLError)r|s rr<>r<><00>s3<00><00> <0C>}<7D><11><06><06>y<EFBFBD>#<23>,<2C>,<2C>.<2E><11>"3<>4<><05> <15>e<EFBFBD>S<EFBFBD>\<5C>\<5C> *<2A>*rc<01><><00>|jd<01>rtjSd|vr ttd<03>rtjStj
S)zUReturn ``AF_INET4``, ``AF_INET6``, or ``AF_UNIX`` depending on
the host and port.zunix://<2F>:<3A>AF_INET6)r<>r<><00>AF_UNIXr<58>r<><00>AF_INET)rk<00>ports r<00>select_address_familyr<79><00>s><00><00> <0C><EFBFBD><EFBFBD>y<EFBFBD>!<21><15>~<7E>~<7E><1D> <0C><04><1B><17><16><1A>4<><15><EFBFBD><EFBFBD><1E> <11>><3E>><3E>rc<01>,<00>|tk(r1tjj|j d<01>d<00>S t j |||t
jt
j<00>}|ddS#t
j$r||fcYSwxYw)zVReturn a fully qualified socket address that can be passed to
:func:`socket.bind`.<2E>://r<>r<00>)
<EFBFBD>af_unixrtr}<00>abspath<74> partitionr<6E><00> getaddrinfo<66> SOCK_STREAM<41> IPPROTO_TCP<43>gaierror)rkr<><00>family<6C>ress r<00> get_sockaddrr<72><00>s<><00><00>
<0E><17><18><11>w<EFBFBD>w<EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>~<7E>~<7E>e<EFBFBD>4<>Q<EFBFBD>7<>8<>8<><1A><14> <20> <20> <10>$<24><06><06> 2<> 2<>F<EFBFBD>4F<34>4F<34>
<EFBFBD><03>
<0F>q<EFBFBD>6<EFBFBD>!<21>9<EFBFBD><14><> <12>?<3F>?<3F><1A><13>T<EFBFBD>z<EFBFBD><19><1A>s<00>5A9<00>9B<03>Bc<01>P<00>|tjk(rdnd}tj|tj<00>5} |j|df<02>|j <00>dcddd<06>S#t$r#|tjk(rdndcYcddd<06>SwxYw#1swYyxYw)z<>Get the IP address of an external interface. Used when binding to
0.0.0.0 or ::1 to show a more useful URL.
:meta private:
zfd31:f903:5ab5:1::1z10.253.155.219i2<EFBFBD>z::1<> 127.0.0.1Nr)r<>r<><00>
SOCK_DGRAM<EFBFBD>connectrB<00> getsockname)r<>rk<00>ss r<00>get_interface_ipr<70><00>s<><00><00>%+<2B>f<EFBFBD>o<EFBFBD>o<EFBFBD>$=<3D> <20>CS<43>D<EFBFBD> <0F><1D><1D>v<EFBFBD>v<EFBFBD>0<>0<> 1<>"<22>Q<EFBFBD> G<01> <0A>I<EFBFBD>I<EFBFBD>t<EFBFBD>U<EFBFBD>m<EFBFBD> $<24><11>}<7D>}<7D><EFBFBD>q<EFBFBD>!<21> "<22>"<22><><17> G<01>"<22>f<EFBFBD>o<EFBFBD>o<EFBFBD>5<>5<EFBFBD>;<3B> F<> "<22>"<22> G<01><>"<22>"<22>s.<00>B<03>A-<02>B<03>- B<05> B<03>B<05>B<03>B%c<01><><00><00>eZdZdZdZdZeZdZ d d
<EFBFBD>fd<04> Z d d<05>Z
d d <0A>fd<06> Z d<0E>fd<07> Z dd<08>Z <0A>xZS)rYzuA WSGI server that that handles one request at a time.
Use :func:`make_server` to create a server instance.
FTc<01><><00><01>|<04>t}dt|<04>vr|js |jrd|_||_||_||_||_t||<02>x|_
}t|t|<02>|<08>} |tk(rP|<07>Ntjt | <09>} t"j$j'| <09>rt#j(| <09>t*<00> |<00>Y| |d<03><04>|<07>" |j/<00>|j1<00>nY|j5<00>tIjJ||tHjL<00>|_$|jHjO<00>|_(|tk7r|jPd |_|<06>RtS|tT<00>r tW|<06>}n|d k(r
tY<00>}|j[|jHd <0A><0E>|_$||_.nd|_.ddl/} d| j`jcd<11><00><00>|_2y#t2$r<>}
|j5<00>t7|
j8t:j<<00><05>|
j>t>j@k(rRt7d|<02>d<07>t:j<<00><05>t:jBdk(r |d k(rt7d
t:j<<00><05>t;jDd <0B>Yd}
~
<EFBFBD><01>hd}
~
wtF$r|j5<00><00>wxYw)Nr<4E>r<>F)<01>bind_and_activate)<01>filezPort zp is in use by another program. Either identify and stop that program, or start the server with a different port.<2E>darwini<6E>zPOn macOS, try searching for and disabling 'AirPlay Receiver' in System Settings.r r*T)<01> server_siderz Werkzeug/<2F>werkzeug)3rX<00>varsr<73>r<>r<>rkr<>r<>r<>r<><00>address_familyr<79>r?r<>r<>r<>rrtr}<00>exists<74>unlinkr<6B>r6<00> server_bind<6E>server_activaterB<00> server_close<73>print<6E>strerrorr<72>r<><00>errno<6E>
EADDRINUSE<EFBFBD>platform<72>exitrr<><00>fromfdr<64>r<>r<>r<><00>tuplervrz<00> wrap_socketr~<00>importlib.metadata<74>metadata<74>versionr]) rrkr<>r<><00>handlerr<72>r~<00>fdr<64>r<>rD<00> importlibr<62>s <20>rr6zBaseWSGIServer.__init__<5F>s|<00><><00> <13>?<3F>(<28>G<EFBFBD>
<1E>T<EFBFBD>'<27>]<5D> 2<> <10> <1C> <1C><04> 1<> 1<>'1<>G<EFBFBD> $<24><18><04> <09><18><04> <09><16><04><08>"4<><04><1F>/D<>T<EFBFBD>4<EFBFBD>/P<>P<><04><1B>n<EFBFBD>%<25>d<EFBFBD>C<EFBFBD><04>I<EFBFBD>~<7E>F<><0E> <1A>W<EFBFBD> $<24><12><1A><1E>V<EFBFBD>V<EFBFBD>C<EFBFBD><1E>8<>N<EFBFBD><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>n<EFBFBD>-<2D><12> <09> <09>.<2E>)<29> <0E><07><18> <1A> <13>#<23> <19>
<EFBFBD> <0E>:<3A> <16><14> <20> <20>"<22><14>$<24>$<24>&<26>: <11> <1D> <1D> <1F>!<21>-<2D>-<2D><02>N<EFBFBD>F<EFBFBD><N<><N<>O<>D<EFBFBD>K<EFBFBD>"&<26>+<2B>+<2B>"9<>"9<>";<3B>D<EFBFBD> <1F> <19>W<EFBFBD> $<24><1C>+<2B>+<2B>A<EFBFBD>.<2E>D<EFBFBD>I<EFBFBD> <16> "<22><19>+<2B>u<EFBFBD>-<2D>.<2E> <0B><<3C> <0B><1C><07>'<27>8<>:<3A> <0B>%<25>1<>1<>$<24>+<2B>+<2B>4<EFBFBD>1<>P<>D<EFBFBD>K<EFBFBD>6A<36>D<EFBFBD> <1C>#<23>D<EFBFBD> <1C>!<21>!*<2A>9<EFBFBD>+=<3D>+=<3D>+E<>+E<>j<EFBFBD>+Q<>*R<>S<><04><1C><>g<1B> <1C><15>!<21>!<21>#<23><15>a<EFBFBD>j<EFBFBD>j<EFBFBD>s<EFBFBD>z<EFBFBD>z<EFBFBD>2<><14>7<EFBFBD>7<EFBFBD>e<EFBFBD>.<2E>.<2E>.<2E><19><1F><04>v<EFBFBD>&!<21>!<21>!<21>Z<EFBFBD>Z<EFBFBD> <16><1B>|<7C>|<7C>x<EFBFBD>/<2F>D<EFBFBD>D<EFBFBD>L<EFBFBD><1D>F<01>!$<24><1A><1A><1A> <14><08><08><11> <0B> <0B><> <20> <16><14>!<21>!<21>#<23><15> <16>s<00>) H<00> K)<03> B9K <03> K)c<01><00>t||g|<03><01><06>yr\r )rrrr s rr<>zBaseWSGIServer.log.s<00><00> <0C>T<EFBFBD>7<EFBFBD>"<22>T<EFBFBD>"rc<01><><00><01> t<00>|<00>|<01><01>|j<00>y#t$rY<00>wxYw#|j<00>wxYw)N)<01> poll_interval)r<><00> serve_forever<65>KeyboardInterruptr<74>)rr<>r<>s <20>rr<>zBaseWSGIServer.serve_forever1sI<00><><00> <20> <11>G<EFBFBD> !<21> <0A> !<21> ><3E> <11> <1D> <1D> <1F><>!<21> <11> <10> <11><> <11> <1D> <1D> <1F>s<00>$<00> 0<03>3<00>0<03>3<00>Ac<01>><00><01>|jr<01>t<00>|<00> ||<02>Sr\)r<>r<><00> handle_error)r<00>requestrr<>s <20>rr<>zBaseWSGIServer.handle_error9s#<00><><00> <10> "<22> "<22> <11><14>w<EFBFBD>#<23>G<EFBFBD>^<5E><<3C><rc<01><><00>d}t|dd<03>}|g}|jtk(r|jd|j<00><00><02>n<>|j
<00>dnd}|j}|jdvr<>|jd |j<00>d
<EFBFBD><03>|jd k(rd }t tj<00>}nd }t tj<00>}|jd|<03>d|<05>d|j<00><00><06>d|vrd|<04>d<11>}|jd|<03>d|<04>d|j<00><00><06>tddj|<02><00>y)z<Show information about the address when starting the server.zvWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.r<>rz * Running on Nr`ra><00>::<3A>0.0.0.0z * Running on all addresses (<28>)r<>r<>z[::1]r<>r<><00>[<5B>]rr) rr<>r<><00>appendrkr~r<>r<>r<>r<>r<>r <00>join)r<00> dev_warning<6E>messagesr<73><00>display_hostname<6D> localhosts r<00> log_startupzBaseWSGIServer.log_startupAs5<00><00> A<01> <14>"<22>+<2B>v<EFBFBD>u<EFBFBD>=<3D> <0B><1F>=<3D><08> <0F> <1E> <1E>'<27> )<29> <14>O<EFBFBD>O<EFBFBD>n<EFBFBD>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>K<EFBFBD>8<> 9<>#<23>/<2F>/<2F>7<>V<EFBFBD>W<EFBFBD>F<EFBFBD>#<23>y<EFBFBD>y<EFBFBD> <1C><13>y<EFBFBD>y<EFBFBD>-<2D>-<2D><18><0F><0F>"?<3F><04> <09> <09>{<7B>!<21> L<>M<><17>9<EFBFBD>9<EFBFBD> <09>)<29> +<2B>I<EFBFBD>'7<><06><0E><0E>'G<>$<24> '<27>I<EFBFBD>'7<><06><0F><0F>'H<>$<24><18><0F><0F>.<2E><16><08><03>I<EFBFBD>;<3B>a<EFBFBD><04> <09> <09>{<7B> S<>T<><12>&<26>&<26>%&<26>'7<>&8<><01>#:<3A> <20> <14>O<EFBFBD>O<EFBFBD>n<EFBFBD>V<EFBFBD>H<EFBFBD>C<EFBFBD>8H<38>7I<37><11>4<EFBFBD>9<EFBFBD>9<EFBFBD>+<2B>V<> W<> <0C>V<EFBFBD>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>x<EFBFBD>(<28>)r)NFNN)rkrr<>r?r<>r+r<><00>type[WSGIRequestHandler] | Noner<65>rSr~<00>_TSSLContextArg | Noner<65><00>
int | NonerrQr)g<00>?)r<><00>floatrrQ)r<>rr<00>tuple[str, int] | strrrQr)rr r!rVr<>r<><00> LISTEN_QUEUE<55>request_queue_size<7A>allow_reuse_addressr6r<>r<>r<>r<>r<00>r<>s@rrYrY<00>s<><00><><00><08>
<18>K<EFBFBD><18>L<EFBFBD>%<25><16><1E><17>48<34>#(<28>.2<EFBFBD><1D>eT<01><11>eT<01><12>eT<01><1D> eT<01>
1<> eT<01> !<21> eT<01>,<2C>eT<01> <17>eT<01>
<0E>eT<01>N#<23> <20>=<3D><1C>=<3D>.C<>=<3D> <0A>=<3D> *rrYc<01><00>eZdZdZdZdZy)<04>ThreadedWSGIServerz<72>A WSGI server that handles concurrent requests in separate
threads.
Use :func:`make_server` to create a server instance.
TN)rr r!rVr<><00>daemon_threadsr"rrr<>r<>ds<00><00><08> <17>K<EFBFBD><19>Nrr<>c<01>V<00><00>eZdZdZdZ d d<05>fd<03> Z<05>xZS)<06>ForkingWSGIServerz<72>A WSGI server that handles concurrent requests in separate forked
processes.
Use :func:`make_server` to create a server instance.
Tc <01>`<00><01>ts td<01><00>t<00> |<00> |||||||<08>||_y)Nz'Your platform does not support forking.)<05>can_forkrAr<>r6<00> max_children)
rrkr<>r<><00> processesr<73>r<>r~r<>r<>s
<20>rr6zForkingWSGIServer.__init__xs7<00><><00><18><1C>F<>G<> G<> <0A><07><18><14>t<EFBFBD>S<EFBFBD>'<27>3E<33>{<7B>TV<54>W<>%<25><04>r)<05>(NFNN)rkrr<>r?r<>r+r<>r?r<>r<>r<>rSr~r<>r<>r<>rrQ)rr r!rVr<>r6rr<>s@rr<>r<>os<><00><><00><08> <18>L<EFBFBD><1C>37<33>#(<28>.2<EFBFBD><1D>&<26><11>&<26><12>&<26><1D> &<26>
<17> &<26> 1<> &<26>!<21>&<26>,<2C>&<26> <17>&<26>
<0E>&<26>&rr<>c
<01><><00>|r|dkDr td<02><00>|rt|||||||<08><03>S|dkDrt||||||||<08><03>St|||||||<08><03>S)a6Create an appropriate WSGI server instance based on the value of
``threaded`` and ``processes``.
This is called from :func:`run_simple`, but can be used separately
to have access to the server object, such as to run it in a separate
thread.
See :func:`run_simple` for parameter docs.
r z4Cannot have a multi-thread and multi-process server.<2E>r<>)rAr<>r<>rY) rkr<>r<><00>threadedr<64><00>request_handlerr<72>r~r<>s r<00> make_serverr<72><00>s<><00><00>(<10>I<EFBFBD><01>M<EFBFBD><18>O<>P<>P<><0F>!<21> <10>$<24><03>_<EFBFBD>.@<40>+<2B>RT<52>
<EFBFBD>
<EFBFBD><11>1<EFBFBD>}<7D> <20> <10> <10> <0F> <15> <1B> <1E> <17><11> 
<EFBFBD>
<EFBFBD> <1A> <0C>d<EFBFBD>C<EFBFBD><1F>*<<3C>k<EFBFBD>b<EFBFBD> <06>rc<01>F<00>tjjd<01>dk(S)zqCheck if the server is running as a subprocess within the
Werkzeug reloader.
.. versionadded:: 0.10
<20>WERKZEUG_RUN_MAIN<49>true)rtr<>r<>r"rr<00>is_running_from_reloaderr<72><00>s<00><00> <0E>:<3A>:<3A>><3E>><3E>-<2D> .<2E>&<26> 8<>8rc <01><><00>t|t<00>s td<01><00>| rddlm}||| <0A>}|r+ddlm}|||<05><05>}|jj|<00>t<00>sd}nttjd<00>}t||||
| | |||<12><08> }|jjd <09>t|j!<00><00>tjd<t<00>s&|j#<00>t%d
t'd d <0C><00>|r/dd lm} ||j,|||| <09><0E>|j/<00>y|j-<00>y#|j/<00>wxYw)aStart a development server for a WSGI application. Various
optional features can be enabled.
.. warning::
Do not use the development server when deploying to production.
It is intended for use only during local development. It is not
designed to be particularly efficient, stable, or secure.
:param hostname: The host to bind to, for example ``'localhost'``.
Can be a domain, IPv4 or IPv6 address, or file path starting
with ``unix://`` for a Unix socket.
:param port: The port to bind to, for example ``8080``. Using ``0``
tells the OS to pick a random free port.
:param application: The WSGI application to run.
:param use_reloader: Use a reloader process to restart the server
process when files are changed.
:param use_debugger: Use Werkzeug's debugger, which will show
formatted tracebacks on unhandled exceptions.
:param use_evalex: Make the debugger interactive. A Python terminal
can be opened for any frame in the traceback. Some protection is
provided by requiring a PIN, but this should never be enabled
on a publicly visible server.
:param extra_files: The reloader will watch these files for changes
in addition to Python modules. For example, watch a
configuration file.
:param exclude_patterns: The reloader will ignore changes to any
files matching these :mod:`fnmatch` patterns. For example,
ignore cache files.
:param reloader_interval: How often the reloader tries to check for
changes.
:param reloader_type: The reloader to use. The ``'stat'`` reloader
is built in, but may require significant CPU to watch files. The
``'watchdog'`` reloader is much more efficient but requires
installing the ``watchdog`` package first.
:param threaded: Handle concurrent requests using threads. Cannot be
used with ``processes``.
:param processes: Handle concurrent requests using up to this number
of processes. Cannot be used with ``threaded``.
:param request_handler: Use a different
:class:`~BaseHTTPServer.BaseHTTPRequestHandler` subclass to
handle requests.
:param static_files: A dict mapping URL prefixes to directories to
serve static files from using
:class:`~werkzeug.middleware.SharedDataMiddleware`.
:param passthrough_errors: Don't catch unhandled exceptions at the
server level, let the server crash instead. If ``use_debugger``
is enabled, the debugger will still catch such errors.
:param ssl_context: Configure TLS to serve over HTTPS. Can be an
:class:`ssl.SSLContext` object, a ``(cert_file, key_file)``
tuple to create a typical context, or the string ``'adhoc'`` to
generate a temporary self-signed certificate.
.. versionchanged:: 2.1
Instructions are shown for dealing with an "address already in
use" error.
.. versionchanged:: 2.1
Running on ``0.0.0.0`` or ``::`` shows the loopback IP in
addition to a real IP.
.. versionchanged:: 2.1
The command-line interface was removed.
.. versionchanged:: 2.0
Running on ``0.0.0.0`` or ``::`` shows a real IP address that
was bound as well as a warning not to run the development server
in production.
.. versionchanged:: 2.0
The ``exclude_patterns`` parameter was added.
.. versionchanged:: 0.15
Bind to a Unix socket by passing a ``hostname`` that starts with
``unix://``.
.. versionchanged:: 0.10
Improved the reloader and added support for changing the backend
through the ``reloader_type`` parameter.
.. versionchanged:: 0.9
A command-line interface was added.
.. versionchanged:: 0.8
``ssl_context`` can be a tuple of paths to the certificate and
private key files.
.. versionchanged:: 0.6
The ``ssl_context`` parameter was added.
.. versionchanged:: 0.5
The ``static_files`` and ``passthrough_errors`` parameters were
added.
zport must be an integerr )<01>SharedDataMiddleware)<01>DebuggedApplication)<01>evalexN<78>WERKZEUG_SERVER_FDr<44>TrzPress CTRL+C to quitr<74>)<01>run_with_reloader)<04> extra_files<65>exclude_patterns<6E>interval<61> reloader_type)r<>r?r><00>middleware.shared_datar<61><00>debugr<67><00> trusted_hostsr<73>r<>rtr<>r<>r<><00>set_inheritabler<00>filenor<6F>r r<00> _reloaderr<72>r<>r<>)<15>hostnamer<65><00> application<6F> use_reloader<65> use_debugger<65>
use_evalexr<EFBFBD>r<><00>reloader_intervalr<6C>r<>r<>r<><00> static_filesr<73>r~r<>r<>r<><00>srvr<76>s r<00>
run_simpler<00>s;<00><00>` <16>d<EFBFBD>C<EFBFBD> <20><17>1<>2<>2<><13>@<40>*<2A>;<3B> <0C>E<> <0B><13>.<2E>)<29>+<2B>j<EFBFBD>I<> <0B> <14>!<21>!<21>(<28>(<28><18>2<> #<23> %<25> <11><02> <10><12><1A><1A>0<>1<> 2<><02>
<15><10> <0C><13><10><11><17><1A><13> <0A>
<06>C<EFBFBD><08>J<EFBFBD>J<EFBFBD><1E><1E>t<EFBFBD>$<24>'*<2A>3<EFBFBD>:<3A>:<3A><<3C>'8<>B<EFBFBD>J<EFBFBD>J<EFBFBD>#<23>$<24> #<23> %<25> <0B><0F><0F><19> <0C>V<EFBFBD>[<5B>!7<><18>B<>C<><13>0<> <1F> <1D><13>!<21>!<21>'<27>!1<>*<2A>+<2B>  <0E> <10> <1C> <1C> <1E> <0B><19><19><1B><> <10> <1C> <1C> <1E>s <00>E<00>E )r<>rr)rrrr\)rV<00>
str | Nonerz2tuple[Certificate, RSAPrivateKeyWithSerialization])NN)rjrrkrrVrrztuple[str, str])rr))rlrrmrrr<>rr))r|zException | NonerrS)rkrr<>r?r<00>socket.AddressFamily)rkrr<>r?r<>rrr<>)r<>rrr)Fr NFNN)rkrr<>r?r<>r+r<>rSr<>r?r<>r<>r<>rSr~r<>r<>r<>rrYrR) FFTNNr <00>autoFr NNFN)"r<>rr<>r?r<>r+r<>rSrrSrrSr<><00>t.Iterable[str] | Noner<65>r rr?r<>rr<>rSr<>r?r<>r<>rz'dict[str, str | tuple[str, str]] | Noner<65>rSr~r<>rrQ)PrV<00>
__future__rr<><00>iortr<>r<><00> socketserverr<72><00>typingr<67>rrKrr<00> http.serverrr<00> urllib.parser r
<00> _internalr r<00>
exceptionsr<00>urlsrr<>r<>r<><00> SSLEOFErrorrrr=rr(r<00>
__import__r<EFBFBD>r<>r'r<>r<>r<>r<><00>Optional<61>Unionr<6E>r<00>Literal<61>_TSSLContextArg<72> TYPE_CHECKING<4E>_typeshed.wsgir+r,<00>-cryptography.hazmat.primitives.asymmetric.rsar-<00>cryptography.x509r.<00> RawIOBaser0rXrrZrorzrvr<>r<>r<>r<>rY<00>ThreadingMixInr<6E>r<>r<>r<>rr"rr<00><module>rs<><00><01> <04>#<23> <0C> <09> <09><10> <0A><13>
<EFBFBD><12>#<23><1E><1D>.<2E>"<22> <20>!<21><1B>+<2B>+<2B><1C>B<01><0E> <18><0E><0E><0E> <0B><0F><0F>><06><1D>:<3A><06>"<16><0E><05>7<EFBFBD>7<EFBFBD>d<EFBFBD>?<3F><1F><12>:<3A><1E> <13>2<EFBFBD>v<EFBFBD> <1E><08> <0B><1F>,<2C>,<2C>L<EFBFBD> <0A> <0A><13><14>n<EFBFBD>n<EFBFBD>G<EFBFBD><13> <0C><13>*<2A>*<2A><05>G<EFBFBD>G<EFBFBD> <1C>e<EFBFBD>C<EFBFBD><11><1A><1A>C<EFBFBD><1F>$8<>9<>1<EFBFBD>9<EFBFBD>9<EFBFBD>W<EFBFBD>;M<> M<>N<><02><0F><05>?<3F>?<3F>.<2E>.<2E><06>.<2E>;<14>R<EFBFBD>\<5C>\<5C>;<14>|D
<EFBFBD>/<2F>D
<EFBFBD>N
<1D>(<1A>.<16><12>.<16>7<>.<16>d?C<01>) <20><12>) <20>$<24>) <20>1;<3B>) <20><14>) <20>X<0F>>JN<01><0F><12><0F>)<29><0F><F<><0F><13><0F>*+<2B><1A><15>
<0A><15><18><15>"6<><15><1A><15>""<22>$e*<2A>Z<EFBFBD>e*<2A>P<1A><1C>4<>4<>n<EFBFBD><1A>&<26> <0C>n<EFBFBD>&<26>><1B><16>7;<3B>$<24>*.<2E><19>*<06>
<0A>*<06>
<0A>*<06>
<19>*<06><13> *<06>
<13> *<06> 5<> *<06><1D>*<06>(<28>*<06> <13>*<06><14>*<06>Z9<><1F><1E><1B>*.<2E>/3<><1E><1F><1A><16>7;<3B><@<40>$<24>*.<2E>!e<1C><11>e<1C>
<0A>e<1C>!<21>e<1C><17> e<1C>
<17> e<1C> <15> e<1C>(<28>e<1C>-<2D>e<1C><1B>e<1C><17>e<1C><13>e<1C><13>e<1C>5<>e<1C>:<3A>e<1C><1D>e<1C> (<28>!e<1C>"
<EFBFBD>#e<1C><>e<13>
B<01><0E><0E> <14>+<2B>C<EFBFBD>!0<>&<26>.<2E>.<2E> A<><1D>
B<01><>" <17><1F><1E><0E><1F><><16><13><12>G<EFBFBD><13>s6<00>-"H#<00>!I<00> I<00>#$I <03>
I <03>I<03>I<03>I'<03>&I'