3 Õì2aI6ã@szdddddddddd d d d d dgZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl m Z ddl mZmZmZddlmZdZdZdZdZdZejdƒZejdƒZdd„Zdd„Zd7d!d„Zd"d„Zejd#ejej BƒZ!d$d%„Z"d8d'd„Z#d9d(d„Z$d:d)d„Z%d*d „Z&d+d „Z'd,d„Z(d-d„Z)d;d.d„Z*ejd/ej+ƒZ,d0d„Z-dd5d6„Z/dS)?Úcollapse_rfc2231_valueÚ decode_paramsÚdecode_rfc2231Úencode_rfc2231Ú formataddrÚ formatdateÚformat_datetimeÚ getaddressesÚ make_msgidÚ mktime_tzÚ parseaddrÚ parsedateÚ parsedate_tzÚparsedate_to_datetimeÚunquoteéN)Úquote)Ú AddressList)r )r r Ú _parsedate_tz)ÚCharsetz, Úz ú'z[][\\()<>@,:;".]z[\\"]c Cs&y |jƒdStk r dSXdS)NFT)ÚencodeÚUnicodeEncodeError)Ús©rú*/opt/alt/python36/lib64/python3.6/utils.pyÚ_has_surrogates3s rcCs|jddƒ}|jddƒS)Nzutf-8ÚsurrogateescapeÚreplace)rÚdecode)ÚstringZoriginal_bytesrrrÚ _sanitize@s r!úutf-8c Cs�|\}}|jdƒ|rŒy|jdƒWn8tk r\t|tƒrFt|ƒ}|j|ƒ}d||fSXd}tj|ƒrpd}tj d|ƒ}d||||fS|S)NÚasciiz%s <%s>rú"z\\\g<0>z %s%s%s <%s>) rrÚ isinstanceÚstrrZ header_encodeÚ specialsreÚsearchÚ escapesreÚsub)ZpairÚcharsetÚnameZaddressZ encoded_nameZquotesrrrrLs      cCstj|ƒ}t|ƒ}|jS)N)Ú COMMASPACEÚjoinÚ _AddressListÚ addresslist)Z fieldvaluesÚallÚarrrrns a_ =\? # literal =? (?P[^?]*?) # non-greedy up to the next ? is the charset \? # literal ? (?P[qb]) # either a "q" or a "b", case insensitive \? # literal ? (?P.*?) # non-greedy up to the next ?= is the atom \?= # literal ?= cCsfddddddddg|d |d d d d dddddddddg |dd|d|d|d|d|fS)Nz"%s, %02d %s %04d %02d:%02d:%02d %sZMonZTueZWedZThuZFriZSatZSunééZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecérééér)Ú timetupleÚzonerrrÚ_format_timetuple_and_zone�s r;FcCsR|dkrtjƒ}|s|r,tjj|tjjƒ}n tjj|ƒ}|rH|jƒ}d}t||ƒS)NF)ÚtimeÚdatetimeZ fromtimestampÚtimezoneÚutcZutcfromtimestampÚ astimezoner)ÚtimevalÚ localtimeÚusegmtÚdtrrrrŠs cCsV|jƒ}|r2|jdks$|jtjjkr,tdƒ‚d}n|jdkrBd}n |jdƒ}t||ƒS)Nz%usegmt option requires a UTC datetimeZGMTz-0000z%z)r9Útzinfor=r>r?Ú ValueErrorZstrftimer;)rDrCÚnowr:rrrr§s  cCs^ttjƒdƒ}tjƒ}tjdƒ}|dkr0d}nd|}|dkrHtjƒ}d|||||f}|S)Nédé@rÚ.z<%d.%d.%d%s@%s>)Úintr<ÚosÚgetpidÚrandomZ getrandbitsÚsocketZgetfqdn)ZidstringÚdomainrAÚpidZrandintZmsgidrrrr ºs  cCsNt|ƒ�^}}|dkr(tj|dd…ŽStj|dd…dtjtj|d�ƒiŽS)Nr3rE)Úseconds)rr=r>Ú timedelta)ÚdataZdtupleÚtzrrrrÑs cCst|ƒj}|sdS|dS)Nrr)rr)r/r0)ZaddrZaddrsrrrr Ùs cCs`t|ƒdkr\|jdƒr<|jdƒr<|dd…jddƒjddƒS|jdƒr\|jdƒr\|dd …S|S) Nr5r$z\\ú\z\"ú<ú>éÿÿÿÿrY)ÚlenÚ startswithÚendswithr)r&rrrrçs   cCs&|jtdƒ}t|ƒdkr"dd|fS|S)Nr4)ÚsplitÚTICKrZ)rÚpartsrrrrós   cCsDtjj|d|pdd�}|dkr*|dkr*|S|dkr6d}d|||fS)Nrr#)ZsafeÚencodingz%s'%s'%s)ÚurllibÚparser)rr+Úlanguagerrrrûs z&^(?P\w+)\*((?P[0-9]+)\*?)?$c Csx|dd…}g}i}|jdƒ\}}|j||fƒx�|rÀ|jdƒ\}}|jdƒrTd}nd}t|ƒ}tj|ƒ}|r¨|jddƒ\}}|dk rŽt|ƒ}|j|gƒj|||fƒq2|j|dt |ƒfƒq2W|�rtxª|j ƒD]ž\}}g}d} |j ƒx6|D].\}} }|�rt j j| dd �} d} |j| ƒqðWt tj|ƒƒ}| �r^t|ƒ\} } }|j|| | d|ffƒqÒ|j|d|fƒqÒW|S) NrÚ*TFr,Únumz"%s"zlatin-1)r`)ÚpopÚappendr\rÚrfc2231_continuationÚmatchÚgrouprKÚ setdefaultrÚitemsÚsortrarbÚ EMPTYSTRINGr.r) ÚparamsZ new_paramsZrfc2231_paramsr,ÚvalueZencodedÚmoreZ continuationsZextendedrr+rcrrrr sD   rúus-asciic Csjt|tƒ st|ƒdkr t|ƒS|\}}}|dkr6|}t|dƒ}y t|||ƒStk rdt|ƒSXdS)Nr6zraw-unicode-escape)r%ÚtuplerZrÚbytesr&Ú LookupError)rpÚerrorsZfallback_charsetr+rcÚtextZrawbytesrrrrEs   r5c Cs|dkrtjjtjjƒjƒS|jdk r.|jƒS|jƒdd…|f}tj|ƒ}tj |ƒ}y tj |j d�}tj||j ƒ}Wn€t k rø|tjtj|ƒdd…Ž}tjo²|jdk}|r¾tjntj }|tj |d�krêtj|tj|ƒ}n tj|ƒ}YnX|j|d�S)Nr5)rRr3r)rErY)r=rGr>r?r@rEr9r<ZmktimerBrSZ tm_gmtoffZtm_zoneÚAttributeErrorZgmtimeZdaylightZtm_isdstZaltzoneZtznamer) rDZisdstZtmrRZlocaltmZdeltarUÚdstZgmtoffrrrrB_s$   rB)r")NFF)F)NN)NN)rrrrY)NrY)0Ú__all__rLÚrer<rNrOr=Z urllib.parseraZemail._parseaddrrrr/r r r rZ email.charsetrr-rnZ UEMPTYSTRINGZCRLFr^Úcompiler'r)rr!rrÚVERBOSEÚ IGNORECASEZecrer;rrr rr rrrÚASCIIrhrrrBrrrrÚsl        "     8