
    0iR                        	 d dgZ ddlZddlZddlZddlmZmZ ddlmZ ddlm	Z	 ddl
mZmZ ddlmZ dd	lmZ ej        Zd
Z ej        d          Zd ZddZd Zd Zd Z G d d           Z G d de          Z G d de          ZdS )MessageEmailMessage    N)BytesIOStringIO)utils)errors)Policycompat32charset)decode_bz; z[ \(\)<>@,;:\\"/\[\]\?=]c                     t          |                               d          \  }}}|s|                                d fS |                                |                                fS )N;)str	partitionstrip)paramasepbs       &/usr/lib64/python3.11/email/message.py_splitparamr      sX    
 E

$$S))IAsA wwyy$7799aggii    Tc                    	 |t          |          dk    rt          |t                    r4| dz  } t          j        |d         |d         |d                   }| d|S 	 |                    d           n2# t          $ r% | dz  } t          j        |dd          }| d|cY S w xY w|st                              |          r| d	t          j	        |          d
S | d|S | S )Nr   *      =asciizutf-8 z="")
len
isinstancetupler   encode_rfc2231encodeUnicodeEncodeError	tspecialssearchquote)r   valuer*   s      r   _formatparamr,   '   s(    SZZ!^^ eU## 	0SLE(q58U1XFFE#eeUU++0W%%%%% 0 0 0,UGR@@"'%%////0  	,I$$U++ 	, %u{5'9'9'9'9::#eeUU++s   !A7 7,B&%B&c                    dt          |           z   } g }d}|                     d|          |k    rT|dz  }|                     d|          }|d}}|dk    r]||                     d||          |                     d||          z
  z  }|dz  dk    rn!||                     d|dz             }}|dk    ]|dk     rt          |           }|                     d||          }|dk    r| ||         }nQ| ||                                                                         dz   | |dz   |                                         z   }|                    |                                           |}|                     d|          |k    T|S )	Nr   r   r   r!   z\"r   r   )	r   findcountr"   rstriplowerlstripappendr   )spliststartendinddiffifs           r   _parseparamr=   I   s   c!ffAEE
&&e


%
%
ffS%  1TAggAGGCc**QWWUC-E-EEEDax1}}AFF3a00C	 Agg
 77a&&CFF3s##77%)AA%'
!!##))++c1Aac#gJ4E4E4G4GGAQWWYY# &&e


%
%$ Lr   c                     t          | t                    r)| d         | d         t          j        | d                   fS t          j        |           S )Nr   r   r   )r#   r$   r   unquote)r+   s    r   _unquotevaluer@   c   sI    
 % $Qxq5=q#:#:::}U###r   c                    	 g }t          |                                           }|D ]g}|                    d          rP|                    d                              d          \  }}}	 t          |d            n # t          $ r Y cw xY wht          d          |D ]}|st          d          |                    d          dk    r nt	 t          j	        |          }nH# t          j
        $ r6 |d	         d
z
  dz  dz  dz   dz  }t          j	        |d |                   }Y nw xY w|                    |           d                    |          S )Ns   begin        )basez`begin` line not foundzTruncated inputs    	
s   endr       ?            r   )iter
splitlines
startswithremoveprefixr   int
ValueErrorr   binasciia2b_uuErrorr4   join)	encodeddecoded_linesencoded_lines_iterlinemode_pathdecoded_linenbytess	            r   
_decode_uur]   n   s    Mg002233" 
3 
3??9%% 	 --i88BB4HHMD!TDq!!!!     		 1222" + + 	.///ZZ%%//E	:#?400LL~ 	: 	: 	:Q
b(A-1a7F#?4=99LLL	: 	\****88M"""s%   +A>>
B
BC$$AD)(D)c                   T   e Zd Z	 efdZd Zd6dZd Zd7dZd	 Z	d
 Z
