???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5d&^  ã                   @   sæ   d ddg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	 e	j
Z
dZdZd	Zd
ZdZdZdZe
dƒZe
dƒZe dejejB ¡Ze d¡Ze d¡ZejjZdd„ Zddd„ZG dd „ d ƒZG dd„ dƒZG dd„ de ƒZ!dS )ÚHeaderÚdecode_headerÚmake_headeré    N)ÚHeaderParseError)ÚcharsetÚ
ú ó    z        Ú éN   z 	úus-asciizutf-8ai  
  =\?                   # literal =?
  (?P<charset>[^?]*?)   # non-greedy up to the next ? is the charset
  \?                    # literal ?
  (?P<encoding>[qQbB])  # either a "q" or a "b", case insensitive
  \?                    # literal ?
  (?P<encoded>.*?)      # non-greedy up to the next ?= is the encoded string
  \?=                   # literal ?=
  z[\041-\176]+:$z
\n[^ \t]+:c              	   C   s˜  t | dƒrdd„ | jD ƒS t | ¡s.| d fgS g }|  ¡ D ]€}t |¡}d}|r:| d¡}|rj| ¡ }d}|r~| |d d f¡ |rL| d¡ 	¡ }| d¡ 	¡ }| d¡}| |||f¡ qLq:g }	t
|ƒD ]J\}
}|
dkrÈ|d rÈ||
d  d rÈ||
d  d  ¡ rÈ|	 |
d ¡ qÈt|	ƒD ]}||= qg }|D ]Ê\}}}|d krV| ||f¡ n¤|d	kr|tj |¡}| ||f¡ n~|d
krît|ƒd }|r¬|dd d| … 7 }ztj |¡}W n  tjk
rÜ   tdƒ‚Y nX | ||f¡ ntd| ƒ‚q2g }d  }}|D ]v\}}t|tƒr,t|dƒ}|d kr@|}|}nB||krb| ||f¡ |}|}n |d krz|t| 7 }n||7 }q| ||f¡ |S )NÚ_chunksc                 S   s(   g | ] \}}t  |t|ƒ¡t|ƒf‘qS © )Ú_charsetZ_encodeÚstr)Ú.0Ústringr   r   r   ú$/usr/lib64/python3.8/email/header.pyÚ
<listcomp>M   s   ÿz!decode_header.<locals>.<listcomp>Tr   Fé   é   ÚqÚbé   z===zBase64 decoding errorzUnexpected encoding: zraw-unicode-escape)Úhasattrr   ÚecreÚsearchÚ
splitlinesÚsplitÚpopÚlstripÚappendÚlowerÚ	enumerateÚisspaceÚreversedÚemailÚ
quoprimimeZheader_decodeÚlenZ
base64mimeÚdecodeÚbinasciiÚErrorr   ÚAssertionErrorÚ
isinstancer   ÚbytesÚBSPACE)ÚheaderZwordsÚlineÚpartsÚfirstZ	unencodedr   ÚencodingZencodedZdroplistÚnÚwÚdZdecoded_wordsZencoded_stringZwordZpaderrZ	collapsedZ	last_wordÚlast_charsetr   r   r   r   =   s|    
ÿ




4







c                 C   sF   t |||d}| D ].\}}|d k	r4t|tƒs4t|ƒ}| ||¡ q|S )N)Ú
maxlinelenÚheader_nameÚcontinuation_ws)r   r-   ÚCharsetr!   )Zdecoded_seqr9   r:   r;   ÚhÚsr   r   r   r   r   œ   s    ÿc                   @   sJ   e Zd Zddd„Zdd„ Zdd	„ Zdd
d„Zdd„ Zddd„Zdd„ Z	dS )r   Nr   Ústrictc                 C   s|   |d krt }nt|tƒs t|ƒ}|| _|| _g | _|d k	rH|  |||¡ |d krTt}|| _|d krjd| _	nt
|ƒd | _	d S )Nr   r   )ÚUSASCIIr-   r<   r   Ú_continuation_wsr   r!   Ú
MAXLINELENÚ_maxlinelenÚ
_headerlenr(   )Úselfr>   r   r9   r:   r;   Úerrorsr   r   r   Ú__init__´   s    
zHeader.__init__c           	      C   sÄ   |   ¡  g }d }d }| jD ]ž\}}|}|tjkrH| dd¡}| dd¡}|r˜|o\|  |d ¡}|dkr‚|dkr˜|s˜| t¡ d }n|dkr˜|s˜| t¡ |o¨|  |d ¡}|}| |¡ qt	 
|¡S )NÚasciiÚsurrogateescapeÚreplacer   ©Nr   éÿÿÿÿ)Ú
_normalizer   r   ÚUNKNOWN8BITÚencoder)   Ú	_nonctextr!   ÚSPACEÚEMPTYSTRINGÚjoin)	rE   ZuchunksÚlastcsÚ	lastspacer   r   ZnextcsZoriginal_bytesÚhasspacer   r   r   Ú__str__ã   s*    


