a
    -=ic^?                  	   @   sd  U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ ejrd dlmZ d dlmZ d d	lmZ d
dlmZ daeje j ed< e Zedd
d
 Zedd ej ej dD ZdddddZ ee!de!ddD ]&Z"de"d#de e"$d
ej%< qe&dZ'e&dZ(dZ)ej&dej*d Z+G d!d" d"Z,e, Z-ej.e/ej0e/ge/f d#d$d%Z1ej.e2ej0e/ge2f d#d&d%Z1ej3ej0e/gej3f d#d'd%Z1ej4ej3d(f dd)d*d+Z5e6 Z7e7d,fej8e/e2f e/e/e2d-d.d/Z9ej.dfdeje/ e/e:dd0d1d2Z;ej.dgej<eje/ e/e:e/d0d3d2Z;e7d,d4fejej< eje/ e/e:ejej8e/e2f  d0d5d2Z;dhe/e/e/e/d8d9d:Z=die/e/e/e/d8d;d<Z>ej8d= d>d?d@dAZ?e je:dBdCdDZ@G dEdF dFe jAZBe/e/ej<ej<ddGdHdIZCej.dddJdKdLZDej.eedJdMdLZDeje eje dJdNdLZDeEdOZFG dPdQ dQejGeF ZHe2e2dRdSdTZIe2e2dRdUdVZJe2ejKej4e2e2f  dRdWdXZLe/e2dYdZd[ZMej8e/e2f e/dYd\d]ZNej.dddYd^d_ZOej.e/e2dYd`d_ZOeje/ eje2 dYdad_ZOdjejdb dbdcdddeZPdS )k    N)date)datetime)timezone)chain)WeakKeyDictionary)StartResponse)WSGIApplication)WSGIEnvironment   )Request_loggeri  c                 c   s   | ]}| d V  qdS )asciiNencode).0c r   c/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/werkzeug/_internal.py	<genexpr>   s   r   z/=!#$%&'*+-.^_`|~:s   \054s   \073s   \"s   \\)   ,   ;   "   \          \Z03olatin1s   \\[0-3][0-7][0-7]s   [\\].s/   [\w\d!#%&\'~_`><@,:/\$\*\+\-\.\^\|\)\(\?\}\{\=]s   
    (?P<key>[^=;]+)
    (?:\s*=\s*
        (?P<val>
            "(?:[^\\"]|\\.)*" |
             (?:.*?)
        )
    )?
    \s*;
)flagsc                   @   s(   e Zd ZedddZedddZdS )_Missingreturnc                 C   s   dS )Nzno valuer   selfr   r   r   __repr__3   s    z_Missing.__repr__c                 C   s   dS )N_missingr   r"   r   r   r   
__reduce__6   s    z_Missing.__reduce__N)__name__
__module____qualname__strr$   r&   r   r   r   r   r   2   s   r   )	referencer!   c                 C   s   d S Nr   r+   r   r   r   _make_encode_wrapper=   s    r.   c                 C   s   d S r,   r   r-   r   r   r   r.   B   s    c                 C   s   t | trdd S tddS )zCreate a function that will be called with a string argument. If
    the reference is bytes, values will be encoded to bytes.
    c                 S   s   | S r,   r   )xr   r   r   <lambda>L       z&_make_encode_wrapper.<locals>.<lambda>r   r   )
isinstancer*   operatormethodcallerr-   r   r   r   r.   G   s    
.)valuer!   c                    sH   | sdS t | d trtnt t fdd| D rDtd| ddS )z0Ensure tuple items are all strings or all bytes.Nr   c                 3   s   | ]}t |  V  qd S r,   )r2   )r   itemZ	item_typer   r   r   X   r1   z#_check_str_tuple.<locals>.<genexpr>z(Cannot mix str and bytes arguments (got ))r2   r*   bytesany	TypeError)r5   r   r7   r   _check_str_tupleQ   s
    r<   strict)r/   charseterrorsr!   c                 C   sN   | d u st | tr| S t | ttfr,t| S t | trB| ||S tdd S )NzExpected bytes)r2   r9   	bytearray
