HEX
Server: LiteSpeed
System: Linux 112.webhostingindonesia.co.id 5.14.0-570.62.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 10:10:59 EST 2025 x86_64
User: iyfwylsv (10313)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //usr/lib64/python3.9/__pycache__/imaplib.cpython-39.opt-2.pyc
a

RT�i���+@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
m
Z
mZmZddl
mZzddlZdZWney�dZYn0gd�ZdZdZd	Zd
ZdZdZd
Zddddddddddddddddddddddddddddddddddddddddddd�*Ze�d�Ze�d�Ze�d�Ze�dej�Z e�d�Z!e�d�Z"e�d�Z#e�dej�Z$dZ%dZ&e�d�Z'Gdd�d�Z(e�r�Gdd �d e(�Z)e�*d �Gd!d"�d"e(�Z+Gd#d$�d$�Z,d%�-d&�Z.d'd(�e/e.d)d��D�Z0d*d+�Z1d,d-�Z2d.d/�Z3d0d1�Z4e5d2k�r�ddl6Z6ddl7Z7ze6�6ej8d)d�d3�\Z9Z:Wn0e6j;�ytZ<zd4\Z9Z:WYdZ<[<n
dZ<[<00dZ=e9D]8\Z>Z<e>d5k�r�e?e<�Zne>d6k�r~e<Z=e:�s~e=fZ:�q~e:�s�d7Z:e:dZ@e7�A�ZBe7�7d8eBe@�p�d9f�ZCd:eBd;d<�ZDd=eBeCffd>d?d@dAdBddeDffdCdDdEdFdGdHdIdJdKfZEdLdMdNdOdAdddeDffdJdPfZFdQdR�ZG�ze=�rfe+e=�ZHne(e@�ZHeHjIdSk�r�eEd)d�ZEeH�JdTeHjK�eH�JdUeHjLf�eED]\ZMZ:eGeMe:��q�eGdVdW�D]<ZNe�OdXeN�ZPeP�r�eP�Qd)�ZRneN�-�dYZReGdZeRf��q�eFD]T\ZMZ:eGeMe:�ZSeMe:fdNk�r2�qeSdY�-�ZTeT�sH�qeGd[d\d]eTdYd^f��qeUd_�Wn.eUd`�e�s�eUdaej8d��Yn0dS)bz2.58�N)�datetime�timezone�	timedelta)�DEFAULT_BUFFER_SIZETF)�IMAP4�IMAP4_stream�Internaldate2tuple�Int2AP�
ParseFlags�Time2Internaldate�
�i�)Z	IMAP4REV1ri@Bi)�AUTH�SELECTED)�NONAUTH)rrr�LOGOUT)r)r)*�APPEND�AUTHENTICATE�
CAPABILITY�CHECK�CLOSE�COPY�CREATE�DELETE�	DELETEACL�ENABLE�EXAMINE�EXPUNGE�FETCH�GETACL�
GETANNOTATION�GETQUOTA�GETQUOTAROOT�MYRIGHTS�LIST�LOGINr�LSUBZMOVE�	NAMESPACE�NOOP�PARTIAL�	PROXYAUTH�RENAME�SEARCH�SELECT�SETACL�
SETANNOTATION�SETQUOTA�SORT�STARTTLS�STATUS�STORE�	SUBSCRIBE�THREAD�UID�UNSUBSCRIBE�UNSELECTs\+( (?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>.*))?s[-]c@s�eZdZGdd�de�ZGdd�de�ZGdd�de�Zdedfd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdedfdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Z d;d<�Z!d=d>�Z"d?d@�Z#dAdB�Z$dCdD�Z%dEdF�Z&dGdH�Z'd�dKdL�Z(dMdN�Z)dOdP�Z*dQdR�Z+dSdT�Z,d�dUdV�Z-dWdX�Z.dYdZ�Z/d[d\�Z0d]d^�Z1d_d`�Z2dadb�Z3dcdd�Z4d�dgdh�Z5didj�Z6dkdl�Z7dmdn�Z8dodp�Z9d�dqdr�Z:dsdt�Z;dudv�Z<dwdx�Z=dydz�Z>d{d|�Z?d}d~�Z@dd��ZAd�d��ZBd�d��ZCd�d��ZDd�d��ZEd�d��ZFd�d��ZGd�d��ZHd�d�d��ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOdS)�rc@seZdZdS)zIMAP4.errorN��__name__�
__module__�__qualname__�r>r>�/usr/lib64/python3.9/imaplib.py�error��r@c@seZdZdS)zIMAP4.abortNr:r>r>r>r?�abort�rArBc@seZdZdS)zIMAP4.readonlyNr:r>r>r>r?�readonly�rArC�NcCs�t|_d|_d|_i|_i|_d|_d|_d|_d|_	|�
�|�|||�z|��Wn4t
y�z|��Wnty�Yn0�Yn0dS)NrrDFr)�Debug�debug�state�literal�tagged_commands�untagged_responses�continuation_response�is_readonly�tagnum�_tls_established�_mode_ascii�open�_connect�	Exception�shutdown�OSError��self�host�port�timeoutr>r>r?�__init__�s&zIMAP4.__init__cCs0d|_d|_t�ttj�|_t�ttj�|_dS)NF�ascii)	�utf8_enabled�	_encoding�re�compile�_Literal�ASCII�Literal�_Untagged_status�Untagged_status�rVr>r>r?rO�szIMAP4._mode_asciicCs(d|_d|_t�t�|_t�t�|_dS)NT�utf-8)r\r]r^r_r`rbrcrdrer>r>r?�
_mode_utf8�szIMAP4._mode_utf8cCs�tt�dd��|_t�d|jdtj�|_|�	�|_
d|jvrHd|_nd|jvrZd|_n|�
|j
��|��tD]}||jvr�qr||_dS|�
d	��dS)
Nii��s(?P<tag>s"\d+) (?P<type>[A-Z]+) (?P<data>.*)ZPREAUTHr�OKrzserver not IMAP4 compliant)r	�random�randint�tagprer^r_ra�tagre�__version__�
_get_responseZwelcomerJrGr@�_get_capabilities�AllowedVersions�capabilities�PROTOCOL_VERSION)rV�versionr>r>r?rQ�s*���



zIMAP4._connectcCs&|tvrt||���Std|��dS)NzUnknown IMAP4 command: '%s')�Commands�getattr�lower�AttributeError)rV�attrr>r>r?�__getattr__szIMAP4.__getattr__cCs|S�Nr>rer>r>r?�	__enter__szIMAP4.__enter__cGs2|jdkrdSz|��Wnty,Yn0dS�Nr)rG�logoutrT)rV�argsr>r>r?�__exit__s
zIMAP4.__exit__cCs`|dur|std��|jsdn|j}t�d||j|j�||jf}|durVt�||�St�|�S)Nz0Non-blocking socket (timeout=0) is not supportedzimaplib.open)�
ValueErrorrW�sys�auditrX�socket�create_connection)rVrYrW�addressr>r>r?�_create_socket&s
zIMAP4._create_socketcCs*||_||_|�|�|_|j�d�|_dS)N�rb)rWrXr��sock�makefile�filerUr>r>r?rP3sz
IMAP4.opencCsVt|t�}|j�|�}||krRt|�|krRt|||�}||j�|�7}||7}q|Srz)�min�_SAFE_BUF_SIZEr��read�len)rV�sizeZcursize�data�deltar>r>r?r�?s

