509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
ct„jÑJ  ã               @   sÊ  d ddddddddd	d
ddddg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Zddl	m
Z
 ddl	mZ ddl	mZ ddl	mZmZmZ ddlmZ dZdZdZdZdZejdƒZejdƒZdZdadd„ Zdd „ Zd!d"„ Zd#d$„ Z dHd&d„Z!d'd(„ Z"d)d*„ Z#d+Z$dd,œd-d„Z%d.d/„ Z&d0d1„ Z'd2d3„ Z(ejd4ej)ej*B ƒZ+d5d6„ Z,dId8d„Z-dJd9d„Z.dKd:d„Z/d;d„ Z0dd,œd<d
„Z1d=d„ Z2d>d„ Z3dLd?d„Z4ejd@ej5ƒZ6dAd„ Z7dMdDd „Z8dOdFdG„Z9dS )PÚcollapse_rfc2231_valueÚdecode_paramsÚdecode_rfc2231Úencode_rfc2231Ú
formataddrÚ
formatdateÚformat_datetimeÚgetaddressesÚ
make_msgidÚ	mktime_tzÚ	parseaddrÚ	parsedateÚparsedate_tzÚparsedate_to_datetimeÚunquoteé    N)Úquote)ÚAddressList)r
   )r   r   Ú_parsedate_tz)ÚCharsetz, Ú z
ú'z[][\\()<>@,:;".]z[\\"]z/etc/python/email.cfgc               C   s   t d krtƒ a t S )N)Ú_cached_strict_addr_parsingÚ_use_strict_email_parsing_impl© r   r   ú#/usr/lib64/python3.6/email/utils.pyÚ_use_strict_email_parsing7   s    r   c              C   s†   t tjjdƒƒ} | rdS yttƒ}W n tk
r8   Y nBX |�6 dd l}|jd d	d�}|j	|ƒ |j
ddd d�} W d Q R X | r‚dS dS )
NZ(PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSINGFr   ú#)ZinterpolationZcomment_prefixesZemail_addr_parsing)ZfallbackT)r   )ÚboolÚosÚenvironÚgetÚopenÚ_EMAIL_CONFIG_FILEÚFileNotFoundErrorÚconfigparserZConfigParserZ	read_fileZ
getboolean)ZdisabledÚfiler$   Úconfigr   r   r   r   ?   s"    
r   c             C   s&   y| j ƒ  dS  tk
r    dS X d S )NFT)ÚencodeÚUnicodeEncodeError)Úsr   r   r   Ú_has_surrogates\   s
    r*   c             C   s   | j ddƒ}|jddƒS )Nzutf-8ÚsurrogateescapeÚreplace)r'   Údecode)ÚstringZoriginal_bytesr   r   r   Ú	_sanitizei   s    r/   úutf-8c             C   s�   | \}}|j dƒ |rŒy|j dƒ W n8 tk
r\   t|tƒrFt|ƒ}|j|ƒ}d||f S X d}tj|ƒrpd}tj	d|ƒ}d||||f S |S )NÚasciiz%s <%s>r   ú"z\\\g<0>z%s%s%s <%s>)
r'   r(   Ú
isinstanceÚstrr   Zheader_encodeÚ
specialsreÚsearchÚ	escapesreÚsub)ZpairÚcharsetÚnameZaddressZencoded_nameZquotesr   r   r   r   u   s     



