f2 ddlZddlZddlZddlmZddlmZddlmZ ddlm Z ddlm Z e dZ e e dzZe d Zee zZee d z Zee d z Zee d ze d z Zee zZee d zZee zZee dz ZdZejdejejzZGddeZGddeZGddeZ GddeZ!GddeZ"GddeZ#GddeZ$Gdd eZ%Gd!d"eZ&Gd#d$eZ'Gd%d&e'Z(Gd'd(eZ)Gd)d*eZ*Gd+d,eZ+Gd-d.eZ,Gd/d0eZ-Gd1d2eZ.Gd3d4eZ/Gd5d6eZ0Gd7d8eZ1Gd9d:eZ2Gd;deZ4Gd?d@eZ5GdAdBeZ6GdCdDeZ7GdEdFeZ8GdGdHeZ9GdIdJe!Z:GdKdLeZ;GdMdNeZ<GdOdPeZ=GdQdReZ>GdSdTe>Z?GdUdVeZ@GdWdXeZAGdYdZeZBGd[d\eZCGd]d^eZDGd_d`eDZEGdadbeDZFGdcddeZGGdedfeZHGdgdheZIGdidjeIZJGdkdleJZKGdmdneZLGdodpeMZNGdqdreNZOGdsdteNZPGdudveOZQGdwdxe jRZSePd dyZTePdzd{ZUd|eU_VePd}d~ZWejdXdYe jZZ[ejdXej\dYej]Z^ejdj_Z`ejdXej\dYej]ZaejdXej\dYej]ZbejdXej\dYej]ZcdZddZedZfdZgdZhdZidZjdZkdZldZmdZndZodZpdZqdZrdZsdZtdZudZvdZwdZxdZydZzdZ{dZ|dZ}dZ~dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdS)N) hexdigits) itemgetter)_encoded_words)errors)utilsz (z ()<>@,:;.\"[].z."(z/?=z*'%%c|dt|ddddzdzS)N"\\\z\")strreplacevalues A/opt/alt/python311/lib64/python3.11/email/_header_value_parser.py quote_stringr`s8 s5zz!!$//77UCC CC GGz =\? # literal =? [^?]* # charset \? # literal ? [qQbB] # literal 'q' or 'b', case insensitive \? # literal ? .*? # encoded word \?= # literal ?= ceZdZdZdZdZfdZdZfdZe dZ e dZ dZ e d Z e d Zd Zdd ZddZddZxZS) TokenListNTcHtj|i|g|_dSN)super__init__defects)selfargskw __class__s rrzTokenList.__init__ys*$%"%%% rc@dd|DS)Nc34K|]}t|VdSrr.0xs r z$TokenList.__str__..~(,,!s1vv,,,,,,rjoinrs r__str__zTokenList.__str__}s#ww,,t,,,,,,rcd|jjtSNz{}({})formatr __name__r__repr__rr s rr3zTokenList.__repr__s3t~6"WW--//11 1rc@dd|DS)Nr"c32K|]}|j |jVdSrrr%s rr(z"TokenList.value..s+8818qw888888rr*r,s rrzTokenList.values#ww88888888rc@td|D|jS)Nc3$K|] }|jV dSr) all_defectsr%s rr(z(TokenList.all_defects..s$00aAM000000r)sumrr,s rr9zTokenList.all_defectss#004000$,???rc6|dSNr)startswith_fwsr,s rr=zTokenList.startswith_fwssAw%%'''rc6 td|DS)Nc3$K|] }|jV dSr) as_ew_allowed)r&parts rr(z*TokenList.as_ew_allowed..s%77$4%777777r)allr,s rr@zTokenList.as_ew_alloweds"O77$777777rcHg}|D]}||j|Sr)extendcomments)rrEtokens rrEzTokenList.commentss2 , ,E OOEN + + + +rc$t||S)Npolicy)_refold_parse_treerrIs rfoldzTokenList.folds!$v6666rr"cLt||dS)Nindent)printppstrrrOs rpprintzTokenList.pprints$ djjj''(((((rcTd||S)N rN)r+_pprRs rrQzTokenList.ppstrs"yy00111rc#nKd||jj|jV|D]K}t |ds|d|zV-||dzEd{VL|jrd|j}nd}d||VdS)Nz{}{}/{}(rVz* !! invalid element in token list: {!r}z z Defects: {}r"z{}){})r1r r2 token_typehasattrrVr)rrOrFextras rrVz TokenList._pps  N # O    4 4E5%(( 4!55;VE]]CDDDD!99VF]3333333333 < "))$,77EEEnnVU+++++++rr")r2 __module__ __qualname__rXsyntactic_breakew_combine_allowedrr-r3propertyrr9r=r@rErLrSrQrV __classcell__r s@rrrss9JO---1111199X9@@X@(((88X8X 777))))2222,,,,,,,,rrc:eZdZedZedZdS)WhiteSpaceTokenListcdSN r,s rrzWhiteSpaceTokenList.valuesrcd|DS)Nc2g|]}|jdk |jS)comment)rXcontentr%s r z0WhiteSpaceTokenList.comments..s&CCCa1<+B+B +B+B+Brrhr,s rrEzWhiteSpaceTokenList.commentssCC4CCCCrN)r2r\r]r`rrErhrrrdrdsM XDDXDDDrrdceZdZdZdS)UnstructuredTokenList unstructuredNr2r\r]rXrhrrrprpsJJJrrpceZdZdZdS)PhrasephraseNrrrhrrrtrtJJJrrtceZdZdZdS)WordwordNrrrhrrrxrxJJJrrxceZdZdZdS)CFWSListcfwsNrrrhrrr|r|rzrr|ceZdZdZdS)AtomatomNrrrhrrrrrzrrceZdZdZdZdS)TokenrFFN)r2r\r]rX encode_as_ewrhrrrrsJLLLrrceZdZdZdZdZdZdS) EncodedWord encoded-wordN)r2r\r]rXctecharsetlangrhrrrrs"J CG DDDrrcTeZdZdZedZedZedZdS) QuotedString quoted-stringc8|D]}|jdkr |jcSdSNbare-quoted-stringrXrrr's rrmzQuotedString.contents9  A|333w4  rcg}|D]J}|jdkr#|t|0||jKd|S)Nrr")rXappendrrr+)rresr's r quoted_valuezQuotedString.quoted_valuesf $ $A|333 3q66"""" 17####wws||rc8|D]}|jdkr |jcSdSrrrrFs rstripped_valuezQuotedString.stripped_values= # #E#777{"""8 # #rN)r2r\r]rXr`rmrrrhrrrrsh J X X##X###rrc.eZdZdZdZedZdS)BareQuotedStringrcZtdd|DS)Nr"c34K|]}t|VdSrr$r%s rr(z+BareQuotedString.__str__..s(#9#9qCFF#9#9#9#9#9#9r)rr+r,s rr-zBareQuotedString.__str__s+BGG#9#9D#9#9#999:::rc@dd|DS)Nr"c34K|]}t|VdSrr$r%s rr(z)BareQuotedString.value..r)rr*r,s rrzBareQuotedString.value#ww,,t,,,,,,rN)r2r\r]rXr-r`rrhrrrrsC%J;;;--X---rrcJeZdZdZdZdZedZedZdS)CommentrlcldtdgfdDdgggS)Nr"rc:g|]}|Srh)quote)r&r'rs rrnz#Comment.__str__..s#999qTZZ]]999r))r+r:r,s`rr-zComment.__str__ sPwws E9999D999 E " ##$$ $rc|jdkrt|St|ddddddS)Nrlr rrz\(rz\))rXrr)rrs rrz Comment.quotesc  y ( (u:: 5zz!!$//77"%u...5g"%u/./. .rc@dd|DS)Nr"c34K|]}t|VdSrr$r%s rr(z"Comment.content..r)rr*r,s rrmzComment.contentrrc|jgSr)rmr,s rrEzComment.commentss  ~rN) r2r\r]rXr-rr`rmrErhrrrrsmJ$$$...--X-XrrcTeZdZdZedZedZedZdS) AddressListz address-listcd|DS)Nc(g|]}|jdk |S)addressrXr%s rrnz)AddressList.addresses..'$;;;a1<#:#:#:#:#:rrhr,s r addresseszAddressList.addresses%;;4;;;;rc6td|DgS)Nc3:K|]}|jdk |jVdSrNrX mailboxesr%s rr(z(AddressList.mailboxes..+s<>>Q\9%<%<K%<%<%<%<>>rr:r,s rrzAddressList.mailboxes)6>>!>>>?ACC Crc6td|DgS)Nc3:K|]}|jdk |jVdSrrX all_mailboxesr%s rr(z,AddressList.all_mailboxes..0s<>>Q\9%<%<O%<%<%<%<>>rrr,s rrzAddressList.all_mailboxes.rrN)r2r\r]rXr`rrrrhrrrr!spJ <<X<CCXCCCXCCCrrcTeZdZdZedZedZedZdS)AddressrcB|djdkr |djSdS)NrgrouprX display_namer,s rrzAddress.display_name8s) 7  ( (7' ' ) (rcv|djdkr |dgS|djdkrgS|djSNrmailboxinvalid-mailboxrr,s rrzAddress.mailboxes=sE 7  * *G9  !W #4 4 4IAw  rc|djdkr |dgS|djdkr |dgS|djSrrr,s rrzAddress.all_mailboxesEsL 7  * *G9  !W #4 4 4G9 Aw$$rN)r2r\r]rXr`rrrrhrrrr4shJ ((X(!!X!%%X%%%rrc>eZdZdZedZedZdS) MailboxList mailbox-listcd|DS)Nc(g|]}|jdk |S)rrr%s rrnz)MailboxList.mailboxes..Srrrhr,s rrzMailboxList.mailboxesQrrcd|DS)Nc$g|] }|jdv |S))rrrr%s rrnz-MailboxList.all_mailboxes..Ws/???a|======rrhr,s rrzMailboxList.all_mailboxesUs"??4??? ?rNr2r\r]rXr`rrrhrrrrMsMJ <<X<??X???rrc>eZdZdZedZedZdS) GroupList group-listcF|r|djdkrgS|djSNrrrr,s rrzGroupList.mailboxes_s- tAw)^;;IAw  rcF|r|djdkrgS|djSrrr,s rrzGroupList.all_mailboxeses- tAw)^;;IAw$$rNrrhrrrr[sMJ !!X! %%X%%%rrcTeZdZdZedZedZedZdS)GrouprcB|djdkrgS|djSNrrr,s rrzGroup.mailboxesps& 7  - -IAw  rcB|djdkrgS|djSrrr,s rrzGroup.all_mailboxesvs& 7  - -IAw$$rc|djSr<)rr,s rrzGroup.display_name|sAw##rN)r2r\r]rXr`rrrrhrrrrlshJ !!X! %%X% $$X$$$rrceZdZdZedZedZedZedZedZ dS)NameAddr name-addrcFt|dkrdS|djSNr)lenrr,s rrzNameAddr.display_names# t99>>4Aw##rc|djSN local_partr,s rrzNameAddr.local_partsBx""rc|djSrdomainr,s rrzNameAddr.domainsBxrc|djSr)router,s rrzNameAddr.routesBx~rc|djSr addr_specr,s rrzNameAddr.addr_specsBx!!rN r2r\r]rXr`rrrrrrhrrrrsJ $$X$ ##X#XX""X"""rrcjeZdZdZedZedZedZedZdS) AngleAddrz angle-addrc8|D]}|jdkr |jcSdSN addr-spec)rXrrs rrzAngleAddr.local_parts; $ $A|{**|###+ $ $rc8|D]}|jdkr |jcSdSrrXrrs rrzAngleAddr.domains8  A|{**x+  rc8|D]}|jdkr |jcSdS)N obs-route)rXdomainsrs rrzAngleAddr.routes; ! !A|{**y   + ! !rc|D];}|jdkr.|jr |jcSt|j|jzcS)rXrrrrs rrzAngleAddr.addr_specs`  A|{**<D;&&&' 55 CCCC + 4rN) r2r\r]rXr`rrrrrhrrrrsJ $$X$   X !!X! Xrrc(eZdZdZedZdS)ObsRoutercd|DS)Nc2g|]}|jdk |jSrrr%s rrnz$ObsRoute.domains..s&CCCQ!,(*B*B*B*B*Brrhr,s rrzObsRoute.domainssCC$CCCCrN)r2r\r]rXr`rrhrrrrs7J DDXDDDrrceZdZdZedZedZedZedZedZ dS)MailboxrcB|djdkr |djSdSNrrrr,s rrzMailbox.display_names) 7  , ,7' ' - ,rc|djSr<rr,s rrzMailbox.local_partAw!!rc|djSr<rr,s rrzMailbox.domainsAw~rcB|djdkr |djSdSr)rXrr,s rrz Mailbox.routes( 7  , ,7=  - ,rc|djSr<rr,s rrzMailbox.addr_specsAw  rNrrhrrrrsJ ((X(""X"X!!X!!!X!!!rrc8eZdZdZedZexZxZxZZ dS)InvalidMailboxrcdSrrhr,s rrzInvalidMailbox.display_nametrNrrhrrr r sB"J X/;:J::%)))rr c6eZdZdZdZefdZxZS)DomainrFctdtjSNr"r+rrsplitr4s rrz Domain.domain'wwuww}**,,---r)r2r\r]rXr@r`rrarbs@rrrsLJM ....X.....rrceZdZdZdS)DotAtomdot-atomNrrrhrrrrsJJJrrceZdZdZdZdS) DotAtomTextz dot-atom-textTNr2r\r]rXr@rhrrrrs JMMMrrceZdZdZdZdS) NoFoldLiteralzno-fold-literalFNrrhrrrrs"JMMMrrcneZdZdZdZedZedZedZedZ dS)AddrSpecrFc|djSr<rr,s rrzAddrSpec.local_part rrcFt|dkrdS|djS)Nr)rrr,s rrzAddrSpec.domains" t99q==4Bxrct|dkr |djS|dj|djz|djzS)Nr"rrr)rrrstriplstripr,s rrzAddrSpec.valuesW t99q==7= Aw}##%%d1gm3DGM4H4H4J4JJJrct|j}t|t|tz krt |j}n|j}|j |dz|jzS|S)N@)setrr DOT_ATOM_ENDSrr)rnamesetlps rrzAddrSpec.addr_specsedo&& w<<#gm344 4 4do..BBB ; "8dk) ) rN) r2r\r]rXr@r`rrrrrhrrrrsJM ""X"X KKXK XrrceZdZdZdZdS) ObsLocalPartzobs-local-partFNrrhrrr-r-&s!JMMMrr-cLeZdZdZdZedZefdZxZS) DisplayNamez display-nameFct|}t|dkr|jS|djdkr|dn7|ddjdkr t|ddd|d<|djdkr|n7|ddjdkr t|ddd|d<|jS)Nrr}rr)rrrrXpop)rrs rrzDisplayName.display_name1soo s88q==9  q6  & & GGAJJJJ1vay#v--"3q6!"":..A r7  ' ' GGIIII2wr{%//#CGCRCL11Byrctd}|jrd}n|D]}|jdkrd}t|dkrt|rrdx}}|djdks|ddjdkrd}|djdks|ddjdkrd}|t|jz|zSt jS) NFTrrr"r}rgr)rrXrrrrr)rrr'prepostr s rrzDisplayName.valueBs < !EE ! !>e>OC$Aw!6))T!WQZ-BF-J-JBx"F**d2hrl.Ev.M.M|D$5666t; ;77= r) r2r\r]rXr_r`rrrarbs@rr/r/,shJ X !!!!X!!!!!rr/cBeZdZdZdZedZedZdS) LocalPartz local-partFcX|djdkr |djS|djS)Nrr)rXrrr,s rrzLocalPart.value[s- 7  0 07' '7= rc tg}t}d}|dtgzD]}|jdkr|r6|jdkr+|djdkrt|dd|d<t|t}|rG|jdkr<|djdkr+|t|ddn|||d}|}t|dd}|jS)NFrr}dotrr)DOTrXr isinstancerr)rrlast last_is_tltokis_tls rrzLocalPart.local_partbse 7cU?  C~'' /s~66H'611#D"I..BsI..E $/U22F%// 9SW--.... 3r7DJJAbD ""yrN)r2r\r]rXr@r`rrrhrrr6r6VsRJM !!X! Xrr6cLeZdZdZdZefdZedZxZS) DomainLiteralzdomain-literalFctdtjSrrr4s rrzDomainLiteral.domainrrc8|D]}|jdkr |jcSdS)Nptextrrs ripzDomainLiteral.ips8  A|w&&w'  r) r2r\r]rXr@r`rrErarbs@rrArAzsg!JM ....X.XrrAceZdZdZdZdZdS) MIMEVersionz mime-versionN)r2r\r]rXmajorminorrhrrrGrGsJ E EEErrGcJeZdZdZdZdZdZedZedZ dS) Parameter parameterFus-asciic.|jr |djndSr) sectionednumberr,s rsection_numberzParameter.section_numbers"&6tAw~~Q6rc|D]N}|jdkr |jcS|jdkr-|D]*}|jdkr|D]}|jdkr |jcccS+OdS)Nrrrr")rXrrs r param_valuezParameter.param_values < ''))D6!!!t 4L  !5u = > > > >!<<>>3 3 KD%5jmm444E(1+K!)G' &CJJNN8A;!##!HQK'..v/IH0J0JKKK!"1"IEKA).! *! *%!Q&&!>I ,,V-GI.K.KLLL  ,,V-GF.H.HIIIQ)>RR & = =e D DP$)LL:K$L$LEE +-?@PPP %*LL=N$O$OEEE P !077R!M001N1P1PQQQ.PPP!' 4 4UY 4 O O P ""5))))GGK((E+    g3 3 s$I&"G99'H#"H#&+JJc g}|jD]S\}}|r7|d|t|>||Td|}|rd|zndS)N{}={}z; rgr")ryrr1rr+)rryrzrs rr-zMimeParameters.__str__s; $ $KD% $ gnnT<3F3FGGHHHH d####6""%-sV||2-rN)r2r\r]rXr^r`ryr-rhrrrfrfsJ"JO CCXCJ.....rrfc(eZdZdZedZdS)ParameterizedHeaderValueFcRt|D]}|jdkr |jcSiS)Nrg)reversedrXryrs rryzParameterizedHeaderValue.params-s>d^^ $ $E#444|###5 rN)r2r\r]r^r`ryrhrrrr's4O XrrceZdZdZdZdZdZdS) ContentTypez content-typeFtextplainN)r2r\r]rXr@maintypesubtyperhrrrr5s"JMHGGGrrceZdZdZdZdZdS)ContentDispositionzcontent-dispositionFN)r2r\r]rXr@content_dispositionrhrrrr<s &JMrrceZdZdZdZdZdS)ContentTransferEncodingzcontent-transfer-encodingF7bitN)r2r\r]rXr@rrhrrrrBs,JM CCCrrceZdZdZdZdS) HeaderLabelz header-labelFNrrhrrrrHsJMMMrrceZdZdZdZdZdS)MsgIDzmsg-idFc0t||jzSr)rlineseprKs rrLz MsgID.foldQs4yy6>))rN)r2r\r]rXr@rLrhrrrrMs-JM*****rrceZdZdZdS) MessageIDz message-idNrrrhrrrrVsJJJrrceZdZdZdS)InvalidMessageIDzinvalid-message-idNrrrhrrrrZs%JJJrrceZdZdZdS)HeaderheaderNrrrhrrrr^rvrrc~eZdZdZdZdZfdZfdZdZe dZ d fd Z dZ e d Z d ZxZS) TerminalTcht||}||_g|_|Sr)r__new__rXr)clsrrXrr s rrzTerminal.__new__ls-wwsE**$  rcd|jjtSr/r0r4s rr3zTerminal.__repr__rs,t~68H8H8J8JKKKrcNt|jjdz|jzdS)N/)rPr r2rXr,s rrSzTerminal.pprintus' dn%+do=>>>>>rc*t|jSr)listrr,s rr9zTerminal.all_defectsxsDL!!!rr"c d||jj|jt |jsdnd|jgS)Nz {}{}/{}({}){}r"z {})r1r r2rXrr3r)rrOr s rrVz Terminal._pp|s_&&  N # O GG    l BBB T\(B(B  rcdSrrhr,s rpop_trailing_wszTerminal.pop_trailing_wsrrcgSrrhr,s rrEzTerminal.commentss rc.t||jfSr)rrXr,s r__getnewargs__zTerminal.__getnewargs__s4yy$/**rr[)r2r\r]r@r_r^rr3rSr`r9rVrrErrarbs@rrrfsMO LLLLL???""X"X+++++++rrc*eZdZedZdZdS)WhiteSpaceTerminalcdSrfrhr,s rrzWhiteSpaceTerminal.valuerircdS)NTrhr,s rr=z!WhiteSpaceTerminal.startswith_fwsstrNr2r\r]r`rr=rhrrrrs< Xrrc*eZdZedZdZdS) ValueTerminalc|Srrhr,s rrzValueTerminal.values rcdS)NFrhr,s rr=zValueTerminal.startswith_fwssurNrrhrrrrs< Xrrc*eZdZedZdZdS)EWWhiteSpaceTerminalcdSrrhr,s rrzEWWhiteSpaceTerminal.valuesrrcdSrrhr,s rr-zEWWhiteSpaceTerminal.__str__srrN)r2r\r]r`rr-rhrrrrs< XrrceZdZdS)_InvalidEwErrorN)r2r\r]rhrrrrs;;rrr9,zlist-separatorFr'zroute-component-markerz([{}]+)r"z[^{}]+z[\x00-\x20\x7F]c t|}|r,|jtj|t j|r.|jtjddSdS)Nz*Non-ASCII characters found in header token)_non_printable_finderrrrNonPrintableDefectrrvrw)xtextnon_printabless r_validate_xtextrsJ*511NH V6~FFGGG U##; V: 8:: ; ; ; ; ;;;rcn t|d^}}g}d}d}tt|D]D}||dkr |rd}d}nd}|rd}n |||vrn!|||E|dz}d|d||dg|z|fS)NrFr Tr") _wsp_splitterrangerrr+)rendcharsfragment remaindervcharsescapehad_qpposs r_get_ptext_to_endcharsrs)22Hy F F FS]]## C=D    FF c]h & & E hsm$$$$Ag 776??BGGXcdd^$4y$@AA6 IIrc |}t|dt|t|z d}||fS)Nfws)r%rr)rnewvaluers rget_fwsrsK||~~H U#rremstrrestrrrrrFcharsrs rget_encoded_wordrs B   D ! !@% 0 7 7 > >@@ @ABBioodA..OC) eABBi% 0 7 7 > >@@ @ WWY  F F aq Yq Y #!<<a00yDj4 399;;! &4 ,.. / / / BF GGI  E@'*z$*t2C'D'D$gtWW  !@@@ / 6 6rv > >@@ @@BJBGJg  " 7c>>!$--KE4 IIe    )$22 eW-- %wwy!!  " ?q$$ &4 <>> ? ? ? u9s F..9G'c t}|r|dtvr(t|\}}||:d}|dr t |\}}d}t |dkr?|djdkr.|jtj dd}|r=t |dkr*|d jd krt|dd|d<||#t$rd}Yntj $rYnwxYwt|d^}}|r1t|r|d^}}t%|d }t'|||d |}||S) NrTrrrz&missing whitespace before encoded wordFrrrr")rprrrrrrrXrrrorrrrrfc2047_matchersearch partitionrrr+)rrqrFvalid_ewhave_wsr>rrs rget_unstructuredr@s',)**L (# 8s??"5>>LE5    & & &    D ! !  /66 u|$$q((#B'2e;;$,33F4ND5F5FGGG"'5s<00144#B'2nDD+?(,e,5,5 R(##E***%# ! ! ! *    "(q11i  4..s33 4#ood33OC)c7++E""" ""Q (#R s"D D=,D=<D=cr t|d\}}}t|d}t|||fS)Nz()rD)rrrrrD_s r get_qp_ctextrsE -UD99OE5! ug . .EE %<rcr t|d\}}}t|d}t|||fS)Nr rD)rrrrs r get_qcontentrsE-UC88OE5! % ) )EE %<rc t|}|s'tjd||}|t |d}t |d}t|||fS)Nzexpected atext but found '{}'atext)_non_atom_end_matcherrrr1rrrr)rmrs r get_atextrs e$$A ;% + 2 25 9 9;; ; GGIIE #e**++ E % ) )EE %<rc |ddkr'tjd|t}|dd}|r3|ddkr't |\}}|||r/|ddkr"|dt vrt|\}}n|dddkrd} t|\}}|j tj dd }n'#tj$rt |\}}YnwxYw|rNt|dkr;|d j d kr*|d j d krt|d d |d <nt |\}}|||r |ddk"|s0|j tj d||fS||ddfS)Nrr zexpected '"' but found '{}'rrrFz!encoded word inside quoted stringTrrrrz"end of header inside quoted string)rrr1rrrrrrrrorrXr)rbare_quoted_stringrFrs rget_bare_quoted_stringrsJ  Qx3% * 1 1% 8 8:: :)++ !""IE )qS#E** u!!%((( )E!HOO 8s??"5>>LE55 2A2Y$  H 3/66 u"*11&2L73939:::* 3 3 3+E22 uuu 3 7C 233a77&r*5>>*2.9^KK-A*2..7.7&r*(..LE5!!%(((+ )E!HOO, )"))&*D 0+2+2 3 3 3!5(( uQRRy ((sAD!D*)D*c" |r3|ddkr'tjd|t}|dd}|r|ddkrv|dtvrt |\}}n1|ddkrt |\}}nt|\}}|||r |ddkv|s0|j tj d||fS||ddfS)Nrrzexpected '(' but found '{}'rrzend of header inside comment) rrr1rrr get_commentrrrro)rrlrFs rrrs7  9qS% ) 0 0 7 799 9iiG !""IE E!HOO 8s??"5>>LE55 1X__&u--LE55'..LE5u E!HOO v9 * , , - - -~ E!""I rc t}|ri|dtvrZ|dtvrt|\}}nt |\}}|||r|dtvZ||fSr<)r| CFWS_LEADERrrrr)rr}rFs rget_cfwsrs ::D E!H ++ 8s??"5>>LE55&u--LE5 E E!H ++ ;rcV t}|r6|dtvr't|\}}||t |\}}|||r6|dtvr't|\}}||||fSr<)rrrrr)r quoted_stringrFs rget_quoted_stringrs !NNM $q[(( uU###)%00LE5 $q[(( uU### % rcf t}|r6|dtvr't|\}}|||r6|dtvr't jd||dr; t|\}}n9#t j$rt|\}}YnwxYwt|\}}|||r6|dtvr't|\}}||||fS)Nrzexpected atom but found '{}'r) rrrr ATOM_ENDSrrr1rrr)rrrFs rget_atomrsN 66D q[(( u E :qY&&% * 1 1% 8 8:: : ( ,+E22LE55& , , ,%U++LE555 , !'' uKK q[(( u E ;sB))!C  C c t}|r|dtvr'tjd||ry|dtvrjt |\}}|||r0|ddkr$|t|dd}|r|dtvj|dtur*tjdd|z||fS)Nrz8expected atom at a start of dot-atom-text but found '{}'r rrz4expected atom at end of dot-atom-text but found '{}')rrrrr1rrr:)r dot_atom_textrFs rget_dot_atom_textr1s MMM :E!H ))%'++16%==:: : E!HI-- '' uU###  U1X__   % % %!""IE E!HI-- RC%'#VCI..00 0 % rc t}|dtvr't|\}}|||dr; t |\}}n9#t j$rt|\}}YnwxYwt|\}}|||r6|dtvr't|\}}||||fS)Nrr) rrrrrrrrr)rdot_atomrFs r get_dot_atomr Ds  yyH Qx; u 0 4+E22LE55& 4 4 4-U33LE555 4 )// u OOE q[(( u U?sA//!BBcb |dtvrt|\}}nd}|stjd|ddkrt |\}}nH|dt vr'tjd|t|\}}||g|dd<||fS)Nrz5Expected 'atom' or 'quoted-string' but found nothing.r z1Expected 'atom' or 'quoted-string' but found '{}')rrrrrSPECIALSr1r)rleaderrFs rget_wordr]s Qx;   E% CEE E Qx}}(// uu qX  %'77=ve}}FF F  u Hbqb %<rc t} t|\}}||nA#tj$r/|jtjdYnwxYw|r |dtvr|ddkrQ|t|jtj d|dd}n t|\}}nd#tj$rR|dtvr?t|\}}|jtj dnYnwxYw|||r|dtv||fS)Nzphrase does not start with wordrr zperiod in 'phrase'rzcomment found without atom) rtrrrrrro PHRASE_ENDSr:ObsoleteHeaderDefectrr)rrurFs r get_phrasers XXF0 u e  "000f8 -// 0 0 0 0 00 !E!HK// 8S== MM#    N ! !&"=$#&#& ' ' '!""IEE ' uu*   8{**#+E??LE5N))&*E4+6+6777777  MM% ! !E!HK//" 5=s"'9;A76A7*C==AEEc t}d}|dtvrt|\}}|s'tjd| t |\}}nh#tj$rV t|\}}n?#tj$r-|ddkr|dtvrt}YnwxYwYnwxYw||g|dd<| ||r|ddks|dtvrtt||z\}}|j dkr-|j tjdn,|j tjd||d< |jdn<#t&$r/|j tjdYnwxYw||fS) Nrz"expected local-part but found '{}'r invalid-obs-local-partz >@@ @ #E** uu  "    #E??LE55&   Qx4E!H $;$;KKEEE  Hbqb e '%(D..E!HK$?$? 23z??U3J K K  $(@ @ @   % %f&@N'P'P Q Q Q Q   % %f&A>'@'@ A A A& 1 >(((( >>>!!&"@;#=#= > > > > >> u sHA00CBC9C CCCC F;;6G43G4c  t}d}|r|ddks|dtvr|ddkrU|r,|jt jd|t d}|dd}|ddkrb|t|dd|dd}|jt jd d}|r=|d jd kr,|jt jd  t|\}}d}n7#tj $r%|dtvrt|\}}YnwxYw|||r|ddk|dtv|djd ks"|djd kr=|djd kr,|jt jd|d jd ks"|d jd kr=|djd kr,|jt jd|jrd|_||fS)NFrr r zinvalid repeated '.'Trmisplaced-specialz/'\' character outside of quoted-string/ccontentrr9zmissing '.' between wordsr}z!Invalid leading '.' in local partrz"Invalid trailing '.' in local partr) r-rrrrror:rrXrrrr)rrlast_non_ws_was_dotrFs rrrs!^^N %U1Xt^^uQx{'B'B 8s??" -&--f.H*/,/,---  ! !# & & &"& !""IE  1Xt^^  ! !-a0C#E#E F F F!""IE  " ) )&*DB+D+D E E E"'    .nR0;uDD  " ) )&*D++-+- . . . +#E??LE5"'  & + + +Qx{**#E??LE555 + e$$$7 %U1Xt^^uQx{'B'B8 q$-- 1  (& 0 0 1  (% / /%%f&@ /'1'1 2 2 2r%.. 2  )6 1 1 2  )5 0 0%%f&@ 0'2'2 3 3 3=$<! 5  sE1F F c t|d\}}}t|d}|r,|jt jdt |||fS)Nz[]rDz(quoted printable found in domain-literal)rrrrrrr)rrDrs r get_dtextrsz 2%>>E5& % ) )E 9 V8 688 9 9 9E %<rc|rdS|tjd|tdddS)NFz"end of input inside domain-literal]domain-literal-endT)rrror)rdomain_literals r_check_for_early_dl_endr$s] u&4,..///--ABBCCC 4rcN t}|dtvr't|\}}|||st jd|ddkr't jd||dd}t||r||fS|tdd|dtvr't|\}}||t|\}}||t||r||fS|dtvr't|\}}||t||r||fS|ddkr't jd||tdd |dd}|r6|dtvr't|\}}||||fS) Nrzexpected domain-literal[z6expected '[' at start of domain-literal but found '{}'rzdomain-literal-startr!z4expected ']' at end of domain-literal but found '{}'r") rArrrrrr1r$rrrr)rr#rFs rget_domain_literalr's;#__N Qx; ue$$$ A%&?@@@ Qx3%'!!'00 0 !""IEun55%u$$--CDDEEE Qx3u~~ ue$$$U##LE5%   un55%u$$ Qx3u~~ ue$$$un55%u$$ Qx3%'!!'00 0--ABBCCC !""IE %q[(( ue$$$ 5  rc t}d}|dtvrt|\}}|s'tjd||ddkr5t |\}}||g|dd<||||fS t|\}}n'#tj$rt|\}}YnwxYw|r |ddkrtjd||g|dd<|||r|ddkr|j tj d|dj dkr |d|dd<|rc|ddkrW|tt|d d\}}|||r |ddkW||fS) Nrzexpected domain but found '{}'r&r'zInvalid Domainr z(domain is not a dot-atom (contains CFWS)rr)rrrrrr1r'rr rrrrXr:)rrr rFs r get_domainr)>sXXF F Qx;   <% , 3 3E : :<< < Qx3)%00 u  E"1"I eu}'#E** uu  "''' uuu' 8qS%&6777 Hbqb  MM% !qSf9 688 9 9 9 !9 : - -q F111I !aC MM#   #E!""I..LE5 MM%  !aC 5=sB11!CCc t}t|\}}|||r |ddkr0|jt jd||fS|t ddt|dd\}}||||fS)Nrr'z#addr-spec local part with no domainaddress-at-symbolr)rrrrrrorr))rrrFs r get_addr_specr,ds I!%((LE5 U  E!HOO  !; 1"3"3 4 4 4% ]3(;<<===eABBi((LE5 U e rc t}|r|ddks|dtvr|dtvr(t|\}}||n0|ddkr$|t|dd}|r|ddku|dtv|r |ddkr't jd||tt|dd\}}|||r|ddkr|t|dd}|sn|dtvr't|\}}|||ddkrI|tt|dd\}}|||r |ddk|st jd|ddkr't jd||tdd ||ddfS) Nrrrr'z(expected obs-route domain but found '{}'z%end of header while parsing obs-route:z4expected ':' marking end of obs-route but found '{}'zend-of-obs-route-marker) rrrr ListSeparatorrrr1RouteComponentMarkerr)r)r obs_routerFs r get_obs_router2ts  I U1Xs]]eAh+&=&= 8{ " "#E??LE5   U # # # # 1X__   ] + + +!""IE U1Xs]]eAh+&=&= FE!HOO% 6 = =e D DFF F )***eABBi((LE5 U  $E!HcMM'''abb    8{ " "#E??LE5   U # # # 8s??   1 2 2 2%eABBi00LE5   U # # #  $E!HcMM O%&MNNN Qx3%(''-ve}}66 6 ]3(ABBCCC eABBi rc( t}|dtvr't|\}}|||r |ddkr't jd||tdd|dd}|ddkr]|tdd|jt j d|dd}||fS t|\}}n#tj$r t|\}}|jt j d n:#tj$r(t jd |wxYw||t|\}}YnwxYw|||r|ddkr |dd}n,|jt j d |tdd|r6|dtvr't|\}}||||fS) Nrzangle-addr-endznull addr-spec in angle-addrz*obsolete route specification in angle-addrz.expected addr-spec or obs-route but found '{}'z"missing trailing '>' on angle-addr) rrrrrrr1rrror,r2r)r angle_addrrFs rget_angle_addrr7sJ Qx; u%   @E!HOO% 0 7 7 > >@@ @mC);<<=== !""IE Qx3--=>>???!!&"< *#,#, - - -abb 5   ,$U++ uu  " , , , P(//LE5   % %f&A<'>'> ? ? ? ?& P P P)@GGNNPP P P %   $U++ uuu ,e 3qSabb !!&"< 0#2#2 3 3 3mC)9::;;; !q[(( u%   u s*D%%G5>E43G47F++*GGc t}t|\}}||dd|jdd|_||fSr)r/rrDr)rrrFs rget_display_namer9s]==Le$$LE5aaa!!! =+L  rcj t}d}|dtvr;t|\}}|s'tjd||ddkr|dt vr'tjd|t|\}}|s'tjd|||g|ddd<d}||t|\}}||g|dd<||||fS)Nrz!expected name-addr but found '{}'r4) rrrrrr1rr9rr7)r name_addrr rFs r get_name_addrr<sf I F Qx;   D)3::6BBDD D Qx3 8{ " ")3::5AACC C'.. u C)3::5AACC C  "8E!HRaRLF!%((LE5 Hbqb  U e rc t} t|\}}nc#tj$rQ t |\}}n:#tj$r(tjd|wxYwYnwxYwt d|jDrd|_| |||fS)Nzexpected mailbox but found '{}'c3JK|]}t|tjVdSr)r;rror%s rr(zget_mailbox..sC 3 3 a3 4 4 3 3 3 3 3 3rr) rr<rrr,r1anyr9rXr)rrrFs r get_mailboxr@s iiGA$U++ uu  "AAA A(//LE55& A A A)188??AA A A5A   3 3 % 1 3 3 333/. NN5 E>&$BAB7A>>BBc, t}|r|d|vrv|dtvr4|t|dd|dd}n't |\}}|||r |d|vv||fS)Nrrr)r rrrr)rrinvalid_mailboxrFs rget_invalid_mailboxrD s %&&O *E!HH,, 8{ " "  " "=q1D$F$F G G G!""IEE%e,,LE5  " "5 ) ) ) *E!HH,, E !!rc t}|rd|ddkrW t|\}}||n}#tj$rjd}|dt vrt |\}}|r |ddvrB|||jtjdnt|d\}}||g|dd<|||jtj dn|ddkr-|jtjdn^t|d\}}||g|dd<|||jtj dYnwxYw|rm|ddvrc|d}d|_ t|d\}}| ||jtj d|r0|ddkr$|t|d d}|r |ddkW||fS) Nr;z,;zempty element in mailbox-listzinvalid mailbox in mailbox-listrrrr)rr@rrrrrrrrDrorXrDr/)r mailbox_listrFr rs rget_mailbox_listrHs ==L (E!HOO 8&u--LE5    & & & && 8 8 8FQx;&& (  <aD 0 0 ''/// (//0K71919::::$7ud#C#CLE5)%+Hbqb  ''... (//0J91;1;<<<<qS$++F,G3-5-56666 35$?? u%!'E"1"I##E***$++F,F5-7-7888/ 82  4U1XT))#2&G!2G .ud;;LE5 NN5 ! ! !  ' '(B1)3)3 4 4 4  U1X__    . . .!""IEQ (E!HOOR  s'A E7GGc t}|s0|jtjd||fSd}|r|dt vr~t |\}}|sE|jtjd||||fS|ddkr||||fSt|\}}t|j dkr\|||| ||jtj d||fS||g|dd<||||fS)Nzend of header before group-listrzend of header in group-listrFzgroup-list with empty entries) rrrrrorrrHrrrDr)r group_listr rFs rget_group_listrKXsJ !!!&"< -#/#/ 0 0 05  F %q[((   %   % %f&@-'/'/ 0 0 0   f % % %u$ $ 8s??   f % % %u$ $#E**LE5 5 ""     f % % %%   !!&"= +#-#- . . .5   Hbqb e u rc t}t|\}}|r |ddkr'tjd||||t dd|dd}|r;|ddkr/|t dd||ddfSt|\}}|||s-|jtj dn3|ddkr'tjd ||t dd|dd}|r6|dtvr't|\}}||||fS) Nrr.z8expected ':' at end of group display name but found '{}'zgroup-display-name-terminatorrrFzgroup-terminatorzend of header in groupz)expected ';' at end of group but found {}) rr9rrr1rrrKrrorr)rrrFs r get_grouprM}s GGE#E**LE5 9E!HOO%'**0&--99 9 LL LLs$CDDEEE !""IE  qS ]3(:;;<<<eABBi!%((LE5 LL G V7 $&& ' ' ' ' qS% 7 > >u E EGG G LLs$677888 !""IE q[(( u U %<rc@ t} t|\}}nc#tj$rQ t |\}}n:#tj$r(tjd|wxYwYnwxYw||||fS)Nzexpected address but found '{}')rrMrrr@r1r)rrrFs r get_addressrOs iiGA '' uu  "AAA A&u--LE55& A A A)188??AA A A5A  NN5 E>rAc t}|rm t|\}}||n#tj$r}d}|dt vrt |\}}|r |ddkrC|||jtjdnt|d\}}||g|dd<|t|g|jtj dn|ddkr-|jtjdnlt|d\}}||g|dd<|t|g|jtj dYd}~nd}~wwxYw|ru|ddkri|dd}d|_ t|d\}}| ||jtj d|r$|t|dd}|m||fS) Nrrz"address-list entry with no contentzinvalid address in address-listzempty element in address-listrrr)rrOrrrrrrrrDrrorXrDr/)r address_listrFerrr rs rget_address_listrSs==L ( 8&u--LE5    & & & && 8 8 8FQx;&& (  <aC ''/// (//0K<1>1>????$7uc#B#BLE5)%+Hbqb  ''(8(8999 (//0J91;1;<<<<qS$++F,G3-5-56666 35#>> u%!'E"1"I##GUG$4$4555$++F,F5-7-7888/ 82  4U1X__#2&q)G!2G .uc::LE5 NN5 ! ! !  ' '(B1)3)3 4 4 4      . . .!""IEQ (R  s'=G FGGcH t}|s'tjd||ddkr'tjd||t dd|dd}t |\}}|||r |ddkr'tjd||t dd ||ddfS) Nz'expected no-fold-literal but found '{}'rr&z;expected '[' at the start of no-fold-literal but found '{}'zno-fold-literal-startrr!z9expected ']' at the end of no-fold-literal but found '{}'zno-fold-literal-end)rrrr1rrr)rno_fold_literalrFs rget_no_fold_literalrVs4#ooO E% 5 < ' on msg-id)rrrrrrr1rrrrrrorVr))rmsg_idrFes r get_msg_idrZs WWF q[(( u e >E >D  E  7EE  E  HK,H?>K?K>J K 7KK K KKKc t} t|\}}|||r?|jt jd|ny#tj$rg}t|}t|}|jt jd|Yd}~nd}~wwxYw|S)NzUnexpected {!r}zInvalid msg-id: {!r}) rrZrrrror1rrr)r message_idrFexs rparse_message_idr^Js#J 2!%(( u%     2   % %f&@!((//'1'1 2 2 2  "KKK ''%e,, !!  &'='D'DR'H'H I I K K K K K K K KK s'A::C0 AC++C0c t}|s.|jtjd|S|dt vrUt |\}}|||s,|jtjdd}|rM|ddkrA|dt vr2||dz }|dd}|r|ddkr|dt v2|sc|jtjd ||t|dn7t||_ |t|d |r6|dt vr't |\}}|||r |ddkrZ|j ,|jtjd |r#|t|d|S|tdd |dd}|r6|dt vr't |\}}|||s5|j ,|jtjd |Sd}|r5|dt vr&||dz }|dd}|r|dt v&|sc|jtjd ||t|dn7t||_ |t|d |r6|dt vr't |\}}|||rO|jtjd |t|d|S)Nz%Missing MIME version number (eg: 1.0)rz0Expected MIME version number but found only CFWSr"r rz1Expected MIME major version number but found {!r}rdigitsz0Incomplete MIME version; found only major numberzversion-separatorz1Expected MIME minor version number but found {!r}z'Excess non-CFWS text after MIME version)rGrrrHeaderMissingRequiredValuerrisdigitror1rintrHrI)r mime_versionrFr`s rparse_mime_versionrefs ==L ##F$E 3%5%5 6 6 6 Qx; uE""" E  ' '(IB)D)D E E E F E!HOOa (C(C%(abb  E!HOOa (C(C >>  =##F$> ? F Fv N N%P%P Q Q QM&'::;;;; [[ M&(;;<<< #q[(( uE""" E!HOO   )  ' '(BB)D)D E E E  ?    eW = = > > > c+>??@@@ !""IE #q[(( uE"""    )  ' '(BB)D)D E E E F E!HK//%(abb  E!HK// >>  =##F$> ? F Fv N N%P%P Q Q QM&'::;;;; [[ M&(;;<<< #q[(( uE""" ;##F$> 5%7%7 8 8 8M%99::: rc4 t}|r|ddkrx|dtvr4|t|dd|dd}n't |\}}|||r |ddkx||fS)NrrFrr)rVrrrr)rinvalid_parameterrFs rget_invalid_parameterrhs )** ,E!HOO 8{ " "  $ $]583F&H&H I I I!""IEE%e,,LE5  $ $U + + + ,E!HOO e ##rc t|}|s'tjd||}|t |d}t |d}t|||fS)Nzexpected ttext but found '{}'ttext)_non_token_end_matcherrrr1rrrr)rrrjs r get_ttextrls u%%A ;% + 2 25 9 9;; ; GGIIE #e**++ E % ) )EE %<rc t}|r6|dtvr't|\}}|||r6|dtvr't jd|t|\}}|||r6|dtvr't|\}}||||fSNrzexpected token but found '{}') rrrr TOKEN_ENDSrrr1rl)rmtokenrFs r get_tokenrqsWWF q[(( u e ;qZ''% + 2 25 9 9;; ;U##LE5 MM% q[(( u e 5=rc t|}|s'tjd||}|t |d}t |d}t|||fS)Nz expected attrtext but found {!r}r\)_non_attribute_end_matcherrrr1rrrrrrr\s r get_attrtextrus #5))A >% . 5 5e < <>> >wwyyH #h--.. !EXz22HH U?rc t}|r6|dtvr't|\}}|||r6|dtvr't jd|t|\}}|||r6|dtvr't|\}}||||fSrn) rYrrrATTRIBUTE_ENDSrrr1rurrZrFs r get_attributerys I  q[(( u ;q^++% + 2 25 9 9;; ;&&LE5 U  q[(( u e rc t|}|s'tjd||}|t |d}t |d}t|||fS)Nz)expected extended attrtext but found {!r}extended-attrtext)#_non_extended_attribute_end_matcherrrr1rrrrrts rget_extended_attrtextr} s ,E22A G% 7 > >u E EGG GwwyyH #h--.. !EX':;;HH U?rc t}|r6|dtvr't|\}}|||r6|dtvr't jd|t|\}}|||r6|dtvr't|\}}||||fSrn) rYrrrEXTENDED_ATTRIBUTE_ENDSrrr1r}rxs rget_extended_attributer" s I  q[(( u ;q444% + 2 25 9 9;; ;(//LE5 U  q[(( u e rc t}|r |ddkr'tjd||t dd|dd}|r|ds'tjd|d}|rK|dr1||dz }|dd}|r|d1|ddkr2|dkr,|jtjd t||_ |t |d ||fS) Nr*zExpected section but found {}zsection-markerrz$Expected section number but found {}r"0z'section number has an invalid leading 0r`) r`rrr1rrrbrrorcrP)rrar`s r get_sectionr8 siiG 0E!HOO%&E&L&L(-'/'/00 0 NN=&677888 !""IE @a((**@%'117@@ @ F E!H$$&&%(abb  E!H$$&&ayCFcMMv99 ; ; < < <[[GN NN=22333 E>rc t}|stjdd}|dtvrt |\}}|s'tjd||ddkrt |\}}nt|\}}||g|dd<||||fS)Nz&Expected value but found end of stringrz Expected value but found only {}r ) rcrrrrr1rrr)rvr rFs r get_valuerV s A P%&NOOO F Qx;   @%'006v@@ @ Qx3(// uu-e44 u Hbqb HHUOOO e8OrcT t}t|\}}|||r |ddkrC|jt jd|||fS|ddkr t|\}}d|_||n#tj $rYnwxYw|st j d|ddkr4|tdd|dd}d|_ |dd krt j d |td d |dd}d}|r6|dtvr't|\}}||d}|}|j r|r|dd krt|\}}|j}d }|jdkr4|r|ddkrd}nBt#|\}} | r| ddkrd}n t%|\}} | sd}n#YnxYw|r_|jt jd|||D]} | jdkr g| dd<| }n|}n.d}|jt jd|r|ddkrd}nt)|\}}|j r |jdkrW|r |ddkr||||}||fS|jt jd|sI|jt jd|||||fSnC|>|D]} | jdkrn| jdk|| | j|_|ddkr't j d||tdd|dd}|rt|ddkrht#|\}}|||j|_|r |ddkr't j d||tdd|dd}|t1} |rr|dt2vrt5|\}}n9|dd krtd d}|dd}nt7|\}}| ||r| }nt)|\}}||||}||fS)NrrFz)Parameter contains name ({}) but no valuerTzIncomplete parameterzextended-parameter-markerr=zParameter not followed by '='parameter-separatorr F'z5Quoted string value for extended parameter is invalidrzZParameter marked as extended but appears to have a quoted string value that is non-encodedzcApparent initial-extended-value but attribute was not marked as extended or was not initial sectionz(Missing required charset/lang delimitersr{r\z=Expected RFC2231 char/lang encoding delimiter, but found {!r}zRFC2231-delimiterz;Expected RFC2231 char/lang encoding delimiter, but found {}DQUOTE)rKryrrrror1rrOrrrTrrrrrQrur}rXrrrrrcrrr) rrrFr rappendtoqstring inner_value semi_validrtrs r get_parameterrl s KKE ''LE5 LL E!HOO V79%%+VE]]44 5 5 5e| Qx3 &u--LE5"EO LL    &    D  B)*@AA A 8s?? LLs,GHH I I I!""IE!EN Qx3%&EFFF LLs$9::;;; !""IE F q[(( u UIH ~$<%$ FU1A55 aC OOE " " "$!%<  V7 DEE F F F  V7 688 9 9 9  %<      <#666E7 LJ & & OOA   GEM 8s??)+FFLfUmmUU U c+>??@@@abb   KU1X__'..LE5 OOE " " "EJ KE!HOO-/<??@@@abb  GG Qx3&u~~ uuqS%c844abb +E22 u HHUOOO  '' u OOE %<s.CCC-IIc$ t}|r t|\}}||n#tj$r }d}|dt vrt |\}}|s|||cYd}~S|ddkrD||||jtjdnpt|\}}|r|g|dd<|||jtjd |Yd}~nd}~wwxYw|r|ddkru|d}d|_ t|\}}| ||jtjd ||r-|tdd|d d}||S) NrrFzparameter entry with no contentzinvalid parameter {!r}rrWz)parameter with invalid trailing text {!r}rr)rfrrrrrrrrorhr1rXrDr)rmime_parametersrFrRr rs rparse_mime_parametersr sl %&&O # =(//LE5  " "5 ) ) ) )& = = =FQx;&& (  '&&v...&&&&&&&Qx3%#**6222'..v/I507078888 5U;; u)!'E"1"I&&u---'..v/I,33E::0<0<===# =&  LU1X__$B'E2E 077LE5 LL     # * *6+E;BB5II,K,K L L L    " "=6K#L#L M M M!""IEG #H s"'=E ;EECEEc |r|ddkrx|dtvr4|t|dd|dd}n't|\}}|||r |ddkx|sdS|tdd|t |dddS)NrrFrrr)rrrrr) tokenlistrrFs r_find_mime_parametersr. s $E!HOO 8{ " "   ]585HII J J J!""IEE%e,,LE5   U # # # $E!HOO  ]3(=>>??? *595566666rc t}d}|s.|jtjd|S t |\}}nf#tj$rT|jtjd|t|||cYSwxYw|||r |ddkr@|jtjd|rt|||S|j |_ |tdd|dd} t |\}}nf#tj$rT|jtjd |t|||cYSwxYw|||j |_|s|S|dd krU|jtjd ||` |`t|||S|td d |t!|dd|S) NFz"Missing content type specificationz(Expected content maintype but found {!r}rrzInvalid content typezcontent-type-separatorrz'Expected content subtype but found {!r}rFz s MMEG  V> 022 3 3 3  '' uu  " V7 6 = =e D DFF G G GeU+++   LL E!HOO V7 "$$ % % %  0 !% / / / [&&((..00EN LLs$<==>>> !""IE '' uu  " V7 5 < |dr6|ddtvr!|dd}|ddd|d<|S)Nr"r)r)lineswsps r_steal_trailing_WSP_if_existsr sS C #r#uRy}33Bim"IcrcNb Jrc  |jp tj}|jrdnd}dg}d}d}d}d}t dd} t |} | r!| d} | | ur|dz}"t| } | jdkrt| tzrd } | ||} n5#t$r(td | jDrd } nd} d }YnwxYw| jd krt| ||||r |s | jsd}d}| jr| | dt'|j }|j|vr_t'||t'|dz kr$t+|}|||dxx|z cc<rt/| dst | | z} n7|| |kr|d ks |dkr| dkrd}t1| |||| j| }| }d}t'| |t'|dz kr|dxx| z cc< | jrWt'| dz|krAt+|}|s| r||| zd}it/| ds7t | }| js|dz }|| || z} | jr|s| d| d }t+|}|s| r||| zn|dxx| z cc<| !|j||jzS)Nutf-8rMr"rFwrap_as_ew_blockedrrDTc3JK|]}t|tjVdSr)r;rrwr%s rr(z%_refold_parse_tree.. sC..a!>??......r unknown-8bitrgrHrr)max_line_lengthsysmaxsizeutf8rrr1rrXr(r rrur?r9_fold_mime_parametersr@r^rLrrrrrY _fold_as_ewr_r=insertr+) parse_treerImaxlenrkrlast_ew last_charsetr want_encodingend_ew_not_allowedr{rAtstrr encoded_partnewlinenewpartss rrJrJ sa # 2s{F +5ww:H DEGLM!"&:;;   E ]yy|| % % % ! #  4yy ?g % %#d))h*> % M ! KK ! ! !GG! ! ! !.. ,..... "(" MMM ! ?/ / / !$vx @ @ @  " !3" % ! % ' !#'99F9#;#;Q>Q=Q  u % % 66s B88/C*)C*cz |B|r@tt|d|d|z}|dd||d<|dtvr]|d}|dd}t|d|kr"|t ||dxx|z cc<d}|dtvr|d}|dd}|t|dn|}|dkrdn|} t| dz} | dz|krt jd|r|t|dz } | | z } | dkr|d ;|d| } tj | | }t|| z }|dkr8| dd} tj | | }t|| z }|dk8|dxx|z cc<|t| d}|r*|d t|d}||dxx|z cc<|r|ndS) Nrrrr"rMrz3max_line_length is too small to fit an encoded wordrg)r) rrrrrrrrrr) to_encoderrrr_r leading_wsp trailing_wsp new_last_ew encode_as chrome_lenremaining_space text_spaceto_encode_word encoded_wordexcesss rrr9 s 1 U2Ywxx09< = =?? "Ihwh'b |s l abbM b NNf $ $ LL6u== > > > b [ L} } crcN $+O#eBi...K"j00gIY!#JQ6!!% ACC C ) 3uRy>>1$z1 ?? LL    ";J;/z.)DDD \""_4qjj,CRC0N:niHHHL&&8F qjj b \! c.11223  ) LL   eBi..K+ ), "IIIIII, 6;;$6rc  |jD]O\}}|dds|dxxdz cc<|}d} ||d}n-#t$r d}t j|rd}d}nd}YnwxYw|r:tj |d | } d ||| } n#d |t|} t|dt| zd z|kr|ddz| z|d<+t| dz|kr| d| z[d} |dz} |rt|tt| zdzt| z} || dzkrd}|| z dz x}} |d|}tj |d | } t| |krn|d z}F| d || | | d } | d z } ||d}|r|dxxdz cc<|QdS)NrrFstrictFTrrjrr")saferz {}*={}''{}rrrgrrz''r"Nz {}*{}*={}{})ryr$r]rrurrvrprqrr1rrrr)rArrrkrzrr error_handlerencoding_required encoded_valuerra extra_chromer splitpointmaxcharspartials rrrz s{:!:! e Ry!!**3//  "III III  " LL " " " %  ! " " " $ $U++ "( 1 !  "  ="L..B}/66M&&tWmDDDD>>$ U(;(;<>CII % )F 2 2b C$.E"I  YY]f $ $ LLt $ $ $ ~  !TSW%6%66:S=N=NNJa'' $*Z$7!$; ;J   , & 2 2"]!3!<!< }%%11a   LL..g|]<< = = =L qLG*++&E !b S - !I:!:!sA))'BB)rerrpstringroperatorremailrrrrr(rrr rr)r TSPECIALSro ASPECIALSrwrrcompileVERBOSE MULTILINErrrrdrprtrxr|rrrrrrrrrrrrrrrr rrrrrr-r/r6rArGrKrVrYr`rcrfrrrrrrrrrrrrrrrrr:r/r@r0r1r+rrrmatchrfindallrrkrsr|rrrrrrrrrrrrrrr rrrrrr$r'r)r,r2r7r9r<r@rDrHrKrMrOrSrVrZr^rerhrlrqruryr}rrrrrrrrrrrJrrrhrrrsiCJ ''''''  c%jjCCHHn 3  sN CCHH$ U# E "cc#hh . _ E " S(33s883HHH"*Z",  @,@,@,@,@,@,@,@,FDDDDD)DDD     I   Y9"9I )#####9###6 - - - - -| - - -!4CCCCC)CCC&%%%%%i%%%2 ? ? ? ? ?) ? ? ?%%%%% %%%"$$$$$I$$$*"""""y"""6 DDDDDDyDDD!!!!!i!!!6;;;;;Y;;;.....Y...i) I yB9 '!'!'!'!'!&'!'!'!T!!!!! !!!H     I    ) 8%%%%%y%%% ##### ###i     I   S.S.S.S.S.YS.S.S.l     y   *1 i ) *****I***&&&&&y&&&Y(+(+(+(+(+s(+(+(+VH-<<<<#I$4$4 BIbggj!!""%$%$%%%*'RZ (8(8 BIbggn%%&&)()())).&0bj1A1A BIbgg-..//2121'2'227$;;;JJJ<   ///bAAAF"    ))))))V2      $6   &2   D$$$L%%%N-!-!-!^(%!%!%!N$$$L ' ' ' R,,,\   <*"""$666r###J<:444n&&&,BBBJ8BBBH$$$$&.&.$,<,LLL\222h777 777r<^l7l7l7\?7?7?7BI!I!I!I!I!r