z
IMAP4.readcCs.|j�td�}t|�tkr*|�dt��|S)N�zgot more than %d bytes)r��readline�_MAXLINEr�r@�rV�liner>r>r?r�JszIMAP4.readlinecCst�d||�|j�|�dS)Nzimaplib.send)r�r�r��sendall�rVr�r>r>r?�sendRsz
IMAP4.sendc
Cs�|j��zdz|j�tj�WnBty`}z*|jtjkrLt	|dd�dkrL�WYd}~n
d}~00W|j��n|j��0dS)N�winerrorri&')
r��closer�rSr��	SHUT_RDWRrT�errnoZENOTCONNru)rV�excr>r>r?rSXs
�zIMAP4.shutdowncCs|jSrz)r�rer>r>r?r�hszIMAP4.socketcCsBd}|�ddg|�\}}|dr(||fS|��\}}|�|||�S)NZRECENTrh���)�_untagged_response�noop�rV�name�typ�datr>r>r?�recentts	zIMAP4.recentcCs|�|dg|���Srz)r��upper)rV�coder>r>r?�response�szIMAP4.responsecCsxd}|sd}|r.|d|dfdkr2d|}nd}|r@t|�}nd}t�t|�}|jrbd|d}||_|�||||�S)	Nr�INBOXrr���(�)�(%s)sUTF8 (�))r�MapCRLF�sub�CRLFr\rH�_simple_command)rV�mailbox�flags�	date_time�messager�rHr>r>r?�append�s

zIMAP4.appendcCsP|��}t|�j|_|�d|�\}}|dkrB|�|d�dd���d|_||fS)Nrrhr�rf�replacer)r��_Authenticator�processrHr�r@�decoderG)rVZ	mechanismZ
authobject�mechr�r�r>r>r?�authenticate�szIMAP4.authenticatecCs d}|�|�\}}|�|||�S)Nr�r�r�r�r>r>r?�
capability�szIMAP4.capabilitycCs
|�d�S)Nr�r�rer>r>r?�check�szIMAP4.checkcCs*z|�d�\}}Wd|_nd|_0||fS)Nrr�r�rG�rVr�r�r>r>r?r��szIMAP4.closecCs|�d||�S)Nrr�)rV�message_setZnew_mailboxr>r>r?�copy�sz
IMAP4.copycCs|�d|�S)Nrr��rVr�r>r>r?�create�szIMAP4.createcCs|�d|�S)Nrr�r�r>r>r?�delete�szIMAP4.deletecCs|�d||�S)Nrr�)rVr��whor>r>r?�	deleteaclszIMAP4.deleteaclcCsHd|jvrt�d��|�d|�\}}|dkr@d|��vr@|��||fS)NrzServer does not support ENABLErhzUTF8=ACCEPT)rqrr@r�r�rg)rVr�r�r�r>r>r?�enables

zIMAP4.enablecCs d}|�|�\}}|�|||�S)Nrr�r�r>r>r?�expunges	z
IMAP4.expungecCs$d}|�|||�\}}|�|||�S)Nrr�)rVr�Z
message_partsr�r�r�r>r>r?�fetch"s
zIMAP4.fetchcCs|�d|�\}}|�||d�S)NrZACLr��rVr�r�r�r>r>r?�getacl1szIMAP4.getaclcCs"|�d|||�\}}|�||d�S)Nr �
ANNOTATIONr�)rVr��entryZ	attributer�r�r>r>r?�
getannotation:szIMAP4.getannotationcCs|�d|�\}}|�||d�S)Nr!�QUOTAr�)rV�rootr�r�r>r>r?�getquotaBszIMAP4.getquotacCs@|�d|�\}}|�||d�\}}|�||d�\}}|||gfS)Nr"r�Z	QUOTAROOTr�)rVr�r�r�ZquotaZ	quotarootr>r>r?�getquotarootMszIMAP4.getquotaroot�""�*cCs$d}|�|||�\}}|�|||�S)Nr$r��rVZ	directory�patternr�r�r�r>r>r?�listXsz
IMAP4.listcCs<|�d||�|��\}}|dkr.|�|d��d|_||fS)Nr%rhr�r)r��_quoter@rG)rV�user�passwordr�r�r>r>r?�loginds
zIMAP4.logincCs|||_|_|�d|j�S)NzCRAM-MD5)r�r�r��_CRAM_MD5_AUTH)rVr�r�r>r>r?�login_cram_md5rszIMAP4.login_cram_md5cCsBddl}t|jt�r |j�d�n|j}|jd|�||d���S)Nrrf� �md5)�hmac�
isinstancer��str�encoder��HMAC�	hexdigest)rVZ	challenger��pwdr>r>r?r�{s
�zIMAP4._CRAM_MD5_AUTHcCs$d|_|�d�\}}|��||fSr|)rGr�rSr�r>r>r?r}�szIMAP4.logoutcCs$d}|�|||�\}}|�|||�S)Nr&r�r�r>r>r?�lsub�sz
IMAP4.lsubcCs|�d|�\}}|�||d�S)Nr#r�r�r>r>r?�myrights�szIMAP4.myrightscCs d}|�|�\}}|�|||�S)Nr'r�r�r>r>r?�	namespace�szIMAP4.namespacecCs
|�d�S)Nr(r�rer>r>r?r��sz
IMAP4.noopcCs(d}|�|||||�\}}|�||d�S)Nr)rr�)rVZmessage_numZmessage_part�start�lengthr�r�r�r>r>r?�partial�sz
IMAP4.partialcCsd}|�d|�S)Nr*r�)rVr�r�r>r>r?�	proxyauth�s	zIMAP4.proxyauthcCs|�d||�S)Nr+r�)rVZ
oldmailboxZ
newmailboxr>r>r?�rename�szIMAP4.renamecGsXd}|r4|jrt�d��|j|d|g|�R�\}}n|j|g|�R�\}}|�|||�S)Nr,z'Non-None charset not valid in UTF8 mode�CHARSET)r\rr@r�r�)rV�charsetZcriteriar�r�r�r>r>r?�search�s
zIMAP4.searchr�FcCsvi|_||_|rd}nd}|�||�\}}|dkr@d|_||fSd|_d|jvrb|sb|�d|��||j�ddg�fS)	Nrr-rhrr�	READ-ONLYz%s is not writable�EXISTS)rJrLr�rGrC�get)rVr�rCr�r�r�r>r>r?�select�s
�zIMAP4.selectcCs|�d|||�S)Nr.r�)rVr�r�Zwhatr>r>r?�setaclszIMAP4.setaclcGs$|jdg|�R�\}}|�||d�S)Nr/r�r�)rVr~r�r�r>r>r?�
setannotationszIMAP4.setannotationcCs |�d||�\}}|�||d�S)Nr0r�r�)rVr�Zlimitsr�r�r>r>r?�setquotaszIMAP4.setquotacGsHd}|d|dfdkr d|}|j|||g|�R�\}}|�|||�S)Nr1rr�r�r�r�)rVZ
sort_criteriar��search_criteriar�r�r�r>r>r?�sort$s
z
IMAP4.sortcCs�d}ts|�d��|jr"|�d��||jvr6|�d��|durFt��}|�|�\}}|dkr�|j|j	|j
d�|_	|j	�d�|_d|_|�
�n
|�d	��|�|||�S)
Nr2zSSL support missingzTLS session already establishedzTLS not supported by serverrh�Zserver_hostnamer�TzCouldn't establish TLS session)�HAVE_SSLr@rNrBrq�ssl�_create_stdlib_contextr��wrap_socketr�rWr�r�ror�)rV�ssl_contextr�r�r�r>r>r?�starttls2s&



�

zIMAP4.starttlscCs$d}|�|||�\}}|�|||�S)Nr3r�)rVr��namesr�r�r�r>r>r?�statusIszIMAP4.statuscCs>|d|dfdkrd|}|�d|||�\}}|�||d�S)Nrr�r�r�r4rr�)rVr��commandr�r�r�r>r>r?�storeUszIMAP4.storecCs|�d|�S)Nr5r�r�r>r>r?�	subscribe`szIMAP4.subscribecGs,d}|j|||g|�R�\}}|�|||�S)Nr6r�)rVZthreading_algorithmr�r�r�r�r�r>r>r?�threadhszIMAP4.threadc	Gs�|��}|tvr|�d|��|jt|vrL|�d||jd�t|�f��d}|j||g|�R�\}}|dvrv|}nd}|�|||�S)NzUnknown IMAP4 UID command: %s�9command %s illegal in state %s, only allowed in states %s�, r7)r,r1r6r)r�rtr@rG�joinr�r�)rVr	r~r�r�r�r>r>r?�uidrs��z	IMAP4.uidcCs|�d|�S)Nr8r�r�r>r>r?�unsubscribe�szIMAP4.unsubscribecCs*z|�d�\}}Wd|_nd|_0||fS)Nr9rr�)rVr�r�r>r>r?�unselect�s	zIMAP4.unselectcGs.|��}|tvr|jft|<|j|g|�R�Srz)r�rtrGr��rVr�r~r>r>r?�xatom�s
zIMAP4.xatomcCs8|durd}|j}||vr*||�|�n
|g||<dS�NrA)rJr�r�)rVr�r��urr>r>r?�_append_untagged�szIMAP4._append_untaggedcCs,|j�d�}|r(|�|d�|jd���dS)N�BYEr�r�)rJr�rBr�r])rV�byer>r>r?�
_check_bye�szIMAP4._check_byec