zHeader.__str__c                 C   s   |t | ƒkS ©N)r   )rE   Úotherr   r   r   Ú__eq__  s    zHeader.__eq__c                 C   s¶   |d kr| j }nt|tƒs"t|ƒ}t|tƒsZ|jp4d}|t jkrN| dd¡}n| ||¡}|jpbd}|t jkr¢z| ||¡ W n" t	k
r    |dkr˜‚ t
}Y nX | j ||f¡ d S )Nr   rI   )r   r-   r<   r   Zinput_codecrN   r)   Zoutput_codecrO   ÚUnicodeEncodeErrorÚUTF8r   r!   )rE   r>   r   rF   Zinput_charsetZoutput_charsetr   r   r   r!   	  s$    






zHeader.appendc                 C   s   |  ¡ p|dkS )N)ú(ú)ú\)r$   )rE   r>   r   r   r   rP   4  s    zHeader._nonctextú;, 	r   c                 C   s   |   ¡  |d kr| j}|dkr"d}t| j|| j|ƒ}d }d  }}| jD ]\}}	|d k	rœ|oh|  |d ¡}|dkrˆ|r~|	dkrœ| ¡  n|	dkrœ|sœ| ¡  |o¬|  |d ¡}|	}d}| ¡ }
|
rÖ| 	d|
d |	¡ n| 	dd|	¡ |
dd … D ]`}| 
¡  |	jd k	r"| 	| jd| ¡  |	¡ qð| ¡ }|d t|ƒt|ƒ … }| 	|||	¡ qðt|
ƒdkrF| 
¡  qF| jrx| ¡  | |¡}t |¡rœtd	 |¡ƒ‚|S )
Nr   i@B rK   rL   Fr
   r   r   z8header value appears to contain an embedded header: {!r})rM   rC   Ú_ValueFormatterrD   rA   r   rP   Úadd_transitionr   ÚfeedÚnewlineÚheader_encodingr    r(   Ú_strÚ_embedded_headerr   r   Úformat)rE   Ú
splitcharsr9   ÚlinesepZ	formatterrT   rV   rU   r   r   Úlinesr1   ZslineÚfwsÚvaluer   r   r   rO   9  sZ    ! ÿ
ÿ

ÿzHeader.encodec                 C   sx   g }d }g }| j D ]B\}}||kr.| |¡ q|d k	rJ| t |¡|f¡ |g}|}q|rn| t |¡|f¡ || _ d S rX   )r   r!   rQ   rS   )rE   Zchunksr8   Z
last_chunkr   r   r   r   r   rM   ‰  s    zHeader._normalize)NNNNr   r?   )Nr?   )r`   Nr   )
Ú__name__Ú
__module__Ú__qualname__rG   rW   rZ   r!   rP   rO   rM   r   r   r   r   r   ³   s          þ
/ 
+
Pc                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ra   c                 C   s0   || _ || _t|ƒ| _|| _g | _t|ƒ| _d S rX   )Ú_maxlenrA   r(   Ú_continuation_ws_lenÚ_splitcharsÚ_linesÚ_AccumulatorÚ_current_line)rE   Z	headerlenÚmaxlenr;   ri   r   r   r   rG   ž  s    
z_ValueFormatter.__init__c                 C   s   |   ¡  | | j¡S rX   )rd   rS   rt   )rE   rj   r   r   r   rf   ¦  s    z_ValueFormatter._strc                 C   s
   |   t¡S rX   )rf   ÚNL©rE   r   r   r   rW   ª  s    z_ValueFormatter.__str__c                 C   sv   | j  ¡ }|dkr| j j|Ž  t| j ƒdkrh| j  ¡ rV| jrV| jd  t| j ƒ7  < n| j t| j ƒ¡ | j  ¡  d S )N)r   r
   r   rL   )	rv   r   Úpushr(   Ú	is_onlywsrt   r   r!   Úreset)rE   Zend_of_liner   r   r   rd   ­  s    
z_ValueFormatter.newlinec                 C   s   | j  dd¡ d S )Nr   r
   )rv   rz   ry   r   r   r   rb   ¸  s    z_ValueFormatter.add_transitionc                 C   sÄ   |j d kr|  ||| j¡ d S | ||  ¡ ¡}z| d¡}W n tk
