U iÛf&^ã@sædddgZddlZddlZddlZddlZddlmZddlmZ e j Z dZ dZ d Z d Zd 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]Ê\}}}|dkrV|  ||f¡n¤|d kr|t j |¡}|  ||f¡n~|d krît|ƒd }|r¬|d dd |…7}zt j |¡}Wn tjk rÜtd ƒ‚YnX|  ||f¡n td|ƒ‚q2g}d}}| D]v\}}t|tƒr,t|dƒ}|dkr@|}|}nB||krb| ||f¡|}|}n |dkrz|t|7}n||7}q| ||f¡|S)NÚ_chunkscSs(g|] \}}t |t|ƒ¡t|ƒf‘qS©)Ú_charsetZ_encodeÚstr)Ú.0Ústringrrrú1/opt/alt/python38/lib64/python3.8/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              cCsFt|||d}|D].\}}|dk r4t|tƒs4t|ƒ}| ||¡q|S)N)Ú maxlinelenÚ header_nameÚcontinuation_ws)rr-ÚCharsetr!)Z decoded_seqr9r:r;ÚhÚsrrrrrœs ÿ c@sJeZdZddd„Zdd„Zdd „Zdd d „Zd d „Zddd„Zdd„Z dS)rNrÚstrictcCs||dkrt}nt|tƒs t|ƒ}||_||_g|_|dk rH| |||¡|dkrTt}||_|dkrjd|_ 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¡}|dkr‚|dkr˜|s˜| t¡d}n|dkr˜|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¶|dkr|j}nt|tƒs"t|ƒ}t|tƒsZ|jp4d}|tjkrN| dd¡}n | ||¡}|jpbd}|tjkr¢z| ||¡Wn"t k r |dkr˜‚t }YnX|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|dkS)N)ú(ú)ú\)r$)rEr>rrrrP4szHeader._nonctextú;, rcCs | ¡|dkr|j}|dkr"d}t|j||j|ƒ}d}d}}|jD]\}} |dk rœ|oh| |d¡}|dkrˆ|r~| dkrœ| ¡n| dkrœ|sœ| ¡|o¬| |d¡}| }d}| ¡} | rÖ|  d| d| ¡n|  dd| ¡| dd…D]`} |  ¡| j dk r"|  |jd|   ¡| ¡qð|   ¡} | dt | ƒt | ƒ…} |  | | | ¡qðt | ƒdkrF|  ¡qF|jrx| ¡| |¡}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ÚvaluerrrrO9sZ!ÿ    ÿ    ÿz Header.encodecCsxg}d}g}|jD]B\}}||kr.| |¡q|dk rJ| 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þ /  + Pc@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Ä|jdkr| |||j¡dS| || ¡¡}z| d¡}Wntk rRYdSX|dk rh| ||¡z | ¡}Wntk rŠYdSX| ¡|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ƒ|jkr|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~rrrrrras %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‰rrryrŽrrr+s z_Accumulator.popcCstdd„|Dƒ|jƒS)Ncss"|]\}}t|ƒt|ƒVqdSrX)r(©rrlr‡rrrÚ 1sz'_Accumulator.__len__..)ÚsumrŠryrrrÚ__len__0sÿz_Accumulator.__len__cCst dd„|Dƒ¡S)Ncss |]\}}t ||f¡VqdSrX©rRrSrrrrr‘5sÿz'_Accumulator.__str__..r”ryrrrrW4s ÿz_Accumulator.__str__NcCs"|dkr g}||dd…<d|_dSr})rŠ)rEZstartvalrrrr|8s z_Accumulator.resetcCs|jdko| pt|ƒ ¡Sr})rŠrr$ryrrrr{>sz_Accumulator.is_onlywscs tƒ ¡SrX)rr“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ÚsDý   ø  _ÿ k