509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \÷X  ã               @   s²   d dg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	 ej
dƒZej
d	ƒZej
d
ƒZej
d	ƒZej
dƒZdZdZeƒ ZG dd„ deƒZG dd „ d ƒZG dd„ deƒZdS )Ú
FeedParserÚBytesFeedParseré    N)Úerrors)Úcompat32)Údeque)ÚStringIOz
\r\n|\r|\nz(\r\n|\r|\n)z(\r\n|\r|\n)\Zz%^(From |[\041-\071\073-\176]*:|[\t ])Ú Ú
c               @   s\   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d„ ZdS )ÚBufferedSubFilec             C   s$   t dd�| _tƒ | _g | _d| _d S )Nr   )ÚnewlineF)r   Ú_partialr   Ú_linesÚ	_eofstackÚ_closed)Úself© r   ú(/usr/lib64/python3.6/email/feedparser.pyÚ__init__5   s    zBufferedSubFile.__init__c             C   s   | j j|ƒ d S )N)r   Úappend)r   Zpredr   r   r   Úpush_eof_matcher@   s    z BufferedSubFile.push_eof_matcherc             C   s
   | j jƒ S )N)r   Úpop)r   r   r   r   Úpop_eof_matcherC   s    zBufferedSubFile.pop_eof_matcherc             C   s<   | j jdƒ | j| j jƒ ƒ | j jdƒ | j jƒ  d| _d S )Nr   T)r   ÚseekÚ	pushlinesÚ	readlinesÚtruncater   )r   r   r   r   ÚcloseF   s
    
zBufferedSubFile.closec             C   sN   | j s| jrdS tS | j jƒ }x*t| jƒD ]}||ƒr*| j j|ƒ dS q*W |S )Nr   )r   r   ÚNeedMoreDataÚpopleftÚreversedr   Ú
appendleft)r   ÚlineZateofr   r   r   ÚreadlineN   s    
zBufferedSubFile.readlinec             C   s   | j j|ƒ d S )N)r   r    )r   r!   r   r   r   Ú
unreadline`   s    zBufferedSubFile.unreadlinec             C   sx   | j j|ƒ d|kr d|kr d S | j jdƒ | j jƒ }| j jdƒ | j jƒ  |d jdƒsj| j j|jƒ ƒ | j|ƒ d S )Nr	   úr   é   éÿÿÿÿ)r   Úwriter   r   r   Úendswithr   r   )r   ÚdataÚpartsr   r   r   Úpushe   s    

zBufferedSubFile.pushc             C   s   | j j|ƒ d S )N)r   Úextend)r   Úlinesr   r   r   r   z   s    zBufferedSubFile.pushlinesc             C   s   | S )Nr   )r   r   r   r   Ú__iter__}   s    zBufferedSubFile.__iter__c             C   s   | j ƒ }|dkrt‚|S )Nr   )r"   ÚStopIteration)r   r!   r   r   r   Ú__next__€   s    zBufferedSubFile.__next__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r"   r#   r+   r   r.   r0   r   r   r   r   r
   -   s   r
   c               @   s\   e Zd Zdedœ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 )r   N)Úpolicyc            C   sž   || _ d| _|d kr<|jd kr2ddlm} || _qn|j| _n2|| _y|| j d� W n tk
rl   d| _Y nX tƒ | _g | _	| j
ƒ j| _d | _d | _d| _d S )NFr   )ÚMessage)r4   T)r4   Ú_old_style_factoryZmessage_factoryZemail.messager5   Ú_factoryÚ	TypeErrorr
   Ú_inputÚ	_msgstackÚ	_parsegenr0   Ú_parseÚ_curÚ_lastÚ_headersonly)r   r7   r4   r5   r   r   r   r   ‹   s$    

zFeedParser.__init__c             C   s
   d| _ d S )NT)r?   )r   r   r   r   Ú_set_headersonlyª   s    zFeedParser._set_headersonlyc             C   s   | j j|ƒ | jƒ  d S )N)r9   r+   Ú_call_parse)r   r)   r   r   r   Úfeed­   s    zFeedParser.feedc             C   s&   y| j ƒ  W n tk
r    Y nX d S )N)r<   r/   )r   r   r   r   rA   ²   s    zFeedParser._call_parsec             C   sJ   | j jƒ  | jƒ  | jƒ }|jƒ dkrF|jƒ  rFtjƒ }| jj	||ƒ |S )NÚ	multipart)
r9   r   rA   Ú_pop_messageÚget_content_maintypeZis_multipartr   Z!MultipartInvariantViolationDefectr4   Úhandle_defect)r   ÚrootÚdefectr   r   r   r   ¸   s    

zFeedParser.closec             C   sn   | j r| jƒ }n| j| jd�}| jr<| jjƒ dkr<|jdƒ | jrR| jd j|ƒ | jj|ƒ || _|| _	d S )N)r4   zmultipart/digestzmessage/rfc822r%   r&   )
r6   r7   r4   r=   Úget_content_typeZset_default_typer:   Zattachr   r>   )r   Úmsgr   r   r   Ú_new_messageÅ   s    

zFeedParser._new_messagec             C   s(   | j jƒ }| j r| j d | _nd | _|S )Nr%   r&   )r:   r   r=   )r   Úretvalr   r   r   rD   Ò   s
    
zFeedParser._pop_messagec             c   s6  | j ƒ  g }xb| jD ]X}|tkr(tV  qtj|ƒsbtj|ƒs`tjƒ }| jj	| j
|ƒ | jj|ƒ P |j|ƒ qW | j|ƒ | jrÎg }x2| jjƒ }|tkr tV  q†|dkrªP |j|ƒ q†W | j
jtj|ƒƒ d S | j
jƒ dk�r–x²| jjtjƒ x$| jƒ D ]}|tk�rtV  qøP qøW | jƒ }| jjƒ  x&| jjƒ }|tk�rFtV  �q(P �q(W x&| jjƒ }|tk�rntV  �qPP �qPW |dk�r‚P | jj|ƒ qàW d S | j
jƒ dk�rÜx(| jƒ D ]}|tk�rÈtV  �q°P �q°W | jƒ  d S | j
jƒ dk�rì| j
jƒ }|d k�rbtjƒ }| jj	| j
|ƒ g }x.| jD ]$}|tk�r<tV  �q$|j|ƒ �q$W | j
jtj|ƒƒ d S | j
jddƒjƒ dk�r’tjƒ }| jj	| j
|ƒ d	| }tjd
tj |ƒ d ƒ}	d}
g }d}d}�x| jjƒ }|tk�rätV  �qÆ|dk�rðP |	j|ƒ}|�rÂ|j!dƒ�rd}|j!dƒ}P |
�r~|�rj|d }t"j#|ƒ}|�r\|d t$|j!dƒƒ … |d< tj|ƒ| j
_%d}
| jj|ƒ �qÆxB| jjƒ }|tk�ržtV  �q€|	j|ƒ}|�s€| jj|ƒ P �q€W | jj|	jƒ x(| jƒ D ]}|tk�ròtV  �qÚP �qÚW | j&jƒ dk�rb| j&j'}|dk�r&d | j&_'n:|d k	�r¦t"j#|ƒ}|�r¦t$|j!dƒƒ}|d | … | j&_'nD| j&j(}t)|t*ƒ�r¦t"j#|ƒ}|�r¦|d t$|j!dƒƒ … }|| j&_(| jjƒ  | jƒ  | j
| _&n
|j|ƒ �qÆW |
�r>tj+ƒ }| jj	| j
|ƒ | j
jtj|ƒƒ g }x$| jD ]}|tk�rtV  �q�qW tj|ƒ| j
_'d S |�s`tj,ƒ }| jj	| j
|ƒ d S |�rndg}ng }x.| jD ]$}|tk�r’tV  �qz|j|ƒ �qzW |�rÚ|d }t-j|ƒ}|�rÚ|t$|j!dƒƒd … |d< tj|ƒ| j
_'d S g }x.| jD ]$}|tk�rtV  �qø|j|ƒ �qøW | j
jtj|ƒƒ d S )Nr   zmessage/delivery-statusÚmessagerC   zcontent-transfer-encodingÚ8bitÚ7bitÚbinaryz--z(?P<sep>z4)(?P<end>--)?(?P<ws>[ \t]*)(?P<linesep>\r\n|\r|\n)?$TFÚendÚlinesepr%   r   )rO   rN   rP   r&   r&   ).rK   r9   r   ÚheaderREÚmatchÚNLCREr   Z MissingHeaderBodySeparatorDefectr4   rF   r=   r#   r   Ú_parse_headersr?   r"   Zset_payloadÚEMPTYSTRINGÚjoinrI   r   r;   rD   r   rE   Zget_boundaryZNoBoundaryInMultipartDefectÚgetÚlowerZ-InvalidMultipartContentTransferEncodingDefectÚreÚcompileÚescapeÚgroupÚ	NLCRE_eolÚsearchÚlenÚpreambler>   ÚepilogueZ_payloadÚ
isinstanceÚstrZStartBoundaryNotFoundDefectZCloseBoundaryNotFoundDefectÚ	NLCRE_bol)r   Zheadersr!   rH   r-   rL   rJ   ÚboundaryZ	separatorZ
boundaryreZcapturing_preamblerb   rR   Zclose_boundary_seenÚmoZlastlineZeolmorc   rQ   ZpayloadÚ	firstlineZbolmor   r   r   r;   Ú   sf   




