c             c   s`   d}d}xDt | ƒD ]8\}}|r2|d| fV  d}q|dkr@d}q||fV  qW |r\|dfV  d S )Nr   Fú\T)Ú	enumerate)ÚaddrÚposÚescapeÚchr   r   r   Ú_iter_escaped_chars–   s    rA   c             C   s’   d| kr| S d}d }g }xPt | ƒD ]D\}}|dkr"|d kr@|}q"||krZ|j| ||… ƒ |d }d }q"W |t| ƒk rˆ|j| |d … ƒ dj|ƒS )Nr2   r   é   r   )rA   ÚappendÚlenÚjoin)r=   ÚstartZopen_posÚresultr>   r@   r   r   r   Ú_strip_quoted_realnames¥   s     rH   T)Ústrictc            C   s¨   |d krt ƒ }|s4tjdd„ | D ƒƒ}t|ƒ}|jS dd„ | D ƒ} t| ƒ} tj| ƒ}t|ƒ}t|jƒ}d}x&| D ]}t|ƒ}|d|jdƒ 7 }qpW t	|ƒ|kr¤d	gS |S )
Nc             s   s   | ]}t |ƒV  qd S )N)r4   )Ú.0Úvr   r   r   ú	<genexpr>Ø   s    zgetaddresses.<locals>.<genexpr>c             S   s   g | ]}t |ƒ‘qS r   )r4   )rJ   rK   r   r   r   ú
<listcomp>Ü   s    z getaddresses.<locals>.<listcomp>r   rB   ú,r   )r   r   )
r   Ú
COMMASPACErE   Ú_AddressListÚaddresslistÚ_pre_parse_validationÚ_post_parse_validationrH   ÚcountrD   )ZfieldvaluesrI   ÚallÚar=   rG   ÚnrK   r   r   r   r   À   s$    


c             C   sX   t | ƒ} d}xBt| ƒD ]6\}}|dkr0|d7 }q|dkr|d8 }|dk rdS qW |dkS )Nr   ú(rB   ú)F)rH   rA   )r=   Zopensr>   r@   r   r   r   Ú_check_parenthesisñ   s    
rZ   c             C   s,   g }x"| D ]}t |ƒsd}|j|ƒ q
W |S )Nz('', ''))rZ   rC   )Zemail_header_fieldsÚaccepted_valuesrK   r   r   r   rR      s    
rR   c             C   s0   g }x&| D ]}d|d krd}|j |ƒ q
W |S )Nú[rB   r   )r   r   )rC   )Zparsed_email_header_tuplesr[   rK   r   r   r   rS   
  s    
rS   a_  
  =\?                   # literal =?
  (?P<charset>[^?]*?)   # non-greedy up to the next ? is the charset
  \?                    # literal ?
  (?P<encoding>[qb])    # either a "q" or a "b", case insensitive
  \?                    # literal ?
  (?P<atom>.*?)         # non-greedy up to the next ?= is the atom
  \?=                   # literal ?=
  c             C   sf   ddddddddg| d	  | d
 ddddddddddddg| d d  | d | d | d | d |f S )Nz"%s, %02d %s %04d %02d:%02d:%02d %sZMonZTueZWedZThuZFriZSatZSuné   é   ZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecrB   r   é   é   é   r   )Ú	timetupleÚzoner   r   r   Ú_format_timetuple_and_zone"  s    rd   Fc             C   sR   | d krt j ƒ } |s|r,tjj| tjjƒ}ntjj| ƒ}|rH|jƒ }d}t||ƒS )NF)ÚtimeÚdatetimeZfromtimestampÚtimezoneÚutcZutcfromtimestampÚ
astimezoner   )ÚtimevalÚ	localtimeÚusegmtÚdtr   r   r   r   +  s    c             C   sV   | j ƒ }|r2| jd ks$| jtjjkr,tdƒ‚d}n| jd krBd}n
| jdƒ}t||ƒS )Nz%usegmt option requires a UTC datetimeZGMTz-0000z%z)rb   Útzinforf   rg   rh   Ú
ValueErrorZstrftimerd   )rm   rl   Únowrc   r   r   r   r   H  s    

c             C   s^   t tjƒ d ƒ}tjƒ }tjdƒ}| d kr0d} nd|  } |d krHtjƒ }d|||| |f }|S )Néd   é@   r   Ú.z<%d.%d.%d%s@%s>)Úintre   r   ÚgetpidÚrandomZgetrandbitsÚsocketZgetfqdn)ZidstringZdomainrj   ÚpidZrandintZmsgidr   r   r   r	   [  s    

c             C   sN   t | ƒ�^ }}|d kr(tj|d d… Ž S tj|d d… dtjtj|d�ƒiŽS )Nr]   rn   )Úseconds)r   rf   rg   Ú	timedelta)ÚdataZdtupleÚtzr   r   r   r   r  s
    c            C   s†   |d krt ƒ }|s,t| ƒj}|s$dS |d S t| tƒr>| d } t| tƒsLdS t| gƒd } tt| ƒjƒ}| szt|ƒdkr~dS |d S )Nr   r   rB   )r   r   )r   r   )r   r   )	r   rP   rQ   r3   Úlistr4   rR   rS   rD   )r=   rI   Zaddrsr   r   r   r   z  s     


c             C   s`   t | ƒdkr\| jdƒr<| jdƒr<| dd… jddƒjddƒS | jdƒr\| jdƒr\| dd	… S | S )
NrB   r2   z\\r;   z\"ú<ú>éÿÿÿÿr€   )rD   Ú
startswithÚendswithr,   )r4   r   r   r   r   ž  s    c             C   s&   | j tdƒ}t|ƒdkr"d d | fS |S )Nr^   )ÚsplitÚTICKrD   )r)   Úpartsr   r   r   r   ª  s    
c             C   sD   t jj| d|pdd�} |d kr*|d kr*| S |d kr6d}d||| f S )Nr   r1   )ZsafeÚencodingz%s'%s'%s)ÚurllibÚparser   )r)   r9   Úlanguager   r   r   r   ²  s    z&^(?P<name>\w+)\*((?P<num>[0-9]+)\*?)?$c             C   sx  | d d … } g }i }| j dƒ\}}|j||fƒ x�| rÀ| j dƒ\}}|jdƒrTd}nd}t|ƒ}tj|ƒ}|r¨|jddƒ\}}|d k	rŽt|ƒ}|j|g ƒj|||fƒ q2|j|dt	|ƒ fƒ q2W |�rtxª|j
ƒ D ]ž\}}g }d}	|jƒ  x6|D ].\}}
}|�rtjj|
dd	�}
d}	|j|
ƒ qðW t	tj|ƒƒ}|	�r^t|ƒ\}}}|j|||d| ffƒ qÒ|j|d| fƒ qÒW |S )
Nr   Ú*TFr:   Únumz"%s"zlatin-1)r†   )ÚpoprC   r‚   r   Úrfc2231_continuationÚmatchÚgrouprt   Ú
setdefaultr   ÚitemsÚsortr‡   rˆ   ÚEMPTYSTRINGrE   r   )ZparamsZ
new_paramsZrfc2231_paramsr:   ÚvalueZencodedZmor‹   ZcontinuationsZextendedr)   r9   r‰   r   r   r   r   Ä  sD    

