ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     U
    e5df                  *   @   s  d 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Zddl	Z	ddl
m
Z
mZmZ ddlmZ zddlZdZW n ek
r   dZY nX ddd	d
ddgZdZdZdZdZdZdZdddddddddddddddddddddddddddddddddddddddddd)ZedZedZedZedejZedZ edZ!edZ"edejZ#dZ$dZ%G d d dZ&erG d!d" d"e&Z'e(d" G d#d de&Z)G d$d% d%Z*d&+d'Z,d(d) e-e,d*d D Z.d+d	 Z/d,d
 Z0d-d Z1d.d Z2e3d/krddl4Z4ddl5Z5ze44ej6d*d d0\Z7Z8W n. e4j9k
rl Z: zd1\Z7Z8W 5 dZ:[:X Y nX dZ;e7D ]8\Z<Z:e<d2kre=e:Zne<d3krve:Z;e8sve;fZ8qve8sd4Z8e8d Z>e5? Z@e55d5e@e>pd6f ZAd7e@d8d9 ZBd:e@eAffd;d<d=d>d?ddeBffd@dAdBdCdDdEdFdGdHfZCdIdJdKdLd>dddeBffdGdMfZDdNdO ZEze;r^e)e;ZFne&e>ZFeFjGdPkr~eCd*d ZCeFHdQeFjI  eFHdReFjJf  eCD ]\ZKZ8eEeKe8 qeEdSdTD ]<ZLeMdUeLZNeNreNOd*ZPneL+ dV ZPeEdWePf qeDD ]T\ZKZ8eEeKe8ZQeKe8fdKkr*qeQdV + ZReRs@qeEdXdYdZeRdV  d[f qeSd\ W n.   eSd] eseSd^ej6d    Y nX dS )_z2.58    N)datetimetimezone	timedelta)DEFAULT_BUFFER_SIZETFIMAP4IMAP4_streamInternaldate2tupleInt2AP
ParseFlagsTime2Internaldate   
   i  )Z	IMAP4REV1r   i@B )AUTHSELECTED)NONAUTH)r   r   r   LOGOUT)r   )r   ))APPENDAUTHENTICATE
CAPABILITYCHECKCLOSECOPYCREATEDELETE	DELETEACLENABLEEXAMINEEXPUNGEFETCHGETACLGETANNOTATIONGETQUOTAGETQUOTAROOTMYRIGHTSLISTLOGINr   LSUBZMOVE	NAMESPACENOOPPARTIAL	PROXYAUTHRENAMESEARCHSELECTSETACLSETANNOTATIONSETQUOTASORTSTARTTLSSTATUSSTORE	SUBSCRIBETHREADUIDUNSUBSCRIBEs   \+( (?P<data>.*))?s   .*FLAGS \((?P<flags>[^\)]*)\)s   .*INTERNALDATE "(?P<day>[ 0123][0-9])-(?P<mon>[A-Z][a-z][a-z])-(?P<year>[0-9][0-9][0-9][0-9]) (?P<hour>[0-9][0-9]):(?P<min>[0-9][0-9]):(?P<sec>[0-9][0-9]) (?P<zonen>[-+])(?P<zoneh>[0-9][0-9])(?P<zonem>[0-9][0-9])"s   .*{(?P<size>\d+)}$s
   \r\n|\r|\ns%   \[(?P<type>[A-Z-]+)( (?P<data>.*))?\]s$   \* (?P<type>[A-Z-]+)( (?P<data>.*))?s3   \* (?P<data>\d+) (?P<type>[A-Z-]+)( (?P<data2>.*))?c                   @   s  e Zd ZG dd deZG dd deZG dd deZdef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ef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,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Z d:d; Z!d<d= Z"d>d? Z#d@dA Z$dBdC Z%dDdE Z&dFdG Z'ddJdKZ(dLdM Z)dNdO Z*dPdQ Z+dRdS Z,ddTdUZ-dVdW Z.dXdY Z/dZd[ Z0d\d] Z1d^d_ Z2d`da Z3dbdc Z4ddfdgZ5dhdi Z6djdk Z7dldm Z8dndo Z9ddqdrZ:dsdt Z;dudv Z<dwdx Z=dydz Z>d{d| Z?d}d~ Z@dd ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdddZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdpS )r   c                   @   s   e Zd ZdS )zIMAP4.errorN__name__
