§
    ¸)ýf�E  ã                   ó´   — d Z g d¢ZddlZddlZdZdZdZg d¢Zg d¢Zddddd	d
dd	dddddddœZ	d„ Z
d„ Zd„ Zd„ Zd„ Z G d„ d¦  «        Z G d„ de¦  «        ZdS )zcEmail address parsing code.

Lifted directly from rfc822.py.  This should eventually be rewritten.
)Ú	mktime_tzÚ	parsedateÚparsedate_tzÚquoteé    Nú Ú z, )ÚjanÚfebÚmarÚaprÚmayÚjunÚjulÚaugÚsepÚoctÚnovÚdecÚjanuaryÚfebruaryÚmarchÚaprilr   ÚjuneÚjulyÚaugustÚ	septemberÚoctoberÚnovemberÚdecember)ÚmonÚtueÚwedÚthuÚfriÚsatÚsunipþÿÿiÔþÿÿiþÿÿi¨ýÿÿiDýÿÿiàüÿÿ)ÚUTÚUTCÚGMTÚZÚASTÚADTÚESTÚEDTÚCSTÚCDTÚMSTÚMDTÚPSTÚPDTc                 ó`   — t          | ¦  «        }|sdS |d         €d|d<   t          |¦  «        S )zQConvert a date string to a time tuple.

    Accounts for military timezones.
    Né	   r   )Ú_parsedate_tzÚtuple)ÚdataÚress     ú\/home/blender/git/blender-v430/install_release/4.3/python/lib/python3.11/email/_parseaddr.pyr   r   -   s<   € õ
 ˜Ñ
Ô
€CØð ØˆØ
ˆ1„v€~ØˆˆA‰Ý�‰:Œ:Ðó    c           
      óŠ  — | sdS |                       ¦   «         } | sdS | d                              d¦  «        s!| d                              ¦   «         t          v r| d= n7| d                              d¦  «        }|dk    r| d         |dz   d…         | d<   t          | ¦  «        dk    r;| d                               d¦  «        }t          |¦  «        dk    r|| dd…         z   } t          | ¦  «        dk    rm| d         }|                     d¦  «        }|d	k    r|                     d¦  «        }|dk    r|d|…         ||d…         g| dd…<   n|                      d
¦  «         t          | ¦  «        dk     rdS | dd…         } | \  }}}}}|r|r|sdS |                     ¦   «         }|t          vr!||                     ¦   «         }}|t          vrdS t           	                    |¦  «        dz   }|dk    r|dz  }|d	         dk    r
|dd	…         }|                     d¦  «        }|dk    r||}}|d	         dk    r|dd	…         }|sdS |d          
                    ¦   «         s||}}|d	         dk    r
|dd	…         }|                      d¦  «        }t          |¦  «        dk    r|\  }	}
d}n‹t          |¦  «        dk    r|\  }	}
}nqt          |¦  «        dk    r\d|d         v rR|d                               d¦  «        }t          |¦  «        dk    r|\  }	}
d}nt          |¦  «        dk    r|\  }	}
}ndS dS 	 t          |¦  «        }t          |¦  «        }t          |	¦  «        }	t          |
¦  «        }
t          |¦  «        }n# t          $ r Y dS w xY w|dk     r|dk    r|dz  }n|dz  }d}|                     ¦   «         }|t          v rt          |         }n>	 t          |¦  «        }n# t          $ r Y nw xY w|dk    r|                     d¦  «        rd}|r"|dk     rd	}| }nd}||dz  dz  |dz  dz  z   z  }||||	|
|ddd	|g
S )a†  Convert date to extended time tuple.

    The last (additional) element is the time zone offset in seconds, except if
    the timezone was specified as -0000.  In that case the last element is
    None.  This indicates a UTC timestamp that explicitly declaims knowledge of
    the source timezone, as opposed to a +0000 timestamp that indicates the
    source timezone really was UTC.

    Nr   ú,é   é   ú-é   ú+éÿÿÿÿr   é   é   ú:é   Ú0ú.éd   éD   il  iÐ  i  é<   )ÚsplitÚendswithÚlowerÚ	_daynamesÚrfindÚlenÚfindÚappendÚ_monthnamesÚindexÚisdigitÚintÚ
ValueErrorÚupperÚ
_timezonesÚ
startswith)r9   ÚiÚstuffÚsÚddÚmmÚyyÚtmÚtzÚthhÚtmmÚtssÚtzoffsetÚtzsigns                 r;   r7   r7   9   sÆ  € ð ð ØˆtØ�:Š:‰<Œ<€DØð Øˆtð ˆA„w×Ò˜ÑÔð $  Q¤§¢¡¤µ9Ð <Ð <à�ˆGˆGà�ŒG�MŠM˜#ÑÔˆØ�Š6ˆ6Ø˜1”g˜a ™c˜d˜d”mˆD�‰GÝ
ˆ4�y„y�A‚~€~Ø�Q”—’˜cÑ"Ô"ˆÝˆu‰:Œ:˜Š?ˆ?Ø˜4   œ8Ñ#ˆDÝ
ˆ4�y„y�A‚~€~Ø�ŒGˆØ�FŠF�3‰KŒKˆØ�Š7ˆ7Ø—’�s‘”ˆAØˆqŠ5ˆ5Ø˜"˜1˜"œ˜q   œu�~ˆD���‰HˆHà�KŠK˜‰OŒOˆOÝ
ˆ4�y„y�1‚}€}ØˆtØ���Œ8€DØÑ€RˆˆR��RØð �2ð ˜"ð ØˆtØ	�Š‰Œ€BØ	•ÐÐØ�R—X’X‘Z”ZˆBˆØ•[Ð Ð Ø�4Ý	×	Ò	˜2Ñ	Ô	 Ñ	"€BØ	ˆB‚w€wØ
ˆb‰ˆØ	ˆ"„v�‚}€}Ø���ŒWˆØ
�Š�‰Œ€AØˆ1‚u€uØ�RˆBˆØ	ˆ"„v�‚}€}Ø���ŒWˆØð 	Ø�4ØˆaŒ5�=Š=‰?Œ?ð Ø�RˆBˆØ	ˆ"„v�‚}€}Ø���ŒWˆØ	�Š�#‰Œ€BÝ
ˆ2�w„w�!‚|€|Ø‰
ˆˆcØˆˆÝ	ˆR‰Œ�AŠˆØ‰ˆˆc�3�3Ý	ˆR‰Œ�AŠˆ˜#  A¤˜,˜,à�ŒU�[Š[˜ÑÔˆÝˆr‰7Œ7�aŠ<ˆ<Ø‰JˆS�#ØˆCˆCÝ�‰WŒW˜Š\ˆ\Ø ‰OˆS�#�s�sà�4àˆtðÝ�‰WŒWˆÝ�‰WŒWˆÝ�#‰hŒhˆÝ�#‰hŒhˆÝ�#‰hŒhˆˆøÝð ð ð Øˆtˆtðøøøð 
ˆC‚x€xà�Š7ˆ7Ø�$‰JˆBˆBð �$‰JˆBØ€HØ	�Š‰Œ€BØ	�ZÐÐÝ˜b”>ˆˆð	Ý˜2‘w”wˆHˆHøÝð 	ð 	ð 	ØˆDð	øøøà�QŠ;ˆ;˜2Ÿ=š=¨Ñ-Ô-ˆ;ØˆHàð JØ�aŠ<ˆ<ØˆFØ �yˆHˆHàˆFØ˜x¨™}¨dÑ2°hÀ±nÀbÑ5HÑHÑIˆà��B˜˜S # q¨!¨R°Ð:Ð:s%   Ì6AN Î
NÎNÏO( Ï(
O5Ï4O5c                 ób   — t          | ¦  «        }t          |t          ¦  «        r
|dd…         S |S )z&Convert a time string to a time tuple.Nr6   )r   Ú
isinstancer8   ©r9   Úts     r;   r   r   ¶   s3   € å�TÑÔ€AÝ�!•UÑÔð Ø��!�Œuˆàˆr<   c                 óŽ   — | d         €t          j        | dd…         dz   ¦  «        S t          j        | ¦  «        }|| d         z
  S )zETurn a 10-tuple as returned by parsedate_tz() into a POSIX timestamp.r6   Né   )rD   )ÚtimeÚmktimeÚcalendarÚtimegmrm   s     r;   r   r   ¿   sE   € àˆA„w€åŒ{˜4   œ8 eÑ+Ñ,Ô,Ð,åŒO˜DÑ!Ô!ˆØ�4˜”7‰{Ðr<   c                 óV   — |                       dd¦  «                              dd¦  «        S )zøPrepare string to be used in a quoted string.

    Turns backslash and double quote characters into quoted pairs.  These
    are the only characters that need to be quoted inside a quoted string.
    Does not add the surrounding double quotes.
    ú\z\\ú"z\")Úreplace)Ústrs    r;   r   r   É   s(   € ð �;Š;�t˜VÑ$Ô$×,Ò,¨S°%Ñ8Ô8Ð8r<   c                   ód   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
dd
„Zd„ Zd„ Zd„ Zdd„Zd„ ZdS )ÚAddrlistClassa  Address parser class by Ben Escoto.

    To understand what this class does, it helps to have a copy of RFC 2822 in
    front of you.

    Note: this class interface is deprecated and may be removed in the future.
    Use email.utils.AddressList instead.
    c                 óú   — d| _         d| _        d| _        d| _        | j        | j        z   | _        | j         | j        z   | j        z   | _        | j                             dd¦  «        | _        || _        g | _	        dS )zƒInitialize a new instance.

        `field' is an unparsed address header field, containing
        one or more addresses.
        z()<>@,:;."[]r   z 	z
