Ë c‡½jÇ> ã ó — d Z g d¢ZddlZddlZddlZddlZddlZddlZddlZ ddl mZ ddl mZ ddl mZ ddl mZmZmZ ddlmZ d Zd Zd ZdZdZ ej2 d « Z ej2 d« Zd„ Zd„ Zd'd„Zd„ Zd„ Z dZ!ddœd„Z"d„ Z#d„ Z$d„ Z%d„ Z&d(d„Z'd)d„Z(d*d„Z)d„ Z*ddœd„Z+d „ Z,d!„ Z-d*d"„Z. ej2 d#ej^ « Z0d$„ Z1 d+d%„Z2d*d&„Z3y),zMiscellaneous utilities.)Ú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 óD — | j « y# t $ r Y yw xY w)z;Return True if s may contain surrogate-escaped binary data.FT)ÚencodeÚUnicodeEncodeError)Úss ú$/usr/lib64/python3.12/email/utils.pyÚ_has_surrogatesr 4 s% € ð Ø �‰Œ ØøÜò Ùðús ‚ “ žc óJ — | j dd« }|j dd« S )Núutf-8ÚsurrogateescapeÚreplace)r Údecode)ÚstringÚoriginal_bytess r Ú _sanitizer% A s( € ð —]‘] 7Ð,=Ó>€NØ× Ñ ¨)Ó4Ð4ó c óV — | \ }}|j d« |rM |j d« d}t j |« rd}t j d|« }|›|›|›d|›d�S |S # t $ r7 t |t « rt |« }|j |« }|›d|›d�cY S w xY w)aú The inverse of parseaddr(), this takes a 2-tuple of the form (realname, email_address) and returns the string value suitable for an RFC 2822 From, To or Cc header. If the first element of pair is false, then the second element is returned unmodified. The optional charset is the character set that is used to encode realname in case realname is not ASCII safe. Can be an instance of str or a Charset-like object which has a header_encode method. Default is 'utf-8'. Úasciir Ú"z\\\g<0>z <Ú>) r Ú specialsreÚsearchÚ escapesreÚsubr Ú isinstanceÚstrr Ú header_encode)ÚpairÚcharsetÚnameÚaddressÚquotesÚencoded_names r r r M s¬ € ð �M€Dˆ'à‡N�N�7ÔÙð CØ�K‰K˜Ô ð ˆFÜ× Ñ Ô&Ø�Ü—=‘= ¨TÓ2ˆDÙ$*©D²&º'ÐBÐBØ€Nøô "ò 7ܘ'¤3Ô'Ü! 'Ó*�Ø"×0Ñ0°Ó6ˆLÚ ,ªgÐ6Ò6ð 7ús šA( Á(=B(Â'B(c # ó„ K — d}d}t | « D ]! \ }}|r|d|z f–— d}Œ|dk( rd}Œ||f–— Œ# |r|df–— y y w)Nr FÚ\T)Ú enumerate)ÚaddrÚposÚescapeÚchs r Ú_iter_escaped_charsr? n sb è ø€ Ø €CØ €FܘT–?‰ˆˆRÙØ˜˜r™ Ð"Ò"؉FØ �4ŠZ؉Fà˜�)‹Oð #ñ Ø�DˆkÓð ùs ‚>A c óü — d| vr| S d}d}g }t | « D ]0 \ }}|dk( sŒ|€|}Œ||k7 r|j | || « |dz }d}Œ2 |t | « k r|j | |d « dj |« S )z Strip real names between quotes.r) r Né r )r? ÚappendÚlenÚjoin)r; ÚstartÚopen_posÚresultr<