o
     JAfE                     @   s   	 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d Z	dd Z
dd Zdd Zdd ZG dd dZG dd deZdS ))	mktime_tz	parsedateparsedate_tzquote    N  z, )ZjanZfebZmarZaprmayZjunZjulZaugsepoctZnovZdecZjanuaryZfebruaryZmarchZaprilr   ZjuneZjulyZaugustZ	septemberZoctoberZnovemberZdecember)ZmonZtueZwedZthuZfriZsatZsunipiiiiDi)ZUTZUTCZGMTZZASTZADTZESTZEDTZCSTZCDTZMSTZMDTZPSTZPDTc                 C   s.   	 t | }|s	d S |d d u rd|d< t|S )N	   r   )_parsedate_tztuple)datares r   '/usr/lib/python3.10/email/_parseaddr.pyr   -   s   r   c              
   C   s  	 | sd S |   } | sd S | d ds| d  tv r | d= n| d d}|dkr7| d |d d  | d< t| dkrR| d  d}t|dkrR|| dd   } t| dkr| d }|d}|dkrj|d}|dkr|d | ||d  g| dd < n| d	 t| d
k rd S | d d
 } | \}}}}}|r|r|sd S | }|tvr|| }}|tvrd S t	|d }|dkr|d8 }|d dkr|d d }|d}|dkr||}}|d dkr|d d }|sd S |d 
 s||}}|d dkr|d d }| d}t|dkr|\}	}
d}nAt|dkr'|\}	}
}n4t|dkrYd|d v rY|d  d}t|dkrJ|\}	}
d}nt|dkrW|\}	}
}nd S d S zt|}t|}t|	}	t|
}
t|}W n ty|   Y d S w |dk r|dkr|d7 }n|d7 }d }| }|tv rt| }nzt|}W n
 ty   Y nw |dkr|drd }|r|dk rd}| }nd}||d d |d d   }||||	|
|ddd|g
S )Nr   ,      -   +r         :   0.d   D   il  i  i  <   )splitendswithlower	_daynamesrfindlenfindappend_monthnamesindexisdigitint
ValueErrorupper
_timezones
startswith)r   istuffsddZmmZyyZtmZtzZthhZtmmZtssZtzoffsetZtzsignr   r   r   r   9   s   	

"










r   c                 C   s$   	 t | }t|tr|d d S |S )Nr   )r   
isinstancer   r   tr   r   r   r      s
   
r   c                 C   s:   	 | d d u rt | d d d S t| }|| d  S )Nr      )r   )timemktimecalendarZtimegmr8   r   r   r   r      s
   
r   c                 C   s   	 |  dd ddS )N\z\\"z\")replace)strr   r   r   r      s   r   c                   @   sz   e Zd Z	 dd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dddZ
dd Zdd Zdd ZdddZdd ZdS )AddrlistClassc                 C   s\   	 d| _ d| _d| _d| _| j| j | _| j | j | j | _| jdd| _|| _g | _	d S )Nz()<>@,:;."[]r   z 	z
r   r   )
specialsposLWSZCRFWSatomendsr@   
phraseendsfieldcommentlistselfrI   r   r   r   __init__   s   
zAddrlistClass.__init__c                 C   s   	 g }| j t| jk rI| j| j  | jd v r/| j| j  dvr'|| j| j   |  j d7  _ n| j| j  dkr@| j|   nn| j t| jk st|S )Nz
r   ()	rD   r(   rI   rE   r*   rJ   
getcommentEMPTYSTRINGjoin)rL   Zwslistr   r   r   gotonext   s   
	zAddrlistClass.gotonextc                 C   sJ   	 g }| j t| jk r#|  }|r||7 }n|d | j t| jk s|S )N)r   r   )rD   r(   rI   
getaddressr*   )rL   resultZadr   r   r   getaddrlist   s   

zAddrlistClass.getaddrlistc                 C   s  	 g | _ |   | j}| j }|  }|   g }| jt| jkr.|r-t| j |d fg}n| j| j dv rJ|| _|| _ |  }t| j |fg}n| j| j dkrg }t| j}|  jd7  _| jt| jk r|   | j|k r| j| j dkr|  jd7  _n|| 	  }| jt| jk shnI| j| j dkr| 
 }| j rt|d d| j  d	 |fg}n't||fg}n|rt| j |d fg}n| j| j | jv r|  jd7  _|   | jt| jk r| j| j d