Gs|jt|vr4d|_|�d||jd�t|�f��dD]}||jvr8|j|=q8d|jvrj|jsj|�d��|��}t	||j
�}|d|}|D]B}|dur�q�t|t�r�t	||j
�}t
�|�r�td��|d|}q�|j}|du�rd|_t|�t|j�u�r|}nd}|t	dt|�|j
�}z|�|t�Wn4t�yd}	z|�d	|	��WYd}	~	n
d}	~	00|du�rt|S|���r�|j|�rt|S�qt|�r�||j�}z|�|�|�t�Wn4t�y�}	z|�d	|	��WYd}	~	n
d}	~	00|�st�q��qt|S)
Nr
r�rh�NO�BADr�z#mailbox status changed to READ-ONLY� z*Control characters not allowed in commandsz {%s}zsocket error: %s)rGrtrHr@rrJrLrC�_new_tag�bytesr]r�r��_control_charsr�r��type�_commandr�r�r�rTrBrnrIrK)
rVr�r~r��tagr��argrHZ	literator�valr>r>r?r#�sd��


�




$



$zIMAP4._commandc
Cs�|dk}|s|��z|j||d�\}}Wnn|jyb}z|�d||f��WYd}~n@d}~0|jy�}z|�d||f��WYd}~n
d}~00|s�|��|dkr�|�d|||f��||fS)Nr)�
expect_byezcommand: %s => %srz%s command error: %s %s)r�_get_tagged_responserBr@)rVr�r$r}r�r�r&r>r>r?�_command_completes&(zIMAP4._command_completecCsJ|��\}}|dgkr |�d��t|d|j�}|��}t|���|_dS)Nz"no CAPABILITY response from serverr�)r�r@r�r]r��tuple�splitrqr�r>r>r?ro.s