d Zd Zd8dZd9dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd9dZd Zd Zd9dZd Zd Zd  Z d! Z!d" Z"d# Z#d$ Z$d% Z%d:d(Z&	 	 d:d)Z'	 	 d;d,Z(d<d-Z)d=d.Z*d9d/Z+d9d0Z,d1 Z-d9d2Z.d9d3Z/d4 Z0dd5l1m2Z2 dS )>r   c                     || _         g | _        d | _        d | _        d | _        d x| _        | _        g | _        d| _        d S )N
text/plain)	policy_headers	_unixfrom_payload_charsetpreambleepiloguedefects_default_type)selfra   s     r   __init__zMessage.__init__   sH    (,,)r   c                 ,    	 |                                  S N)	as_stringrj   s    r   __str__zMessage.__str__   s    	~~r   Fr   Nc                     	 ddl m} || j        n|}t                      } ||d||          }|                    | |           |                                S )Nr   )	GeneratorF)mangle_from_maxheaderlenra   unixfrom)email.generatorrr   ra   r   flattengetvalue)rj   rv   rt   ra   rr   fpgs          r   rn   zMessage.as_string   sz    	 	.----- &FZZIb#(#/#% % % 	
		$	***{{}}r   c                 ,    	 |                                  S rm   )as_bytesro   s    r   	__bytes__zMessage.__bytes__   s    	}}r   c                     	 ddl m} || j        n|}t                      } ||d|          }|                    | |           |                                S )Nr   )BytesGeneratorF)rs   ra   ru   )rw   r   ra   r   rx   ry   )rj   rv   ra   r   rz   r{   s         r   r}   zMessage.as_bytes   sm    	 	322222 &FYYN2E&AAA			$	***{{}}r   c                 8    	 t          | j        t                    S rm   )r#   rd   listro   s    r   is_multipartzMessage.is_multipart   s    D$-...r   c                     || _         d S rm   rc   )rj   rv   s     r   set_unixfromzMessage.set_unixfrom   s    !r   c                     | j         S rm   r   ro   s    r   get_unixfromzMessage.get_unixfrom   s
    ~r   c                     	 | j         
|g| _         d S 	 | j                             |           d S # t          $ r t          d          w xY w)Nz=Attach is not valid on a message with a non-multipart payload)rd   r4   AttributeError	TypeError)rj   payloads     r   attachzMessage.attach   sq    	 = $IDMMM:$$W-----! : : : !9 : : ::s	   0 A
c                    	 |                                  r|rd S || j        S | j        |         S |>t          | j        t                    s$t	          dt          | j                  z            | j        }t          |                     dd                                                    }|st          |t                    rt          j
        |          rz	 |                    dd          }	 |                    |                     dd          d          }n&# t          $ r |                    dd          }Y nw xY wn# t          $ r Y nw xY w|S t          |t                    r=	 |                    dd          }n%# t          $ r |                    d          }Y nw xY w|d	k    rt!          j        |          S |d
k    rYt%          d                    |                                                    \  }}|D ]}| j                            | |           |S |dv r"	 t/          |          S # t0          $ r |cY S w xY wt          |t                    r|S |S )NzExpected list, got %szcontent-transfer-encodingr    r   surrogateescaper   replaceraw-unicode-escapezquoted-printablebase64r   )z
x-uuencodeuuencodeuuezx-uue)r   rd   r#   r   r   typer   getr2   r   _has_surrogatesr&   decode	get_paramLookupErrorr'   quopridecodestringr   rS   rK   ra   handle_defectr]   rO   )	rj   r;   r   r   ctebpayloadr+   rh   defects	            r   get_payloadzMessage.get_payload   s   	B  	( ty}$}Q'' =DM4!@!@=3d4=6I6IIJJJ-$((6;;<<BBDD 
	'3'' E,A',J,J &~~g7HIIHF"*//$..G2T2TV_"`"`& F F F"*//'9"E"EF)   DNgs## 	@@">>'3DEE% @ @ @
 #>>*>??@ $$$&x000H__ &chhx/B/B/D/D&E&EFFNE7! 8 8))$7777L>>> !(+++        gs## 	OsZ   E /*D E  D=:E <D==E 
