a XC?h&^�@s�gd�ZddlZddlZddlZddlZddlmZddlmZ e j Z dZ dZ dZ dZd Zd Zd Ze d �Ze d �Ze�dejejB�Ze�d�Ze�d�ZejjZdd�Zddd�ZGdd�d�ZGdd�d�ZGdd�de �Z!dS))�Header� decode_header� make_header�N)�HeaderParseError)�charset� � � z ��Nz �us-asciizutf-8ai =\? # literal =? (?P[^?]*?) # non-greedy up to the next ? is the charset \? # literal ? (?P[qQbB]) # either a "q" or a "b", case insensitive \? # literal ? (?P.*?) # non-greedy up to the next ?= is the encoded string \?= # literal ?= z[\041-\176]+:$z \n[^ \t]+:c Cs�t|d�rdd�|jD�St�|�s.|dfgSg}|��D]�}t�|�}d}|r:|�d�}|rj|��}d}|r~|�|ddf�|rL|�d�� �}|�d�� �}|�d�}|�|||f�qLq:g} t |�D]J\} } | dkr�| dr�|| ddr�|| dd� �r�| �| d�q�t | �D] } || =�qg} |D]�\}}}|du�rV| �||f�n�|d k�r|t j�|�}| �||f�n||d k�r�t|�d }|�r�|d dd |�7}zt j�|�}Wntj�y�td ��Yn0| �||f�n td|���q2g}d}}| D]v\}}t|t��r*t|d�}|du�r>|}|}nB||k�r`|�||f�|}|}n |du�rx|t|7}n||7}�q |�||f�|S)N�_chunkscSs(g|] \}}t�|t|��t|�f�qS�)�_charsetZ_encode�str)�.0�stringrrr�1/opt/alt/python39/lib64/python3.9/email/header.py� Ms�z!decode_header..TrF���q�b�z===zBase64 decoding errorzUnexpected encoding: zraw-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)�headerZwords�line�parts�firstZ unencodedr�encodingZencodedZdroplist�n�w�dZ decoded_wordsZencoded_stringZwordZpaderrZ collapsedZ last_word� last_charsetrrrr=s| �      4              rcCsFt|||d�}|D].\}}|dur4t|t�s4t|�}|�||�q|S)N)� maxlinelen� header_name�continuation_ws)rr-�Charsetr!)Z decoded_seqr9r:r;�h�srrrrr�s � rc@sJeZdZddd�Zdd�Zdd �Zdd d �Zd d �Zddd�Zdd�Z dS)rNr�strictcCs||durt}nt|t�s t|�}||_||_g|_|durH|�|||�|durTt}||_|durjd|_ nt |�d|_ dS)Nrr) �USASCIIr-r<r�_continuation_wsr r!� MAXLINELEN� _maxlinelen� _headerlenr()�selfr>rr9r:r;�errorsrrr�__init__�s zHeader.__init__c Cs�|��g}d}d}|jD]�\}}|}|tjkrH|�dd�}|�dd�}|r�|o\|�|d�}|dvr�|dvr�|s�|�t�d}n|dvr�|s�|�t�|o�|�|d�}|}|�|�qt � |�S)N�ascii�surrogateescape�replacer�Nr �����) � _normalizer r� UNKNOWN8BIT�encoder)� _nonctextr!�SPACE� EMPTYSTRING�join) rEZuchunks�lastcs� lastspacerrZnextcsZoriginal_bytes�hasspacerrr�__str__�s*        zHeader.__str__cCs |t|�kS�N)r)rE�otherrrr�__eq__sz Header.__eq__cCs�|dur|j}nt|t�s"t|�}t|t�sZ|jp4d}|tjkrN|�dd�}n |�||�}|jpbd}|tjkr�z|�||�Wn t y�|dkr��t }Yn0|j � ||f�dS)Nr rI) rr-r<rZ input_codecrNr)Z output_codecrO�UnicodeEncodeError�UTF8r r!)rEr>rrFZ input_charsetZoutput_charsetrrrr! s$         z Header.appendcCs|��p|dvS)N)�(�)�\)r$)rEr>rrrrP4szHeader._nonctext�;, rcCs�|��|dur|j}|dkr"d}t|j||j|�}d}d}}|jD�]\}} |dur�|oh|�|d�}|dvr�|r~| dvr�|��n| dvr�|s�|��|o�|�|d�}| }d}|��} | r�|� d| d| �n|� dd| �| dd�D]`} |� �| j du�r"|� |jd| � �| �q�| � �} | dt | �t | ��} |� | | | �q�t | �dkrF|� �qF|j�rx|��|�|�}t�|��r�td �|���|S) Nri@BrKrLFr rrz8header value appears to contain an embedded header: {!r})rMrC�_ValueFormatterrDrAr rP�add_transitionr�feed�newline�header_encodingr r(�_str�_embedded_headerrr�format)rE� splitcharsr9�linesepZ formatterrTrVrUrr�linesr1Zsline�fws�valuerrrrO9sX!�    �    �z Header.encodecCsxg}d}g}|jD]B\}}||kr.|�|�q|durJ|�t�|�|f�|g}|}q|rn|�t�|�|f�||_dSrX)r r!rQrS)rEZchunksr8Z last_chunkrrrrrrM�s zHeader._normalize)NNNNrr?)Nr?)r`Nr) �__name__� __module__� __qualname__rGrWrZr!rPrOrMrrrrr�s� /  + Prc@sTeZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd d�Z dd�Z dd�Z dS)racCs0||_||_t|�|_||_g|_t|�|_dSrX)�_maxlenrAr(�_continuation_ws_len� _splitchars�_lines� _Accumulator� _current_line)rEZ headerlen�maxlenr;rirrrrG�s  z_ValueFormatter.__init__cCs|��|�|j�SrX)rdrSrt)rErjrrrrf�sz_ValueFormatter._strcCs |�t�SrX)rf�NL�rErrrrW�sz_ValueFormatter.__str__cCsv|j��}|dkr|jj|�t|j�dkrh|j��rV|jrV|jdt|j�7<n|j�t|j��|j��dS)N)rr rrL) rvr�pushr(� is_onlywsrtrr!�reset)rEZ end_of_linerrrrd�s  z_ValueFormatter.newlinecCs|j�dd�dS)Nrr )rvrzryrrrrb�sz_ValueFormatter.add_transitioncCs�|jdur|�|||j�dS|�||���}z|�d�}WntyPYdS0|durf|�||�z |��}Wnty�YdS0|��|j � |j |�|D]}|j � |j |�q�dS�Nr)re� _ascii_splitrsZheader_encode_lines� _maxlengthsr� IndexError� _append_chunkrdrvrzrArtr!)rErlrrZ encoded_linesZ first_line� last_liner1rrrrc�s$     z_ValueFormatter.feedccs&|jt|j�V|j|jVqdSrX)rqr(rvrrryrrrr�sz_ValueFormatter._maxlengthscCsft�dtd||�}|dr0dg|dd�<n |�d�tt|�gd�D]\}}|�||�qLdS)Nz([z]+)rr r)�rer�FWSr�zip�iterr�)rErlrrir2�partrrrr~�s  z_ValueFormatter._ascii_splitcCs|j�||�t|j�|jk�r|jD]v}t|j��ddd�D]T}|��rn|j|d}|rn|d|krnq�|j|dd}|r@|d|kr@q�q@q&q�q&|j��\}}|jj dkr�|� �|s�d}|j�||�dS|j� |�}|j � t|j��|j�|�dS)NrrrLr)rvrzr(rqrs�range� part_countr$r� _initial_sizerd�pop_fromrtr!rr|)rErlrZch�iZprevpartr�Z remainderrrrr��s.   z_ValueFormatter._append_chunkN) rnrorprGrfrWrdrbrcrr~r�rrrrra�s %racsjeZdZd�fdd� Zdd�Zddd�Z�fdd �Zd d �Zd d �Zddd�Z dd�Z �fdd�Z �Z S)rurcs||_t���dSrX)r��superrG)rEZ initial_size�� __class__rrrGsz_Accumulator.__init__cCs|�||f�dSrX)r!)rErlrrrrrz#sz_Accumulator.pushcCs||d�}g||d�<|SrXr)rEr�Zpoppedrrrr�&s  z_Accumulator.pop_fromcs|��dkrdSt���S)Nr)r r )r�r�rryr�rrr+s z_Accumulator.popcCstdd�|D�|j�S)Ncss"|]\}}t|�t|�VqdSrX)r(�rrlr�rrr� 1�z'_Accumulator.__len__..)�sumr�ryrrr�__len__0s�z_Accumulator.__len__cCst�dd�|D��S)Ncss |]\}}t�||f�VqdSrX�rRrSr�rrrr�5s�z'_Accumulator.__str__..r�ryrrrrW4s �z_Accumulator.__str__NcCs"|dur g}||dd�<d|_dSr})r�)rEZstartvalrrrr|8s z_Accumulator.resetcCs|jdko| pt|���Sr})r�rr$ryrrrr{>sz_Accumulator.is_onlywscs t���SrX)r�r�ryr�rrr�Asz_Accumulator.part_count)r)r)N) rnrorprGrzr�rr�rWr|r{r�� __classcell__rrr�rrus   ru)NNr)"�__all__r�r*Zemail.quoprimimer&Zemail.base64mimeZ email.errorsrrrr<rxrQr/ZSPACE8rRrBr�r@r\�compile�VERBOSE� MULTILINErZfcrergr'Z _max_appendrrrra�listrurrrr�s>   �  _� k