kr|  jd7  _|S )Nr   z.@r   r   ;<z (r   )r   )rJ   rR   rD   getphraselistr(   rI   SPACErQ   getaddrspecrS   getrouteaddrrC   )rL   ZoldposZoldclplistZ
returnlistZaddrspecZfieldlenZ	routeaddrr   r   r   rS     s`   

 zAddrlistClass.getaddressc                 C   s   	 | j | j dkrd S d}|  jd7  _|   d}| jt| j k ry|r+|   d}nB| j | j dkr=|  jd7  _	 |S | j | j dkrO|  jd7  _d}n| j | j dkr_|  jd7  _n|  }|  jd7  _	 |S |   | jt| j k s"|S )	NrW   Fr   r   >@Tr   )rI   rD   rR   r(   	getdomainr[   )rL   ZexpectrouteZadlistr   r   r   r\   G  s6   zAddrlistClass.getrouteaddrc                 C   s\  	 g }|    | jt| jk rzd}| j| j dkr4|r%|d  s%|  |d |  jd7  _d}n1| j| j dkrH|dt|    n| j| j | j	v r^|r]|d  s]|  n|| 
  |   }|rr|rr|| | jt| jk s| jt| jks| j| j dkrt|S |d |  jd7  _|    |  }|stS t|| S )	NTr   r   r   Fr?   z"%s"r_   )rR   rD   r(   rI   strippopr*   r   getquoterG   getatomrP   rQ   r`   )rL   ZaslistZpreserve_wswsdomainr   r   r   r[   g  s>   

 

zAddrlistClass.getaddrspecc                 C   s   	 g }| j t| jk ru| j| j  | jv r|  j d7  _ nQ| j| j  dkr-| j|   n@| j| j  dkr=||   n0| j| j  dkrR|  j d7  _ |d n| j| j  dkr\tS | j| j  | j	v rfn|| 
  | j t| jk st|S )Nr   rN   [r   r_   )rD   r(   rI   rE   rJ   r*   rO   getdomainliteralrP   rG   rd   rQ   )rL   Zsdlistr   r   r   r`     s&   
zAddrlistClass.getdomainTc                 C   s   	 | j | j |krdS dg}d}|  jd7  _| jt| j k rr|r-|| j | j  d}n6| j | j |v r=|  jd7  _n5|rO| j | j dkrO||   q| j | j dkrZd}n	|| j | j  |  jd7  _| jt| j k st|S )Nr   Fr   rN   r>   T)rI   rD   r(   r*   rO   rP   rQ   )rL   Z	begincharZendcharsZallowcommentsZslistr   r   r   r   getdelimited  s,   
zAddrlistClass.getdelimitedc                 C      	 |  dddS )Nr?   z"Fri   rL   r   r   r   rc        zAddrlistClass.getquotec                 C   rj   )NrN   z)Trk   rl   r   r   r   rO     rm   zAddrlistClass.getcommentc                 C   s   	 d|  ddd S )Nz[%s]rg   z]Frk   rl   r   r   r   rh     s   zAddrlistClass.getdomainliteralNc                 C   sr   	 dg}|d u r| j }| jt| jk r4| j| j |v rn|| j| j  |  jd7  _| jt| jk st|S )Nr   r   )rG   rD   r(   rI   r*   rP   rQ   )rL   rG   Zatomlistr   r   r   rd     s   
zAddrlistClass.getatomc                 C   s   	 g }| j t| jk rZ| j| j  | jv r|  j d7  _ n6| j| j  dkr,||   n&| j| j  dkr=| j|   n| j| j  | jv rI	 |S || 	| j | j t| jk s|S )Nr   r?   rN   )
rD   r(   rI   rF   r*   rc   rJ   rO   rH   rd   )rL   r]   r   r   r   rY     s   zAddrlistClass.getphraselist)TN)__name__
__module____qualname__rM   rR   rU   rS   r\   r[   r`   ri   rc   rO   rh   rd   rY   r   r   r   r   rB      s    	; &
%
rB   c                   @   sF   e Zd Z	 dd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )AddressListc                 C   s(   t | | |r|  | _d S g | _d S rn   )rB   rM   rU   addresslistrK   r   r   r   rM     s   
zAddressList.__init__c                 C   s
   t | jS rn   )r(   rs   rl   r   r   r   __len__	  s   
zAddressList.__len__c                 C   s>   t d }| jd d  |_|jD ]}|| jvr|j| q|S rn   rr   rs   r*   rL   otherZnewaddrxr   r   r   __add__  s   

zAddressList.__add__c                 C   s&   |j D ]}|| j vr| j | q| S rn   )rs   r*   rL   rw   rx   r   r   r   __iadd__  
   

zAddressList.__iadd__c                 C   s.   t d }| jD ]}||jvr|j| q|S rn   ru   rv   r   r   r   __sub__  s   

zAddressList.__sub__c                 C   s&   |j D ]}|| j v r| j | q| S rn   )rs   removerz   r   r   r   __isub__$  r|   zAddressList.__isub__c                 C   s
   | j | S rn   )rs   )rL   r,   r   r   r   __getitem__+  s   
zAddressList.__getitem__N)
ro   rp   rq   rM   rt   ry   r{   r}   r   r   r   r   r   r   rr      s    	rr   )__all__r;   r=   rZ   rP   Z
COMMASPACEr+   r&   r1   r   r   r   r   r   rB   rr   r   r   r   r   <module>   s0   	}	

  /