EE)F   F"!F"#H2 2I Ic                 T   	 t          |d          rJ|	|| _        d S t          |t                    st          |          }|                    |j        d          }t          |d          r|                    dd          | _        n|| _        ||                     |           d S d S )Nr&   r   r   r   )hasattrrd   r#   Charsetr&   output_charsetr   set_charset)rj   r   r   s      r   set_payloadzMessage.set_payloadQ  s    	
 7H%% 	P 'gw// +!'**nnW%;=NOOG7H%% 	$#NN74EFFDMM#DMW%%%%% r   c                 R   	 ||                      d           d | _        d S t          |t                    st          |          }|| _        d| vr|                     dd           d| vr+|                     dd|                                           n(|                     d|                                           ||                                k    r|                    | j                  | _        d| vr|	                                }	  ||            d S # t          $ r | j        }|rB	 |                    dd	          }n*# t          $ r |                    |j                  }Y nw xY w|                    |          | _        |                     d|           Y d S w xY wd S )
Nr   MIME-Version1.0Content-Typer`   r   zContent-Transfer-Encodingr   r   )	del_paramre   r#   r   
add_headerget_output_charset	set_parambody_encoderd   get_body_encodingr   r&   UnicodeErrorr   )rj   r   r   r   s       r   r   zMessage.set_charsete  s   	 ?NN9%%% DMF'7++ 	'g&&G%%OONE222%%OONL$+$>$>$@$@  B B B B NN9g&@&@&B&BCCCg002222#//>>DM&d22++--CBD					 B B B - II")..:K"L"L' I I I")..1G"H"HI ' 3 3G < < ;SAAAAAAB	 32s6   D F$/EF$$E-*F$,E--3F$#F$c                     	 | j         S rm   )re   ro   s    r   get_charsetzMessage.get_charset  s    	}r   c                 ,    	 t          | j                  S rm   )r"   rb   ro   s    r   __len__zMessage.__len__  s    G4=!!!r   c                 .    	 |                      |          S rm   )r   rj   names     r   __getitem__zMessage.__getitem__  s    	 xx~~r   c                 x   	 | j                             |          }|ri|                                }d}| j        D ]K\  }}|                                |k    r.|dz  }||k    r#t	          d                    ||                    L| j                            | j                             ||                     d S )Nr   r   z/There may be at most {} {} headers in a message)ra   header_max_countr2   rb   rO   formatr4   header_store_parse)rj   r   val	max_countlnamefoundkvs           r   __setitem__zMessage.__setitem__  s    	
 K0066	 	QJJLLEE Q Q17799%%QJE	))( *88>y$8O8OQ Q QT[;;D#FFGGGGGr   c                     	 |                                 }g }| j        D ]4\  }}|                                 |k    r|                    ||f           5|| _        d S rm   )r2   rb   r4   )rj   r   
newheadersr   r   s        r   __delitem__zMessage.__delitem__  sg    	 zz||
M 	* 	*DAqwwyyD  !!1a&)))"r   c                 L    |                                 d | j        D             v S )Nc                 <    g | ]\  }}|                                 S  )r2   .0r   r   s      r   
<listcomp>z(Message.__contains__.<locals>.<listcomp>  s$    DDDda		DDDr   )r2   rb   r   s     r   __contains__zMessage.__contains__  s&    zz||DDdmDDDDDr   c              #   ,   K   | j         D ]	\  }}|V  
d S rm   rb   )rj   fieldr+   s      r   __iter__zMessage.__iter__  s0       M 	 	LE5KKKK	 	r   c                 &    	 d | j         D             S )Nc                     g | ]\  }}|S r   r   r   s      r   r   z Message.keys.<locals>.<listcomp>  s    ,,,da,,,r   r   ro   s    r   keyszMessage.keys  s    	 -,dm,,,,r   c                 ,     	  fd j         D             S )Nc                 L    g | ] \  }}j                             ||          !S r   ra   header_fetch_parser   r   r   rj   s      r   r   z"Message.values.<locals>.<listcomp>  s?     + + +Aq ..q!44 + + +r   r   ro   s   `r   valueszMessage.values  5    	+ + + + M+ + + 	+r   c                 ,     	  fd j         D             S )Nc                 P    g | ]"\  }}|j                             ||          f#S r   r   r   s      r   r   z!Message.items.<locals>.<listcomp>  sD     + + +Aq DK221a889 + + +r   r   ro   s   `r   itemszMessage.items  r   r   c                     	 |                                 }| j        D ]:\  }}|                                 |k    r| j                            ||          c S ;|S rm   )r2   rb   ra   r   )rj   r   failobjr   r   s        r   r   zMessage.get  sf    	
 zz||M 	< 	<DAqwwyyD  {55a;;;;; !r   c                 @    	 | j                             ||f           d S rm   )rb   r4   )rj   r   r+   s      r   set_rawzMessage.set_raw  s)    	 	dE]+++++r   c                 P    	 t          | j                                                  S rm   )rJ   rb   copyro   s    r   	raw_itemszMessage.raw_items  s%    	 DM&&(()))r   c                     	 g }|                                 }| j        D ]K\  }}|                                 |k    r.|                    | j                            ||                     L|s|S |S rm   )r2   rb   r4   ra   r   )rj   r   r   r   r   r   s         r   get_allzMessage.get_all  s|    	 zz||M 	D 	DDAqwwyyD  dk<<QBBCCC 	Nr   c           	      p   	 g }|                                 D ]h\  }}|*|                    |                    dd                     1|                    t          |                    dd          |                     i||                    d|           t
                              |          | |<   d S )NrY   -r   )r   r4   r   r,   insert	SEMISPACErS   )rj   _name_value_paramspartsr   r   s          r   r   zMessage.add_header%  s    	& MMOO 	C 	CDAqyQYYsC001111\!))C*=*=qAABBBBLLF###nnU++Ur   c                 @   	 |                                 }t          t          t          | j                            | j                  D ]F\  }\  }}|                                 |k    r&| j                            ||          | j        |<    d S Gt          |          rm   )r2   zipranger"   rb   ra   r   KeyError)rj   r   r   r;   r   r   s         r   replace_headerzMessage.replace_headerC  s    	 U3t}#5#566FF 	" 	"IAv1wwyyE!!#';#A#A!V#L#La  " 5//!r   c                    	 t                      }|                     d|          }||u r|                                 S t          |          d                                         }|                    d          dk    rdS |S )Ncontent-typer   /r   r`   )objectr   get_default_typer   r2   r0   )rj   missingr+   ctypes       r   get_content_typezMessage.get_content_typeV  s    	 ((11G((***E""1%++--;;sq  <r   c                 b    	 |                                  }|                    d          d         S )Nr   r   r   splitrj   r   s     r   get_content_maintypezMessage.get_content_maintypen  1    	
 %%''{{3""r   c                 b    	 |                                  }|                    d          d         S )Nr   r   r   r  s     r   get_content_subtypezMessage.get_content_subtypew  r  r   c                     	 | j         S rm   ri   ro   s    r   r   zMessage.get_default_type  s    	 !!r   c                     	 || _         d S rm   r  r  s     r   set_default_typezMessage.set_default_type  s    	 #r   c                    t                      }|                     ||          }||u r|S g }t          |          D ]}	 |                    dd          \  }}|                                }|                                }n&# t
          $ r |                                }d}Y nw xY w|                    ||f           t          j        |          }|S )Nr   r   r    )	r   r   r=   r  r   rO   r4   r   decode_params)	rj   r   headerr   r+   paramspr   r   s	            r   _get_params_preservezMessage._get_params_preserve  s     (())GNU## 		' 		'AGGCOO	czz||iikk   wwyy MM4+&&&&$V,,s   AB B$#B$r   Tc                 x    	 t                      }|                     ||          }||u r|S |rd |D             S |S )Nc                 6    g | ]\  }}|t          |          fS r   )r@   r   s      r   r   z&Message.get_params.<locals>.<listcomp>  s)    ===daQa(()===r   )r   r  )rj   r   r  r?   r   r  s         r   
get_paramszMessage.get_params  sX    	 ((**7F;;WN 	==f====Mr   c                     	 || vr|S |                      ||          D ]F\  }}|                                |                                k    r|rt          |          c S |c S G|S rm   )r  r2   r@   )rj   r   r   r  r?   r   r   s          r   r   zMessage.get_param  s    	, N--gv>> 	 	DAqwwyyEKKMM)) (+++++HHH	 *
 r   r   r    c                    	 t          |t                    s|r|||f}|| vr|                                dk    rd}n|                     |          }|                     ||          s@|st          |||          }nt                              |t          |||          g          }nd}|                     ||          D ]u\  }	}
d}|	                                |                                k    rt          |||          }nt          |	|
|          }|s|}Yt                              ||g          }v||                     |          k    r$|r| 	                    ||           d S | |= || |<   d S d S )Nr   r`   )r  r    r  r?   )
r#   r$   r2   r   r   r,   r   rS   r  r   )rj   r   r+   r  requoter   languager   r   	old_param	old_valueappend_params               r   r   zMessage.set_param  s   	  %'' 	/G 	/h.E&,,..N"B"B EEHHV$$E~~eF~33 	B B$UE7;;!Lw??@B B E(,v@G )8 )I )I 
B 
B$	9!??$$55#/ug#F#FLL#/	9g#N#NL B(EE%NNE<+@AAEEDHHV$$$$ %##FE22222L$V %$r   c           	      j   	 || vrd S d}|                      ||          D ]n\  }}|                                |                                k    r?|st          |||          }Ct                              |t          |||          g          }o||                     |          k    r
| |= || |<   d S d S )Nr    r  )r  r2   r,   r   rS   r   )rj   r   r  r  	new_ctyper  r   s          r   r   zMessage.del_param  s    	 F	OO67OCC 	N 	NDAqwwyyEKKMM))  N ,Q7 ; ;II )	0<Q70K0K0M !N !NI((((V$DLLL )(r   c                 ,   	 |                     d          dk    st          |                                dk    r| d= d| d<   || vr|| |<   d S |                     ||          }| |= || |<   |dd          D ]\  }}|                     ||||           d S )Nr   r   r   zmime-versionr   r   r  )r0   rO   r2   r  r   )rj   r   r  r  r  r  r   s          r   set_typezMessage.set_type(  s    	 zz#!##<<>>^++^$#(D DLF@@LV122J 	2 	2DAqNN1a1111	2 	2r   c                     	 t                      }|                     d|d          }||u r|                     d|d          }||u r|S t          j        |                                          S )Nfilenamecontent-dispositionr   r   )r   r   r   collapse_rfc2231_valuer   )rj   r   r   r!  s       r   get_filenamezMessage.get_filenameH  su    	 ((>>*g7LMMw~~fg~FFHwN+H55;;===r   c                     	 t                      }|                     d|          }||u r|S t          j        |                                          S )Nboundary)r   r   r   r#  r1   )rj   r   r   r&  s       r   get_boundaryzMessage.get_boundaryX  sR    	
 ((>>*g66wN+H55<<>>>r   c                    	 t                      }|                     |d          }||u rt          j        d          g }d}|D ]Q\  }}|                                dk    r|                    dd|z  f           d}:|                    ||f           R|s|                    dd|z  f           g }| j        D ]\  }	}
|	                                dk    rg }|D ];\  }}
|
dk    r|                    |           !|                    |d|
           <t                              |          }|                    | j	        
                    |	|                     |                    |	|
f           || _        d S )	Nr   zNo Content-Type header foundFr&  z"%s"Tr    r   )r   r  r   HeaderParseErrorr2   r4   rb   r   rS   ra   r   )rj   r&  r   r  	newparamsfoundppkpvr   hr   r   r   r   s                 r   set_boundaryzMessage.set_boundarye  s   	 ((**7NCCW )*HIII	 	+ 	+FBxxzzZ''  *fx.?!@AAA  "b**** 	> j&8*;<===
M 	* 	*DAqwwyyN**% 7 7DAqBwwQ11%56666nnU++!!$+"@"@C"H"HIIII !!1a&))))"r   c                    	 t                      }|                     d|          }||u r|S t          |t                    rV|d         pd}	 |d                             d          }t          ||          }n# t          t          f$ r |d         }Y nw xY w	 |                    d           n# t          $ r |cY S w xY w|                                S )Nr   r   zus-asciir   r   )	r   r   r#   r$   r&   r   r   r   r2   )rj   r   r   r   pcharsetr}   s         r   get_content_charsetzMessage.get_content_charset  s    	 ((..G44gNgu%% 
	%qz/ZH% #1:,,-ABBh11. % % %!!*%	NN:&&&& 	 	 	NNN	 }}s$   +A8 8BBB. .B=<B=c                 F    	 fd|                                  D             S )Nc                 :    g | ]}|                               S r   )r2  )r   partr   s     r   r   z(Message.get_charsets.<locals>.<listcomp>  s'    JJJd((11JJJr   walk)rj   r   s    `r   get_charsetszMessage.get_charsets  s-    	 KJJJdiikkJJJJr   c                     	 |                      d          }|d S t          |          d                                         }|S )Nr"  r   )r   r   r2   )rj   r+   c_ds      r   get_content_dispositionzMessage.get_content_disposition  sH    	
 .//=4%  #))++
r   r6  )Fr   N)FN)NFrm   )Nr   T)r   TNr    F)r   T)r   T)3__name__
__module____qualname__r
   rk   rp   rn   r~   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r
  r  r  r   r   r   r  r$  r'  r/  r2  r8  r;  email.iteratorsr7  r   r   r   r   r      sK        ' 
* 
* 
* 
*     
   0  
   / / /" " "  : : : V V V Vp& & & &(-B -B -B^  " " "	 	 	H H H$
# 
# 
#E E E  - - -	+ 	+ 	+	+ 	+ 	+
 
 
 
", , ,* * *   $, , ,<" " "&  0# # ## # #" " "# # #  *   , 5C       D FJ5:1% 1% 1% 1%f% % % %,2 2 2 2@> > > > ? ? ? ?,# ,# ,#\   <K K K K$
 
 
 %$$$$$$$r   c                        e Zd Zd fd	Zd fd	Zd Zd Zd Zdd	Zh d
Z	d Z
d ZdddZdddZd ZddZddZddZdddZd Zd Zd Zd Zd Z xZS )MIMEPartNc                 ^    |ddl m} |}t                                          |           d S )Nr   )default)email.policyrC  superrk   )rj   ra   rC  	__class__s      r   rk   zMIMEPart.__init__  s=    >,,,,,,F     r   Fc                 t    	 || j         n|}||j        }t                                          |||          S rm   )ra   max_line_lengthrE  rn   )rj   rv   rt   ra   rF  s       r   rn   zMIMEPart.as_string  sC    		 !'F!1Lww  <@@@r   c                 `    |                      | j                            d                    S )NT)utf8ra   )rn   ra   clonero   s    r   rp   zMIMEPart.__str__  s)    ~~T[%6%6D%6%A%A~BBBr   c                 J    |                      d          }|dn
|j        dk    S )Nr"  F
attachment)r   content_disposition)rj   r:  s     r   is_attachmentzMIMEPart.is_attachment  s*    hh,--uu)@L)PPr   c              #     K   |                                 rd S |                                                    d          \  }}|dk    r||v r|                    |          |fV  d S |dk    s|                                 sd S |dk    r5|                                D ]}|                     ||          E d {V  d S d|v r|                    d          |fV  d }|                    d          }|r'|                                D ]}|d         |k    r|} n| |                                }|r|d         nd }||                     ||          E d {V  d S d S )Nr   text	multipartrelatedr7   
content-idr   )	rP  r   r  indexr   
iter_parts
_find_bodyr   r   )	rj   r5  preferencelistmaintypesubtypesubpart	candidater7   subpartss	            r   rX  zMIMEPart._find_body  s      	F 113399#>>'v.((%++G44d;;;;F{""$*;*;*=*="Fi??,, D D??7NCCCCCCCCCCF&&!''	22D9999	w'' 	??,,  <(E11 'IE 2 ''))H'/9TI y.AAAAAAAAAAA ! r   rT  htmlplainc                     	 t          |          }d }|                     | |          D ]\  }}||k     r|}|}|dk    r n|S )Nr   )r"   rX  )rj   rY  	best_priobodyprior5  s         r   get_bodyzMIMEPart.get_body  se    	 ''	//$?? 	 	JD$i 	199Er   >   rR  r`  rR  ra  rS  rT  rS  alternativec              #     K   	 |                                                      d          \  }}|dk    s|dk    rd S |                                 }	 |                                }n# t          $ r Y d S w xY w|dk    r|dk    r||                     d          }|rFd}g }|D ]3}|                    d          |k    rd}|                    |           4|r
|E d {V  d S |                    d	           |E d {V  d S g }	|D ]i}|                                                     d          \  }}||f| j	        v r.|
                                s||	vr|	                    |           e|V  jd S )
Nr   rS  rk  rT  r7   FrU  Tr   )r   r  r   r   r   r   r   r4   pop_body_typesrP  )
rj   rZ  r[  r   r   r7   r   attachmentsr5  seens
             r   iter_attachmentszMIMEPart.iter_attachments(  s     		 !113399#>>'{""g&>&>F""$$	LLNNEE 	 	 	FF	 {""w)';'; NN7++E 
 ! 1 1Dxx--66 $#**40000 ********FIIaLLLF  	 	D $ 5 5 7 7 = =c B BHg7#t'777**,, 8181D1DG$$$JJJJ	 	s   A& &
A43A4c              #   l   K   	 |                                  r|                                 E d {V  d S d S rm   )r   r   ro   s    r   rW  zMIMEPart.iter_parts_  sU      	  	*'')))))))))))	* 	*r   )content_managerc                @    || j         j        } |j        | g|R i |S rm   )ra   rs  get_contentrj   rs  argskws       r   ru  zMIMEPart.get_contentg  s5    ""k9O**4=$==="===r   c                D    || j         j        } |j        | g|R i | d S rm   )ra   rs  set_contentrv  s       r   rz  zMIMEPart.set_contentl  s;    ""k9O##D64666266666r   c                 ^   |                                  dk    rA|                                 }||fz   }||v r#t          d                    ||                    g }g }| j        D ][\  }}|                                                    d          r|                    ||f           D|                    ||f           \|r: t          |           | j	                  }	||	_        | j
        |	_
        |	g| _
        ng | _
        || _        d|z   | d<   ||                     d|           d S d S )NrS  zCannot convert {} to {}content-rK  z
multipart/r   r&  )r  r  rO   r   rb   r2   rL   r4   r   ra   rd   r   )
rj   r[  disallowed_subtypesr&  existing_subtypekeep_headerspart_headersr   r+   r5  s
             r   _make_multipartzMIMEPart._make_multipartq  sc   $$&&+55#7799"5
"B#666 !:!A!A$g"/ "/ 0 0 0= 	3 	3KD%zz||&&z22 3##T5M2222##T5M2222 	4::T[111D(DM MDM!FDMMDM$+g5^NN:x00000  r   c                 4    |                      dd|           d S )NrT  )rk  mixedr  rj   r&  s     r   make_relatedzMIMEPart.make_related  s!    Y(@(KKKKKr   c                 4    |                      dd|           d S )Nrk  )r  r  r  s     r   make_alternativezMIMEPart.make_alternative  s     ]JAAAAAr   c                 4    |                      dd|           d S )Nr  r   r  r  s     r   
make_mixedzMIMEPart.make_mixed  s     Wb(33333r   )_dispc                2   |                                  dk    s|                                 |k    r t          | d|z                           t          |           | j                  } |j        |i | |r	d|vr||d<   |                     |           d S )NrS  make_rK  r"  zContent-Disposition)r  r  getattrr   ra   rz  r   )rj   _subtyper  rw  rx  r5  s         r   _add_multipartzMIMEPart._add_multipart  s    %%'';66((**h66-GD'H,--///tDzz---$%"%%% 	0*$66*/D&'Dr   c                 ,     | j         dg|R ddi| d S )NrT  r  inliner  rj   rw  rx  s      r   add_relatedzMIMEPart.add_related  s0    ICCCCHCCCCCCr   c                 (     | j         dg|R i | d S )Nrk  r  r  s      r   add_alternativezMIMEPart.add_alternative  s+    M7D777B77777r   c                 ,     | j         dg|R ddi| d S )Nr  r  rN  r  r  s      r   add_attachmentzMIMEPart.add_attachment  s0    GEdEEE,E"EEEEEr   c                 "    g | _         d | _        d S rm   rb   rd   ro   s    r   clearzMIMEPart.clear  s    r   c                 @    d | j         D             | _         d | _        d S )Nc                 j    g | ]0\  }}|                                                     d           ,||f1S )r|  )r2   rL   )r   nr   s      r   r   z*MIMEPart.clear_content.<locals>.<listcomp>  sQ     B B BDAq !		 4 4Z @ @B!Q B B Br   r  ro   s    r   clear_contentzMIMEPart.clear_content  s3    B BDM B B Br   rm   )FNN)r_  )r<  r=  r>  rk   rn   rp   rP  rX  rf  rn  rq  rW  ru  rz  r  r  r  r  r  r  r  r  r  r  __classcell__rF  s   @r   rA  rA    s       ! ! ! ! ! !A A A A A A C C CQ Q QB B B:   (1 1 1K5 5 5n* * * 26 > > > > >
 26 7 7 7 7 7
1 1 16L L L LB B B B4 4 4 4 59     D D D8 8 8F F F        r   rA  c                        e Zd Z fdZ xZS )r   c                 P     t                      j        |i | d| vrd| d<   d S d S )Nr   r   )rE  rz  )rj   rw  rx  rF  s      r   rz  zEmailMessage.set_content  sB    T(R(((%%#(D    &%r   )r<  r=  r>  rz  r  r  s   @r   r   r     s8        ) ) ) ) ) ) ) ) )r   )NT)__all__rP   rer   ior   r   emailr   r   email._policybaser	   r
   r   re   email._encoded_wordsr   r   r   compiler(   r   r,   r=   r@   r]   r   rA  r   r   r   r   <module>r     s  
 ?n
%  				                              . . . . . . . . % % % % % % ) ) ) ) ) )

	 BJ233	            D  4$ $ $# # #>C% C% C% C% C% C% C% C%L\ \ \ \ \w \ \ \~) ) ) ) )8 ) ) ) ) )r   