__module____qualname__ r=   r=   /usr/lib64/python3.8/imaplib.pyerror   s    r?   c                   @   s   e Zd ZdS )zIMAP4.abortNr9   r=   r=   r=   r>   abort   s    r@   c                   @   s   e Zd ZdS )zIMAP4.readonlyNr9   r=   r=   r=   r>   readonly   s    rA    c                 C   s   t | _d| _d | _i | _i | _d| _d| _d| _d| _	| 
  | || z|   W n8 tk
r   z|   W n tk
r   Y nX  Y nX d S )Nr   rB   Fr   )Debugdebugstateliteraltagged_commandsuntagged_responsescontinuation_responseis_readonlytagnum_tls_established_mode_asciiopen_connect	ExceptionshutdownOSErrorselfhostportr=   r=   r>   __init__   s&    zIMAP4.__init__c                 C   s0   d| _ d| _tttj| _tttj| _d S )NFascii)	utf8_enabled	_encodingrecompile_LiteralASCIILiteral_Untagged_statusUntagged_statusrT   r=   r=   r>   rM      s    zIMAP4._mode_asciic                 C   s(   d| _ d| _tt| _tt| _d S )NTutf-8)rY   rZ   r[   r\   r]   r_   r`   ra   rb   r=   r=   r>   
_mode_utf8   s    zIMAP4._mode_utf8c                 C   s   t tdd| _td| j d tj| _| 	 | _
d| jkrHd| _nd| jkrZd| _n| | j
|   tD ]}|| jkrqr|| _ d S | d	d S )
Ni   i  s   (?P<tag>s"   \d+) (?P<type>[A-Z]+) (?P<data>.*)ZPREAUTHr   OKr   zserver not IMAP4 compliant)r	   randomZrandinttagprer[   r\   r^   tagre__version___get_responseZwelcomerH   rE   r?   _get_capabilitiesAllowedVersionscapabilitiesPROTOCOL_VERSION)rT   versionr=   r=   r>   rO      s*    



zIMAP4._connectc                 C   s&   |t krt| | S td| d S )NzUnknown IMAP4 command: '%s')CommandsgetattrlowerAttributeError)rT   attrr=   r=   r>   __getattr__	  s    zIMAP4.__getattr__c                 C   s   | S Nr=   rb   r=   r=   r>   	__enter__  s    zIMAP4.__enter__c                 G   s4   | j dkrd S z|   W n tk
r.   Y nX d S Nr   )rE   logoutrR   )rT   argsr=   r=   r>   __exit__  s    
zIMAP4.__exit__c                 C   s4   | j s
d n| j }td| | j | j t|| jfS )Nzimaplib.open)rU   sysauditrV   socketZcreate_connection)rT   rU   r=   r=   r>   _create_socket  s    zIMAP4._create_socketc                 C   s(   || _ || _|  | _| jd| _d S )Nrb)rU   rV   r   sockmakefilefilerS   r=   r=   r>   rN   '  s    
z
IMAP4.openc                 C   s   | j |S rv   )r   readrT   sizer=   r=   r>   r   3  s    z
IMAP4.readc                 C   s.   | j td }t|tkr*| dt |S )N   zgot more than %d bytes)r   readline_MAXLINElenr?   rT   liner=   r=   r>   r   8  s    zIMAP4.readlinec                 C   s   t d| | | j| d S )Nzimaplib.send)r|   r}   r   ZsendallrT   datar=   r=   r>   send@  s    z
IMAP4.sendc              
   C   st   | j   zXz| jtj W n@ tk
r^ } z"|jtjkrNt	|dddkrN W 5 d }~X Y nX W 5 | j  X d S )NZwinerrorr   i&'  )
r   closer   rQ   r~   Z	SHUT_RDWRrR   errnoZENOTCONNrq   )rT   excr=   r=   r>   rQ   F  s    
zIMAP4.shutdownc                 C   s   | j S rv   )r   rb   r=   r=   r>   r~   V  s    zIMAP4.socketc                 C   sB   d}|  dd g|\}}|d r(||fS |  \}}|  |||S )NZRECENTre   )_untagged_responsenooprT   nametypdatr=   r=   r>   recentb  s    	zIMAP4.recentc                 C   s   |  |d g| S rv   )r   upper)rT   coder=   r=   r>   responses  s    zIMAP4.responsec                 C   sx   d}|sd}|r.|d |d fdkr2d| }nd }|r@t |}nd }tt|}| jrbd| d }|| _| ||||S )	Nr   INBOXr   r   ()(%s)s   UTF8 (   ))r   MapCRLFsubCRLFrY   rF   _simple_command)rT   mailboxflags	date_timemessager   rF   r=   r=   r>   append  s    

zIMAP4.appendc                 C   sP   |  }t|j| _| d|\}}|dkrB| |d ddd| _||fS )Nr   re   r   rc   replacer   )r   _AuthenticatorprocessrF   r   r?   decoderE   )rT   Z	mechanismZ
authobjectmechr   r   r=   r=   r>   authenticate  s    zIMAP4.authenticatec                 C   s    d}|  |\}}| |||S )Nr   r   r   r   r=   r=   r>   
capability  s    zIMAP4.capabilityc                 C   s
   |  dS )Nr   r   rb   r=   r=   r>   check  s    zIMAP4.checkc                 C   s$   z| d\}}W 5 d| _ X ||fS )Nr   r   )rE   r   rT   r   r   r=   r=   r>   r     s    zIMAP4.closec                 C   s   |  d||S )Nr   r   )rT   message_setZnew_mailboxr=   r=   r>   copy  s    z
IMAP4.copyc                 C   s   |  d|S )Nr   r   rT   r   r=   r=   r>   create  s    zIMAP4.createc                 C   s   |  d|S )Nr   r   r   r=   r=   r>   delete  s    zIMAP4.deletec                 C   s   |  d||S )Nr   r   )rT   r   whor=   r=   r>   	deleteacl  s    zIMAP4.deleteaclc                 C   sH   d| j krtd| d|\}}|dkr@d| kr@|   ||fS )Nr   zServer does not support ENABLEre   zUTF8=ACCEPT)rm   r   r?   r   r   rd   )rT   r   r   r   r=   r=   r>   enable  s    

zIMAP4.enablec                 C   s    d}|  |\}}| |||S )Nr   r   r   r=   r=   r>   expunge  s    	zIMAP4.expungec                 C   s$   d}|  |||\}}| |||S )Nr   r   )rT   r   Zmessage_partsr   r   r   r=   r=   r>   fetch  s    
zIMAP4.fetchc                 C   s   |  d|\}}| ||dS )Nr   ZACLr   rT   r   r   r   r=   r=   r>   getacl  s    zIMAP4.getaclc                 C   s"   |  d|||\}}| ||dS )Nr    
ANNOTATIONr   )rT   r   entryZ	attributer   r   r=   r=   r>   getannotation(  s    zIMAP4.getannotationc                 C   s   |  d|\}}| ||dS )Nr!   QUOTAr   )rT   rootr   r   r=   r=   r>   getquota0  s    zIMAP4.getquotac                 C   s@   |  d|\}}| ||d\}}| ||d\}}|||gfS )Nr"   r   Z	QUOTAROOTr   )rT   r   r   r   ZquotaZ	quotarootr=   r=   r>   getquotaroot;  s    zIMAP4.getquotaroot""*c                 C   s$   d}|  |||\}}| |||S )Nr$   r   rT   Z	directorypatternr   r   r   r=   r=   r>   listF  s    z
IMAP4.listc                 C   s<   |  d|| |\}}|dkr.| |d d| _||fS )Nr%   re   r   r   )r   _quoter?   rE   )rT   userpasswordr   r   r=   r=   r>   loginR  s
    zIMAP4.loginc                 C   s   || | _ | _| d| jS )NzCRAM-MD5)r   r   r   _CRAM_MD5_AUTH)rT   r   r   r=   r=   r>   login_cram_md5`  s    zIMAP4.login_cram_md5c                 C   sB   dd l }t| jtr | jdn| j}| jd |||d  S )Nr   rc    Zmd5)hmac