zIMAP4._get_capabilitiescCs�|��}|�|j|�rp|j�d�}||jvr:|�d|��|j�d�}t||j�}|j�d�}||gf|j|<n�d}|�t	|�s�|�|j
|�r�|j�d�}|jdur�|�t|�r�|j�d�|_dS|�d|��|j�d�}t||j�}|j�d�}|du�rd}|�r|d|}|�|j
|��rZt|j�d	��}|�|�}|�|||f�|��}�q|�||�|d
v�r�|�t|��r�|j�d�}t||j�}|�||j�d��|S)Nr$zunexpected tagged response: %rr"r�Zdata2zunexpected response: %rrArr�r)�	_get_line�_matchrl�mo�grouprIrBr�r]�Untagged_responserd�ContinuationrKrb�intr�r�
Response_code)rV�respr$r�r�Zdat2r�r�r>r>r?rn7sD


zIMAP4._get_responsec
Cs�|j|}|dur|j|=|S|rDd}|j�|d�}|durD||fS|��z|��Wq|jy�}z�WYd}~qd}~00qdS)Nr)rIrJ�poprrnrB)rVr$r'�resultr�rr&r>r>r?r(�s
zIMAP4._get_tagged_responsecCs>|��}|s|�d��|�d�s.|�d|��|dd�}|S)Nzsocket error: EOFrz#socket error: unterminated line: %r���)r�rB�endswithr�r>r>r?r,�s