memoryviewr*   r   r;   )r/   r>   r?   r   r   r   	_to_bytes_   s    
rB   )r/   r>   r?   allow_none_charsetr!   c                 C   s   d S r,   r   r/   r>   r?   rC   r   r   r   _to_strn   s    rE   c                 C   s   d S r,   r   rD   r   r   r   rE   x   s    Fc                 C   sH   | d u st | tr| S t | ttfs,t| S |d u r<|r<| S | ||S r,   )r2   r*   r9   r@   decoderD   r   r   r   rE      s    utf-8replace)sr>   r?   r!   c                 C   s   |  d||S Nr   )r   rF   rI   r>   r?   r   r   r   _wsgi_decoding_dance   s    rL   c                 C   s(   t | tr| d|S | |d|S rJ   )r2   r9   rF   r   rK   r   r   r   _wsgi_encoding_dance   s    
rM   )r	   r   r	   )objr!   c                 C   s.   t | d| }t|ts*J t| jd|S )Nenvironz- is not a WSGI environment (has to be a dict))getattrr2   dicttyper'   )rN   envr   r   r   _get_environ   s    rT   )loggerr!   c                    s@   |    | }|r<t fdd|jD r,dS |js4q<|j}qdS )znCheck if there is a handler in the logging chain that will handle
    the given logger's effective level.
    c                 3   s   | ]}|j  kV  qd S r,   level)r   handlerrV   r   r   r      r1   z%_has_level_handler.<locals>.<genexpr>TF)getEffectiveLevelr:   handlers	propagateparent)rU   currentr   rV   r   _has_level_handler   s    r^   c                       s&   e Zd ZdZdd fddZ  ZS )_ColorStreamHandlerz=On Windows, wrap stream with Colorama for ANSI style support.Nr    c                    s@   zdd l }W n ty"   d }Y n0 |tj}t | d S )Nr   )coloramaImportErrorAnsiToWin32sysstderrsuper__init__)r#   r`   stream	__class__r   r   rf      s    
z_ColorStreamHandler.__init__)r'   r(   r)   __doc__rf   __classcell__r   r   rh   r   r_      s   r_   )rR   messageargskwargsr!   c                 O   sb   t du r>tda t jtjkr*t tj tt s>t t	  t
t | | g|R i | dS )a  Log a message to the 'werkzeug' logger.

    The logger is created the first time it is needed. If there is no
    level set, it is set to :data:`logging.INFO`. If there is no handler
    for the logger's effective level, a :class:`logging.StreamHandler`
    is added.
    NZwerkzeug)r   logging	getLoggerrW   NOTSETsetLevelINFOr^   
addHandlerr_   rP   rstrip)rR   rl   rm   rn   r   r   r   _log   s    

rv   )dtr!   c                 C   s   d S r,   r   rw   r   r   r   
_dt_as_utc   s    ry   c                 C   s   d S r,   r   rx   r   r   r   ry      s    c                 C   s@   | d u r| S | j d u r$| jtjdS | j tjkr<| tjS | S )N)tzinfo)rz   rH   r   utc
astimezonerx   r   r   r   ry      s    
_TAccessorValuec                	   @   s  e Zd ZdZdZdeeje ejej	egef  ejej	egef  eje
 eje ddddZejejeejf ddd	Zejded
dddZejejeedddZejej eejed
f dddZejeddddZejddddZedddZdS )_DictAccessorPropertyz7Baseclass for `environ_property` and `header_property`.FN)namedefault	load_func	dump_func	read_onlydocr!   c                 C   s0   || _ || _|| _|| _|d ur&|| _|| _d S r,   )r   r   r   r   r   rj   )r#   r   r   r   r   r   r   r   r   r   rf     s    	z_DictAccessorProperty.__init__)instancer!   c                 C   s   t d S r,   )NotImplementedErrorr#   r   r   r   r   lookup  s    z_DictAccessorProperty.lookupz&_DictAccessorProperty[_TAccessorValue])r   ownerr!   c                 C   s   d S r,   r   r#   r   r   r   r   r   __get__  s    z_DictAccessorProperty.__get__c                 C   s   d S r,   r   r   r   r   r   r     s    c              	   C   sh   |d u r| S |  |}| j|vr&| jS || j }| jd urdz| |W S  ttfyb   | j Y S 0 |S r,   )r   r   r   r   
ValueErrorr;   )r#   r   r   Zstorager5   r   r   r   r     s    



)r   r5   r!   c                 C   sD   | j rtd| jd ur0| || || j< n|| || j< d S Nzread only property)r   AttributeErrorr   r   r   )r#   r   r5   r   r   r   __set__4  s
    
z_DictAccessorProperty.__set__c                 C   s&   | j rtd| || jd  d S r   )r   r   r   popr   r   r   r   r   
__delete__=  s    z _DictAccessorProperty.__delete__r    c                 C   s   dt | j d| j dS )N< >)rR   r'   r   r"   r   r   r   r$   C  s    z_DictAccessorProperty.__repr__)NNNNN)r'   r(   r)   rj   r   r*   tOptionalr}   Callableboolrf   AnyMutableMappingr   typingoverloadrR   r   Unionr   r   r$   r   r   r   r   r~      s:        	r~   )br!   c                 C   sh   t  }d}tj}|j}| D ]0}|dtj}|tvrBd}|||}|| q|rXt|S td| d S )NTr
   Fr   )	r@   _cookie_quoting_mapgetextendto_bytesrc   	byteorder_legal_cookie_charsr9   )r   bufZ	all_legalZ_lookup_pushZchar_intcharr   r   r   _cookie_quoteG  s    

r   c           	      C   sT  t | dk r| S | d d dks0| dd  dkr4| S | dd } d}t | }t }|j}d|  krn|k rLn nt| |}t| |}|s|s|| |d   qLd }}|r|d}|r|d}|r|r||k r|| ||  || |d |d   |d }qX|| ||  |t| |d |d  d |d }qXt	|S )N   r
   r   r         )