isinstancer   strencoder   ZHMACZ	hexdigest)rT   Z	challenger   pwdr=   r=   r>   r   i  s
    zIMAP4._CRAM_MD5_AUTHc                 C   s$   d| _ | d\}}|   ||fS rx   )rE   r   rQ   r   r=   r=   r>   ry   q  s    zIMAP4.logoutc                 C   s$   d}|  |||\}}| |||S )Nr&   r   r   r=   r=   r>   lsub~  s    z
IMAP4.lsubc                 C   s   |  d|\}}| ||dS )Nr#   r   r   r=   r=   r>   myrights  s    zIMAP4.myrightsc                 C   s    d}|  |\}}| |||S )Nr'   r   r   r=   r=   r>   	namespace  s    zIMAP4.namespacec                 C   s
   |  dS )Nr(   r   rb   r=   r=   r>   r     s    z
IMAP4.noopc                 C   s(   d}|  |||||\}}| ||dS )Nr)   r   r   )rT   Zmessage_numZmessage_partstartZlengthr   r   r   r=   r=   r>   partial  s    zIMAP4.partialc                 C   s   d}|  d|S )Nr*   r   )rT   r   r   r=   r=   r>   	proxyauth  s    	zIMAP4.proxyauthc                 C   s   |  d||S )Nr+   r   )rT   Z
oldmailboxZ
newmailboxr=   r=   r>   rename  s    zIMAP4.renamec                 G   sT   d}|r2| j rtd| j|d|f| \}}n| j|f| \}}| |||S )Nr,   z'Non-None charset not valid in UTF8 modeCHARSET)rY   r   r?   r   r   )rT   charsetZcriteriar   r   r   r=   r=   r>   search  s    
zIMAP4.searchr   Fc                 C   sv   i | _ || _|rd}nd}| ||\}}|dkr@d| _||fS d| _d| j krb|sb| d| || j dd gfS )	Nr   r-   re   r   r   	READ-ONLYz%s is not writableEXISTS)rH   rJ   r   rE   rA   get)rT   r   rA   r   r   r   r=   r=   r>   select  s    
zIMAP4.selectc                 C   s   |  d|||S )Nr.   r   )rT   r   r   Zwhatr=   r=   r>   setacl  s    zIMAP4.setaclc                 G   s    | j d| \}}| ||dS )Nr/   r   )r/   r   )rT   rz   r   r   r=   r=   r>   setannotation  s    zIMAP4.setannotationc                 C   s    |  d||\}}| ||dS )Nr0   r   r   )rT   r   Zlimitsr   r   r=   r=   r>   setquota	  s    zIMAP4.setquotac                 G   sF   d}|d |d fdkr d| }| j |||f| \}}| |||S )Nr1   r   r   r   r   r   )rT   Zsort_criteriar   search_criteriar   r   r   r=   r=   r>   sort  s
    z