rJ   r   N)
ÚspecialsÚposÚLWSÚCRÚFWSÚatomendsrx   Ú
phraseendsÚfieldÚcommentlist©Úselfr„   s     r;   Ú__init__zAddrlistClass.__init__Ý   sw   € ð (ˆŒØˆŒØˆŒØˆŒØ”8˜dœgÑ%ˆŒØœ¨¬Ñ0°4´7Ñ:ˆŒð œ-×/Ò/°°RÑ8Ô8ˆŒØˆŒ
ØˆÔÐÐr<   c                 ó  — g }| j         t          | j        ¦  «        k     rÇ| j        | j                  | j        dz   v rJ| j        | j                  dvr%|                     | j        | j                  ¦  «         | xj         dz  c_         nD| j        | j                  dk    r-| j                             |                      ¦   «         ¦  «         nn| j         t          | j        ¦  «        k     °Çt                               |¦  «        S )z&Skip white space and extract comments.z
r?   ú()	r~   rS   r„   r   rU   r…   Ú
getcommentÚEMPTYSTRINGÚjoin)r‡   Úwslists     r;   ÚgotonextzAddrlistClass.gotonextð   sß   € àˆØŒh�˜TœZ™œÒ(Ð(ØŒz˜$œ(Ô# t¤x°&Ñ'8Ð8Ð8Ø”:˜dœhÔ'¨vÐ5Ð5Ø—M’M $¤*¨T¬XÔ"6Ñ7Ô7Ð7Ø�”˜A‘�”�Ø”˜DœHÔ%¨Ò,Ð,ØÔ ×'Ò'¨¯ªÑ(9Ô(9Ñ:Ô:Ð:Ð:àð Œh�˜TœZ™œÒ(Ð(õ ×Ò Ñ'Ô'Ð'r<   c                 óà   — g }| j         t          | j        ¦  «        k     rN|                      ¦   «         }|r||z  }n|                     d¦  «         | j         t          | j        ¦  «        k     °N|S )zVParse all addresses.

        Returns a list containing all of the addresses.
        )r   r   )r~   rS   r„   Ú
getaddressrU   )r‡   ÚresultÚads      r;   ÚgetaddrlistzAddrlistClass.getaddrlistþ   sp   € ð
 ˆØŒh�˜TœZ™œÒ(Ð(Ø—’Ñ"Ô"ˆBØð (Ø˜"‘��à—’˜hÑ'Ô'Ð'ð Œh�˜TœZ™œÒ(Ð(ð ˆr<   c                 ó  — g | _         |                      ¦   «          | j        }| j         }|                      ¦   «         }|                      ¦   «          g }| j        t	          | j        ¦  «        k    r,|r(t                               | j         ¦  «        |d         fg}�n| j        | j                 dv rF|| _        || _         |                      ¦   «         }t                               | j         ¦  «        |fg}�n¶| j        | j                 dk    r¾g }t	          | j        ¦  «        }| xj        dz  c_        | j        t	          | j        ¦  «        k     rz|                      ¦   «          | j        |k     r'| j        | j                 dk    r| xj        dz  c_        n4||  	                    ¦   «         z   }| j        t	          | j        ¦  «        k     °znâ| j        | j                 dk    rx|  
                    ¦   «         }| j         r?t                               |¦  «        dz   d                     | j         ¦  «        z   d	z   |fg}nrt                               |¦  «        |fg}nT|r)t                               | j         ¦  «        |d         fg}n)| j        | j                 | j        v r| xj        dz  c_        |                      ¦   «          | j        t	          | j        ¦  «        k     r&| j        | j                 d