lenr@   r   	_octal_research	_quote_restartappendintr9   )	r   inrvr   o_matchq_matchjkr   r   r   _cookie_unquoteY  s8     


 
r   c                 c   sd   d}t | }||k r`t| d |}|s*q`|d }|dpDd}|d}|t|fV  qdS )z8Lowlevel cookie parsing facility that operates on bytes.r   r   keyvalr1   N)r   
_cookie_rer   groupstripendr   )r   r   r   matchr   r5   r   r   r   _cookie_parse_impl}  s    
r   )domainr!   c                 C   sR   t | tr| d | S z| dW S  ty6   Y n0 ddd | dD S )Nr      .c                 s   s   | ]}| d V  qdS )idnaNr   r   pr   r   r   r     r1   z_encode_idna.<locals>.<genexpr>.)r2   r9   rF   r   UnicodeErrorjoinsplitr   r   r   r   _encode_idna  s    

r   c                    s^   t | tr0z| d} W n ty.   |  Y S 0 ttddd d fdd| dD S )	Nr   )partr!   c                 S   s0   z|  dW S  ty*   |  dd Y S 0 d S )Nr   r   ignore)rF   r   )r   r   r   r   decode_part  s    z!_decode_idna.<locals>.decode_partr   c                 3   s   | ]} |V  qd S r,   r   r   r   r   r   r     r1   z_decode_idna.<locals>.<genexpr>r   )r2   r*   r   r   r9   r   r   r   r   r   r   _decode_idna  s    

r   c                 C   s   d S r,   r   r   r   r   r   _make_cookie_domain  s    r   c                 C   s   d S r,   r   r   r   r   r   r     s    c                 C   sD   | d u rd S t | } d| v r,| ddd } d| v r8| S tdd S )N   :r
   r   r   a'  Setting 'domain' for a cookie on a server running locally (ex: localhost) is not supported by complying browsers. You should have something like: '127.0.0.1 localhost dev.localhost' on your hosts file and then point your server to run on 'dev.localhost' and also set 'domain' for 'dev.localhost')r   r   r   r   r   r   r   r     s    r   )appr!   c                    sN   t tddd}ddd |d D dd	tjt  d
 fdd}|S )z0Like the name says.  But who knows how it works?)gyverr!   c                 S   s&   dd l }dd l}||| dS )Nr   r   )base64zlib
decompress	b64decoderF   )r   r   r   r   r   r   bzzzzzzz  s    z_easteregg.<locals>.bzzzzzzz
c                 S   s    g | ]}|d t | d  qS )M   r   )r   )r   r/   r   r   r   
<listcomp>  s   z_easteregg.<locals>.<listcomp>s#	  
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
7f2zLkGNv8b191cD/3vs9Q833z8tr	   r   )rO   start_responser!   c                    sz   dt tjtjt t f  tjtjtgtjf d fdd}d urZ| ddkrZ| |S |ddg d d	d
gS )N)statusheadersexc_infor!   c                    s   | d  | ||S )N)zX-Powered-ByZWerkzeug)r   )r   r   r   r   r   r   injecting_start_response  s    
zA_easteregg.<locals>.easteregged.<locals>.injecting_start_responseZQUERY_STRINGZmacgybarchakkuz200 OK)zContent-Typez	text/htmla  <!doctype html>
<html lang=en>
<head>
<title>About Werkzeug</title>
<style type="text/css">
  body { font: 15px Georgia, serif; text-align: center; }
  a { color: #333; text-decoration: none; }
  h1 { font-size: 30px; margin: 20px 0 10px 0; }
  p { margin: 0 0 30px 0; }
  pre { font: 11px 'Consolas', 'Monaco', monospace; line-height: 0.95; }
</style>
</head>
<body>
<h1><a href="http://werkzeug.pocoo.org/">Werkzeug</a></h1>
<p>the Swiss Army knife of Python web development.</p>
<pre>z


</pre>
</body>
</html>r   )N)	r*   r   ListTupler   r   r9   r   r   )rO   r   r   r   r   r   r   easteregged   s     
z_easteregg.<locals>.easteregged)r9   r*   r   
splitlinesr   Iterable)r   r   r   r   r   r   
_easteregg  s    )$r   )...)...)rG   rH   )rG   rH   )N)Qro   r3   restringrc   r   r   r   r   r   	itertoolsr   weakrefr   TYPE_CHECKINGZ_typeshed.wsgir   r   r	   Zwrappers.requestr   r   r   Logger__annotations__Z_signature_cache	toordinalZ
_epoch_ord	frozensetascii_lettersdigitsr   r   rangeZ_ir   r   r   compiler   r   Z_legal_cookie_chars_reVERBOSEr   r   r%   r   r*   r   r.   r9   AnyStrr   r<   getdefaultencodingZ_default_encodingr   rB   r   rE   r   rL   rM   rT   r^   StreamHandlerr_   rv   ry   TypeVarr}   Genericr~   r   r   Iteratorr   r   r   r   r   r   r   r   r   <module>   s   
$


 
   	   
  	
K$ 