IMAP4.sortNc                 C   s   d}t s| d| jr"| d|| jkr6| d|d krFt }| |\}}|dkr|j| j	| j
d| _	| j	d| _d| _|   n
| d	| |||S )
Nr2   zSSL support missingzTLS session already establishedzTLS not supported by serverre   Zserver_hostnamer   TzCouldn't establish TLS session)HAVE_SSLr?   rL   r@   rm   ssl_create_stdlib_contextr   wrap_socketr   rU   r   r   rk   r   )rT   ssl_contextr   r   r   r=   r=   r>   starttls   s&    





zIMAP4.starttlsc                 C   s$   d}|  |||\}}| |||S )Nr3   r   )rT   r   namesr   r   r   r=   r=   r>   status7  s    zIMAP4.statusc                 C   s>   |d |d fdkrd| }|  d|||\}}| ||dS )Nr   r   r   r   r4   r   r   )rT   r   commandr   r   r   r=   r=   r>   storeC  s    zIMAP4.storec                 C   s   |  d|S )Nr5   r   r   r=   r=   r>   	subscribeN  s    zIMAP4.subscribec                 G   s*   d}| j |||f| \}}| |||S )Nr6   r   )rT   Zthreading_algorithmr   r   r   r   r   r=   r=   r>   threadV  s    zIMAP4.threadc              	   G   s   |  }|tkr| d| | jt| krL| d|| jdt| f d}| j||f| \}}|dkrt|}nd}| |||S )NzUnknown IMAP4 UID command: %s9command %s illegal in state %s, only allowed in states %s, r7   )r,   r1   r6   r   )r   rp   r?   rE   joinr   r   )rT   r   rz   r   r   r   r=   r=   r>   uid`  s    z	IMAP4.uidc                 C   s   |  d|S )Nr8   r   r   r=   r=   r>   unsubscribey  s    zIMAP4.unsubscribec                 G   s,   |  }|tkr| jft|< | j|f| S rv   )r   rp   rE   r   rT   r   rz   r=   r=   r>   xatom  s    
zIMAP4.xatomc                 C   s8   |d krd}| j }||kr*|| | n
|g||< d S N    )rH   r   r   )rT   r   r   Zurr=   r=   r>   _append_untagged  s    zIMAP4._append_untaggedc                 C   s,   | j d}|r(| |d | jdd S )NBYEr   r   )rH   r   r@   r   rZ   )rT   byer=   r=   r>   
_check_bye  s    zIMAP4._check_byec           
   
   G   s  | j t| kr4d | _| d|| j dt| f dD ]}|| jkr8| j|= q8d| jkrj| jsj| d|  }t	|| j
}|d | }|D ]0}|d krqt|trt	|| j
}|d | }q| j}|d k	r
d | _t|t| jkr|}nd }|t	dt| | j
 }z| |t  W n2 tk
rN }	 z| d|	 W 5 d }	~	X Y nX |d kr^|S |  r|| j| r^|S q^|r|| j}z| | | t W n2 tk
r }	 z| d|	 W 5 d }	~	X Y nX |s^qq^|S )	Nr   r   re   NOBADr   z#mailbox status changed to READ-ONLY    z {%s}zsocket error: %s)rE   rp   rF   r?   r   rH   rJ   rA   _new_tagbytesrZ   r   r   type_commandr   r   r   rR   r@   rj   rG   rI   )
rT   r   rz   r   tagr   argrF   Z	literatorvalr=   r=   r>   r    sb    



 

 



 zIMAP4._commandc              
   C   s   |dk}|s|    z| j||d\}}W nj | jk
r` } z| d||f W 5 d }~X Y n6 | jk
r } z| d||f W 5 d }~X Y nX |s|    |dkr| d|||f ||fS )Nr   )
expect_byezcommand: %s => %sr  z%s command error: %s %s)r  _get_tagged_responser@   r?   )rT   r   r  ry   r   r   r  r=   r=   r>   _command_complete  s    "$zIMAP4._command_completec                 C   sJ   |   \}}|d gkr | dt|d | j}| }t| | _d S )Nz"no CAPABILITY response from serverr   )r   r?   r   rZ   r   tuplesplitrm   r   r=   r=   r>   rk   
  s    