k    r| xj        dz  c_        |S )zParse the next address.r   z.@rG   r?   ú;ú<z (r   ú)r>   )r…   r�   r~   ÚgetphraselistrS   r„   ÚSPACEr�   Úgetaddrspecr‘   Úgetrouteaddrr}   )r‡   ÚoldposÚoldclÚplistÚ
returnlistÚaddrspecÚfieldlenÚ	routeaddrs           r;   r‘   zAddrlistClass.getaddress  sÂ  € àˆÔØ�Š‰Œˆà”ˆØÔ ˆØ×"Ò"Ñ$Ô$ˆà�Š‰ŒˆØˆ
àŒ8•s˜4œ:‘”Ò&Ð&àð HÝ$Ÿzšz¨$Ô*:Ñ;Ô;¸UÀ1¼XÐFÐG�
ùàŒZ˜œÔ! TÐ)Ð)ð ˆDŒHØ$ˆDÔØ×'Ò'Ñ)Ô)ˆHÝ Ÿ:š: dÔ&6Ñ7Ô7¸ÐBÐCˆJ‰JàŒZ˜œÔ! SÒ(Ð(àˆJå˜4œ:‘”ˆHØˆHŒH˜‰MˆHŒHØ”(�S ¤™_œ_Ò,Ð,Ø—’‘”�Ø”8˜hÒ&Ð&¨4¬:°d´hÔ+?À3Ò+FÐ+FØ�H”H ‘M�H”HØØ'¨$¯/ª/Ñ*;Ô*;Ñ;�
ð ”(�S ¤™_œ_Ò,Ð,øð ŒZ˜œÔ! SÒ(Ð(à×)Ò)Ñ+Ô+ˆIàÔð >Ý$Ÿzšz¨%Ñ0Ô0°4Ñ7Ø"Ÿxšx¨Ô(8Ñ9Ô9ñ :Ø<?ñ @ØAJðLð M�
�
õ  %Ÿzšz¨%Ñ0Ô0°)Ð<Ð=�
�
ð ð Ý$Ÿzšz¨$Ô*:Ñ;Ô;¸UÀ1¼XÐFÐG�
�
Ø”˜DœHÔ%¨¬Ð6Ð6Ø�”˜A‘�”à�Š‰ŒˆØŒ8•c˜$œ*‘o”oÒ%Ð%¨$¬*°T´XÔ*>À#Ò*EÐ*EØˆHŒH˜‰MˆHŒHØÐr<   c                 óŒ  — | j         | j                 dk    rdS d}| xj        dz  c_        |                      ¦   «          d}| j        t          | j         ¦  «        k     ræ|r|                      ¦   «          d}nœ| j         | j                 dk    r| xj        dz  c_        n¦| j         | j                 dk    r| xj        dz  c_        d}nL| j         | j                 d	k    r| xj        dz  c_        n%|                      ¦   «         }| xj        dz  c_        n1|                      ¦   «          | j        t          | j         ¦  «        k     °æ|S )
z�Parse a route address (Return-path value).

        This method just skips all the route stuff and returns the addrspec.
        r—   NFr?   r   ú>ú@TrG   )r„   r~   r�   rS   Ú	getdomainr›   )r‡   ÚexpectrouteÚadlists      r;   rœ   zAddrlistClass.getrouteaddrG  s:  € ð
 Œ:�d”hÔ 3Ò&Ð&ØˆFàˆØˆŒ�A‰ˆŒØ�Š‰ŒˆØˆØŒh�˜TœZ™œÒ(Ð(Øð Ø—’Ñ Ô Ð Ø#��Ø”˜DœHÔ%¨Ò,Ð,Ø�”˜A‘�”ØØ”˜DœHÔ%¨Ò,Ð,Ø�”˜A‘�”Ø"��Ø”˜DœHÔ%¨Ò,Ð,Ø�”˜A‘�”�à×)Ò)Ñ+Ô+�Ø�”˜A‘�”ØØ�MŠM‰OŒOˆOð! Œh�˜TœZ™œÒ(Ð(ð$ ˆr<   c                 óÞ  — g }|                       ¦   «          | j        t          | j        ¦  «        k     �rzd}| j        | j                 dk    rX|r.|d                              ¦   «         s|                     ¦   «          |                     d¦  «         | xj        dz  c_        d}n¿| j        | j                 dk    r8|                     dt          |                      ¦   «         ¦  «        z  ¦  «         nq| j        | j                 | j	        v r1|r.|d                              ¦   «         s|                     ¦   «          nr|                     |  
                    ¦   «         ¦  «         |                       ¦   «         }|r|r|                     |¦  «         | j        t          | j        ¦  «        k     �°z| j        t          | j        ¦  «        k    s| j        | j                 dk    rt                               |¦  «        S |                     d¦  «         | xj        dz  c_        |                       ¦   «          |                      ¦   «         }|st          S t                               |¦  «        |z   S )	zParse an RFC 2822 addr-spec.TrJ   rD   r?   Frw   z"%s"r¦   )r�   r~   rS   r„   ÚstripÚpoprU   r   Úgetquoter‚   ÚgetatomrŒ   r�   r§   )r‡   ÚaslistÚpreserve_wsÚwsÚdomains        r;   r›   zAddrlistClass.getaddrspecg  s  € àˆà�Š‰ŒˆØŒh�˜TœZ™œÒ(Ñ(ØˆKØŒz˜$œ(Ô# sÒ*Ð*Øð ! &¨¤*×"2Ò"2Ñ"4Ô"4ð !Ø—J’J‘L”L�LØ—’˜cÑ"Ô"Ð"Ø�”˜A‘�”Ø#��Ø”˜DœHÔ%¨Ò,Ð,Ø—’˜f¥u¨T¯]ª]©_¬_Ñ'=Ô'=Ñ=Ñ>Ô>Ð>Ð>Ø”˜DœHÔ%¨¬Ð6Ð6Øð ! &¨¤*×"2Ò"2Ñ"4Ô"4ð !Ø—J’J‘L”L�LØà—’˜dŸlšl™nœnÑ-Ô-Ð-Ø—’‘”ˆBØð "˜rð "Ø—’˜bÑ!Ô!Ð!ð% Œh�˜TœZ™œÒ(Ñ(ð( Œ8•s˜4œ:‘”Ò&Ð&¨$¬*°T´XÔ*>À#Ò*EÐ*EÝ×#Ò# FÑ+Ô+Ð+à�Š�cÑÔÐØˆŒ�A‰ˆŒØ�Š‰ŒˆØ—’Ñ!Ô!ˆØð 	õ ÐÝ×Ò Ñ'Ô'¨&Ñ0Ð0r<   c                 ó>  — g }| j         t          | j        ¦  «        k     �rd| j        | j                  | j        v r| xj         dz  c_         �n| j        | j                  dk    r-| j                             |                      ¦   «         ¦  «         nØ| j        | j                  dk    r(|                     |                      ¦   «         ¦  «         nš| j        | j                  dk    r&| xj         dz  c_         |                     d¦  «         n^| j        | j                  dk    rt          S | j        | j                  | j	        v rnE|                     |  
                    ¦   «         ¦  «         | j         t          | j        ¦  «        k     �°dt                               |¦  «        S )z-Get the complete domain name from an address.r?   rŠ   ú[rJ   r¦   )r~   rS   r„   r   r…   rU   r‹   ÚgetdomainliteralrŒ   r‚   r®   r�   )r‡   Úsdlists     r;   r§   zAddrlistClass.getdomain�  sd  € àˆØŒh�˜TœZ™œÒ(Ñ(ØŒz˜$œ(Ô# t¤xÐ/Ð/Ø�”˜A‘�”‘Ø”˜DœHÔ%¨Ò,Ð,ØÔ ×'Ò'¨¯ªÑ(9Ô(9Ñ:Ô:Ð:Ð:Ø”˜DœHÔ%¨Ò,Ð,Ø—’˜d×3Ò3Ñ5Ô5Ñ6Ô6Ð6Ð6Ø”˜DœHÔ%¨Ò,Ð,Ø�”˜A‘�”Ø—’˜cÑ"Ô"Ð"Ð"Ø”˜DœHÔ%¨Ò,Ð,õ #Ð"Ø”˜DœHÔ%¨¬Ð6Ð6Øà—’˜dŸlšl™nœnÑ-Ô-Ð-ð# Œh�˜TœZ™œÒ(Ñ(õ$ ×Ò Ñ'Ô'Ð'r<   Tc                 ó¾  — | j         | j                 |k    rdS dg}d}| xj        dz  c_        | j        t          | j         ¦  «        k     rú|r(|                     | j         | j                 ¦  «         d}n£| j         | j                 |v r| xj        dz  c_        n«|r>| j         | j                 dk    r(|                     |                      ¦   «         ¦  «         Œ¬| j         | j                 dk    rd}n%|                     | j         | j                 ¦  «         | xj        dz  c_        | j        t          | j         ¦  «        k     °út
                               |¦  «        S )aæ  Parse a header fragment delimited by special characters.

        `beginchar' is the start character for the fragment.
        If self is not looking at an instance of `beginchar' then
        getdelimited returns the empty string.

        `endchars' is a sequence of allowable end-delimiting characters.
        Parsing stops when one of these is encountered.

        If `allowcomments' is non-zero, embedded RFC 2822 comments are allowed
        within the parsed fragment.
        r   Fr?   rŠ   rv   T)r„   r~   rS   rU   r‹   rŒ   r�   )r‡   Ú	begincharÚendcharsÚallowcommentsÚslistr   s         r;   ÚgetdelimitedzAddrlistClass.getdelimited¤  sI  € ð Œ:�d”hÔ 9Ò,Ð,Ø�2à�ˆØˆØˆŒ�A‰ˆŒØŒh�˜TœZ™œÒ(Ð(Øð 3Ø—’˜TœZ¨¬Ô1Ñ2Ô2Ð2Ø��Ø”˜DœHÔ%¨Ð1Ð1Ø�”˜A‘�”ØØð 3 4¤:¨d¬hÔ#7¸3Ò#>Ð#>Ø—’˜TŸ_š_Ñ.Ô.Ñ/Ô/Ð/ØØ”˜DœHÔ%¨Ò-Ð-Ø��à—’˜TœZ¨¬Ô1Ñ2Ô2Ð2ØˆHŒH˜‰MˆHŒHð Œh�˜TœZ™œÒ(Ð(õ  ×Ò Ñ&Ô&Ð&r<   c                 ó0   — |                       ddd¦  «        S )z1Get a quote-delimited fragment from self's field.rw   z"F©r¼   ©r‡   s    r;   r­   zAddrlistClass.getquoteÉ  s   € à× Ò   e¨UÑ3Ô3Ð3r<   c                 ó0   — |                       ddd¦  «        S )z7Get a parenthesis-delimited fragment from self's field.rŠ   z)Tr¾   r¿   s    r;   r‹   zAddrlistClass.getcommentÍ  s   € à× Ò   e¨TÑ2Ô2Ð2r<   c                 ó6   — d|                       ddd¦  «        z  S )z!Parse an RFC 2822 domain-literal.z[%s]r´   z]Fr¾   r¿   s    r;   rµ   zAddrlistClass.getdomainliteralÑ  s   € à˜×)Ò)¨#¨u°eÑ<Ô<Ñ<Ð<r<   Nc                 óV  — dg}|€| j         }| j        t          | j        ¦  «        k     rg| j        | j                 |v rnR|                     | j        | j                 ¦  «         | xj        dz  c_        | j        t          | j        ¦  «        k     °gt
                               |¦  «        S )a  Parse an RFC 2822 atom.

        Optional atomends specifies a different set of end token delimiters
        (the default is to use self.atomends).  This is used e.g. in
        getphraselist() since phrase endings must not include the `.' (which
        is legal in phrases).r   Nr?   )r‚   r~   rS   r„   rU   rŒ   r�   )r‡   r‚   Úatomlists      r;   r®   zAddrlistClass.getatomÕ  s›   € ð �4ˆØÐØ”}ˆHàŒh�˜TœZ™œÒ(Ð(ØŒz˜$œ(Ô# xÐ/Ð/Øà—’ ¤
¨4¬8Ô 4Ñ5Ô5Ð5ØˆHŒH˜‰MˆHŒHð Œh�˜TœZ™œÒ(Ð(õ ×Ò Ñ)Ô)Ð)r<   c                 óf  — g }| j         t          | j        ¦  «        k     �r| j        | j                  | j        v r| xj         dz  c_         nÈ| j        | j                  dk    r(|                     |                      ¦   «         ¦  «         nŠ| j        | j                  dk    r-| j                             |                      ¦   «         ¦  «         nG| j        | j                  | j        v rnK|                     |  	                    | j        ¦  «        ¦  «         | j         t          | j        ¦  «        k     �°|S )zýParse a sequence of RFC 2822 phrases.

        A phrase is a sequence of words, which are in turn either RFC 2822
        atoms or quoted-strings.  Phrases are canonicalized by squeezing all
        runs of continuous whitespace into one space.
        r?   rw   rŠ   )
r~   rS   r„   r�   rU   r­   r…   r‹   rƒ   r®   )r‡   rŸ   s     r;   r™   zAddrlistClass.getphraselisté  s  € ð ˆàŒh�˜TœZ™œÒ(Ñ(ØŒz˜$œ(Ô# t¤xÐ/Ð/Ø�”˜A‘�”�Ø”˜DœHÔ%¨Ò,Ð,Ø—’˜TŸ]š]™_œ_Ñ-Ô-Ð-Ð-Ø”˜DœHÔ%¨Ò,Ð,ØÔ ×'Ò'¨¯ªÑ(9Ô(9Ñ:Ô:Ð:Ð:Ø”˜DœHÔ%¨¬Ð8Ð8Øà—’˜TŸ\š\¨$¬/Ñ:Ô:Ñ;Ô;Ð;ð Œh�˜TœZ™œÒ(Ñ(ð ˆr<   )T©N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rˆ   r�   r”   r‘   rœ   r›   r§   r¼   r­   r‹   rµ   r®   r™   © r<   r;   r{   r{   Ó   sï   € € € € € ðð ðð ð ð&(ð (ð (ðð ð ð9ð 9ð 9ðvð ð ð@$1ð $1ð $1ðL(ð (ð (ð.#'ð #'ð #'ð #'ðJ4ð 4ð 4ð3ð 3ð 3ð=ð =ð =ð*ð *ð *ð *ð(ð ð ð ð r<   r{   c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚAddressListz@An AddressList encapsulates a list of parsed RFC 2822 addresses.c                 ó„   — t                                | |¦  «         |r|                      ¦   «         | _        d S g | _        d S rÅ   )r{   rˆ   r”   Úaddresslistr†   s     r;   rˆ   zAddressList.__init__  sH   € Ý×Ò˜t UÑ+Ô+Ð+Øð 	"Ø#×/Ò/Ñ1Ô1ˆDÔÐÐà!ˆDÔÐÐr<   c                 ó*   — t          | j        ¦  «        S rÅ   )rS   rÎ   r¿   s    r;   Ú__len__zAddressList.__len__	  s   € Ý�4Ô#Ñ$Ô$Ð$r<   c                 ó¦   — t          d ¦  «        }| j        d d …         |_        |j        D ]%}|| j        vr|j                             |¦  «         Œ&|S rÅ   ©rÌ   rÎ   rU   ©r‡   ÚotherÚnewaddrÚxs       r;   Ú__add__zAddressList.__add__  s`   € å˜dÑ#Ô#ˆØ"Ô.¨q¨q¨qÔ1ˆÔØÔ"ð 	.ð 	.ˆAØ˜Ô(Ð(Ð(ØÔ#×*Ò*¨1Ñ-Ô-Ð-øØˆr<   c                 ó`   — |j         D ]%}|| j         vr| j                              |¦  «         Œ&| S rÅ   )rÎ   rU   ©r‡   rÔ   rÖ   s      r;   Ú__iadd__zAddressList.__iadd__  s?   € àÔ"ð 	+ð 	+ˆAØ˜Ô(Ð(Ð(ØÔ ×'Ò'¨Ñ*Ô*Ð*øØˆr<   c                 ó~   — t          d ¦  «        }| j        D ]%}||j        vr|j                             |¦  «         Œ&|S rÅ   rÒ   rÓ   s       r;   Ú__sub__zAddressList.__sub__  sL   € å˜dÑ#Ô#ˆØÔ!ð 	.ð 	.ˆAØ˜Ô)Ð)Ð)ØÔ#×*Ò*¨1Ñ-Ô-Ð-øØˆr<   c                 ó`   — |j         D ]%}|| j         v r| j                              |¦  «         Œ&| S rÅ   )rÎ   ÚremoverÙ   s      r;   Ú__isub__zAddressList.__isub__$  s?   € àÔ"ð 	+ð 	+ˆAØ�DÔ$Ð$Ð$ØÔ ×'Ò'¨Ñ*Ô*Ð*øØˆr<   c                 ó   — | j         |         S rÅ   )rÎ   )r‡   rW   s     r;   Ú__getitem__zAddressList.__getitem__+  s   € àÔ Ô&Ð&r<   N)rÆ   rÇ   rÈ   rÉ   rˆ   rÐ   r×   rÚ   rÜ   rß   rá   rÊ   r<   r;   rÌ   rÌ      sƒ   € € € € € ØJÐJð"ð "ð "ð%ð %ð %ðð ð ðð ð ðð ð ðð ð ð'ð 'ð 'ð 'ð 'r<   rÌ   )rÉ   Ú__all__rq   rs   rš   rŒ   Ú
COMMASPACErV   rQ   r\   r   r7   r   r   r   r{   rÌ   rÊ   r<   r;   ú<module>rä      sN  ððð ð
ð ð €ð Ð Ð Ð Ð Ð Ð Ð à€Ø€Ø€
ðIð Ið I€ð
 >Ð=Ð=€	ð ˜A Q¨AØ $Ø $Ø $Ø $Ø $ðð €
ð
ð 
ð 
ðz;ð z;ð z;ðzð ð ðð ð ð9ð 9ð 9ðkð kð kð kð kñ kô kð kðZ	-'ð -'ð -'ð -'ð -'�-ñ -'ô -'ð -'ð -'ð -'r<   