zIMAP4._get_linecCs|�|�|_|jduSrz)�matchr.)rVZcre�sr>r>r?r-�szIMAP4._matchcCs2|jtt|j�|j�}|jd|_d|j|<|S)Nr�)rkr r�rMr]rI)rVr$r>r>r?r�s
zIMAP4._new_tagcCs$|�dd�}|�dd�}d|dS)N�\z\\�"z\")r�)rVr%r>r>r?r��szIMAP4._quotecGs|�||j|g|�R��Srz)r)r#rr>r>r?r��szIMAP4._simple_commandcCs8|dkr||fS||jvr$|dgfS|j�|�}||fS)Nr)rJr5)rVr�r�r�r�r>r>r?r��s

zIMAP4._untagged_response)r�r�)r�r�)r�F)N)F)Tr;r<r=rRr@rBrC�
IMAP4_PORTrZrOrgrQryr{rr�rPr�r�r�rSr�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�r�r�r�r�r�r�r�r�r�r�r�rrr
rrrrrrrrr#r)rornr(r,r-rr�r�r��_mesgZ_dump_ur�_logZ	print_logr>r>r>r?r�s�1*

		
	



 	

O	P
!$rc@s:eZdZdeddddfdd�Zdd�Zdedfdd�ZdS)	�	IMAP4_SSLrDNcCs�|dur|durtd��|dur0|dur0td��|dus@|durVddl}|�dtd�||_||_|durxtj||d�}||_t	�
||||�dS)Nz8ssl_context and keyfile arguments are mutually exclusivez9ssl_context and certfile arguments are mutually exclusiverzEkeyfile and certfile are deprecated, use a custom ssl_context instead�)�certfile�keyfile)r��warnings�warn�DeprecationWarningrCrBrrrrrZ)rVrWrXrCrBrrYrDr>r>r?rZ%s"��zIMAP4_SSL.__init__cCst�||�}|jj||jd�S)Nr)rr�rrrW)rVrYr�r>r>r?r�9s�zIMAP4_SSL._create_socketcCst�||||�dSrz)rrPrUr>r>r?rP>szIMAP4_SSL.open)r;r<r=�IMAP4_SSL_PORTrZr�rPr>r>r>r?r@s
�
r@c@s>eZdZdd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�ZdS)rcCs||_t�|�dSrz)r	rrZ)rVr	r>r>r?rZUszIMAP4_stream.__init__NcCsNd|_d|_d|_d|_tj|jttjtjddd�|_	|j	j
|_|j	j|_
dS)NT)�bufsize�stdin�stdout�shell�	close_fds)rWrXr�r��
subprocess�Popenr	r�PIPEr�rI�	writefilerJ�readfilerUr>r>r?rPZs�
zIMAP4_stream.opencCs|j�|�Srz)rQr�)rVr�r>r>r?r�jszIMAP4_stream.readcCs
|j��Srz)rQr�rer>r>r?r�oszIMAP4_stream.readlinecCs|j�|�|j��dSrz)rP�write�flushr�r>r>r?r�tszIMAP4_stream.sendcCs"|j��|j��|j��dSrz)rQr�rPr��waitrer>r>r?rSzs

