a DOgB@sgdZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl m Z ddl mZmZmZddlmZdZd Zd Zd Zd Zed Zed ZddZddZd@ddZddZddZdZ ddddZ!ddZ"dd Z#d!d"Z$d#d$Z%dAd&d'Z&dBd(d)Z'dCd*d+Z(d,d-Z)ddd.d/Z*d0d1Z+d2d3Z,dDd4d5Z-ed6ej.Z/d7d8Z0dEd;d<Z1dFd>d?Z2dS)G)collapse_rfc2231_value decode_paramsdecode_rfc2231encode_rfc2231 formataddr formatdateformat_datetime getaddresses make_msgid mktime_tz parseaddr parsedate parsedate_tzparsedate_to_datetimeunquoteN)quote) AddressList)r )r r _parsedate_tz)Charsetz, z 'z[][\\()<>@,:;".]z[\\"]cCs(z|WdSty"YdS0dS)NFT)encodeUnicodeEncodeError)sr0/opt/alt/python39/lib64/python3.9/email/utils.py_has_surrogates4s  rcCs|dd}|ddS)Nutf-8surrogateescapereplace)rdecode)stringZoriginal_bytesrrr _sanitizeAs r"rcCs|\}}|d|rz|dWn:ty^t|trDt|}||}d||fYS0d}t|rrd}t d|}d||||fS|S)Nasciiz%s <%s>r"z\\\g<0>z %s%s%s <%s>) rr isinstancestrrZ header_encode specialsresearch escapesresub)ZpaircharsetnameZaddressZ encoded_nameZquotesrrrrMs       rccs\d}d}t|D]8\}}|r0|d|fVd}q|dkr>d}q||fVq|rX|dfVdS)NrF\T) enumerate)addrposescapechrrr_iter_escaped_charsns r3cCsd|vr |Sd}d}g}t|D]D\}}|dkr |dur>|}q ||krX|||||d}d}q |t|kr|||dd|S)Nr$rr)r3appendlenjoin)r/startZopen_posresultr0r2rrr_strip_quoted_realnames}s  r:T)strictcCs|s&tdd|D}t|}|jSdd|D}t|}t|}t|}t|j}d}|D]}t|}|d|d7}q`t||krdgS|S) Ncss|]}t|VqdS)Nr&.0vrrr zgetaddresses..cSsg|] }t|qSrr<r=rrr rAz getaddresses..rr4,rr) COMMASPACEr7 _AddressList addresslist_pre_parse_validation_post_parse_validationr:countr6)Z fieldvaluesr;allar/r9nr?rrrrs    rcCsVt|}d}t|D]8\}}|dkr.|d7}q|dkr|d8}|dkrdSq|dkS)Nr(r4)F)r:r3)r/Zopensr0r2rrr_check_parenthesiss rPcCs(g}|D]}t|sd}||q|S)Nz('', ''))rPr5)Zemail_header_fieldsaccepted_valuesr?rrrrHs  rHcCs,g}|D]}d|dvrd}||q|S)N[r4rD)r5)Zparsed_email_header_tuplesrQr?rrrrIs   rIc CsHdgd|d|dgd|dd|d|d|d |d |fS) Nz"%s, %02d %s %04d %02d:%02d:%02d %s)ZMonZTueZWedZThuZFriZSatZSun) ZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecr4rr) timetuplezonerrr_format_timetuple_and_zones rZFcCsR|durt}|s|r,tj|tjj}n tj|}|rH|}d}t||S)NF)timedatetimeZ fromtimestamptimezoneutcZutcfromtimestamp astimezoner)timeval localtimeusegmtdtrrrrs rcCsV|}|r2|jdus$|jtjjkr,tdd}n|jdurBd}n |d}t||S)Nz%usegmt option requires a UTC datetimeZGMTz-0000z%z)rXtzinfor\r]r^ ValueErrorstrftimerZ)rcrbnowrYrrrrs  rcCs^ttd}t}td}|dur0d}nd|}|durHt}d|||||f}|S)Nd@r.z<%d.%d.%d%s@%s>)intr[osgetpidrandomZ getrandbitssocketZgetfqdn)ZidstringZdomainr`pidZrandintZmsgidrrrr "s  r cCsNt|^}}|dur(tj|ddStj|dddttj|diS)NrSrdseconds)rr\r] timedelta)dataZdtupletzrrrr9s rcCsv|st|j}|sdS|dSt|tr0|d}t|ts>dSt|gd}tt|j}|rjt|dkrndS|dS)NrDrr4)rFrGr%listr&rHrIr6)r/r;Zaddrsrrrr As    r cCs`t|dkr\|dr<|dr<|ddddddS|dr\|dr\|ddS|S) Nr4r$z\\r-z\"<>)r6 startswithendswithrr<rrrr`s   rcCs&|td}t|dkr"dd|fS|S)NrT)splitTICKr6)rpartsrrrrls   rcCsDtjj|d|pdd}|dur*|dur*|S|dur6d}d|||fS)Nrr#)Zsafeencodingz%s'%s'%s)urllibparser)rr+languagerrrrts rz&^(?P\w+)\*((?P[0-9]+)\*?)?$c Cs@|dg}i}|ddD]x\}}|d}t|}t|}|r||dd\}}|durbt|}||g|||fq||dt|fq|r<| D]\}}g}d} | |D],\}} }|rt j j| dd } d } || qtt |}| r(t|\} } }||| | d|ffq||d|fq|S) Nrr4*r,numz"%s"Fzlatin-1)rT)r{rrfc2231_continuationmatchgrouprk setdefaultr5ritemssortrr EMPTYSTRINGr7r) params new_paramsZrfc2231_paramsr,valueZencodedZmorZ continuationsZextendedrr+rrrrrs8    rrus-asciicCslt|trt|dkrt|S|\}}}|dur4|}t|d}zt|||WStyft|YS0dS)NrUzraw-unicode-escape)r%tupler6rbytesr& LookupError)rerrorsZfallback_charsetr+rtextZrawbytesrrrrs   rrwc Cs|durtjtjjS|jdur.|S|dd|f}t|}t |}z tj |j d}t||j }Wn~t y|tjt|dd}tjo|jdk}|rtjntj }|tj |dkrt|tj|}n t|}Yn0|j|dS)NrwrqrSr)rd)r\rgr]r^r_rdrXr[mktimerars tm_gmtofftm_zoneAttributeErrorgmtimedaylighttm_isdstaltzonetznamer) rcZisdstZtmrrZlocaltmZdeltaruZdstZgmtoffrrrras$    ra)r)NFF)F)NN)NN)rr)Nrw)3__all__rlrer[rnror\Z urllib.parserZemail._parseaddrrrrFr r r rZ email.charsetrrErZ UEMPTYSTRINGZCRLFr}compiler'r)rr"rr3r:Zsupports_strict_parsingrrPrHrIrZrrr rr rrrASCIIrrrrarrrrs\        !,       0