U iÛfÜQã@sÞdddgZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z ddl m Z d Zd Ze d ¡Ze d ej¡Ze d ¡ZGdd„dƒZGdd„deƒZdZGdd„deƒZeeejdƒƒZdeZejZdS)Ú GeneratorÚDecodedGeneratorÚBytesGeneratoréN)Údeepcopy)ÚStringIOÚBytesIO)Ú_has_surrogates)ÚHeaderWriteErrorÚ_Ú z \r\n|\r|\nz^From z\r\n[^ \t]|\r[^ \n\t]|\n[^ \t]c@s¬eZdZd&ddœdd„Zdd„Zd'dd „Zd d „Zd d „Zdd„Zdd„Z dd„Z dd„Z dd„Z dd„Z e Zdd„Zdd„Zdd„Zd d!„Zed(d"d#„ƒZed$d%„ƒZdS))rN©ÚpolicycCs6|dkr|dkrdn|j}||_||_||_||_dS)NT)Ú mangle_from_Ú_fpÚ _mangle_from_Ú maxheaderlenr )ÚselfÚoutfprrr ©rú4/opt/alt/python38/lib64/python3.8/email/generator.pyÚ__init__&s zGenerator.__init__cCs|j |¡dS©N)rÚwrite©rÚsrrrrFszGenerator.writeFcCsØ|jdkr|jn|j}|dk r*|j|d}|jdk rB|j|jd}|j|_| |j¡|_d|_| |j¡|_|j}|j}zL||_||_|r¸|  ¡}|s¨dt   t   ¡¡}|  ||j¡|  |¡W5||_||_XdS)N)Úlinesep©Zmax_line_lengthÚz From nobody )r ÚclonerrÚ_NLÚ_encodeÚ _encoded_NLZ_EMPTYÚ_encoded_EMPTYZ get_unixfromÚtimeÚctimerÚ_write)rÚmsgÚunixfromrr Zold_gen_policyZold_msg_policyZufromrrrÚflattenJs,  zGenerator.flattencCs|j||jd|jdS©Nr )Ú __class__rr )rÚfprrrr{s ýzGenerator.clonecCstƒSr)r©rrrrÚ _new_bufferszGenerator._new_buffercCs|Srrrrrrr “szGenerator._encodecCsT|sdSt |¡}|dd…D]}| |¡| |j¡q|drP| |d¡dS)Néÿÿÿÿ)ÚNLCREÚsplitrr)rÚlinesÚlinerrrÚ _write_lines—s  zGenerator._write_linescCsÀ|j}z"d|_| ¡|_}| |¡W5||_|j}|`X|r„t|ƒ}| d¡dkrd|d|d<n| d|d¡| d|d¡t|ddƒ}|dkr¤| |¡n||ƒ|j  |  ¡¡dS)Núcontent-transfer-encodingrúContent-Transfer-Encodingú content-typeéÚ_write_headers) rÚ _munge_cter-Ú _dispatchrÚgetZreplace_headerÚgetattrr8rÚgetvalue)rr&ZoldfpZ munge_cteZsfpÚmethrrrr%§s&   zGenerator._writecCst| ¡}| ¡}t ||f¡ dd¡}t|d|dƒ}|dkrh| dd¡}t|d|dƒ}|dkrh|j}||ƒdS)Nú-r Z_handle_)Úget_content_maintypeÚget_content_subtypeÚ UNDERSCOREÚjoinÚreplacer<Ú _writeBody)rr&ÚmainÚsubZspecificr>Zgenericrrrr:Îs zGenerator._dispatchcCs¤| ¡D]Š\}}|j ||¡}|jjrˆ|jj}| |jj¡sPtd|›d|›ƒ‚|}| |¡rp|dt|ƒ …}t  |¡rˆtd|›ƒ‚|  |¡q|  |j ¡dS)Nz folded header does not end with z: z folded header contains newline: ) Ú raw_itemsr ZfoldZverify_generated_headersrÚendswithr ÚlenÚNEWLINE_WITHOUT_FWSPÚsearchrr)rr&ÚhÚvZfoldedrZfolded_no_lineseprrrr8âs"ÿ  ÿ zGenerator._write_headerscCsž| ¡}|dkrdSt|tƒs.tdt|ƒƒ‚t|jƒr~| d¡}|dk r~t|ƒ}|d=|  ||¡| ¡}|d|df|_ |j rt   d|¡}| |¡dS)Nzstring payload expected: %sÚcharsetr4r6ú>From )Ú get_payloadÚ isinstanceÚstrÚ TypeErrorÚtyperÚ_payloadZ get_paramrZ set_payloadr9rÚfcrerGr3)rr&ÚpayloadrOrrrÚ _handle_textøs$    ÿ zGenerator._handle_textc Csšg}| ¡}|dkrg}n(t|tƒr2| |¡dSt|tƒsB|g}|D]6}| ¡}| |¡}|j|d|jd|  |  ¡¡qF|  ¡}|sª|j   |¡}| |¡}| |¡|jdk ræ|jrÊt d|j¡} n|j} | | ¡| |j¡| d||j¡|r|j | d¡¡|D],} | |jd||j¡|j | ¡q| |jd|d|j¡|jdk r–|jr†t d|j¡} n|j} | | ¡dS)NF©r'rrPz--r)rQrRrSrÚlistr-rr(rÚappendr=Z get_boundaryr!rCÚ_make_boundaryZ set_boundaryÚpreamblerrWrGr3rÚpopÚepilogue) rr&ZmsgtextsZsubpartsÚpartrÚgÚboundaryZalltextr^Z body_partr`rrrÚ_handle_multipartsJ           zGenerator._handle_multipartcCs0|j}|jdd|_z| |¡W5||_XdS)Nrr)r rrd)rr&ÚprrrÚ_handle_multipart_signedJs z"Generator._handle_multipart_signedcCsšg}| ¡D]t}| ¡}| |¡}|j|d|jd| ¡}| |j¡}|rv|d|jkrv|  |j  |dd…¡¡q |  |¡q |j   |j  |¡¡dS)NFrZr.) rQr-rr(rr=r0r!r"r\rCrr)rr&ZblocksrarrbÚtextr1rrrÚ_handle_message_delivery_statusUs    z)Generator._handle_message_delivery_statuscCs^| ¡}| |¡}|j}t|tƒrD|j| d¡d|jd| ¡}n |  |¡}|j   |¡dS)NrFrZ) r-rrVrRr[r(rQrr=r rr)rr&rrbrXrrrÚ_handle_messagejs    zGenerator._handle_messagecCsvt tj¡}dt|d}|dkr(|S|}d}| dt |¡dtj¡}|  |¡sXqr|dt |ƒ}|d7}q0|S)Nz===============z==rz^--z(--)?$Ú.r7) ÚrandomZ randrangeÚsysÚmaxsizeÚ_fmtÚ _compile_reÚreÚescapeÚ MULTILINErLrS)ÚclsrgÚtokenrcÚbZcounterZcrerrrr]ƒs   zGenerator._make_boundarycCs t ||¡Sr)rpÚcompile©rsrÚflagsrrrro•szGenerator._compile_re)NN)FN)N)Ú__name__Ú __module__Ú __qualname__rrr(rr-r r3r%r:r8rYrErdrfrhriÚ classmethodr]rorrrrrs, ÿ  1':  csLeZdZdd„Zdd„Zdd„Zdd„Z‡fd d „ZeZe d d „ƒZ ‡Z S) rcCs|j | dd¡¡dS)NÚasciiÚsurrogateescape)rrÚencoderrrrr§szBytesGenerator.writecCstƒSr)rr,rrrr-ªszBytesGenerator._new_buffercCs | d¡S©Nr})rrrrrr ­szBytesGenerator._encodecCs8| ¡D]\}}|j |j ||¡¡q| |j¡dSr)rHrrr Z fold_binaryr)rr&rMrNrrrr8°szBytesGenerator._write_headerscs\|jdkrdSt|jƒrH|jjdksH|jr:t d|j¡|_| |j¡ntt |ƒ  |¡dS)NZ7bitrP) rVrr Zcte_typerrWrGr3ÚsuperrrY)rr&©r*rrrY¸s zBytesGenerator._handle_textcCst | d¡|¡Sr€)rprvrrwrrrroÇszBytesGenerator._compile_re) ryrzr{rr-r r8rYrEr|roÚ __classcell__rrr‚rršs  zD[Non-text (%(type)s) part of message omitted, filename %(filename)s]c@s$eZdZdddœdd„Zdd„ZdS)rNr cCs.tj|||||d|dkr$t|_n||_dSr))rrÚ_FMTrn)rrrrZfmtr rrrrÕs  ÿzDecodedGenerator.__init__c Cs„| ¡D]v}| ¡}|dkr2t|jdd|dq|dkrs.      3;