r,   úus-asciic             C   sj   t | tƒ st| ƒdkr t| ƒS | \}}}|d kr6|}t|dƒ}yt|||ƒS  tk
rd   t|ƒS X d S )Nr_   zraw-unicode-escape)r3   ÚtuplerD   r   Úbytesr4   ÚLookupError)r”   ÚerrorsZfallback_charsetr9   r‰   ÚtextZrawbytesr   r   r   r   ü  s    

rB   c       	      C   s  | d krt j jt jjƒjƒ S | jd k	r.| jƒ S | jƒ d d… |f }tj|ƒ}tj	|ƒ}y t j
|jd�}t j||jƒ}W n€ tk
rø   | t j tj|ƒd d… Ž  }tjo²|jdk}|r¾tjntj }|t j
|d�krêt j|tj| ƒ}n
t j|ƒ}Y nX | j|d�S )NrB   )ry   r]   r   )rn   r€   )rf   rp   rg   rh   ri   rn   rb   re   Zmktimerk   rz   Z	tm_gmtoffZtm_zoneÚAttributeErrorZgmtimeZdaylightZtm_isdstZaltzoneZtznamer,   )	rm   ZisdstZtmry   ZlocaltmZdeltar|   ÚdstZgmtoffr   r   r   rk     s$    


rk   )r0   )NFF)F)NN)NN)r,   r•   r€   )Nr€   ):Ú__all__r   Úrere   rv   rw   rf   Zurllib.parser‡   Zemail._parseaddrr   r   rP   r
   r   r   r   Zemail.charsetr   rO   r“   ZUEMPTYSTRINGZCRLFr„   Úcompiler5   r7   r"   r   r   r   r*   r/   r   rA   rH   Zsupports_strict_parsingr   rZ   rR   rS   ÚVERBOSEÚ
IGNORECASEZecrerd   r   r   r	   r   r   r   r   r   ÚASCIIr�   r   r   rk   r   r   r   r   Ú<module>   s€   


!1
	


$
8 
