B
    18\&              
   @   s`  d ddddddddd	g
Z d
dlZd
dlmZmZmZ dZdZdZdd e	dD Z
e
dd Ze
dd Zx,ded ed D ]Zeeee< qW deed< xdD ]Zeeee< qW dd Zdd Zdd Zdd Zd+ddZd d	 Zd!d Zd,d#dZedd Zxd$D ]Zeeee< qW d%efd&dZefd'dZeZeZd(d) Zd*d ZdS )-body_decodebody_encodebody_lengthdecodedecodestringheader_decodeheader_encodeheader_lengthquoteunquote    N)ascii_lettersdigits	hexdigitsz

 c             C   s   g | ]}d | qS )z=%02X ).0cr   r   T/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/email/quoprimime.py
<listcomp>7   s    r      s   -!*+/ascii_ s_    !"#$%&'()*+,-./0123456789:;<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	c             C   s   t | t|  kS )N)chr_QUOPRI_HEADER_MAP)octetr   r   r   header_checkJ   s    r   c             C   s   t | t|  kS )N)r   _QUOPRI_BODY_MAP)r   r   r   r   
body_checkO   s    r   c             C   s   t dd | D S )Nc             s   s   | ]}t t| V  qd S )N)lenr   )r   r   r   r   r   	<genexpr>^   s    z header_length.<locals>.<genexpr>)sum)	bytearrayr   r   r   r   T   s    
c             C   s   t dd | D S )Nc             s   s   | ]}t t| V  qd S )N)r    r   )r   r   r   r   r   r!   h   s    zbody_length.<locals>.<genexpr>)r"   )r#   r   r   r   r   a   s    c             C   sf   t |tst|}| s&| |  n<t| d t| |krT| d  || 7  < n| |  d S )N)
isinstancestrr   appendlstripr    )Lsmaxlenextrar   r   r   _max_appendk   s    
r-   c             C   s   t t| dd dS )N         )r   int)r*   r   r   r   r
   v   s    c             C   s   t t|  S )N)_QUOPRI_MAPord)r   r   r   r   r	   {   s    
iso-8859-1c             C   s$   | sdS |  dt}d||f S )Nr   latin1z=?%s?q?%s?=)r   	translater   )Zheader_bytescharsetencodedr   r   r   r      s    s   
L   c             C   s  |dk rt d| s| S | t} d| }|d }g }|j}x.|  D ] }d}t|d | }	x||	kr|| }
||
d  dkr||||
d   |
d }qd||
d  dkr||||
  |
d }qd||||
 d  |
}qdW |rZ|d dkrZ||	 }|d	krt|d }n(|dkr4|d | }n|t|d  }|||d |  qH|||d   qHW | d tkr|d
 ||S )N   zmaxlinelen must be at least 4=r.   r      r$   z 	r/   r   )	
ValueErrorr6   _QUOPRI_BODY_ENCODE_MAPr'   
splitlinesr    r	   CRLFjoin)body
maxlineleneolZ
soft_breakZmaxlinelen1Zencoded_bodyr'   linestartZ	laststartstopZroomqr   r   r   r      sD    





c             C   s   | s| S d}x|   D ]}| }|s0||7 }qd}t|}x||k r|| }|dkrh||7 }|d7 }nv|d |kr|d7 }q>n^|d |k r||d  tkr||d  tkr|t|||d  7 }|d7 }n||7 }|d7 }||kr>||7 }q>W qW | d dkr||r|d d }|S )	Nr   r   r;   r.   r<   r/   r$   z
)r?   rstripr    r   r
   endswith)r8   rD   ZdecodedrE   inr   r   r   r   r      s8    

,
c             C   s   |  d}t|S )Nr   )groupr
   )matchr*   r   r   r   _unquote_match  s    
rO   c             C   s    |  dd} tjdt| tjdS )Nr   r   z=[a-fA-F0-9]{2})flags)replaceresubrO   ASCII)r*   r   r   r   r   #  s    )r   )r4   ) __all__rR   stringr   r   r   r@   NLEMPTYSTRINGranger2   r   r   encoder   r   r3   r   r   r   r   r-   r
   r	   r   r>   r   r   r   r   rO   r   r   r   r   r   <module>   sN   




O0