zIMAP4._get_capabilitiesc                 C   s  |   }| | j|rp| jd}|| jkr:| d| | jd}t|| j}| jd}||gf| j|< nd }| t	|s| | j
|r| jd}| jd kr| t|r| jd| _d S | d| | jd}t|| j}| jd}|d krd}|r|d | }| | j|rZt| jd	}| |}| |||f |   }q| || |d
kr| t|r| jd}t|| j}| || jd |S )Nr  zunexpected tagged response: %rr  r   Zdata2zunexpected response: %rr  r  r   r	  )	_get_line_matchrh   mogrouprG   r@   r   rZ   Untagged_responsera   ContinuationrI   r_   intr   r  Response_code)rT   respr  r   r   Zdat2r   r   r=   r=   r>   rj     sH    


  
zIMAP4._get_responsec              
   C   s   | j | }|d k	r| j |= |S |rDd}| j|d }|d k	rD||fS |   z|   W q  | jk
r~ } z W 5 d }~X Y q X q d S )Nr  )rG   rH   popr  rj   r@   )rT   r  r  resultr   r  r  r=   r=   r>   r  c  s    
zIMAP4._get_tagged_responsec                 C   s>   |   }|s| d|ds.| d| |d d }|S )Nzsocket error: EOFr   z#socket error: unterminated line: %r)r   r@   endswithr   r=   r=   r>   r    s    