zFeedParser._parsegenc       	      C   s^  d}g }�x4t |ƒD �]&\}}|d dkrV|sJtj|ƒ}| jj| j|ƒ q|j|ƒ q|rx| jj| jj|ƒŽ  dg  }}|j	dƒ� rü|dkrÂt
j|ƒ}|r²|d t|jdƒƒ … }| jj|ƒ qn:|t|ƒd krâ| jj|ƒ d S tj|ƒ}| jjj|ƒ q|jdƒ}|dk�r*tjdƒ}| jjj|ƒ q|d |… }|g}qW |�rZ| jj| jj|ƒŽ  d S )Nr   r   z 	zFrom r%   ú:zMissing header name.)Ú	enumerater   Z#FirstHeaderLineIsContinuationDefectr4   rF   r=   r   Zset_rawZheader_source_parseÚ
startswithr_   r`   ra   r^   Zset_unixfromr9   r#   ZMisplacedEnvelopeHeaderDefectZdefectsÚfindZInvalidHeaderDefect)	r   r-   Z
lastheaderZ	lastvalueÚlinenor!   rH   rh   Úir   r   r   rV   ×  sF    








zFeedParser._parse_headers)N)r1   r2   r3   r   r   r@   rB   rA   r   rK   rD   r;   rV   r   r   r   r   r   ˆ   s    ~c                   s   e Zd Z‡ fdd„Z‡  ZS )r   c                s   t ƒ j|jddƒƒ d S )NÚasciiÚsurrogateescape)ÚsuperrB   Údecode)r   r)   )Ú	__class__r   r   rB     s    zBytesFeedParser.feed)r1   r2   r3   rB   Ú__classcell__r   r   )rt   r   r     s   )Ú__all__r[   Zemailr   Zemail._policybaser   Úcollectionsr   Úior   r\   rU   rf   r_   ZNLCRE_crackrS   rW   ÚNLÚobjectr   r
   r   r   r   r   r   r   Ú<module>   s&   




[   