rR   Y d S X |d k	rh|  ||¡ z| ¡ }W n tk
rŠ   Y d S X |  ¡  | j	 
| j|¡ |D ]}| j | j| ¡ q¨d S ©Nr   )re   Ú_ascii_splitrs   Zheader_encode_linesÚ_maxlengthsr   Ú
IndexErrorÚ_append_chunkrd   rv   rz   rA   rt   r!   )rE   rl   r   r   Zencoded_linesZ
first_lineÚ	last_liner1   r   r   r   rc   »  s$    
z_ValueFormatter.feedc                 c   s&   | j t| jƒ V  | j | j V  qd S rX   )rq   r(   rv   rr   ry   r   r   r   r   à  s    z_ValueFormatter._maxlengthsc                 C   sf   t  dt d || ¡}|d r0dg|d d…< n
| d¡ tt|ƒgd Ž D ]\}}|  ||¡ qLd S )Nz([z]+)r   r
   r   )Úrer   ÚFWSr   ÚzipÚiterr   )rE   rl   r   ri   r2   Úpartr   r   r   r~   æ  s    
z_ValueFormatter._ascii_splitc                 C   s  | j  ||¡ t| j ƒ| jkr| jD ]v}t| j  ¡ d ddƒD ]T}| ¡ rn| j | d }|rn|d |krn q˜| j |d  d }|r@|d |kr@ q˜q@q& qÚq&| j  ¡ \}}| j j	dkrÈ|  
¡  |sÈd}| j  ||¡ d S | j  |¡}| j t| j ƒ¡ | j  |¡ d S )Nr   r   rL   r   )rv   rz   r(   rq   rs   ÚrangeÚ
part_countr$   r   Ú_initial_sizerd   Úpop_fromrt   r!   r   r|   )rE   rl   r   ZchÚiZprevpartr‡   Z	remainderr   r   r   r   ü  s.    
z_ValueFormatter._append_chunkN)rn   ro   rp   rG   rf   rW   rd   rb   rc   r   r~   r   r   r   r   r   ra     s   %ra   c                       sj   e Zd Zd‡ fdd„	Zdd„ Zddd„Z‡ fdd	„Zd
d„ Zdd„ Zddd„Z	dd„ Z
‡ fdd„Z‡  ZS )ru   r   c                    s   || _ tƒ  ¡  d S rX   )rŠ   ÚsuperrG   )rE   Zinitial_size©Ú	__class__r   r   rG     s    z_Accumulator.__init__c                 C   s   |   ||f¡ d S rX   )r!   )rE   rl   r   r   r   r   rz   #  s    z_Accumulator.pushc                 C   s   | |d … }g | |d …< |S rX   r   )rE   rŒ   Zpoppedr   r   r   r‹   &  s    z_Accumulator.pop_fromc                    s   |   ¡ dkrdS tƒ  ¡ S )Nr   )r
   r
   )r‰   r   r   ry   rŽ   r   r   r   +  s    z_Accumulator.popc                 C   s   t dd„ | D ƒ| jƒS )Nc                 s   s"   | ]\}}t |ƒt |ƒ V  qd S rX   )r(   ©r   rl   r‡   r   r   r   Ú	<genexpr>1  s     z'_Accumulator.__len__.<locals>.<genexpr>)ÚsumrŠ   ry   r   r   r   Ú__len__0  s    ÿz_Accumulator.__len__c                 C   s   t  dd„ | D ƒ¡S )Nc                 s   s    | ]\}}t  ||f¡V  qd S rX   ©rR   rS   r   r   r   r   r‘   5  s   ÿz'_Accumulator.__str__.<locals>.<genexpr>r”   ry   r   r   r   rW   4  s    
ÿz_Accumulator.__str__Nc                 C   s"   |d krg }|| d d …< d| _ d S r}   )rŠ   )rE   Zstartvalr   r   r   r|   8  s    z_Accumulator.resetc                 C   s   | j dko|  pt| ƒ ¡ S r}   )rŠ   r   r$   ry   r   r   r   r{   >  s    z_Accumulator.is_onlywsc                    s
   t ƒ  ¡ S rX   )r   r“   ry   rŽ   r   r   r‰   A  s    z_Accumulator.part_count)r   )r   )N)rn   ro   rp   rG   rz   r‹   r   r“   rW   r|   r{   r‰   Ú__classcell__r   r   rŽ   r   ru     s   

ru   )NNr   )"Ú__all__rƒ   r*   Zemail.quoprimimer&   Zemail.base64mimeZemail.errorsr   r   r   r<   rx   rQ   r/   ZSPACE8rR   rB   r„   r@   r\   ÚcompileÚVERBOSEÚ	MULTILINEr   Zfcrerg   r'   Z_max_appendr   r   r   ra   Úlistru   r   r   r   r   Ú<module>   sD   ý
ø

_  ÿ
 k 