zIMAP4._get_linec                 C   s   | || _| jd k	S rv   )matchr  )rT   Zcresr=   r=   r>   r    s    zIMAP4._matchc                 C   s2   | j tt| j| j }| jd | _d | j|< |S )Nr   )rg   r  r   rK   rZ   rG   )rT   r  r=   r=   r>   r    s    
zIMAP4._new_tagc                 C   s$   | dd}| dd}d| d S )N\z\\"z\")r   )rT   r  r=   r=   r>   r     s    zIMAP4._quotec                 G   s   |  || j|f| S rv   )r  r  r  r=   r=   r>   r     s    zIMAP4._simple_commandc                 C   s8   |dkr||fS || j kr$|d gfS | j |}||fS )Nr
  )rH   r"  )rT   r   r   r   r   r=   r=   r>   r     s    

zIMAP4._untagged_response)r   r   )r   r   )r   F)N)F)Sr:   r;   r<   rP   r?   r@   rA   
IMAP4_PORTrW   rM   rd   rO   ru   rw   r{   r   rN   r   r   r   rQ   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  rk   rj   r  r  r  r  r   r   r   _mesgZ_dump_urZ_logZ	print_logr=   r=   r=   r>   r      s   .*		
	


 	

M	P
!$c                   @   s6   e Zd ZdedddfddZdd ZdefddZdS )		IMAP4_SSLrB   Nc                 C   s   |d k	r|d k	rt d|d k	r0|d k	r0t d|d k	s@|d k	rVdd l}|dtd || _|| _|d krxtj||d}|| _t	
| || d S )Nz8ssl_context and keyfile arguments are mutually exclusivez9ssl_context and certfile arguments are mutually exclusiver   zEkeyfile and certfile are deprecated, use a custom ssl_context instead   )certfilekeyfile)
ValueErrorwarningswarnDeprecationWarningr/  r.  r   r   r   r   rW   )rT   rU   rV   r/  r.  r   r1  r=   r=   r>   rW     s$     zIMAP4_SSL.__init__c                 C   s   t | }| jj|| jdS )Nr   )r   r   r   r   rU   )rT   r   r=   r=   r>   r     s    
zIMAP4_SSL._create_socketc                 C   s   t | || d S rv   )r   rN   rS   r=   r=   r>   rN     s    zIMAP4_SSL.open)r:   r;   r<   IMAP4_SSL_PORTrW   r   rN   r=   r=   r=   r>   r,    s    
r,  c                   @   s>   e Zd Zdd ZdddZdd Zdd	 Zd
d Zdd ZdS )r   c                 C   s   || _ t|  d S rv   )r   r   rW   )rT   r   r=   r=   r>   rW   /  s    zIMAP4_stream.__init__Nc                 C   sN   d | _ d | _d | _d | _tj| jttjtjddd| _	| j	j
| _| j	j| _d S )NT)bufsizestdinstdoutshellZ	close_fds)rU   rV   r   r   
subprocessPopenr   r   PIPEr   r6  	writefiler7  readfilerS   r=   r=   r>   rN   4  s      
zIMAP4_stream.openc                 C   s   | j |S rv   )r=  r   r   r=   r=   r>   r   D  s    zIMAP4_stream.readc                 C   s
   | j  S rv   )r=  r   rb   r=   r=   r>   r   I  s    zIMAP4_stream.readlinec                 C   s   | j | | j   d S rv   )r<  writeflushr   r=   r=   r>   r   N  s    zIMAP4_stream.sendc                 C   s"   | j   | j  | j  d S rv   )r=  r   r<  r   waitrb   r=   r=   r>   rQ   T  s    

zIMAP4_stream.shutdown)NN)	r:   r;   r<   rW   rN   r   r   r   rQ   r=   r=   r=   r>   r   #  s   
c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r   c                 C   s
   || _ d S rv   )r   )rT   Zmechinstr=   r=   r>   rW   b  s    z_Authenticator.__init__c                 C   s&   |  | |}|d krdS | |S )N   *)r   r   r   )rT   r   Zretr=   r=   r>   r   e  s    z_Authenticator.processc                 C   sn   d}t |tr|d}|rjt|dkrB|d d }|dd  }n|}d}t|}|r||d d  }q|S )Nr  rc   0   r   )r   r   r   r   binasciiZ
b2a_base64)rT   inpZoupter=   r=   r>   r   k  s    	