zIMAP4_stream.shutdown)NNN)	r;r<r=rZrPr�r�r�rSr>r>r>r?rIs
rc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
r�cCs
||_dSrz)r�)rVZmechinstr>r>r?rZ�sz_Authenticator.__init__cCs&|�|�|��}|durdS|�|�S)N�*)r�r�r�)rVr��retr>r>r?r��sz_Authenticator.processcCsnd}t|t�r|�d�}|rjt|�dkrB|dd�}|dd�}n|}d}t�|�}|r||dd�}q|S)NrArf�0r�)r�r�r�r��binasciiZ
b2a_base64)rV�inpZoup�t�er>r>r?r��s	


z_Authenticator.encodecCs|sdSt�|�Sr)rXZ
a2b_base64)rVrYr>r>r?r��sz_Authenticator.decodeN)r;r<r=rZr�r�r�r>r>r>r?r��sr�z0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Decr�cCsi|]\}}|��|d�qS)r�)r�)�.0�nr:r>r>r?�
<dictcomp>�rAr^r�c	Cs�t�|�}|sdSt|�d�}|�d�}t|�d��}t|�d��}t|�d��}t|�d��}t|�d��}t|�d��}	t|�d	��}
|	d
|
d
}|dkr�|}||||||dddf	}t�|�|}
t�|
�S)
N�mon�zonen�day�year�hourr��sec�zoneh�zonem�<�-r�)	�InternalDater9�Mon2numr/r2�calendarZtimegm�time�	localtime)r4r.r_r`rarbrcr�rdrerf�zone�tt�utcr>r>r?r�s$

rcCs@d}d}tt|��}|r<t|d�\}}|||d�|}q|S)NrAsABCDEFGHIJKLMNOP�r�)r2�abs�divmod)�numr&ZAP�modr>r>r?r	�sr	cCs$t�|�}|sdSt|�d����S)Nr>r�)�Flagsr9r*r/r+)r4r.r>r>r?r
�s
r
cCst|ttf�r"t�|tj���}n�t|t�r�z
|j	}WnXt
y�tjr�|d}|dkrnt�
t�|��d}tjtjf|}ntj}Yn0t|d�}t|dd�dt|�i�}nLt|t�r�|jdur�td��|}n*t|t�r�|d|dfdkr�|Std	��d
�t|j�}|�|�S)N�r�)Zseconds��tzinfozdate_time must be awarer)r<r<zdate_time not of a known typez"%d-{}-%Y %H:%M:%S %z")r�r2�floatrZ
fromtimestamprrpZ
astimezoner*�	tm_gmtoffrwrl�daylightrm�mktime�altzonerryr�r��format�MonthsZmonth�strftime)r�ZdtZgmtoff�dstr��fmtr>r>r?r�s2�





r�__main__zd:s:)r>r>z-dz-s)rDzIMAP password for %s on %s: �	localhostzJFrom: %(user)s@localhost%(lf)sSubject: IMAP4 test%(lf)s%(lf)sdata...%(lf)s�
)r�Zlfr�)r�)�
/tmp/xxx 1)r�)r�z/tmp/yyy)r��
/tmp/yyz 2r�r�)r�)z/tmpzyy*)r�r�)r�)NZSUBJECT�test)r�)�1z(FLAGS INTERNALDATE RFC822))r
)r��FLAGSz
(\Deleted))r�r>)r�r>)r�r>)r�r>)r�r>)r�)ZUIDVALIDITY)r)r,ZALL)r�)r�)r}r>cCsLt�d||f�tt|�|�\}}t�d|||f�|dkrH|d�|S)Nz%s %sz%s => %s %srr)�Mr>ru)�cmdr~r�r�r>r>r?�runMs
r�rzPROTOCOL_VERSION = %szCAPABILITIES = %rr�)z/tmp/zyy%z.*"([^"]+)"$r�r�rrz%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
)VrmrXr�rir^r�rMr�rlrkrrr�iorrr�ImportError�__all__r�rEr=rGrpr�r�rtr_r1rvrirarbr�r3r0rdr`rcr!rr@r�rr�r+r��	enumeraterjrr	r
rr;�getoptZgetpass�argvZoptlistr~r@r&Zstream_command�optr2rWZgetuserZUSERZPASSWDZ	test_mesgZ	test_seq1Z	test_seq2r�r�rGr>rrrqr��mlr9r.r/�pathr�r�printr>r>r>r?�<module>sNH
	�0



	

�

6
9,
#
)





��



�
