
    =Og                        	 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         dk    rq| dd          } |                     d          }|dk    r|                     dd|          |                     dd|          z
  dz  rQ|                     d|dz             }|dk    r2|                     dd|          |                     dd|          z
  dz  Q|dk     rt          |           }| d |         }d|v rf|                    d          }|d |                                                                         dz   ||dz   d                                          z   }|                    |                                           | |d          } | d d         dk    q|S )Nr   r   r   r!   z\"r   r   )r   findcountr"   indexr   lowerappend)splistendfis        r   _parseparamr8   I   s   c!ffAE
BQB%3,,abbEffSkkAgg17733//!''%C2H2HHAMg&&cAg&&C Agg17733//!''%C2H2HHAMg77a&&CdsdG!88A"1"##%%+a!gmmoo=AQWWYYcddG BQB%3,, 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;   ]   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Errorr2   join)	encodeddecoded_linesencoded_lines_iterlinemode_pathdecoded_linenbytess	            r   
_decode_uurX   h   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)selfr\   s     r   __init__zMessage.__init__   sH    (,,)r   c                 ,    	 |                                  S N)	as_stringre   s    r   __str__zMessage.__str__   s    	~~r   Fr   Nc                     	 ddl m} || j        n|}t                      } ||d||          }|                    | |           |                                S )Nr   )	GeneratorF)mangle_from_maxheaderlenr\   unixfrom)email.generatorrm   r\   r   flattengetvalue)re   rq   ro   r\   rm   fpgs          r   ri   zMessage.as_string   sz    	 	.----- &FZZIb#(#/#% % % 	
		$	***{{}}r   c                 ,    	 |                                  S rh   )as_bytesrj   s    r   	__bytes__zMessage.__bytes__   s    	}}r   c                     	 ddl m} || j        n|}t                      } ||d|          }|                    | |           |                                S )Nr   )BytesGeneratorF)rn   r\   rp   )rr   r{   r\   r   rs   rt   )re   rq   r\   r{   ru   rv   s         r   rx   zMessage.as_bytes   sm    	 	322222 &FYYN2E&AAA			$	***{{}}r   c                 8    	 t          | j        t                    S rh   )r#   r_   listrj   s    r   is_multipartzMessage.is_multipart   s    D$-...r   c                     || _         d S rh   r^   )re   rq   s     r   set_unixfromzMessage.set_unixfrom   s    !r   c                     | j         S rh   r   rj   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)r_   r2   AttributeError	TypeError)re   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~   r_   r#   r}   r   typer   getr1   r   _has_surrogatesr&   decode	get_paramLookupErrorr'   quopridecodestringr   rN   rF   r\   handle_defectrX   rJ   )	re   r7   r   r   ctebpayloadr+   rc   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   )hasattrr_   r#   Charsetr&   output_charsetr   set_charset)re   r   r   s      r   set_payloadzMessage.set_payloadK  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_paramr`   r#   r   
add_headerget_output_charset	set_parambody_encoder_   get_body_encodingr   r&   UnicodeErrorr   )re   r   r   r   s       r   r   zMessage.set_charset_  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 rh   )r`   rj   s    r   get_charsetzMessage.get_charset  s    	}r   c                 ,    	 t          | j                  S rh   )r"   r]   rj   s    r   __len__zMessage.__len__  s    G4=!!!r   c                 .    	 |                      |          S rh   )r   re   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)r\   header_max_countr1   r]   rJ   formatr2   header_store_parse)re   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 rh   )r1   r]   r2   )re   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  )r1   .0r   r   s      r   
<listcomp>z(Message.__contains__.<locals>.<listcomp>  s$    DDDda		DDDr   )r1   r]   r   s     r   __contains__zMessage.__contains__  s&    zz||DDdmDDDDDr   c              #   ,   K   | j         D ]	\  }}|V  
d S rh   r]   )re   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   rj   s    r   keyszMessage.keys  s    	 -,dm,,,,r   c                 ,     	  fd j         D             S )Nc                 L    g | ] \  }}j                             ||          !S r   r\   header_fetch_parser   r   r   re   s      r   r   z"Message.values.<locals>.<listcomp>  s?     + + +Aq ..q!44 + + +r   r   rj   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   rj   s   `r   itemszMessage.items  r   r   c                     	 |                                 }| j        D ]:\  }}|                                 |k    r| j                            ||          c S ;|S rh   )r1   r]   r\   r   )re   r   failobjr   r   s        r   r   zMessage.get  sf    	
 zz||M 	< 	<DAqwwyyD  {55a;;;;; !r   c                 @    	 | j                             ||f           d S rh   )r]   r2   )re   r   r+   s      r   set_rawzMessage.set_raw  s)    	 	dE]+++++r   c                 P    	 t          | j                                                  S rh   )rE   r]   copyrj   s    r   	raw_itemszMessage.raw_items  s%    	 DM&&(()))r   c                     	 g }|                                 }| j        D ]K\  }}|                                 |k    r.|                    | j                            ||                     L|s|S |S rh   )r1   r]   r2   r\   r   )re   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 )NrT   -r   )r   r2   r   r,   insert	SEMISPACErN   )re   _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          |          rh   )r1   zipranger"   r]   r\   r   KeyError)re   r   r   r7   r   r   s         r   replace_headerzMessage.replace_header=  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   r1   r/   )re   missingr+   ctypes       r   get_content_typezMessage.get_content_typeP  s    	 ((11G((***E""1%++--;;sq  <r   c                 b    	 |                                  }|                    d          d         S )Nr   r   r   splitre   r   s     r   get_content_maintypezMessage.get_content_maintypeh  1    	
 %%''{{3""r   c                 b    	 |                                  }|                    d          d         S )Nr   r   r   r   s     r   get_content_subtypezMessage.get_content_subtypeq  r   r   c                     	 | j         S rh   rd   rj   s    r   r   zMessage.get_default_typez  s    	 !!r   c                     	 || _         d S rh   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   r8   r   r   rJ   r2   r   decode_params)	re   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  )re   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 rh   )r  r1   r;   )re   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$   r1   r   r   r,   r   rN   r  r   )re   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  r1   r,   r   rN   r   )re   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  )r/   rJ   r1   r  r   )re   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   )re   r   r   r  s       r   get_filenamezMessage.get_filenameB  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  rstrip)re   r   r   r!  s       r   get_boundaryzMessage.get_boundaryR  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   HeaderParseErrorr1   r2   r]   r   rN   r\   r   )re   r!  r   r	  	newparamsfoundppkpvr   hr   r   r   r   s                 r   set_boundaryzMessage.set_boundary_  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   r1   )re   r   r   r   pcharsetrx   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   )r.  )r   partr   s     r   r   z(Message.get_charsets.<locals>.<listcomp>  s'    JJJd((11JJJr   walk)re   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   r1   )re   r+   c_ds      r   get_content_dispositionzMessage.get_content_disposition  sH    	
 .//=4%  #))++
r   r2  )Fr   N)FN)NFrh   )Nr   T)r   TNr    F)r   T)r   T)3__name__
__module____qualname__r
   rf   rk   ri   ry   rx   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.  r4  r7  email.iteratorsr3  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.policyr?  superrf   )re   r\   r?  	__class__s      r   rf   zMIMEPart.__init__  s=    >,,,,,,F     r   Fc                 t    	 || j         n|}||j        }t                                          |||          S rh   )r\   max_line_lengthrA  ri   )re   rq   ro   r\   rB  s       r   ri   zMIMEPart.as_string  sC    		 !'F!1Lww  <@@@r   c                 `    |                      | j                            d                    S )NT)utf8r\   )ri   r\   clonerj   s    r   rk   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)re   r6  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relatedstart
content-idr   )	rL  r   r   r0   r~   
iter_parts
_find_bodyr   r   )	re   r1  preferencelistmaintypesubtypesubpart	candidaterQ  subpartss	            r   rT  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   rP  htmlplainc                     	 t          |          }d }|                     | |          D ]\  }}||k     r|}|}|dk    r n|S )Nr   )r"   rT  )re   rU  	best_priobodyprior1  s         r   get_bodyzMIMEPart.get_body
  se    	 ''	//$?? 	 	JD$i 	199Er   >   rN  r\  rN  r]  rO  rP  rO  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   rO  rg  rP  rQ  FrR  Tr   )r   r   r   r   r   r   r   r2   pop_body_typesrL  )
re   rV  rW  r   r   rQ  r   attachmentsr1  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 rh   )r~   r   rj   s    r   rS  zMIMEPart.iter_partsY  sU      	  	*'')))))))))))	* 	*r   )content_managerc                @    || j         j        } |j        | g|R i |S rh   )r\   ro  get_contentre   ro  argskws       r   rq  zMIMEPart.get_contenta  s5    ""k9O**4=$==="===r   c                D    || j         j        } |j        | g|R i | d S rh   )r\   ro  set_contentrr  s       r   rv  zMIMEPart.set_contentf  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 )NrO  zCannot convert {} to {}content-rG  z
multipart/r   r!  )r   r  rJ   r   r]   r1   rG   r2   r   r\   r_   r   )
re   rW  disallowed_subtypesr!  existing_subtypekeep_headerspart_headersr   r+   r1  s
             r   _make_multipartzMIMEPart._make_multipartk  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 )NrP  )rg  mixedr}  re   r!  s     r   make_relatedzMIMEPart.make_related  s!    Y(@(KKKKKr   c                 4    |                      dd|           d S )Nrg  )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 )NrO  make_rG  r  zContent-Disposition)r   r  getattrr   r\   rv  r   )re   _subtyper  rs  rt  r1  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 )NrP  r  inliner  re   rs  rt  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 )Nrg  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  rJ  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 rh   r]   r_   rj   s    r   clearzMIMEPart.clear  s    r   c                 @    d | j         D             | _         d | _        d S )Nc                 j    g | ]0\  }}|                                                     d           ,||f1S )rx  )r1   rG   )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  rj   s    r   clear_contentzMIMEPart.clear_content  s3    B BDM B B Br   rh   )FNN)r[  )r8  r9  r:  rf   ri   rk   rL  rT  rb  rj  rm  rS  rq  rv  r}  r  r  r  r  r  r  r  r  r  __classcell__rB  s   @r   r=  r=    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   r=  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   )rA  rv  )re   rs  rt  rB  s      r   rv  zEmailMessage.set_content  sB    T(R(((%%#(D    &%r   )r8  r9  r:  rv  r  r  s   @r   r   r     s8        ) ) ) ) ) ) ) ) )r   )NT)__all__rK   rer   ior   r   emailr   r   email._policybaser	   r
   r   r`   email._encoded_wordsr   r   r   compiler(   r   r,   r8   r;   rX   r   r=  r   r   r   r   <module>r     s  
 ?n
%  				                              . . . . . . . . % % % % % % ) ) ) ) ) )

	 BJ233	            D  ($ $ $# # #>C% C% C% C% C% C% C% C%L\ \ \ \ \w \ \ \~) ) ) ) )8 ) ) ) ) )r   