z_Authenticator.encodec                 C   s   |sdS t |S r  )rC  Z
a2b_base64)rT   rD  r=   r=   r>   r     s    z_Authenticator.decodeN)r:   r;   r<   rW   r   r   r   r=   r=   r=   r>   r   \  s   r   z0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Decr   c                 C   s   i | ]\}}|  |d  qS )r   )r   ).0nr'  r=   r=   r>   
<dictcomp>  s      rI  r   c              	   C   s   t | }|sd S t|d }|d}t|d}t|d}t|d}t|d}t|d}t|d}	t|d	}
|	d
 |
 d
 }|dkr| }||||||dddf	}t|| }t|S )Nmonzonendayyearhourminseczonehzonem<      -r   )	InternalDater&  Mon2numr  r  calendarZtimegmtime	localtime)r!  r  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  ZzoneZttutcr=   r=   r>   r     s$    

c                 C   s@   d}d}t t| } | r<t| d\} }|||d  | }q|S )Nr  s   ABCDEFGHIJKLMNOP   r   )r  absdivmod)Znumr  ZAPmodr=   r=   r>   r	     s     c                 C   s$   t | }|sdS t|d S )Nr=   r   )Flagsr&  r  r  r  )r!  r  r=   r=   r>   r
     s    
c                 C   s  t | ttfr"t| tj }nt | trz
| j	}W nZ t
k
r   tjr| d }|dkrptt| d }tjtjf|  }ntj }Y nX t|d}t| d d dt|i}nLt | tr| jd krtd| }n*t | tr| d | d fdkr| S td	d
t|j }||S )N   r   )Zseconds   tzinfozdate_time must be awarer   )r)  r)  zdate_time not of a known typez"%d-{}-%Y %H:%M:%S %z")r   r  floatr   Zfromtimestampr   rZ  Z
astimezoner  	tm_gmtoffrs   rX  daylightrY  mktimealtzoner   rb  r0  r   formatMonthsZmonthstrftime)r   ZdtZgmtoffZdstZdeltaZfmtr=   r=   r>   r     s2    





__main__zd:s:)r=   r=   z-dz-s)rB   zIMAP password for %s on %s: Z	localhostzJFrom: %(user)s@localhost%(lf)sSubject: IMAP4 test%(lf)s%(lf)sdata...%(lf)s
)r   Zlfr   )r   )
/tmp/xxx 1)r   )rm  z/tmp/yyy)r   
/tmp/yyz 2r   ro  )r   )z/tmpzyy*)r   rn  )r   )NZSUBJECTZtest)r   )1z(FLAGS INTERNALDATE RFC822))r   )rp  FLAGSz
(\Deleted))r   r=   )r   r=   )r   r=   )r   r=   )r   r=   )r   )ZUIDVALIDITY)r   )r,   ZALL)r   )r   )ry   r=   c                 C   sL   t d| |f  tt | | \}}t d| ||f  |dkrH|d |S )Nz%s %sz%s => %s %sr
  r   )Mr+  rq   )cmdrz   r   r   r=   r=   r>   run'  s     rt  r   zPROTOCOL_VERSION = %szCAPABILITIES = %rr   )z/tmp/zyy%z.*"([^"]+)"$r   r   r   r   z%sz:(FLAGS INTERNALDATE RFC822.SIZE RFC822.HEADER RFC822.TEXT)z
All tests OK.z
Tests failed.z8
If you would like to see debugging output,
try: %s -d5
)Tri   rC  r   rf   r[   r~   r9  r|   rX  rW  r   r   r   ior   r   r   ImportError__all__r   rC   r*  r4  rl   r   rp   r\   r  r_  rU  r^   r_   r   r   r  ra   r]   r`   r   r,  r   r   r   r  ri  	enumeraterV  r   r	   r
   r   r:   ZgetoptZgetpassargvZoptlistrz   r?   r  Zstream_commandoptr  rU   ZgetuserZUSERZPASSWDZ	test_mesgZ	test_seq1Z	test_seq2rt  rr  rE   r+  rn   rm   rs  Zmlr&  r  r  pathr   r   printr=   r=   r=   r>   <module>   sX  H
  	/



	

         l4
9,
#)



 
 


 
 
