ó
    F\hì> ã                   ó
  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	rSSK
rSSKrSSKrSSKJr   SSKr/ SQr\R$                  R'                  S5      r " S S5      r " S S	\5      r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\R8                  R:                  5      r " S S\5      r " S S\5      r " S S\5      r  " S S\5      r! " S  S!\5      r" " S" S#\5      r# " S$ S%5      r$ " S& S'\$5      r%S8S( jr&S) r'S* r(S+ r)S, r*S- r+ " S. S/\,5      r- " S0 S1\-5      r. " S2 S3\-5      r/ " S4 S5\-5      r0 " S6 S7\-5      r1g! \ a    Sr GNCf = f)9zDRead/write support for Maildir, mbox, MH, Babyl, and MMDF mailboxes.é    N)ÚGenericAlias)ÚMailboxÚMaildirÚmboxÚMHÚBabylÚMMDFÚMessageÚMaildirMessageÚmboxMessageÚ	MHMessageÚBabylMessageÚMMDFMessageÚErrorÚNoSuchMailboxErrorÚNotEmptyErrorÚExternalClashErrorÚFormatErrorÚasciic                   óú   • \ rS rSrSrS%S jrS rS rS rS r	S	 r
S&S
 jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS&S jrS rS&S jrS rS rS r S  r!S! r"S"r#S'S# jr$\%" \&5      r'S$r(g)(r   é"   z*A group of messages in a particular place.Nc                 ó’   • [         R                  R                  [         R                  R                  U5      5      U l        X l        g)zInitialize a Mailbox instance.N)ÚosÚpathÚabspathÚ
expanduserÚ_pathÚ_factory©Úselfr   ÚfactoryÚcreates       Ú/usr/lib/python3.13/mailbox.pyÚ__init__ÚMailbox.__init__%   s*   € ä—W‘W—_‘_¤R§W¡W×%7Ñ%7¸Ó%=Ó>ˆŒ
Ø�ó    c                 ó   • [        S5      e)ú$Add message and return assigned key.ú&Method must be implemented by subclass©ÚNotImplementedError©r    Úmessages     r#   ÚaddÚMailbox.add*   ó   € ä!Ð"JÓKÐKr&   c                 ó   • [        S5      e)ú=Remove the keyed message; raise KeyError if it doesn't exist.r)   r*   ©r    Úkeys     r#   ÚremoveÚMailbox.remove.   r0   r&   c                 ó&   • U R                  U5        g ©N)r5   r3   s     r#   Ú__delitem__ÚMailbox.__delitem__2   s   € Ø�‰�CÕr&   c                 óH   •  U R                  U5        g! [         a     gf = f©z'If the keyed message exists, remove it.N)r5   ÚKeyErrorr3   s     r#   ÚdiscardÚMailbox.discard5   s%   € ð	Ø�K‰K˜ÕøÜó 	Ùð	ús   ‚ ”
! !c                 ó   • [        S5      e)ú>Replace the keyed message; raise KeyError if it doesn't exist.r)   r*   ©r    r4   r-   s      r#   Ú__setitem__ÚMailbox.__setitem__<   r0   r&   c                 óJ   •  U R                  U5      $ ! [         a    Us $ f = f)z9Return the keyed message, or default if it doesn't exist.)Ú__getitem__r=   )r    r4   Údefaults      r#   ÚgetÚMailbox.get@   s,   € ð	Ø×#Ñ# CÓ(Ð(øÜó 	ØŠNð	ús   ‚ “"¡"c                 óè   • U R                   (       d  U R                  U5      $ [        R                  " U R	                  U5      5       nU R                  U5      sSSS5        $ ! , (       d  f       g= f)z=Return the keyed message; raise KeyError if it doesn't exist.N)r   Úget_messageÚ
contextlibÚclosingÚget_file)r    r4   Úfiles      r#   rF   ÚMailbox.__getitem__G   sK   € à�}�}Ø×#Ñ# CÓ(Ð(ä×#Ò# D§M¡M°#Ó$6Ô7¸4Ø—}‘} TÓ*÷ 8×7×7ús   ÁA#Á#
A1c                 ó   • [        S5      e)ú4Return a Message representation or raise a KeyError.r)   r*   r3   s     r#   rK   ÚMailbox.get_messageO   r0   r&   c                 óh   • [         R                  " U R                  U5      5      R                  5       $ )zŒReturn a string representation or raise a KeyError.

Uses email.message.Message to create a 7bit clean string
representation of the message.©ÚemailÚmessage_from_bytesÚ	get_bytesÚ	as_stringr3   s     r#   Ú
get_stringÚMailbox.get_stringS   s'   € ô
 ×'Ò'¨¯©°sÓ(;Ó<×FÑFÓHÐHr&   c                 ó   • [        S5      e)z8Return a byte string representation or raise a KeyError.r)   r*   r3   s     r#   rX   ÚMailbox.get_bytesZ   r0   r&   c                 ó   • [        S5      e)ú6Return a file-like representation or raise a KeyError.r)   r*   r3   s     r#   rN   ÚMailbox.get_file^   r0   r&   c                 ó   • [        S5      e)úReturn an iterator over keys.r)   r*   ©r    s    r#   ÚiterkeysÚMailbox.iterkeysb   r0   r&   c                 ó4   • [        U R                  5       5      $ )zReturn a list of keys.)Úlistrd   rc   s    r#   ÚkeysÚMailbox.keysf   s   € ä�D—M‘M“OÓ$Ð$r&   c              #   ón   #   • U R                  5        H  n X   nUv •  M     g! [         a     M  f = f7f)z%Return an iterator over all messages.N©rd   r=   ©r    r4   Úvalues      r#   Ú
itervaluesÚMailbox.itervaluesj   s;   é € à—=‘=–?ˆCðØ™	�ð ŒKò #øô ó Úðüs   ‚5—$›	5¤
2®5±2²5c                 ó"   • U R                  5       $ r8   )rn   rc   s    r#   Ú__iter__ÚMailbox.__iter__s   s   € Ø�‰Ó Ð r&   c                 ó4   • [        U R                  5       5      $ )z,Return a list of messages. Memory intensive.)rg   rn   rc   s    r#   ÚvaluesÚMailbox.valuesv   s   € ä�D—O‘OÓ%Ó&Ð&r&   c              #   óp   #   • U R                  5        H  n X   nX4v •  M     g! [         a     M  f = f7f)z.Return an iterator over (key, message) tuples.Nrk   rl   s      r#   Ú	iteritemsÚMailbox.iteritemsz   s>   é € à—=‘=–?ˆCðØ™	�ð �,Ôò #øô ó Úðüs   ‚6—%›
6¥
3¯6²3³6c                 ó4   • [        U R                  5       5      $ )z9Return a list of (key, message) tuples. Memory intensive.)rg   rw   rc   s    r#   ÚitemsÚMailbox.itemsƒ   s   € ä�D—N‘NÓ$Ó%Ð%r&   c                 ó   • [        S5      e)ú9Return True if the keyed message exists, False otherwise.r)   r*   r3   s     r#   Ú__contains__ÚMailbox.__contains__‡   r0   r&   c                 ó   • [        S5      e)ú*Return a count of messages in the mailbox.r)   r*   rc   s    r#   Ú__len__ÚMailbox.__len__‹   r0   r&   c                 óT   • U R                  5        H  nU R                  U5        M     g)zDelete all messages.N)rh   r>   r3   s     r#   ÚclearÚMailbox.clear�   s   € à—9‘9–;ˆCØ�L‰L˜Öò r&   c                 óV   •  X   nU R                  U5        U$ ! [          a    Us $ f = f)z3Delete the keyed message and return it, or default.)r=   r>   )r    r4   rG   Úresults       r#   ÚpopÚMailbox.pop”   s7   € ð	Ø‘YˆFð 	�‰�SÔØˆøô ó 	ØŠNð	ús   ‚ ™(§(c                 ój   • U R                  5        H  nXR                  U5      4s  $    [        S5      e)z6Delete an arbitrary (key, message) pair and return it.zNo messages in mailbox)rd   r‰   r=   r3   s     r#   ÚpopitemÚMailbox.popitem�   s1   € à—=‘=–?ˆCØŸ™ #›Ð'Ò'ñ #ô Ð3Ó4Ð4r&   c                 óþ   • [        US5      (       a  UR                  5       nO$[        US5      (       a  UR                  5       nOUnSnU H
  u  pE XPU'   M     U(       a  [        S5      eg! [         a    Sn M0  f = f)z4Change the messages that correspond to certain keys.rw   rz   FTzNo message with key(s)N)Úhasattrrw   rz   r=   )r    ÚargÚsourceÚbad_keyr4   r-   s         r#   ÚupdateÚMailbox.update¤   s€   € ä�3˜×$Ñ$Ø—]‘]“_‰FÜ�S˜'×"Ñ"Ø—Y‘Y“[‰FàˆFØˆÛ"‰LˆCðØ#�S“	ñ #ö
 ÜÐ3Ó4Ð4ð øô ó Ø“ðús   ÁA,Á,A<Á;A<c                 ó   • [        S5      e)ú&Write any pending changes to the disk.r)   r*   rc   s    r#   ÚflushÚMailbox.flushµ   r0   r&   c                 ó   • [        S5      e)úLock the mailbox.r)   r*   rc   s    r#   ÚlockÚMailbox.lock¹   r0   r&   c                 ó   • [        S5      e)ú#Unlock the mailbox if it is locked.r)   r*   rc   s    r#   ÚunlockÚMailbox.unlock½   r0   r&   c                 ó   • [        S5      e)úFlush and close the mailbox.r)   r*   rc   s    r#   ÚcloseÚMailbox.closeÁ   r0   r&   c                 óX   •  UR                  S5      $ ! [         a    [        S5      ef = f)Nr   z?String input must be ASCII-only; use bytes or a Message instead)ÚencodeÚUnicodeErrorÚ
ValueErrorr,   s     r#   Ú_string_to_bytesÚMailbox._string_to_bytesÅ   s7   € ð	2Ø—>‘> 'Ó*Ð*øÜó 	2Üð 1ó 2ð 2ð	2ús   ‚ “)Fc                 óÜ  • [        U[        R                  R                  5      (       aÑ  [        R
                  " 5       n[        R                  R                  XCS5      nUR                  U5        UR                  S5        UR                  5       nUR                  S[        5      nUR                  U5        U R                  (       a1  UR                  [        5      (       d  UR                  [        5        g
g
g
[        U[         ["        [        R$                  45      (       aô  [        U[        R$                  5      (       a,  [&        R(                  " S[*        S5        UR-                  5       n[        U[         5      (       a  U R/                  U5      nU(       a  UR                  SS5      nUR                  S[        5      nUR                  U5        U R                  (       a1  UR                  [        5      (       d  UR                  [        5        g
g
g
[1        US5      (       Ga,  [1        US5      (       a(  [&        R(                  " S	[*        S5        UR2                  nS
n UR5                  5       nUR                  S5      (       a	  US
S S-   nOUR                  S5      (       a  US
S S-   nU(       d  OPU(       a  UR7                  S5      (       a  SUSS
 -   nUR                  S[        5      nUR                  U5        UnM¥  U R                  (       a9  U(       a1  UR                  [        5      (       d  UR                  [        5        g
g
g
g
[9        S[;        U5      -  5      e)z%Dump message contents to target file.r   ó   
ú8Use of StringIO input is deprecated, use BytesIO insteadé   s   
From s   
>From ÚreadÚbufferúDUse of text mode files is deprecated, use a binary mode file insteadNó   
éþÿÿÿó   éÿÿÿÿó   From s   >From é   úInvalid message type: %s)Ú
isinstancerV   r-   r
   ÚioÚBytesIOÚ	generatorÚBytesGeneratorÚflattenÚseekr¯   ÚreplaceÚlinesepÚwriteÚ_append_newlineÚendswithÚstrÚbytesÚStringIOÚwarningsÚwarnÚDeprecationWarningÚgetvaluer©   r�   r°   ÚreadlineÚ
startswithÚ	TypeErrorÚtype)	r    r-   ÚtargetÚmangle_from_r°   ÚgenÚdataÚlastlineÚlines	            r#   Ú_dump_messageÚMailbox._dump_messageÒ   s˜  € ô �gœuŸ}™}×4Ñ4×5Ñ5Ü—Z’Z“\ˆFÜ—/‘/×0Ñ0°ÀqÓIˆCØ�K‰K˜Ô Ø�K‰K˜ŒNØ—;‘;“=ˆDØ—<‘< ¤wÓ/ˆDØ�L‰L˜ÔØ×#×#¨D¯M©M¼'×,BÑ,Bà—‘œWÕ%ð -CÐ#ô ˜¤#¤u¬b¯k©kÐ!:×;Ñ;Ü˜'¤2§;¡;×/Ñ/Ü—’ð *Ü+=¸qôBà!×*Ñ*Ó,�Ü˜'¤3×'Ñ'Ø×/Ñ/°Ó8�ÞØ!Ÿ/™/¨*°kÓB�Ø—o‘o e¬WÓ5ˆGØ�L‰L˜Ô!Ø×#×#¨G×,<Ñ,<¼W×,EÑ,Eà—‘œWÕ%ð -FÐ#ô �W˜f×%Ò%Ü�w ×)Ñ)Ü—’ð 5Ü6HÈ!ôMà!Ÿ.™.�ØˆHØØ×'Ñ'Ó)�à—=‘= ×)Ñ)Ø  ˜9 uÑ,‘DØ—]‘] 5×)Ñ)Ø  ˜9 uÑ,�DÞØÞ D§O¡O°H×$=Ñ$=Ø$ t¨A¨B xÑ/�DØ—|‘| E¬7Ó3�Ø—‘˜TÔ"Ø�ñ ð ×#×#®¸×9JÑ9JÌ7×9SÑ9Sà—‘œWÕ%ð :T¨Ð#ô Ð6¼¸g»ÑFÓGÐGr&   )r   r   ©NTr8   ©F))Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r$   r.   r5   r9   r>   rC   rH   rF   rK   rZ   rX   rN   rd   rh   rn   rq   rt   rw   rz   r~   r‚   r…   r‰   rŒ   r“   r—   r›   rŸ   r£   r©   rÃ   rÖ   Úclassmethodr   Ú__class_getitem__Ú__static_attributes__© r&   r#   r   r   "   sÄ   † Ù4ô ò
LòLòòòLôò+òLòIòLòLòLò%òò!ò'òò&òLòLòô
ò5ô5ò"LòLòLòLò2ð €Oô4Hñl $ LÓ1Ór&   r   c                   óø   • \ rS rSrSrSrS(S jrS rS rS r	S	 r
S
 rS rS rS rS\4S jrS rS\4S jrS\4S jrS\4S jrS rS rS rS rS rS rS rS rS rS rS  rS! r S"r!S# r"S$ r#S% r$S& r%S'r&g))r   i  zA qmail-style Maildir mailbox.Ú:Nc                 ó¼  • [         R                  XX#5        [        R                  R	                  U R
                  S5      [        R                  R	                  U R
                  S5      [        R                  R	                  U R
                  S5      S.U l        [        R                  R                  U R
                  5      (       dv  U(       aZ  [        R                  " U R
                  S5        U R                  R                  5        H  n[        R                  " US5        M     O[        U R
                  5      e0 U l        SSS.U l        SU l        SU l        g	)
zInitialize a Maildir instance.ÚtmpÚnewÚcur)ræ   rç   rè   éÀ  r   )rè   rç   gš™™™™™¹?N)r   r$   r   r   Újoinr   Ú_pathsÚexistsÚmkdirrt   r   Ú_tocÚ_toc_mtimesÚ
_last_readÚ_skewfactor)r    Údirnamer!   r"   r   s        r#   r$   ÚMaildir.__init__  sä   € ä×Ñ˜¨Ô8ä—7‘7—<‘< §
¡
¨EÓ2Ü—7‘7—<‘< §
¡
¨EÓ2Ü—7‘7—<‘< §
¡
¨EÓ2ñˆŒô
 �w‰w�~‰~˜dŸj™j×)Ñ)ÞÜ—’˜Ÿ™ UÔ+Ø ŸK™K×.Ñ.Ö0�DÜ—H’H˜T 5Ö)ò 1ô )¨¯©Ó4Ð4ØˆŒ	Ø#$¨QÑ/ˆÔØˆŒØˆÕr&   c                 ó   • U R                  5       n U R                  X5        [        U5        [        U[        5      (       a?  UR                  5       nU R                  UR                  5       -   nX@R                  :X  a  SnOSnSn[        R                  R                  UR                  5      R                  U R                  5      S   n[        R                  R!                  U R"                  X5U-   5      n[        U[        5      (       aX  [        R$                  " UR                  [        R                  R'                  UR                  5      UR)                  5       45          [        R*                  " UR                  U5        [        R
                  " UR                  5        U$ ! [         a2    UR                  5         [        R
                  " UR                  5        e f = f! [,        [.        4 a%    [        R0                  " UR                  U5         U$ f = f! [2         aR  n[        R
                  " UR                  5        UR4                  [4        R6                  :X  a  [9        SU-  5      ee SnAff = f)r(   Ú rç   r   z$Name clash with existing message: %sN)Ú_create_tmprÖ   ÚBaseExceptionr£   r   r5   ÚnameÚ_sync_closer¹   r   Ú
get_subdirÚcolonÚget_infor   ÚbasenameÚsplitrê   r   ÚutimeÚgetatimeÚget_dateÚlinkÚAttributeErrorÚPermissionErrorÚrenameÚOSErrorÚerrnoÚEEXISTr   )r    r-   Útmp_fileÚsubdirÚsuffixÚuniqÚdestÚes           r#   r.   ÚMaildir.add$  så  € à×#Ñ#Ó%ˆð	Ø×Ñ˜wÔ1ô
 	�HÔÜ�gœ~×.Ñ.Ø×'Ñ'Ó)ˆFØ—Z‘Z '×"2Ñ"2Ó"4Ñ4ˆFØŸ™Ó#Ø�øàˆFØˆFÜ�w‰w×Ñ §¡Ó.×4Ñ4°T·Z±ZÓ@ÀÑCˆÜ�w‰w�|‰|˜DŸJ™J¨°v±Ó>ˆÜ�gœ~×.Ñ.Ü�HŠH�X—]‘]Ü—g‘g×&Ñ& x§}¡}Ó5°w×7GÑ7GÓ7IÐJôLð
	ð)Ü—’˜Ÿ™ tÔ,ô —	’	˜(Ÿ-™-Ô(ð ˆøôG ó 	Ø�N‰NÔÜ�IŠI�h—m‘mÔ$Øð	ûô0 #¤OÐ4ó /Ü—	’	˜(Ÿ-™-¨Õ.ð ˆð/ûô ó 	Ü�IŠI�h—m‘mÔ$Ø�w‰wœ%Ÿ,™,Ó&Ü(Ð)OØ+/ñ*0ó 1ð 1ð ûð	úsB   ’F* Å'!G) Æ H! Æ*<G&Ç)1HÈH! ÈHÈH! È!
I=È+AI8É8I=c                 óž   • [         R                  " [         R                  R                  U R                  U R                  U5      5      5        g©r2   N)r   r5   r   rê   r   Ú_lookupr3   s     r#   r5   ÚMaildir.removeN  s*   € ä
�	Š	”"—'‘'—,‘,˜tŸz™z¨4¯<©<¸Ó+<Ó=Õ>r&   c                 óT   •  U R                  U5        g! [        [        4 a     gf = fr<   )r5   r=   ÚFileNotFoundErrorr3   s     r#   r>   ÚMaildir.discardR  s+   € ð	Ø�K‰K˜ÕøÜÔ+Ð,ó 	Ùð	ús   ‚ ”'¦'c                 ó  • U R                  U5      nU R                  U5      nU R                  U5      n[        U[        5      (       a  UnOUn[        R
                  R                  U5      nU R                  U;   a,  U R                  UR                  U R                  5      S   -   nOSnU R                  U5        [        R
                  R                  U R                  U5      n	[        R
                  R                  U R                  XqU-   5      n
[        U[        5      (       aD  [        R                  " U	[        R
                  R                  U	5      UR                  5       45        [        R                  " Xš5        g)rA   rµ   rõ   N)r  r.   r¹   r   r   r   rò   rû   rþ   r>   rê   r   rÿ   r   r  r  )r    r4   r-   Úold_subpathÚtemp_keyÚtemp_subpathÚdominant_subpathr
  r  Útmp_pathÚnew_paths              r#   rC   ÚMaildir.__setitem__Z  s  € à—l‘l 3Ó'ˆØ—8‘8˜GÓ$ˆØ—|‘| HÓ-ˆÜ�gœ~×.Ñ.à+Ñð  +ÐÜ—‘—‘Ð!1Ó2ˆØ�:‰:Ð)Ó)Ø—Z‘ZÐ"2×"8Ñ"8¸¿¹Ó"DÀRÑ"HÑH‰FàˆFØ�‰�SÔÜ—7‘7—<‘< §
¡
¨LÓ9ˆÜ—7‘7—<‘< §
¡
¨F¸&±LÓAˆÜ�gœ~×.Ñ.Ü�HŠH�XÜ—g‘g×&Ñ& xÓ0°'×2BÑ2BÓ2DÐEôGô
 	�	Š	�(Õ%r&   c                 óª  • U R                  U5      n[        [        R                  R	                  U R
                  U5      S5       nU R                  (       a  U R                  U5      nO[        U5      nSSS5        [        R                  R                  U5      u  pVWR                  U5        U R                  U;   a-  UR                  UR                  U R                  5      S   5        UR                  [        R                  R                  [        R                  R	                  U R
                  U5      5      5        U$ ! , (       d  f       NÕ= f)rR   ÚrbNrµ   )r  Úopenr   r   rê   r   r   r   rþ   Ú
set_subdirrû   Úset_infoÚset_dateÚgetmtime)r    r4   ÚsubpathÚfÚmsgr
  rø   s          r#   rK   ÚMaildir.get_messageu  sÛ   € à—,‘,˜sÓ#ˆÜ”"—'‘'—,‘,˜tŸz™z¨7Ó3°TÔ:¸aØ�}�}Ø—m‘m AÓ&‘ä$ QÓ'�÷	 ;ô
 —w‘w—}‘} WÓ-‰ˆØ�‰�vÔØ�:‰:˜ÓØ�L‰L˜Ÿ™ D§J¡JÓ/°Ñ3Ô4Ø�‰”R—W‘W×%Ñ%¤b§g¡g§l¡l°4·:±:¸wÓ&GÓHÔIØˆ
÷ ;Õ:ús   Á/EÅ
Ec                 ó  • [        [        R                  R                  U R                  U R                  U5      5      S5       nUR                  5       R                  [        S5      sSSS5        $ ! , (       d  f       g= f)ú2Return a bytes representation or raise a KeyError.r   r¬   N)	r!  r   r   rê   r   r  r¯   rÀ   rÁ   ©r    r4   r'  s      r#   rX   ÚMaildir.get_bytes„  sM   € ä”"—'‘'—,‘,˜tŸz™z¨4¯<©<¸Ó+<Ó=¸tÔDÈØ—6‘6“8×#Ñ#¤G¨UÓ3÷ E×D×Dús   Á$A2Á2
B c                 óž   • [        [        R                  R                  U R                  U R                  U5      5      S5      n[        U5      $ )r_   r   )r!  r   r   rê   r   r  Ú
_ProxyFiler,  s      r#   rN   ÚMaildir.get_file‰  s4   € ä”—‘—‘˜dŸj™j¨$¯,©,°sÓ*;Ó<¸dÓCˆÜ˜!‹}Ðr&   c                 ó‚   • U R                  U5      nU R                  U;   a  UR                  U R                  5      S   $ g)z+Get the keyed message's "info" as a string.rµ   rõ   )r  rû   rþ   )r    r4   r&  s      r#   rü   ÚMaildir.get_infoŽ  s7   € à—,‘,˜sÓ#ˆØ�:‰:˜Ó Ø—=‘= §¡Ó,¨RÑ0Ð0Ør&   Úinfoc                 óæ  • [        U[        5      (       d  [        S[        U5       35      eU R	                  U5      nUR                  U R                  5      S   nU(       a  X@R                  U-   -  nXC:X  a  g[        R                  R                  U R                  U5      n[        R                  R                  U R                  U5      n[        R                  " XV5        X@R                  U'   g)z&Set the keyed message's "info" string.zinfo must be a string: r   N)r¹   rÅ   rÎ   rÏ   r  rþ   rû   r   r   rê   r   r  rî   )r    r4   r3  r  Únew_subpathÚold_pathr  s          r#   r#  ÚMaildir.set_info•  s±   € ä˜$¤×$Ñ$ÜÐ5´d¸4³j°\ÐBÓCÐCØ—l‘l 3Ó'ˆØ!×'Ñ'¨¯
©
Ó3°AÑ6ˆÞØŸ:™:¨Ñ,Ñ,ˆKØÓ%ØÜ—7‘7—<‘< §
¡
¨KÓ8ˆÜ—7‘7—<‘< §
¡
¨KÓ8ˆÜ
�	Š	�(Ô%Ø$�	‰	�#Šr&   c                 ó\   • U R                  U5      nUR                  S5      (       a  USS $ g)zHReturn as a string the standard flags that are set on the keyed message.ú2,é   Nrõ   )rü   rÍ   )r    r4   r3  s      r#   Ú	get_flagsÚMaildir.get_flags¤  s-   € à�}‰}˜SÓ!ˆØ�?‰?˜4× Ñ Ø˜˜�8ˆOØr&   Úflagsc                 óÈ   • [        U[        5      (       d  [        S[        U5       35      eU R	                  USSR                  [        [        U5      5      5      -   5        g)z>Set the given flags and unset all others on the keyed message.zflags must be a string: r9  rõ   N)r¹   rÅ   rÎ   rÏ   r#  rê   ÚsortedÚset)r    r4   r=  s      r#   Ú	set_flagsÚMaildir.set_flags«  sK   € ä˜%¤×%Ñ%ÜÐ6´t¸E³{°mÐDÓEÐEà�‰�c˜4 "§'¡'¬&´°U³Ó*<Ó"=Ñ=Õ>r&   Úflagc           
      óæ   • [        U[        5      (       d  [        S[        U5       35      eU R	                  USR                  [        U R                  U5      5      [        U5      -  5      5        g)zCSet the given flag(s) without changing others on the keyed message.úflag must be a string: rõ   N)r¹   rÅ   rÎ   rÏ   rA  rê   r@  r;  ©r    r4   rC  s      r#   Úadd_flagÚMaildir.add_flag²  sT   € ä˜$¤×$Ñ$ÜÐ5´d¸4³j°\ÐBÓCÐCà�‰�s˜BŸG™G¤C¨¯©°sÓ(;Ó$<¼sÀ4»yÑ$HÓIÕJr&   c           
      ó  • [        U[        5      (       d  [        S[        U5       35      eU R	                  U5      (       aF  U R                  USR                  [        U R	                  U5      5      [        U5      -
  5      5        gg)zLUnset the given string flag(s) without changing others on the keyed message.rE  rõ   N)r¹   rÅ   rÎ   rÏ   r;  rA  rê   r@  rF  s      r#   Úremove_flagÚMaildir.remove_flag¹  sh   € ä˜$¤×$Ñ$ÜÐ5´d¸4³j°\ÐBÓCÐCØ�>‰>˜#×ÑØ�N‰N˜3 §¡¬¨D¯N©N¸3Ó,?Ó(@Ä3ÀtÃ9Ñ(LÓ MÕNð r&   c              #   ó    #   • U R                  5         U R                   H  n U R                  U5        Uv •  M     g! [         a     M+  f = f7f©rb   N)Ú_refreshrî   r  r=   r3   s     r#   rd   ÚMaildir.iterkeysÀ  sG   é € à�‰ŒØ—9”9ˆCðØ—‘˜SÔ!ð ŒIò øô ó Úðüs%   ‚ A£=´	A½
AÁAÁ
AÁAc                 ó>   • U R                  5         XR                  ;   $ ©r}   )rN  rî   r3   s     r#   r~   ÚMaildir.__contains__Ê  s   € à�‰ŒØ—i‘iÑÐr&   c                 óL   • U R                  5         [        U R                  5      $ ©r�   )rN  Úlenrî   rc   s    r#   r‚   ÚMaildir.__len__Ï  s   € à�‰ŒÜ�4—9‘9‹~Ðr&   c                 ó   • g)ú"Write any pending changes to disk.Nrâ   rc   s    r#   r—   ÚMaildir.flushÔ  s   € ð 	r&   c                 ó   • g)rš   Nrâ   rc   s    r#   r›   ÚMaildir.lockÚ  ó   € àr&   c                 ó   • g)rž   Nrâ   rc   s    r#   rŸ   ÚMaildir.unlockÞ  r\  r&   c                 ó   • g©r¢   Nrâ   rc   s    r#   r£   ÚMaildir.closeâ  r\  r&   c                 óT  • / n[         R                  " U R                  5       H�  n[        U5      S:”  d  M  US   S:X  d  M  [         R                  R                  [         R                  R                  U R                  U5      5      (       d  Mm  UR                  USS 5        Mƒ     U$ )úReturn a list of folder names.é   r   Ú.N)r   Úlistdirr   rU  r   Úisdirrê   Úappend©r    rˆ   Úentrys      r#   Úlist_foldersÚMaildir.list_foldersæ  sr   € àˆÜ—Z’Z §
¡
Ö+ˆEÜ�5‹z˜A�~ %¨¡(¨c¥/Ü�w‰w�}‰}œRŸW™WŸ\™\¨$¯*©*°eÓ<×=Ó=Ø—‘˜e A B˜iÖ(ñ ,ð ˆr&   c                 ó‚   • [        [        R                  R                  U R                  SU-   5      U R
                  SS9$ )z/Return a Maildir instance for the named folder.re  F©r!   r"   )r   r   r   rê   r   r   ©r    Úfolders     r#   Ú
get_folderÚMaildir.get_folderï  s2   € ä”r—w‘w—|‘| D§J¡J°°f±Ó=Ø#Ÿ}™}Ø#ñ%ð 	%r&   c                 ó¤  • [         R                  R                  U R                  SU-   5      n[	        X R
                  S9n[         R                  R                  US5      n[         R                  R                  U5      (       dK  [         R                  " [         R                  " U[         R                  [         R                  -  S5      5        U$ )z>Create a folder and return a Maildir instance representing it.re  ©r!   Úmaildirfolderé¶  )r   r   rê   r   r   r   rì   r£   r!  ÚO_CREATÚO_WRONLY)r    rp  r   rˆ   Úmaildirfolder_paths        r#   Ú
add_folderÚMaildir.add_folderõ  s†   € ä�w‰w�|‰|˜DŸJ™J¨¨f©Ó5ˆÜ˜§}¡}Ñ5ˆÜŸW™WŸ\™\¨$°Ó@ÐÜ�w‰w�~‰~Ð0×1Ñ1Ü�HŠH”R—W’WÐ/´·±¼b¿k¹kÑ1IØóô àˆr&   c                 óö  • [         R                  R                  U R                  SU-   5      n[         R                  " [         R                  R                  US5      5      [         R                  " [         R                  R                  US5      5      -    H)  n[        U5      S:  d  US   S:w  d  M  [        SU-  5      e   [         R                  " U5       Ho  nUS:w  d  M  US:w  d  M  US:w  d  M  [         R                  R                  [         R                  R                  X#5      5      (       d  M^  [        SU< S	U< 35      e   [         R                  " US
S9 H~  u  pEnU H6  n[         R                  " [         R                  R                  XC5      5        M8     U H6  n[         R                  " [         R                  R                  XC5      5        M8     M€     [         R                  " U5        g)ú-Delete the named folder, which must be empty.re  rç   rè   rd  r   zFolder contains message(s): %sræ   zFolder contains subdirectory 'z': F)ÚtopdownN)r   r   rê   r   rf  rU  r   rg  Úwalkr5   Úrmdir)r    rp  r   rj  ÚrootÚdirsÚfiless          r#   Úremove_folderÚMaildir.remove_folderÿ  sT  € ä�w‰w�|‰|˜DŸJ™J¨¨f©Ó5ˆÜ—Z’Z¤§¡§¡¨T°5Ó 9Ó:Ü—Z’Z¤§¡§¡¨T°5Ó 9Ó:ô;ˆEä�5‹z˜A‹~  q¡¨S¥Ü#Ð$DÀvÑ$MÓNÐNñ;ô —Z’Z Ö%ˆEØ˜�~ %¨5¥.°U¸eµ^Ü�w‰w�}‰}œRŸW™WŸ\™\¨$Ó6×7Ó7Ý#Û%+ªUð%4ó 5ð 5ñ &ô
 "$§¢¨°uÔ!=ÑˆD˜Û�Ü—	’	œ"Ÿ'™'Ÿ,™, tÓ3Ö4ñ ã�Ü—’œŸ™Ÿ™ dÓ2Ö3ó ñ ">ô
 	�Š��r&   c                 óŠ  • [         R                   " 5       n[        R                  " [        R                  R	                  U R
                  S5      5       Hl  n[        R                  R	                  U R
                  SU5      nU[        R                  R                  U5      -
  S:”  d  MV  [        R                  " U5        Mn     g)zDelete old files in "tmp".ræ   i@ú N)Útimer   rf  r   rê   r   r   r5   )r    Únowrj  r   s       r#   ÚcleanÚMaildir.clean  su   € ä�iŠi‹kˆÜ—Z’Z¤§¡§¡¨T¯Z©Z¸Ó ?Ö@ˆEÜ—7‘7—<‘< §
¡
¨E°5Ó9ˆDØ”R—W‘W×%Ñ% dÓ+Ñ+¨fÕ4Ü—	’	˜$–ò Ar&   rd  c           	      ó~  • [         R                   " 5       n[        R                  " 5       nSU;   a  UR                  SS5      nSU;   a  UR                  SS5      n[	        U5      < S[	        US-  S-  5      < S[
        R                  " 5       < S	[        R                  < S
U< 3	n[
        R                  R                  U R                  SU5      n [
        R                  " U5        [!        SU-  5      e! [         a9    [        =R                  S-  sl         [        U5      s $ ! [         a      NLf = ff = f)z=Create a file in the tmp subdirectory and open and return it.Ú/z\057rä   z\072z.Mrd  g    €„.AÚPÚQre  ræ   z&Name clash prevented file creation: %s)r‡  ÚsocketÚgethostnamerÀ   Úintr   Úgetpidr   Ú_countr   rê   r   Ústatr  Ú_create_carefullyÚFileExistsErrorr   )r    rˆ  Úhostnamer  r   s        r#   rö   ÚMaildir._create_tmp  s   € ä�iŠi‹kˆÜ×%Ò%Ó'ˆØ�(‹?Ø×'Ñ'¨¨WÓ5ˆHØ�(‹?Ø×'Ñ'¨¨WÓ5ˆHÜ$'¨¦H¬c°#¸±'¸C±-Ö.@Ä"Ç)Â)Æ+Ü$+§N¤N²Hð>ˆä�w‰w�|‰|˜DŸJ™J¨¨tÓ4ˆð	Ü�GŠG�DŒMô !Ð!IØ!%ñ"&ó 'ð 	'øô !ó 	Ü�NŠN˜aÑ�NðÜ(¨Ó.Ò.øÜ"ó Úðúð		ús0   ÃC9 Ã9#D<Ä
D*Ä'D<Ä*
D8Ä4D<Ä7D8Ä8D<c                 óN  • [         R                   " 5       U R                  -
  SU R                  -   :”  ak  SnU R                   HQ  n[        R
                  R                  U R                  U   5      nX0R                  U   :”  a  SnX0R                  U'   MS     U(       d  g0 U l        U R                   HÖ  nU R                  U   n[        R                  " U5       Hª  nUR                  S5      (       a  M  [        R
                  R                  XE5      n[        R
                  R                  U5      (       a  M`  UR                  U R                  5      S   n[        R
                  R                  X%5      U R                  U'   M¬     MØ     [         R                   " 5       U l        g)z!Update table of contents mapping.r:  FTNre  r   )r‡  rð   rñ   rï   r   r   r%  rë   rî   rf  rÍ   rê   rg  rþ   rû   )r    Úrefreshr
  Úmtimer   rj  Úpr  s           r#   rN  ÚMaildir._refresh4  s8  € ô �9Š9‹;˜Ÿ™Ñ(¨1¨t×/?Ñ/?Ñ+?Ó?ØˆGØ×*Ô*�ÜŸ™×(Ñ(¨¯©°VÑ)<Ó=�Ø×+Ñ+¨FÑ3Ó3Ø"�GØ+0× Ñ  Ó(ñ	 +ö
 ØàˆŒ	Ø×&Ô&ˆFØ—;‘;˜vÑ&ˆDÜŸš DÖ)�Ø×#Ñ# C×(Ñ(ÙÜ—G‘G—L‘L Ó-�Ü—7‘7—=‘= ×#Ñ#ÙØ—{‘{ 4§:¡:Ó.¨qÑ1�Ü"$§'¡'§,¡,¨vÓ"=�—	‘	˜$“ó *ñ 'ô Ÿ)š)›+ˆ�r&   c                 óp  •  [         R                  R                  [         R                  R                  U R                  U R
                  U   5      5      (       a  U R
                  U   $  U R                  5          U R
                  U   $ ! [         a     N,f = f! [         a    [        SU-  5      Sef = f)z=Use TOC to return subpath for given key, or raise a KeyError.úNo message with key: %sN)r   r   rì   rê   r   rî   r=   rN  r3   s     r#   r  ÚMaildir._lookupZ  s¡   € ð	Ü�w‰w�~‰~œbŸg™gŸl™l¨4¯:©:°t·y±yÀ±~ÓF×GÑGØ—y‘y ‘~Ð%ð Hð 	�‰Œð	FØ—9‘9˜S‘>Ð!øô	 ó 	Ùð	ûô
 ó 	FÜÐ4°sÑ:Ó;ÀÐEð	Fús   ‚A'B Á<B Â
BÂBÂB5c                 óº   • [        U S5      (       d  U R                  5       U l          U [        U R                  5         $ ! [         a     g[
         a     M2  f = f)z0Return the next message in a one-time iteration.Ú_onetime_keysN)r�   rd   r¢  ÚnextÚStopIterationr=   rc   s    r#   r£  ÚMaildir.nexth  sX   € ä�t˜_×-Ñ-Ø!%§¡£ˆDÔØðØœD ×!3Ñ!3Ó4Ñ5Ð5øÜ ó ÙÜó Úðús   ©A Á
AÁ	AÁA)rð   r¢  rë   rñ   rî   rï   rØ   )'rÚ   rÛ   rÜ   rÝ   rÞ   rû   r$   r.   r5   r>   rC   rK   rX   rN   rü   rÅ   r#  r;  rA  rG  rJ  rd   r~   r‚   r—   r›   rŸ   r£   rk  rq  rz  r„  r‰  r“  rö   rN  r  r£  rá   râ   r&   r#   r   r     sÊ   † Ù(à€Eôò((òT?òò&ò6ò4ò
ò
ð% #ô %òð? Cô ?ðK #ô KðO Sô Oòò ò
ò
òòòòò%òòò& ð €Fò'ò0$&òLFõ
r&   r   c                   ó€   • \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rSS jrS rSrg)Ú_singlefileMailboxiu  zA single-file mailbox.Nc                 ó   • [         R                  XX#5         [        U R                  S5      nX@l
        SU l        SU l        SU l        SU l        SU l        SU l        g! [         a¤  nUR
                  [
        R                  :X  a7  U(       a  [        U R                  S5      n SnAN{[        U R                  5      eUR
                  [
        R                  [
        R                  4;   a  [        U R                  S5      n SnANÙe SnAff = f)z!Initialize a single-file mailbox.úrb+zwb+r   Nr   F)r   r$   r!  r   r  r  ÚENOENTr   ÚEACCESÚEROFSÚ_filerî   Ú	_next_keyÚ_pendingÚ_pending_syncÚ_lockedÚ_file_length)r    r   r!   r"   r'  r  s         r#   r$   Ú_singlefileMailbox.__init__x  sÊ   € ä×Ñ˜ WÔ5ð	Ü�T—Z‘Z Ó'ˆAð Œ
ØˆŒ	ØˆŒØˆŒØ"ˆÔØˆŒØ ˆÕøô! ó 		Ø�w‰wœ%Ÿ,™,Ó&ÞÜ˜TŸZ™Z¨Ó/•Aä,¨T¯Z©ZÓ8Ð8Ø—‘œUŸ\™\¬5¯;©;Ð7Ó7Ü˜Ÿ™ TÓ*•àûð		ús$   ˜A Á
DÁ);DÂ)ADÄDÄDc                 óÈ   • U R                  5         U R                  U5      U R                  U R                  '   U =R                  S-  sl        SU l        U R                  S-
  $ )r(   rd  T)r  Ú_append_messagerî   r®  r°  r,   s     r#   r.   Ú_singlefileMailbox.add�  sO   € à�‰ŒØ$(×$8Ñ$8¸Ó$Aˆ�	‰	�$—.‘.Ñ!Ø�Š˜!Ñ�ð "ˆÔØ�~‰~ Ñ!Ð!r&   c                 óN   • U R                  U5        U R                  U	 SU l        g)r2   TN)r  rî   r¯  r3   s     r#   r5   Ú_singlefileMailbox.remove™  s    € à�‰�SÔØ�I‰I�cˆNØˆ�r&   c                 óp   • U R                  U5        U R                  U5      U R                  U'   SU l        g)rA   TN)r  rµ  rî   r¯  rB   s      r#   rC   Ú_singlefileMailbox.__setitem__Ÿ  s-   € à�‰�SÔØ×-Ñ-¨gÓ6ˆ�	‰	�#‰Øˆ�r&   c              #   ót   #   • U R                  5         U R                  R                  5        Sh  v•N   g N7frM  )r  rî   rh   rc   s    r#   rd   Ú_singlefileMailbox.iterkeys¥  s"   é € à�‰ŒØ—9‘9—>‘>Ó#×#Ó#ùs   ‚.8°6±8c                 ó>   • U R                  5         XR                  ;   $ rQ  )r  rî   r3   s     r#   r~   Ú_singlefileMailbox.__contains__ª  s   € à�‰ŒØ—i‘iÑÐr&   c                 óL   • U R                  5         [        U R                  5      $ rT  )r  rU  rî   rc   s    r#   r‚   Ú_singlefileMailbox.__len__¯  s   € à�‰ŒÜ�4—9‘9‹~Ðr&   c                 ó`   • U R                   (       d  [        U R                  5        SU l         gg)rš   TN)r±  Ú
_lock_filer­  rc   s    r#   r›   Ú_singlefileMailbox.lock´  s!   € à�|�|Ü�t—z‘zÔ"ØˆD�Lð r&   c                 ó`   • U R                   (       a  [        U R                  5        SU l         gg©rž   FN)r±  Ú_unlock_filer­  rc   s    r#   rŸ   Ú_singlefileMailbox.unlockº  s!   € à�<�<Ü˜Ÿ™Ô$Ø ˆD�Lð r&   c           	      ód  • U R                   (       d.  U R                  (       a  [        U R                  5        SU l        gU R                  c   eU R                  R                  SS5        U R                  R                  5       nXR                  :w  a  [        SU R                  U4-  5      e[        U R                  5      n 0 nU R                  U5        [        U R                  R                  5       5       HÏ  nU R                  U   u  pVU R                  R                  U5        U R                  U5        UR                  5       n U R                  R                  [!        SX`R                  R                  5       -
  5      5      nU(       d  OUR#                  U5        MZ  XrR                  5       4X4'   U R%                  U5        MÑ     UR                  5       U l        [/        U5        U R                  R'                  5         [(        R0                  " U R                  5      n	[(        R2                  " UR,                  U	R4                  5         [(        R6                  " UR,                  U	R8                  U	R:                  5         [(        R@                  " UR,                  U R                  5        [E        U R                  S5      U l        X0l        SU l         SU l        U RF                  (       a  [I        U R                  SS9  gg!   UR'                  5         [(        R*                  " UR,                  5        e = f! [<        [>        4 a     NÊf = f! [B         aN    [(        R*                  " U R                  5        [(        R@                  " UR,                  U R                  5         Nùf = f)	rX  FNr   r:  z4Size of mailbox file changed (expected %i, found %i)é   r©  )Údotlock)%r¯  r°  Ú_sync_flushr­  rî   r¿   Útellr²  r   Ú_create_temporaryr   Ú_pre_mailbox_hookr?  rh   Ú_pre_message_hookr¯   ÚminrÂ   Ú_post_message_hookr£   r   r5   rø   rù   r”  ÚchmodÚst_modeÚchownÚst_uidÚst_gidr  r  r  r–  r!  r±  rÂ  )
r    Úcur_lenÚnew_fileÚnew_tocr4   ÚstartÚstopÚ	new_startr°   r3  s
             r#   r—   Ú_singlefileMailbox.flushÀ  s¹  € à�}�}Ø×!×!ô ˜DŸJ™JÔ'Ø%*�Ô"Øð
 �y‰yÑ$Ð$Ð$ð 	�
‰
�‰˜˜1ÔØ—*‘*—/‘/Ó#ˆØ×'Ñ'Ó'Ü$ð &?à&*×&7Ñ&7¸Ð%Añ&Bó Cð Cô % T§Z¡ZÓ0ˆð	ØˆGØ×"Ñ" 8Ô,Ü˜dŸi™iŸn™nÓ.Ö/�Ø"Ÿi™i¨™n‘�Ø—
‘
—‘ Ô&Ø×&Ñ& xÔ0Ø$ŸM™M›O�	ØØ!ŸZ™ZŸ_™_¬S°Ø15¿
¹
¿¹Ó8IÑ1Ió.Kó L�Fæ!ØØ—N‘N 6Ô*ñ ð !*¯=©=«?Ð;�‘Ø×'Ñ'¨Ö1ñ 0ð !)§¡£ˆDÔô
 	�HÔà�
‰
×ÑÔä�wŠw�t—z‘zÓ"ˆÜ
�Š�—‘ §¡Ô-ð	Ü�HŠH�X—]‘] D§K¡K°·±Ô=ð	1Ü�IŠI�h—m‘m T§Z¡ZÔ0ô ˜$Ÿ*™* eÓ,ˆŒ
ØŒ	ØˆŒØ"ˆÔØ�<�<Ü�t—z‘z¨5Ó1ð øð/	Ø�N‰NÔÜ�IŠI�h—m‘mÔ$Øûô ¤Ð(ó 	Ùð	ûô ó 	1Ü�IŠI�d—j‘jÔ!Ü�IŠI�h—m‘m T§Z¡ZÖ0ð	1ús2   ÃDL É6M Ê
+M Ì3L>ÍMÍMÍAN/Î.N/c                 ó   • g)ú,Called before writing the mailbox to file f.Nrâ   ©r    r'  s     r#   rÎ  Ú$_singlefileMailbox._pre_mailbox_hook  r\  r&   c                 ó   • g)ú-Called before writing each message to file f.Nrâ   rà  s     r#   rÏ  Ú$_singlefileMailbox._pre_message_hook  r\  r&   c                 ó   • g©ú,Called after writing each message to file f.Nrâ   rà  s     r#   rÑ  Ú%_singlefileMailbox._post_message_hook  r\  r&   c                 óœ  •  U R                  5          U R                  (       a  U R                  5         U R                  R	                  5         g! U R                  R	                  5         f = f!  U R                  (       a  U R                  5         U R                  R	                  5         f ! U R                  R	                  5         f = f= fr`  )r—   r±  rŸ   r­  r£   rc   s    r#   r£   Ú_singlefileMailbox.close  s|   € ð	#Ø�J‰JŒLð#Ø—<—<Ø—K‘K”Mà—
‘
× Ñ Õ"ø�—
‘
× Ñ Õ"ûð	#Ø—<—<Ø—K‘K”Mà—
‘
× Ñ Õ"ø�—
‘
× Ñ Õ"ýs.   ‚A. “!A ÁA+Á.CÁ0!B,ÂCÂ,CÃCc                 óž   • U R                   c  U R                  5         Ub   U R                   U   $ g! [         a    [        SU-  5      Sef = f)z'Return (start, stop) or raise KeyError.NrŸ  )rî   Ú_generate_tocr=   r3   s     r#   r  Ú_singlefileMailbox._lookup  s\   € à�9‰9ÑØ×ÑÔ Ø‰?ðJØ—y‘y ‘~Ð%ð øô ó JÜÐ8¸3Ñ>Ó?ÀTÐIðJús	   ¢2 ²Ac                 óR  • U R                   R                  SS5        U R                   R                  5       n[        U R                  5      S:X  a,  U R
                  (       d  U R                  U R                   5         U R                  U R                   5        U R                  U5      nU R                  U R                   5        U R                   R                  5         U R                   R                  5       U l        U$ ! [         a    U R                   R                  U5        e f = f)z;Append message to mailbox and return (start, stop) offsets.r   r:  )r­  r¿   rÌ  rU  rî   r¯  rÎ  rÏ  Ú_install_messagerÑ  r÷   Útruncater—   r²  )r    r-   ÚbeforeÚoffsetss       r#   rµ  Ú"_singlefileMailbox._append_message%  s×   € à�
‰
�‰˜˜1ÔØ—‘—‘Ó"ˆÜˆt�y‰y‹>˜QÓ t§}§}ð
 ×"Ñ" 4§:¡:Ô.ð	Ø×"Ñ" 4§:¡:Ô.Ø×+Ñ+¨GÓ4ˆGØ×#Ñ# D§J¡JÔ/ð 	�
‰
×ÑÔØ ŸJ™JŸO™OÓ-ˆÔØˆøô ó 	Ø�J‰J×Ñ Ô'Øð	ús   Á=AC? Ã?'D&)r­  r²  r±  r®  r¯  r°  rî   rØ   r8   )rÚ   rÛ   rÜ   rÝ   rÞ   r$   r.   r5   rC   rd   r~   r‚   r›   rŸ   r—   rÎ  rÏ  rÑ  r£   r  rµ  rá   râ   r&   r#   r§  r§  u  sX   † Ù ô!ò."òòò$ò
 ò
ò
 ò!òB2òHòòò	#ôJõr&   r§  c                   óF   • \ rS rSrSrSrS rSS jrSS jrSS jr	S r
S	rg
)Ú	_mboxMMDFi<  zAn mbox or MMDF mailbox.Tc                 óÚ  • U R                  U5      u  p#U R                  R                  U5        U R                  R                  5       R	                  [
        S5      R                  S5      nU R                  R                  X0R                  R                  5       -
  5      nU R                  UR	                  [
        S5      5      nUR                  U5        UR                  USS 5        U$ )rR   r&   r   r¬   r·   N)r  r­  r¿   rÌ   rÀ   rÁ   Údecoder¯   rÌ  Ú_message_factoryÚset_unixfromÚset_from)r    r4   rÚ  rÛ  Ú	from_lineÚstringr(  s          r#   rK   Ú_mboxMMDF.get_messageA  s¬   € à—l‘l 3Ó'‰ˆØ�
‰
�‰˜ÔØ—J‘J×'Ñ'Ó)×1Ñ1´'¸3Ó?×FÑFÀwÓOˆ	Ø—‘—‘ ¯
©
¯©Ó(9Ñ!9Ó:ˆØ×#Ñ# F§N¡N´7¸EÓ$BÓCˆØ×Ñ˜Ô#Ø�‰�Y˜q˜r�]Ô#Øˆ
r&   c                 óf   • [         R                  " U R                  X5      5      R                  US9$ )ú3Return a string representation or raise a KeyError.)ÚunixfromrU   )r    r4   Úfrom_s      r#   rZ   Ú_mboxMMDF.get_stringL  s.   € ä×'Ò'Ø�N‰N˜3Ó&ó(ß(1©	¸5¨	Ð(Að	Br&   c                 ó6  • U R                  U5      u  p4U R                  R                  U5        U(       d  U R                  R                  5         U R                  R	                  X@R                  R                  5       -
  5      nUR                  [        S5      $ )rÿ  r¬   )r  r­  r¿   rÌ   r¯   rÌ  rÀ   rÁ   )r    r4   r  rÚ  rÛ  rü  s         r#   rX   Ú_mboxMMDF.get_bytesQ  sf   € à—l‘l 3Ó'‰ˆØ�
‰
�‰˜ÔÞØ�J‰J×ÑÔ!Ø—‘—‘ ¯
©
¯©Ó(9Ñ!9Ó:ˆØ�~‰~œg uÓ-Ð-r&   c                 óþ   • U R                  U5      u  p4U R                  R                  U5        U(       d  U R                  R                  5         [	        U R                  U R                  R                  5       U5      $ )r_   )r  r­  r¿   rÌ   Ú_PartialFilerÌ  )r    r4   r  rÚ  rÛ  s        r#   rN   Ú_mboxMMDF.get_fileZ  sS   € à—l‘l 3Ó'‰ˆØ�
‰
�‰˜ÔÞØ�J‰J×ÑÔ!Ü˜DŸJ™J¨¯
©
¯©Ó(9¸4Ó@Ð@r&   c                 ó€  • Sn[        U[        5      (       a  U R                  U5      n[        U[        5      (       a?  UR	                  S5      (       a)  UR                  S5      nUS:w  a  USU nXS-   S nOŒUnSnO‡[        U[        5      (       a%  UR                  5       R                  S5      nSU-   nOM[        U[        R                  R                  5      (       a$  UR                  5       nUb  UR                  S5      nUc:  S[        R                  " [        R                  " 5       5      R                  5       -   nU R                   R#                  5       nU R                   R%                  U[&        -   5        U R)                  XR                   U R*                  5        U R                   R#                  5       nXV4$ )	z1Format a message and blindly write to self._file.Nr¶   r¬   rµ   rd  r&   r   s   From MAILER-DAEMON )r¹   rÅ   r©   rÆ   rÍ   ÚfindÚ_mboxMMDFMessageÚget_fromr¦   rV   r-   r
   Úget_unixfromr‡  ÚasctimeÚgmtimer­  rÌ  rÂ   rÁ   rÖ   Ú_mangle_from_)r    r-   rû  ÚnewlineÚauthorrÚ  rÛ  s          r#   rï  Ú_mboxMMDF._install_messageb  sg  € àˆ	Ü�gœs×#Ñ#Ø×+Ñ+¨GÓ4ˆGÜ�gœu×%Ñ%¨'×*<Ñ*<¸X×*FÑ*FØ—l‘l 5Ó)ˆGØ˜"‹}Ø# H WÐ-�	Ø!¨A¡+ ,Ð/‘à#�	Ø‘Ü˜Ô!1×2Ñ2Ø×%Ñ%Ó'×.Ñ.¨wÓ7ˆFØ  6Ñ)‰IÜ˜¤§¡×!6Ñ!6×7Ñ7Ø×,Ñ,Ó.ˆIØÑ$Ø%×,Ñ,¨WÓ5�	ØÑØ.´·²¼d¿kºk»mÓ1L×1SÑ1SÓ1UÑUˆIØ—
‘
—‘Ó!ˆØ�
‰
×Ñ˜¤WÑ,Ô-Ø×Ñ˜7§J¡J°×0BÑ0BÔCØ�z‰z�‰Ó ˆØˆ}Ðr&   râ   NrÙ   )rÚ   rÛ   rÜ   rÝ   rÞ   r  rK   rZ   rX   rN   rï  rá   râ   r&   r#   rõ  rõ  <  s%   † Ù"à€Mò	ôBô
.ôAõr&   rõ  c                   ó6   • \ rS rSrSrSrSrS	S jrS rS r	Sr
g)
r   i  zA classic mbox mailbox.TNc                 óF   • [         U l        [        R                  XX#5        g)zInitialize an mbox mailbox.N)r   rø  rõ  r$   r   s       r#   r$   Úmbox.__init__ˆ  ó   € ä +ˆÔÜ×Ñ˜4 wÕ7r&   c                 ó.   • UR                  [        5        græ  ©rÂ   rÁ   rà  s     r#   rÑ  Úmbox._post_message_hook�  s   € à	�‰”Õr&   c                 ó  • / / p!SnU R                   R                  S5         U R                   R                  5       nU R                   R                  5       nUR	                  S5      (       af  [        U5      [        U5      :  a:  U(       a"  UR                  U[        [        5      -
  5        OUR                  U5        UR                  U5        SnOQU(       d;  U(       a"  UR                  U[        [        5      -
  5        OUR                  U5        OU[        :X  a  SnOSnGM  [        [        [        X5      5      5      U l        [        U R                  5      U l        U R                   R                  5       U l        g)ú0Generate key-to-(start, stop) table of contents.Fr   Tr¶   N)r­  r¿   rÌ  rÌ   rÍ   rU  rh  rÁ   ÚdictÚ	enumerateÚziprî   r®  r²  )r    ÚstartsÚstopsÚlast_was_emptyÚline_posrÕ   s         r#   rì  Úmbox._generate_toc‘  s  € à˜B�ØˆØ�
‰
�‰˜ÔØØ—z‘z—‘Ó(ˆHØ—:‘:×&Ñ&Ó(ˆDØ�‰˜x×(Ñ(Ü�u“:¤ F£Ó+Þ%ØŸ™ X´´G³Ñ%<Õ=ð
 Ÿ™ XÔ.Ø—‘˜hÔ'Ø!&‘ÞÞ!Ø—L‘L ¬C´«LÑ!8Õ9à—L‘L Ô*ØØœ“Ø!%‘à!&�ò/ ô0 œ¤3 vÓ#5Ó6Ó7ˆŒ	Ü˜TŸY™Y›ˆŒØ ŸJ™JŸO™OÓ-ˆÕr&   ©r²  rø  r®  rî   rØ   )rÚ   rÛ   rÜ   rÝ   rÞ   r  rÃ   r$   rÑ  rì  rá   râ   r&   r#   r   r     s    † Ù!à€Mð €Oô8ò
õ.r&   r   c                   ó4   • \ rS rSrSrS	S jrS rS rS rSr	g)
r	   i³  zAn MMDF mailbox.Nc                 óF   • [         U l        [        R                  XX#5        g)zInitialize an MMDF mailbox.N)r   rø  rõ  r$   r   s       r#   r$   ÚMMDF.__init__¶  r  r&   c                 ó4   • UR                  S[        -   5        g)rã  ó   Nr  rà  s     r#   rÏ  ÚMMDF._pre_message_hook»  s   € à	�‰Ð#¤gÑ-Õ.r&   c                 óB   • UR                  [        S-   [        -   5        g)rç  r)  Nr  rà  s     r#   rÑ  ÚMMDF._post_message_hook¿  s   € à	�‰”Ð-Ñ-´Ñ7Õ8r&   c                 ó  • / / p!U R                   R                  S5        Sn UnU R                   R                  5       nU R                   R                  5       nUR	                  S[
        -   5      (       a’  UR                  U5         UnU R                   R                  5       nU R                   R                  5       nUS[
        -   :X  a"  UR                  U[        [
        5      -
  5        O#U(       d  UR                  U5        O
M€  U(       d  OMï  [        [        [        X5      5      5      U l        [        U R                  5      U l        U R                   R                  SS5        U R                   R                  5       U l        g)r  r   r)  r:  N)r­  r¿   rÌ   rÌ  rÍ   rÁ   rh  rU  r  r  r  rî   r®  r²  )r    r  r   Únext_posr"  rÕ   s         r#   rì  ÚMMDF._generate_tocÃ  s)  € à˜B�Ø�
‰
�‰˜ÔØˆØØˆHØ—:‘:×&Ñ&Ó(ˆDØ—z‘z—‘Ó(ˆHØ�‰Ð2´WÑ<×=Ñ=Ø—‘˜hÔ'ØØ'�HØŸ:™:×.Ñ.Ó0�DØ#Ÿz™zŸ™Ó0�HØÐ2´WÑ<Ó<ØŸ™ X´´G³Ñ%<Ô=ØÞ!ØŸ™ XÔ.Øñ ö Øñ# ô$ œ¤3 vÓ#5Ó6Ó7ˆŒ	Ü˜TŸY™Y›ˆŒØ�
‰
�‰˜˜1ÔØ ŸJ™JŸO™OÓ-ˆÕr&   r$  rØ   )
rÚ   rÛ   rÜ   rÝ   rÞ   r$   rÏ  rÑ  rì  rá   râ   r&   r#   r	   r	   ³  s   † Ùô8ò
/ò9õ.r&   r	   c                   ó¦   • \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)r   ià  zAn MH mailbox.Nc                 ó  • [         R                  XX#5        [        R                  R	                  U R
                  5      (       dÂ  U(       a¦  [        R                  " U R
                  S5        [        R                  " [        R                  " [        R                  R                  U R
                  S5      [        R                  [        R                  -  [        R                  -  S5      5        O[        U R
                  5      eSU l        g)zInitialize an MH instance.ré   ú.mh_sequencesi€  FN)r   r$   r   r   rì   r   rí   r£   r!  rê   rw  ÚO_EXCLrx  r   r±  r   s       r#   r$   ÚMH.__init__ã  sŸ   € ä×Ñ˜ WÔ5Ü�w‰w�~‰~˜dŸj™j×)Ñ)ÞÜ—’˜Ÿ™ UÔ+Ü—’œŸš¤§¡§¡¨d¯j©j¸/Ó!JÜ!#§¡¬b¯i©iÑ!7¼"¿+¹+Ñ!EÀuóNõ Oô )¨¯©Ó4Ð4Øˆ�r&   c                 óþ  • U R                  5       n[        U5      S:X  a  SnO[        U5      S-   n[        R                  R                  U R                  [        U5      5      n[        U5      nSn U R                  (       a  [        U5          U R                  X5        [!        U["        5      (       a  U R%                  X5        U R                  (       a  [        U5        U(       d  [        U5        U$ ! [         aA    U R                  (       a  [        U5        [        U5        Sn[        R                  " U5        e f = f! U R                  (       a  [        U5        f f = f! U(       d  [        U5        f f = f)r(   r   rd  FT)rh   rU  Úmaxr   r   rê   r   rÅ   r•  r±  rÂ  rÖ   r÷   rÆ  rù   r5   r¹   r   Ú_dump_sequences)r    r-   rh   Únew_keyr  r'  Úcloseds          r#   r.   ÚMH.addï  s  € à�y‰y‹{ˆÜˆt‹9˜‹>Ø‰Gä˜$“i !‘mˆGÜ—7‘7—<‘< §
¡
¬C°«LÓ9ˆÜ˜hÓ'ˆØˆð	Ø�|�|Ü˜1”ð$ð	Ø×&Ñ& wÔ2ô ˜g¤y×1Ñ1Ø×(Ñ(¨Ô:à—<—<Ü  ”OæÜ˜A”Øˆøô! %ó à—|—|Ü$ QœÜ ”NØ!�FÜ—I’I˜hÔ'Øðûð —<—<Ü  •Oð  ûö Ü˜A•ð ús7   Á2E' ÂC7 Â!&E ÃE' Ã7AEÅE ÅE$Å$E' Å'E<c                 óN  • [         R                  R                  U R                  [	        U5      5      n [        US5      nUR                  5         [         R                  " U5        g! [         a2  nUR                  [        R                  :X  a  [        SU-  5      ee SnAff = f)r2   r©  rŸ  N)r   r   rê   r   rÅ   r!  r£   r5   r  r  rª  r=   )r    r4   r   r'  r  s        r#   r5   Ú	MH.remove  s{   € ä�w‰w�|‰|˜DŸJ™J¬¨C«Ó1ˆð		Ü�T˜5Ó!ˆAð �G‰GŒIÜ�IŠI�d�Oøô ó 	Ø�w‰wœ%Ÿ,™,Ó&ÜÐ8¸3Ñ>Ó?Ð?àûð		ús   µA( Á(
B$Á2-BÂB$c                 óò  • [         R                  R                  U R                  [	        U5      5      n [        US5      n U R                  (       a  [        U5         [         R                  " [         R
                  " U[         R                  [         R                  -  5      5        U R                  X$5        [!        U["        5      (       a  U R%                  X!5        U R                  (       a  ['        U5        [)        U5        g! [         a2  nUR                  [        R                  :X  a  [        SU-  5      ee SnAff = f! U R                  (       a  ['        U5        f f = f! [)        U5        f = f)rA   r©  rŸ  N)r   r   rê   r   rÅ   r!  r  r  rª  r=   r±  rÂ  r£   rx  ÚO_TRUNCrÖ   r¹   r   r7  rÆ  rù   )r    r4   r-   r   r'  r  s         r#   rC   ÚMH.__setitem__  sÿ   € ä�w‰w�|‰|˜DŸJ™J¬¨C«Ó1ˆð	Ü�T˜5Ó!ˆAð	Ø�|�|Ü˜1”ð$Ü—’œŸš ¤r§{¡{´R·Z±ZÑ'?Ó@ÔAØ×"Ñ" 7Ô.Ü˜g¤y×1Ñ1Ø×(Ñ(¨Ô6à—<—<Ü  ”Oä˜�Nøô# ó 	Ø�w‰wœ%Ÿ,™,Ó&ÜÐ8¸3Ñ>Ó?Ð?àûð		ûð —<—<Ü  •Oð  ûô ˜�Nús<   µD ÁE) ÁBE Ã E) Ä
EÄ-D?Ä?EÅE&Å&E) Å)E6c                 ó"  •  U R                   (       a>  [        [        R                  R	                  U R
                  [        U5      5      S5      nO>[        [        R                  R	                  U R
                  [        U5      5      S5      n U   U R                   (       a  [        U5         [        U5      nU R                   (       a  [        U5        SSS5        U R                  5       R                  5        H  u  pVX;   d  M  WR!                  U5        M     W$ ! [         a2  nUR                  [        R                  :X  a  [        SU-  5      ee SnAff = f! U R                   (       a  [        U5        f f = f! , (       d  f       N°= f)rR   r©  r   rŸ  N)r±  r!  r   r   rê   r   rÅ   r  r  rª  r=   rÂ  r   rÆ  Úget_sequencesrz   Úadd_sequence)r    r4   r'  r  r(  rø   Úkey_lists          r#   rK   ÚMH.get_message7  s  € ð		Ø�|�|ÜœŸ™Ÿ™ d§j¡j´#°c³(Ó;¸UÓC‘äœŸ™Ÿ™ d§j¡j´#°c³(Ó;¸TÓB‘ò Ø�|�|Ü˜1”ð$Ü “l�à—<—<Ü  ”O÷ ð #×0Ñ0Ó2×8Ñ8Ö:‰NˆDØ�Ø× Ñ  Ö&ñ ;ð ˆ
øô! ó 	Ø�w‰wœ%Ÿ,™,Ó&ÜÐ8¸3Ñ>Ó?Ð?àûð		ûð —<—<Ü  •Oð  ú÷ �QúsB   ‚AD Á=D ÂF Â/EÂ:F Ä
EÄ)-EÅEÅE=Å=F Æ 
Fc                 óÔ  •  U R                   (       a>  [        [        R                  R	                  U R
                  [        U5      5      S5      nO>[        [        R                  R	                  U R
                  [        U5      5      S5      n U   U R                   (       a  [        U5         UR                  5       R                  [        S5      U R                   (       a  [        U5        sSSS5        $ ! [         a2  nUR                  [        R                  :X  a  [        SU-  5      ee SnAff = f! U R                   (       a  [        U5        f f = f! , (       d  f       g= f)r+  r©  r   rŸ  Nr¬   )r±  r!  r   r   rê   r   rÅ   r  r  rª  r=   rÂ  r¯   rÀ   rÁ   rÆ  ©r    r4   r'  r  s       r#   rX   ÚMH.get_bytesP  së   € ð		Ø�|�|ÜœŸ™Ÿ™ d§j¡j´#°c³(Ó;¸UÓC‘äœŸ™Ÿ™ d§j¡j´#°c³(Ó;¸TÓB‘ò Ø�|�|Ü˜1”ð$Ø—v‘v“x×'Ñ'¬°Ó7à—<—<Ü  ”O÷ ‰Qøô ó 	Ø�w‰wœ%Ÿ,™,Ó&ÜÐ8¸3Ñ>Ó?Ð?àûð		ûð —<—<Ü  •Oð  ú÷ �QúsB   ‚AC8 Á=C8 ÂEÂ/#D7ÃEÃ8
D4Ä-D/Ä/D4Ä7EÅEÅ
E'c                 ó  •  [        [        R                  R                  U R                  [        U5      5      S5      n[        U5      $ ! [         a2  nUR                  [        R                  :X  a  [        SU-  5      ee SnAff = f)r_   r   rŸ  N)r!  r   r   rê   r   rÅ   r  r  rª  r=   r/  rF  s       r#   rN   ÚMH.get_filee  sl   € ð	Ü”R—W‘W—\‘\ $§*¡*¬c°#«hÓ7¸Ó>ˆAô ˜!‹}Ðøô ó 	Ø�w‰wœ%Ÿ,™,Ó&ÜÐ8¸3Ñ>Ó?Ð?àûð		ús   ‚=A
 Á

BÁ-BÂBc                 ót   • [        [        S [        R                  " U R                  5       5       5      5      $ )rb   c              3   óf   #   • U  H'  nUR                  5       (       d  M  [        U5      v •  M)     g 7fr8   )Úisdigitr‘  )Ú.0rj  s     r#   Ú	<genexpr>ÚMH.iterkeys.<locals>.<genexpr>r  s(   é € ð :Ò3I¨%Ø).¯©¯ó &œ3˜uŸ:˜:Ò3Iùs   ‚1Ÿ1)Úiterr?  r   rf  r   rc   s    r#   rd   ÚMH.iterkeysp  s/   € ä”Fñ :´2·:²:¸d¿j¹jÔ3Ió :ó :ó ;ð 	;r&   c                 ó¢   • [         R                  R                  [         R                  R                  U R                  [        U5      5      5      $ rQ  )r   r   rì   rê   r   rÅ   r3   s     r#   r~   ÚMH.__contains__u  s,   € ä�w‰w�~‰~œbŸg™gŸl™l¨4¯:©:´s¸3³xÓ@ÓAÐAr&   c                 óF   • [        [        U R                  5       5      5      $ rT  )rU  rg   rd   rc   s    r#   r‚   Ú
MH.__len__y  s   € ä”4˜Ÿ™›Ó(Ó)Ð)r&   c                 ó  • U(       a  SOSnU(       a  SS0O0 n[         R                  R                  U R                  S5      n  [	        USU-   40 UD6$ ! [
         a     Of = f [	        USU-   40 UD6$ ! [         a     Of = fMD  )Nrõ   ÚbÚencodingÚASCIIr2  zr+zx+)r   r   rê   r   r!  r  r–  )r    ÚtextÚmodeÚkwargsr   s        r#   Ú_open_mh_sequences_fileÚMH._open_mh_sequences_file}  s“   € Þ‰r˜sˆÞ*.�*˜gÑ&°BˆÜ�w‰w�|‰|˜DŸJ™J¨Ó8ˆØðÜ˜D $¨¡+Ñ8°Ñ8Ð8øÜ$ó ÙðúðÜ˜D $¨¡+Ñ8°Ñ8Ð8øÜ"ó Ùðúñ s$   ÁA Á
A"Á!A"Á&A6 Á6
BÂBc                 óˆ   • U R                   (       d1  U R                  SS9U l        [        U R                  5        SU l         gg)rš   F©rZ  TN)r±  r]  r­  rÂ  rc   s    r#   r›   ÚMH.lock‹  s6   € à�|�|Ø×5Ñ5¸5Ð5ÐAˆDŒJÜ�t—z‘zÔ"ØˆD�Lð r&   c                 óŽ   • U R                   (       a4  [        U R                  5        [        U R                  5        U ?SU l         ggrÅ  )r±  rÆ  r­  rù   rc   s    r#   rŸ   Ú	MH.unlock’  s2   € à�<�<Ü˜Ÿ™Ô$Ü˜Ÿ
™
Ô#Ø�
Ø ˆD�Lð	 r&   c                 ó   • g)r–   Nrâ   rc   s    r#   r—   ÚMH.flushš  r\  r&   c                 óH   • U R                   (       a  U R                  5         ggr`  )r±  rŸ   rc   s    r#   r£   ÚMH.closež  s   € à�<�<Ø�K‰K�Mð r&   c                 ó  • / n[         R                  " U R                  5       Hb  n[         R                  R	                  [         R                  R                  U R                  U5      5      (       d  MQ  UR                  U5        Md     U$ )rc  )r   rf  r   r   rg  rê   rh  ri  s      r#   rk  ÚMH.list_folders£  sW   € àˆÜ—Z’Z §
¡
Ö+ˆEÜ�w‰w�}‰}œRŸW™WŸ\™\¨$¯*©*°eÓ<×=Ó=Ø—‘˜eÖ$ñ ,ð ˆr&   c                 ó|   • [        [        R                  R                  U R                  U5      U R
                  SS9$ )z+Return an MH instance for the named folder.Frn  ©r   r   r   rê   r   r   ro  s     r#   rq  ÚMH.get_folder«  s-   € ä”"—'‘'—,‘,˜tŸz™z¨6Ó2ØŸ-™-°ñ7ð 	7r&   c                 óz   • [        [        R                  R                  U R                  U5      U R
                  S9$ )z:Create a folder and return an MH instance representing it.rt  rk  ro  s     r#   rz  ÚMH.add_folder°  s+   € ä”"—'‘'—,‘,˜tŸz™z¨6Ó2ØŸ-™-ñ)ð 	)r&   c                 óf  • [         R                  R                  U R                  U5      n[         R                  " U5      nUS/:X  a5  [         R
                  " [         R                  R                  US5      5        OU/ :X  a  O[        SU R                  -  5      e[         R                  " U5        g)r}  r2  zFolder not empty: %sN)r   r   rê   r   rf  r5   r   r€  )r    rp  r   Úentriess       r#   r„  ÚMH.remove_folderµ  sx   € ä�w‰w�|‰|˜DŸJ™J¨Ó/ˆÜ—*’*˜TÓ"ˆØ�Ð'Ó'Ü�IŠI”b—g‘g—l‘l 4¨Ó9Õ:Ø˜‹]ØäÐ 6¸¿¹Ñ CÓDÐDÜ
�Š��r&   c           
      ó   • 0 n [        [        R                  R                  U R                  S5      SSS9nU   [        U R                  5       5      nU HÚ  n UR                  S5      u  pV[        5       nUR                  5        Hk  nUR                  5       (       a  UR                  [        U5      5        M4  S UR                  S5       5       u  pšUR                  [        XšS-   5      5        Mm     [        U5       Vs/ s H  nX³;   d  M
  UPM     snX'   [        X   5      S	:X  a  X	 MÚ  MÜ     SSS5        U$ ! [
         a    Us $ f = fs  snf ! [          a    [#        S
UR%                  5       -  5      ef = f! , (       d  f       U$ = f)z=Return a name-to-key-list dictionary to define each sequence.r2  ÚrrY  )rX  rä   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr8   )r‘  )rM  Úxs     r#   rN  Ú#MH.get_sequences.<locals>.<genexpr>Ò  s   é € Ð*Kº?°a¬3¨q¯6¨6º?ùs   ‚Ú-rd  r   z"Invalid sequence specification: %sN)r!  r   r   rê   r   r  r@  rh   rþ   rL  r.   r‘  r“   Úranger?  rU  r¨   r   Úrstrip)r    Úresultsr'  Úall_keysrÕ   rø   Úcontentsrh   ÚspecrÚ  rÛ  r4   s               r#   rA  ÚMH.get_sequencesÁ  sa  € àˆð	Ü”R—W‘W—\‘\ $§*¡*¨oÓ>ÀÈgÑVˆAò Ü˜4Ÿ9™9›;Ó'ˆHÛ�ð5Ø%)§Z¡Z°£_‘N�DÜ›5�DØ (§¡Ö 0˜ØŸ<™<Ÿ>™>Ø ŸH™H¤S¨£YÖ/á*K¸4¿:¹:Àc¼?Ó*K™K˜EØ ŸK™K¬¨e¸A±XÓ(>Ö?ñ !1ô 5;¸4´Ló %=²L¨SØ,/©O÷ &)±Lñ %=�G‘Mä˜7™=Ó)¨QÓ.Ø#šMñ /ñ ÷ ð& ˆøô+ !ó 	ØŠNð	üò%=øô "ó 5Ü%Ð&JØ&*§k¡k£mñ'4ó 5ð 5ð5ú÷! ŒQð& ˆúsM   „3D= ¹E>ÁB)EÄ	EÄEÄEÄ-E>Ä=EÅEÅEÅ'E;Å;E>Å>
Fc                 óâ  • U R                  SS9n [        R                  " [        R                  " UR                  [        R
                  [        R                  -  5      5        UR                  5        HÜ  u  p4[        U5      S:X  a  M  UR                  US-   5        SnSn[        [        U5      5       H_  nUS-
  U:X  a  U(       d  SnUR                  S5        O6U(       a  SnUR                  U< S	U< 35        OUR                  S
U-  5        UnMa     U(       a  UR                  [        U5      S-   5        MË  UR                  S5        MÞ     [        U5        g! [        U5        f = f)z:Set sequences using the given name-to-key-list dictionary.Tr`  r   rä   NFrd  rw  Ú z %sÚ
)r]  r   r£   r!  rø   rx  r>  rz   rU  rÂ   r?  r@  rÅ   rù   )r    Ú	sequencesr'  rø   rh   ÚprevÚ
completingr4   s           r#   Úset_sequencesÚMH.set_sequencesÝ  s  € à×(Ñ(¨dÐ(Ð3ˆð	Ü�HŠH”R—W’W˜QŸV™V¤R§[¡[´2·:±:Ñ%=Ó>Ô?Ø'Ÿo™oÖ/‘
�Ü�t“9 “>ÙØ—‘˜˜s™
Ô#Ø�Ø"�
Ü!¤# d£)Ö,�CØ˜Q‘w $“Þ)Ø)-˜JØŸG™G CœLøÞ#Ø%*˜
ØŸ™«4²Ð 5Õ6àŸ™ ¨¡Ô,Ø’Dñ -ö Ø—G‘GœC ›I¨Ñ,Ö-à—G‘G˜D–Mñ) 0ô, ˜�NøŒK˜�Nús   ‘EE! Å!E.c                 ó   • U R                  5       nSn/ nU R                  5        Hê  nUS-
  U:w  aÙ  UR                  XBS-   45         [        R                  " [        R
                  R                  U R                  [        U5      5      [        R
                  R                  U R                  [        US-   5      5      5        [        R                  " [        R
                  R                  U R                  [        U5      5      5        US-  nMì     US-   U l        [        U5      S:X  a  gUR                  5        H*  u  pVU H  u  pxXv;   d  M  X†UR!                  U5      '   M!     M,     U R#                  U5        g! [        [        4 a€    [        R                  " [        R
                  R                  U R                  [        U5      5      [        R
                  R                  U R                  [        US-   5      5      5         GNf = f)z?Re-name messages to eliminate numbering gaps. Invalidates keys.r   rd  N)rA  rd   rh  r   r  r   rê   r   rÅ   Úunlinkr  r  r  r®  rU  rz   Úindexr…  )	r    r‚  rƒ  Úchangesr4   rø   rC  Úoldrç   s	            r#   ÚpackÚMH.packú  s|  € à×&Ñ&Ó(ˆ	ØˆØˆØ—=‘=–?ˆCØ�Q‰w˜$‹Ø—‘ ¨A¡X˜Ô/ðBÜ—G’GœBŸG™GŸL™L¨¯©´S¸³XÓ>ÜŸG™GŸL™L¨¯©´S¸À¹³]ÓCôEô —I’IœbŸg™gŸl™l¨4¯:©:´s¸3³xÓ@ÔAØ�A‰IŠDñ #ð  ™ˆŒÜˆw‹<˜1ÓØØ'Ÿo™oÖ/‰NˆDÛ#‘�Ø•?Ø47˜XŸ^™^¨CÓ0Ó1ó $ñ 0ð 	×Ñ˜9Õ%øô '¬Ð8ó GÜ—I’IœbŸg™gŸl™l¨4¯:©:´s¸3³xÓ@Ü Ÿg™gŸl™l¨4¯:©:´s¸4À!¹8³}ÓE÷GðGús   ÁA<E=Å=BHÈHc                 ó"  • UR                  5       nU R                  5       nUR                  5        H5  u  pVXS;   a  UR                  U5        M  X&;   d  M$  XfR                  U5      	 M7     U H  nXt;  d  M
  U/XG'   M     U R	                  U5        g)z;Inspect a new MHMessage and update sequences appropriately.N)rA  rz   rh  r‰  r…  )r    r-   r4   Úpending_sequencesÚall_sequencesrø   rC  Úsequences           r#   r7  ÚMH._dump_sequences  s†   € à#×1Ñ1Ó3ÐØ×*Ñ*Ó,ˆØ+×1Ñ1Ö3‰NˆDØÓ(Ø—‘ Ö$Ø•ØŸ^™^¨CÓ0Ò1ñ	 4ó
 *ˆHØÕ,Ø+.¨%�Ó'ñ *ð 	×Ñ˜=Õ)r&   )r­  r±  r®  rØ   )rÚ   rÛ   rÜ   rÝ   rÞ   r$   r.   r5   rC   rK   rX   rN   rd   r~   r‚   r]  r›   rŸ   r—   r£   rk  rq  rz  r„  rA  r…  rŒ  r7  rá   râ   r&   r#   r   r   à  sz   † Ùô
ò òDòò0ò2$ò*	ò;ò
Bò*òò ò!òòò
ò7ò
)ò

òò8ò:&õ4*r&   r   c                   ó~   • \ rS rSrSr\" 1 Sk5      rSS jrS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rSrg)r   i#  zAn Rmail-style Babyl mailbox.>   ÚfiledÚeditedÚresentÚunseenÚdeletedÚansweredÚ	forwardedNc                 ó>   • [         R                  XX#5        0 U l        g)zInitialize a Babyl mailbox.N)r§  r$   Ú_labelsr   s       r#   r$   ÚBabyl.__init__)  s   € ä×#Ñ# D°Ô@Øˆ�r&   c                 ó”   • [         R                  X5      n[        U[        5      (       a  UR	                  5       U R
                  U'   U$ )r(   )r§  r.   r¹   r   Ú
get_labelsrœ  )r    r-   r4   s      r#   r.   Ú	Babyl.add.  s;   € ä ×$Ñ$ TÓ3ˆÜ�gœ|×,Ñ,Ø '× 2Ñ 2Ó 4ˆD�L‰L˜ÑØˆ
r&   c                 óh   • [         R                  X5        XR                  ;   a  U R                  U	 ggr  )r§  r5   rœ  r3   s     r#   r5   ÚBabyl.remove5  s+   € ä×!Ñ! $Ô,Ø—,‘,ÓØ—‘˜SÑ!ð r&   c                 ó–   • [         R                  XU5        [        U[        5      (       a  UR	                  5       U R
                  U'   gg)rA   N)r§  rC   r¹   r   rŸ  rœ  rB   s      r#   rC   ÚBabyl.__setitem__;  s;   € ä×&Ñ& t°'Ô:Ü�gœ|×,Ñ,Ø '× 2Ñ 2Ó 4ˆD�L‰L˜Òð -r&   c                 óº  • U R                  U5      u  p#U R                  R                  U5        U R                  R                  5         [        R
                  " 5       n U R                  R                  5       nUS[        -   :X  d  U(       d  O'UR                  UR                  [        S5      5        MV  [        R
                  " 5       n U R                  R                  5       nU[        :X  d  U(       d  O'UR                  UR                  [        S5      5        MS  X0R                  R                  5       -
  nUS:¼  d   eU R                  R                  U5      nUR                  [        S5      n[        UR                  5       U-   5      n	U	R                  UR                  5       5        XR                  ;   a  U	R                  U R                  U   5        U	$ )rR   ó   *** EOOH ***r¬   r   )r  r­  r¿   rÌ   rº   r»   rÁ   rÂ   rÀ   rÌ  r¯   r   rË   Úset_visiblerœ  Ú
set_labels)
r    r4   rÚ  rÛ  Úoriginal_headersrÕ   Úvisible_headersÚnÚbodyr(  s
             r#   rK   ÚBabyl.get_messageA  sc  € à—l‘l 3Ó'‰ˆØ�
‰
�‰˜ÔØ�
‰
×ÑÔÜŸ:š:›<ÐØØ—:‘:×&Ñ&Ó(ˆDØ�¬Ñ0Ó0¾ØØ×"Ñ" 4§<¡<´¸Ó#?Ô@ñ	 ô
 Ÿ*š*›,ˆØØ—:‘:×&Ñ&Ó(ˆDØ”w‹¦dØØ×!Ñ! $§,¡,¬w¸Ó">Ô?ñ	 ð —:‘:—?‘?Ó$Ñ$ˆØ�A‹vˆˆvØ�z‰z�‰˜qÓ!ˆØ�|‰|œG UÓ+ˆÜÐ+×4Ñ4Ó6¸Ñ=Ó>ˆØ�‰˜×0Ñ0Ó2Ô3Ø—,‘,ÓØ�N‰N˜4Ÿ<™<¨Ñ,Ô-Øˆ
r&   c                 óš  • U R                  U5      u  p#U R                  R                  U5        U R                  R                  5         [        R
                  " 5       n U R                  R                  5       nUS[        -   :X  d  U(       d  O'UR                  UR                  [        S5      5        MV   U R                  R                  5       nU[        :X  d  U(       d  OM.  UR                  5       nX0R                  R                  5       -
  nUS:¼  d   eU R                  R                  U5      nUR                  [        S5      nXh-   $ )rÿ  r¦  r¬   r   )r  r­  r¿   rÌ   rº   r»   rÁ   rÂ   rÀ   rË   rÌ  r¯   )	r    r4   rÚ  rÛ  r©  rÕ   Úheadersr«  rÓ   s	            r#   rX   ÚBabyl.get_bytes]  s  € à—l‘l 3Ó'‰ˆØ�
‰
�‰˜ÔØ�
‰
×ÑÔÜŸ:š:›<ÐØØ—:‘:×&Ñ&Ó(ˆDØ�¬Ñ0Ó0¾ØØ×"Ñ" 4§<¡<´¸Ó#?Ô@ñ	 ð
 Ø—:‘:×&Ñ&Ó(ˆDØ”w‹¦dØñ ð #×+Ñ+Ó-ˆØ—:‘:—?‘?Ó$Ñ$ˆØ�A‹vˆˆvØ�z‰z�‰˜qÓ!ˆØ�|‰|œG UÓ+ˆØ‰~Ðr&   c                 ót   • [         R                  " U R                  U5      R                  S[        5      5      $ )r_   r¬   )rº   r»   rX   rÀ   rÁ   r3   s     r#   rN   ÚBabyl.get_files  s'   € ä�zŠz˜$Ÿ.™.¨Ó-×5Ñ5°e¼WÓEÓFÐFr&   c                 óæ   • U R                  5         [        5       nU R                  R                  5        H  nUR	                  U5        M     UR                  U R                  5        [        U5      $ )z4Return a list of user-defined labels in the mailbox.)r  r@  rœ  rt   r“   Údifference_updateÚ_special_labelsrg   )r    ÚlabelsÚ
label_lists      r#   rŸ  ÚBabyl.get_labelsw  sS   € à�‰ŒÜ“ˆØŸ,™,×-Ñ-Ö/ˆJØ�M‰M˜*Ö%ñ 0à× Ñ  ×!5Ñ!5Ô6Ü�F‹|Ðr&   c                 óf  • / / p!U R                   R                  S5        Sn/ n UnU R                   R                  5       nU R                   R                  5       nUS[        -   :X  a½  [        U5      [        U5      :  a!  UR                  U[        [        5      -
  5        UR                  U5        U R                   R                  5       SS R                  S5       Vs/ s H*  nUR                  5       (       d  M  UR                  5       PM,     nnUR                  U5        OvUS:X  d  US[        -   :X  a:  [        U5      [        U5      :  a!  UR                  U[        [        5      -
  5        O)U(       d"  UR                  U[        [        5      -
  5        OGMy  [        [        [        X5      5      5      U l        [        [        U5      5      U l        [        U R                  5      U l        U R                   R                  SS5        U R                   R                  5       U l        gs  snf )r  r   s   rd  Nó   ,ó   r:  )r­  r¿   rÌ   rÌ  rÁ   rU  rh  rþ   Ústripr  r  r  rî   rœ  r®  r²  )	r    r  r   r.  Úlabel_listsr"  rÕ   Úlabelr¶  s	            r#   rì  ÚBabyl._generate_toc€  s©  € à˜B�Ø�
‰
�‰˜ÔØˆØˆØØˆHØ—:‘:×&Ñ&Ó(ˆDØ—z‘z—‘Ó(ˆHØ�{¤WÑ,Ó,Ü�u“:¤ F£Ó+Ø—L‘L ¬C´«LÑ!8Ô9Ø—‘˜hÔ'à+/¯:©:×+>Ñ+>Ó+@ÀÀÐ+D×+JÑ+JÈ4Ô+Pó:Ú+Pð -2à+0¯;©;¯=ó (˜%Ÿ+™+ž-Ù+Pð ð :ð ×"Ñ" 6Õ*Ø˜“ D¨G´gÑ,=Ó$=Ü�u“:¤ F£Ó+Ø—L‘L ¬C´«LÑ!8Ô9øÞØ—‘˜X¬¬G«Ñ4Ô5Øò# ô$ œ¤3 vÓ#5Ó6Ó7ˆŒ	ÜœI kÓ2Ó3ˆŒÜ˜TŸY™Y›ˆŒØ�
‰
�‰˜˜1ÔØ ŸJ™JŸO™OÓ-ˆÕùò:s   ÃH.Ã<H.c                 óÈ   • S[         -   nUS[         -   -  nU R                  5       nS U 5       nUSSR                  U5      -   [         -   -  nUS-  nUR                  U5        g)rß  s   BABYL OPTIONS:s
   Version: 5c              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr8   )r¦   )rM  r¾  s     r#   rN  Ú*Babyl._pre_mailbox_hook.<locals>.<genexpr>£  s   é € Ð5ªf U—,‘,—.�.ªfùs   ‚s   Labels:rº  r»  N)rÁ   rŸ  rê   rÂ   )r    r'  Úbabylr¶  s       r#   rÎ  ÚBabyl._pre_mailbox_hookž  sc   € à!¤GÑ+ˆØ�¤Ñ(Ñ(ˆØ—‘Ó"ˆÙ5©fÓ5ˆØ�˜dŸi™i¨Ó/Ñ/´'Ñ9Ñ9ˆØ�ÑˆØ	�‰��r&   c                 ó4   • UR                  S[        -   5        g)rã  ó   Nr  rà  s     r#   rÏ  ÚBabyl._pre_message_hook¨  s   € à	�‰�œ'Ñ!Õ"r&   c                 ó4   • UR                  [        S-   5        g)rç  r»  Nr  rà  s     r#   rÑ  ÚBabyl._post_message_hook¬  s   € à	�‰”˜'Ñ!Õ"r&   c                 ó  • U R                   R                  5       n[        U[        5      (       Ga  / n/ nUR	                  5        H6  nXPR
                  ;   a  UR                  U5        M%  UR                  U5        M8     U R                   R                  S5        U H/  nU R                   R                  SUR                  5       -   5        M1     U R                   R                  S5        U H2  nU R                   R                  SUR                  5       -   S-   5        M4     U R                   R                  [        5        O"U R                   R                  S[        -   5        [        U[        R                  R                  5      (       Ga1  [        R                  " 5       n[        R                  R!                  USS5      nUR#                  U5        UR%                  S5         UR'                  5       nU R                   R                  UR)                  S
[        5      5        US
:X  d  U(       d  OMO  U R                   R                  S[        -   5        [        U[        5      (       a¥  [        R                  " 5       n	[        R                  R!                  U	SS5      n
U
R#                  UR+                  5       5         U	R'                  5       nU R                   R                  UR)                  S
[        5      5        US
:X  d  U(       d  OcMO  UR%                  S5         UR'                  5       nU R                   R                  UR)                  S
[        5      5        US
:X  d  U(       d  OMO   UR-                  S5      nU(       d  GOÙU R                   R                  UR)                  S
[        5      5        MK  [        U[.        [0        [        R2                  45      (       Ga¡  [        U[        R2                  5      (       a,  [4        R6                  " S[8        S5        UR;                  5       n[        U[0        5      (       a  U R=                  U5      nUR?                  S5      S-   nUS-
  S:w  a¹  U R                   R                  USU R)                  S
[        5      5        U R                   R                  S[        -   5        U R                   R                  USU R)                  S
[        5      5        U R                   R                  XS R)                  S
[        5      5        GO6U R                   R                  S[        -   [        -   5        U R                   R                  UR)                  S
[        5      5        GOÜ[A        US5      (       Ga³  [A        US5      (       a(  [4        R6                  " S[8        S5        URB                  nUR                  5       nS	n UR'                  5       nURE                  S5      (       a	  USS S
-   nOURE                  S5      (       a  USS S
-   nU R                   R                  UR)                  S
[        5      5        US
:X  d  U(       d>  U(       a6  SnU R                   R                  S[        -   5        UR%                  U5        OOMÉ   UR'                  5       nU(       d  OœURE                  S5      (       a  USS [        -   nOEURE                  S5      (       a  USS [        -   nO"URE                  S
5      (       a  USS [        -   nU R                   R                  U5        M�  [G        S[I        U5      -  5      eU R                   R                  5       nX/4$ )z0Write message contents and return (start, stop).ó   1s   , s   ,,ó    rº  s   1,,Fr   Tr¬   r¦  rÉ  r­   r®   s   

r:  rµ   NrÌ   r°   r±   r²   r³   r´   r¸   )%r­  rÌ  r¹   r   rŸ  rµ  rh  rÂ   r¦   rÁ   rV   r-   r
   rº   r»   r¼   r½   r¾   r¿   rÌ   rÀ   Úget_visibler¯   rÆ   rÅ   rÇ   rÈ   rÉ   rÊ   rË   r©   r	  r�   r°   rÄ   rÎ   rÏ   )r    r-   rÚ  Úspecial_labelsr¶  r¾  Úorig_bufferÚorig_generatorrÕ   Ú
vis_bufferÚvis_generatorr°   Ú
body_startÚoriginal_posÚ
first_passrÛ  s                   r#   rï  ÚBabyl._install_message°  sÀ  € à—
‘
—‘Ó!ˆÜ�gœ|×,Ò,ØˆNØˆFØ ×+Ñ+Ö-�Ø×0Ñ0Ó0Ø"×)Ñ)¨%Ö0à—M‘M %Ö(ñ	 .ð
 �J‰J×Ñ˜TÔ"Û'�Ø—
‘
× Ñ  ¨¯©«Ñ!7Ö8ñ (à�J‰J×Ñ˜UÔ#Û�Ø—
‘
× Ñ  ¨¯©«Ñ!6¸Ñ!=Ö>ñ  à�J‰J×ÑœWÕ%à�J‰J×Ñ˜V¤gÑ-Ô.Ü�gœuŸ}™}×4Ñ4×5Ò5ÜŸ*š*›,ˆKÜ"Ÿ_™_×;Ñ;¸KÈÐPQÓRˆNØ×"Ñ" 7Ô+Ø×Ñ˜QÔØØ"×+Ñ+Ó-�Ø—
‘
× Ñ  §¡¨e´WÓ!=Ô>Ø˜5“=®Øñ	 ð
 �J‰J×Ñ˜_¬wÑ6Ô7Ü˜'¤<×0Ñ0ÜŸZšZ›\�
Ü %§¡× >Ñ >¸zÈ5ÐRSÓ T�Ø×%Ñ% g×&9Ñ&9Ó&;Ô<ØØ%×.Ñ.Ó0�DØ—J‘J×$Ñ$ T§\¡\°%¼Ó%AÔBØ˜u“}®DØñ	 ð × Ñ  Ô#ØØ&×/Ñ/Ó1�DØ—J‘J×$Ñ$ T§\¡\°%¼Ó%AÔBØ˜u“}®DØñ	 ð
 Ø$×)Ñ)¨$Ó/�ÞÙØ—
‘
× Ñ  §¡°´wÓ!?Ô@ñ	 ô
 ˜¤%¬¬b¯k©kÐ!:×;Ò;Ü˜'¤2§;¡;×/Ñ/Ü—’ð *Ü+=¸qôBà!×*Ñ*Ó,�Ü˜'¤3×'Ñ'Ø×/Ñ/°Ó8�Ø Ÿ™ gÓ.°Ñ2ˆJØ˜A‰~ Ó#Ø—
‘
× Ñ  ¨¨*Ð!5×!=Ñ!=¸eÄWÓ!MÔNØ—
‘
× Ñ  ´7Ñ!:Ô;Ø—
‘
× Ñ  ¨¨*Ð!5×!=Ñ!=¸eÄWÓ!MÔNØ—
‘
× Ñ  ¨Ð!5×!=Ñ!=¸eÄWÓ!MÖNà—
‘
× Ñ  ´7Ñ!:¼WÑ!DÔEØ—
‘
× Ñ  §¡°¼Ó!@ÖAÜ�W˜j×)Ò)Ü�w ×)Ñ)Ü—’ð 5Ü6HÈ!ôMà!Ÿ.™.�Ø"Ÿ<™<›>ˆLØˆJØØ×'Ñ'Ó)�à—=‘= ×)Ñ)Ø  ˜9 uÑ,‘DØ—]‘] 5×)Ñ)Ø  ˜9 uÑ,�DØ—
‘
× Ñ  §¡¨e´WÓ!=Ô>Ø˜5“=®Þ!Ø%*˜
ØŸ
™
×(Ñ(¨¼7Ñ)BÔCØŸ™ \Õ2àñ ð Ø×'Ñ'Ó)�ÞØà—=‘= ×)Ñ)Ø  ˜9¤wÑ.‘DØ—]‘] 5×)Ñ)Ø  ˜9¤wÑ.‘DØ—]‘] 5×)Ñ)Ø  ˜9¤wÑ.�DØ—
‘
× Ñ  Ô&ñ ô Ð6¼¸g»ÑFÓGÐGØ�z‰z�‰Ó ˆØˆ}Ðr&   )r²  rœ  r®  rî   rØ   )rÚ   rÛ   rÜ   rÝ   rÞ   Ú	frozensetrµ  r$   r.   r5   rC   rK   rX   rN   rŸ  rì  rÎ  rÏ  rÑ  rï  rá   râ   r&   r#   r   r   #  sY   † Ù'áò !Bó C€Oôò
ò"ò5òò8ò,Gòò.ò<ò#ò#õir&   r   c                   ó.   • \ rS rSrSrSS jrS rS rSrg)	r
   i  z0Message with mailbox-format-specific properties.Nc                 óZ  • [        U[        R                  R                  5      (       aM  U R	                  [
        R                  " U5      5        [        U[        5      (       a  UR                  U 5        gg[        U[        5      (       a&  U R	                  [        R                  " U5      5        g[        U[        5      (       a&  U R	                  [        R                  " U5      5        g[        U[        R                  5      (       a&  U R	                  [        R                  " U5      5        g[        US5      (       a&  U R	                  [        R                   " U5      5        gUc*  [        R                  R                  R#                  U 5        g[%        S['        U5      -  5      e)zInitialize a Message instance.r¯   Nr¸   )r¹   rV   r-   r
   Ú_become_messageÚcopyÚdeepcopyÚ_explain_torÆ   rW   rÅ   Úmessage_from_stringrº   ÚTextIOWrapperÚmessage_from_filer�   Úmessage_from_binary_filer$   rÎ   rÏ   r,   s     r#   r$   ÚMessage.__init__  s   € ä�gœuŸ}™}×4Ñ4×5Ñ5Ø× Ñ ¤§¢¨wÓ!7Ô8Ü˜'¤7×+Ñ+Ø×#Ñ# DÕ)ð ,ä˜¤×'Ñ'Ø× Ñ ¤×!9Ò!9¸'Ó!BÕCÜ˜¤×%Ñ%Ø× Ñ ¤×!:Ò!:¸7Ó!CÕDÜ˜¤×!1Ñ!1×2Ñ2Ø× Ñ ¤×!8Ò!8¸Ó!AÕBÜ�W˜f×%Ñ%Ø× Ñ ¤×!?Ò!?ÀÓ!HÕIØ‰_Ü�M‰M×!Ñ!×*Ñ*¨4Õ0äÐ6¼¸g»ÑFÓGÐGr&   c                 óŠ   • [        US/ 5      nUR                   H&  nX2;  d  M
  UR                  U   U R                  U'   M(     g)z0Assume the non-format-specific state of message.Ú_type_specific_attributesN)ÚgetattrÚ__dict__)r    r-   Útype_specificrø   s       r#   rÚ  ÚMessage._become_message2  s@   € ä Ð)DÀbÓIˆØ×$Ô$ˆDØÕ(Ø&-×&6Ñ&6°tÑ&<�—‘˜dÓ#ò %r&   c                 óD   • [        U[        5      (       a  g[        S5      e)z:Copy format-specific state to message insofar as possible.Nz Cannot convert to specified type)r¹   r
   rÎ   r,   s     r#   rÝ  ÚMessage._explain_to9  s   € ä�gœw×'Ñ'ØäÐ>Ó?Ð?r&   râ   r8   )	rÚ   rÛ   rÜ   rÝ   rÞ   r$   rÚ  rÝ  rá   râ   r&   r#   r
   r
     s   † Ù:ôHò&=õ@r&   r
   c                   ól   • \ rS rSrSr/ SQrSS jrS rS rS r	S	 r
S
 rS rS rS rS rS rS rSrg)r   iA  z)Message with Maildir-specific properties.)Ú_subdirÚ_infoÚ_dateNc                 ó~   • SU l         SU l        [        R                  " 5       U l        [        R                  X5        g)z%Initialize a MaildirMessage instance.rç   rõ   N)rì  rí  r‡  rî  r
   r$   r,   s     r#   r$   ÚMaildirMessage.__init__F  s+   € àˆŒØˆŒ
Ü—Y’Y“[ˆŒ
Ü×Ñ˜Õ'r&   c                 ó   • U R                   $ )zReturn 'new' or 'cur'.)rì  rc   s    r#   rú   ÚMaildirMessage.get_subdirM  s   € à�|‰|Ðr&   c                 óD   • US:X  d  US:X  a  Xl         g[        SU-  5      e)zSet subdir to 'new' or 'cur'.rç   rè   z!subdir must be 'new' or 'cur': %sN)rì  r¨   )r    r
  s     r#   r"  ÚMaildirMessage.set_subdirQ  s%   € à�U‹?˜f¨›oØ!�LäÐ@À6ÑIÓJÐJr&   c                 ób   • U R                   R                  S5      (       a  U R                   SS $ g)ú*Return as a string the flags that are set.r9  r:  Nrõ   )rí  rÍ   rc   s    r#   r;  ÚMaildirMessage.get_flagsX  s*   € à�:‰:× Ñ  ×&Ñ&Ø—:‘:˜a˜b�>Ð!àr&   c                 óH   • SSR                  [        U5      5      -   U l        g)ú)Set the given flags and unset all others.r9  rõ   N)rê   r?  rí  )r    r=  s     r#   rA  ÚMaildirMessage.set_flags_  s   € à˜BŸG™G¤F¨5£MÓ2Ñ2ˆ�
r&   c                 óŠ   • U R                  SR                  [        U R                  5       5      [        U5      -  5      5        g©z.Set the given flag(s) without changing others.rõ   N©rA  rê   r@  r;  ©r    rC  s     r#   rG  ÚMaildirMessage.add_flagc  ó,   € à�‰�r—w‘wœs 4§>¡>Ó#3Ó4´s¸4³yÑ@ÓAÕBr&   c                 ó¶   • U R                  5       (       aD  U R                  SR                  [        U R                  5       5      [        U5      -
  5      5        gg)ú7Unset the given string flag(s) without changing others.rõ   N)r;  rA  rê   r@  rþ  s     r#   rJ  ÚMaildirMessage.remove_flagg  s>   € à�>‰>×ÑØ�N‰N˜2Ÿ7™7¤3 t§~¡~Ó'7Ó#8¼3¸t»9Ñ#DÓEÕFð r&   c                 ó   • U R                   $ )z<Return delivery date of message, in seconds since the epoch.)rî  rc   s    r#   r  ÚMaildirMessage.get_datel  ó   € à�z‰zÐr&   c                 ó`   •  [        U5      U l        g! [         a    [        SU-  5      Sef = f)z9Set delivery date of message, in seconds since the epoch.zcan't convert to float: %sN)Úfloatrî  r¨   rÎ   )r    Údates     r#   r$  ÚMaildirMessage.set_datep  s7   € ð	KÜ˜t›ˆD�JøÜó 	KÜÐ8¸4Ñ?Ó@ÀdÐJð	Kús   ‚ “-c                 ó   • U R                   $ )z%Get the message's "info" as a string.)rí  rc   s    r#   rü   ÚMaildirMessage.get_infow  r  r&   c                 óh   • [        U[        5      (       a  Xl        g[        S[	        U5      -  5      e)z Set the message's "info" string.zinfo must be a string: %sN)r¹   rÅ   rí  rÎ   rÏ   )r    r3  s     r#   r#  ÚMaildirMessage.set_info{  s)   € ä�dœC× Ñ Ø�JäÐ7¼$¸t»*ÑDÓEÐEr&   c                 ó  • [        U[        5      (       a^  UR                  U R                  5       5        UR	                  U R                  5       5        UR                  U R                  5       5        g[        U[        5      (       aÏ  [        U R                  5       5      nSU;   a  UR                  S5        U R                  5       S:X  a  UR                  S5        SU;   a  UR                  S5        SU;   a  UR                  S5        SU;   a  UR                  S5        UR                  S	[        R                  " U R                  5       5      5        g[        U[        5      (       a`  [        U R                  5       5      nSU;  a  UR                  S
5        SU;   a  UR                  S5        SU;   a  UR                  S5        gg[        U[         5      (       aw  [        U R                  5       5      nSU;  a  UR#                  S
5        SU;   a  UR#                  S5        SU;   a  UR#                  S5        SU;   a  UR#                  S5        gg[        U[$        5      (       a  g['        S[)        U5      -  5      e)z;Copy Maildir-specific state to message insofar as possible.ÚSÚRrè   ÚOÚTÚDÚFÚAúMAILER-DAEMONr—  ÚrepliedÚflaggedr˜  r™  r�  rš  ú$Cannot convert to specified type: %sN)r¹   r   rA  r;  r"  rú   r$  r  r
  r@  rG  rú  r‡  r  r   rB  r   Ú	add_labelr
   rÎ   rÏ   )r    r-   r=  s      r#   rÝ  ÚMaildirMessage._explain_to‚  s  € ä�gœ~×.Ñ.Ø×Ñ˜dŸn™nÓ.Ô/Ø×Ñ˜tŸ™Ó0Ô1Ø×Ñ˜TŸ]™]›_Õ-Ü˜Ô!1×2Ñ2Ü˜Ÿ™Ó(Ó)ˆEØ�e‹|Ø× Ñ  Ô%Ø�‰Ó  EÓ)Ø× Ñ  Ô%Ø�e‹|Ø× Ñ  Ô%Ø�e‹|Ø× Ñ  Ô%Ø�e‹|Ø× Ñ  Ô%Ø×Ñ˜_¬d¯kªk¸$¿-¹-»/Ó.JÕKÜ˜¤×+Ñ+Ü˜Ÿ™Ó(Ó)ˆEØ˜%ÓØ×$Ñ$ XÔ.Ø�e‹|Ø×$Ñ$ YÔ/Ø�e‹|Ø×$Ñ$ YÕ/ð ä˜¤×.Ñ.Ü˜Ÿ™Ó(Ó)ˆEØ˜%ÓØ×!Ñ! (Ô+Ø�e‹|Ø×!Ñ! )Ô,Ø�e‹|Ø×!Ñ! *Ô-Ø�e‹|Ø×!Ñ! +Õ.ð ä˜¤×)Ñ)ØäÐBÜ  ›Mñ*ó +ð +r&   )rî  rí  rì  r8   )rÚ   rÛ   rÜ   rÝ   rÞ   rä  r$   rú   r"  r;  rA  rG  rJ  r  r$  rü   r#  rÝ  rá   râ   r&   r#   r   r   A  sL   † Ù3â =Ðô(òòKòò3òCòGò
òKòòFõ)+r&   r   c                   óV   • \ rS rSrSrS/rSS jrS rSS jrS r	S	 r
S
 rS rS rSrg)r
  i®  z/Message with mbox- or MMDF-specific properties.Ú_fromNc                 ó  • U R                  SS5        [        U[        R                  R                  5      (       a=  UR                  5       nUb*  UR                  S5      (       a  U R                  USS 5        [        R                  X5        g)z'Initialize an mboxMMDFMessage instance.r  TNzFrom r·   )rú  r¹   rV   r-   r
   r  rÍ   r$   )r    r-   r   s      r#   r$   Ú_mboxMMDFMessage.__init__³  sk   € à�‰�o tÔ,Ü�gœuŸ}™}×4Ñ4×5Ñ5Ø×+Ñ+Ó-ˆHØÑ#¨×(;Ñ(;¸G×(DÑ(DØ—‘˜h q r˜lÔ+Ü×Ñ˜Õ'r&   c                 ó   • U R                   $ )z Return contents of "From " line.©r  rc   s    r#   r  Ú_mboxMMDFMessage.get_from¼  r  r&   c                 ó‚   • Ub6  USL a  [         R                  " 5       nUS[         R                  " U5      -   -  nXl        g)z>Set "From " line, formatting and appending time_ if specified.NTr€  )r‡  r  r  r  )r    r  Útime_s      r#   rú  Ú_mboxMMDFMessage.set_fromÀ  s7   € àÑØ˜Š}ÜŸš›�Ø�Sœ4Ÿ<š<¨Ó.Ñ.Ñ.ˆEØ�
r&   c                 óL   • U R                  SS5      U R                  SS5      -   $ )rö  ÚStatusrõ   úX-Status)rH   rc   s    r#   r;  Ú_mboxMMDFMessage.get_flagsÈ  s#   € à�x‰x˜ "Ó%¨¯©°¸RÓ(@Ñ@Ð@r&   c                 óÄ  • [        U5      nSu  p#S H  nXA;   d  M
  X$-  nUR                  U5        M!     S H  nXA;   d  M
  X4-  nUR                  U5        M!     USR                  [        U5      5      -  n U R	                  SU5         U R	                  SU5        g! [
         a    U R                  SU5         N2f = f! [
         a    U R                  SU5         gf = f)rù  )rõ   rõ   )r  r  )r  r  r  rõ   r(  r)  N)r@  r5   rê   r?  Úreplace_headerr=   Ú
add_header)r    r=  Ústatus_flagsÚxstatus_flagsrC  s        r#   rA  Ú_mboxMMDFMessage.set_flagsÌ  sÛ   € ä�E“
ˆØ&,Ñ#ˆÛˆDØ�}ØÑ$�Ø—‘˜TÖ"ñ ó $ˆDØ�}ØÑ%�Ø—‘˜TÖ"ñ $ð 	˜Ÿ™¤¨£Ó/Ñ/ˆð	4Ø×Ñ ¨,Ô7ð	7Ø×Ñ 
¨MÕ:øô ó 	4Ø�O‰O˜H lÖ3ð	4ûô ó 	7Ø�O‰O˜J¨Ö6ð	7ús$   Á8B ÂC  ÂB=Â<B=Ã CÃCc                 óŠ   • U R                  SR                  [        U R                  5       5      [        U5      -  5      5        grü  rý  rþ  s     r#   rG  Ú_mboxMMDFMessage.add_flagâ  r   r&   c                 ó¤   • SU ;   d  SU ;   aD  U R                  SR                  [        U R                  5       5      [        U5      -
  5      5        gg)r  r(  r)  rõ   Nrý  rþ  s     r#   rJ  Ú_mboxMMDFMessage.remove_flagæ  s@   € à�tÓ˜z¨TÓ1Ø�N‰N˜2Ÿ7™7¤3 t§~¡~Ó'7Ó#8¼3¸t»9Ñ#DÓEÕFð  2r&   c                 ó>  • [        U[        5      (       aþ  [        U R                  5       5      nSU;   a  UR	                  S5        SU;   a  UR                  S5        SU;   a  UR                  S5        SU;   a  UR                  S5        SU;   a  UR                  S5        US		 US
	 SR                  U R                  5       R                  5       SS 5      n UR                  [        R                  " [        R                  " US5      5      5        g[        U[         5      (       a?  UR#                  U R                  5       5        UR%                  U R                  5       5        g[        U[&        5      (       ae  [        U R                  5       5      nSU;  a  UR)                  S5        SU;   a  UR)                  S5        SU;   a  UR)                  S5        US		 US
	 g[        U[*        5      (       ae  [        U R                  5       5      nSU;  a  UR-                  S5        SU;   a  UR-                  S5        SU;   a  UR-                  S5        US		 US
	 g[        U[.        5      (       a  g[1        S[3        U5      -  5      e! [        [        4 a     gf = f)zACopy mbox- or MMDF-specific state to message insofar as possible.r  rè   r  r  r  r  r  r  Ústatuszx-statusr€  éûÿÿÿNz%a %b %d %H:%M:%S %Yr—  r  r  r˜  r™  r  )r¹   r   r@  r;  r"  rG  rê   r  rþ   r$  ÚcalendarÚtimegmr‡  Ústrptimer¨   ÚOverflowErrorr
  rA  rú  r   rB  r   r  r
   rÎ   rÏ   )r    r-   r=  Ú
maybe_dates       r#   rÝ  Ú_mboxMMDFMessage._explain_toë  sH  € ä�gœ~×.Ñ.Ü˜Ÿ™Ó(Ó)ˆEØ�e‹|Ø×"Ñ" 5Ô)Ø�e‹|Ø× Ñ  Ô%Ø�e‹|Ø× Ñ  Ô%Ø�e‹|Ø× Ñ  Ô%Ø�e‹|Ø× Ñ  Ô%Ø˜Ð!Ø˜
Ð#ØŸ™ $§-¡-£/×"7Ñ"7Ó"9¸"¸#Ð">Ó?ˆJðØ× Ñ ¤§¢´·²¸zØ6Ló2Nó "Oõ Pô ˜Ô!1×2Ñ2Ø×Ñ˜dŸn™nÓ.Ô/Ø×Ñ˜TŸ]™]›_Õ-Ü˜¤×+Ñ+Ü˜Ÿ™Ó(Ó)ˆEØ˜%ÓØ×$Ñ$ XÔ.Ø�e‹|Ø×$Ñ$ YÔ/Ø�e‹|Ø×$Ñ$ YÔ/Ø˜Ð!Ø˜
Ñ#Ü˜¤×.Ñ.Ü˜Ÿ™Ó(Ó)ˆEØ˜%ÓØ×!Ñ! (Ô+Ø�e‹|Ø×!Ñ! )Ô,Ø�e‹|Ø×!Ñ! *Ô-Ø˜Ð!Ø˜
Ñ#Ü˜¤×)Ñ)ØäÐBÜ  ›Mñ*ó +ð +øô9 ¤Ð.ó Ùðús   Ã:J	 Ê	JÊJr"  r8   )rÚ   rÛ   rÜ   rÝ   rÞ   rä  r$   r  rú  r;  rA  rG  rJ  rÝ  rá   râ   r&   r#   r
  r
  ®  s8   † Ù9à!( 	Ðô(òôòAò7ò,CòGõ
1+r&   r
  c                   ó   • \ rS rSrSrSrg)r   i  z&Message with mbox-specific properties.râ   N©rÚ   rÛ   rÜ   rÝ   rÞ   rá   râ   r&   r#   r   r     ó   † Ü0r&   r   c                   óF   • \ rS rSrSrS/rSS jrS rS rS r	S	 r
S
 rSrg)r   i#  z$Message with MH-specific properties.Ú
_sequencesNc                 ó<   • / U l         [        R                  X5        g)z!Initialize an MHMessage instance.N)rB  r
   r$   r,   s     r#   r$   ÚMHMessage.__init__(  s   € àˆŒÜ×Ñ˜Õ'r&   c                 ó    • U R                   SS $ )z4Return a list of sequences that include the message.N©rB  rc   s    r#   rA  ÚMHMessage.get_sequences-  s   € à�‰™qÐ!Ð!r&   c                 ó$   • [        U5      U l        g)z3Set the list of sequences that include the message.N)rg   rB  )r    r‚  s     r#   r…  ÚMHMessage.set_sequences1  s   € ä˜y›/ˆ�r&   c                 ó²   • [        U[        5      (       a,  XR                  ;  a  U R                  R                  U5        gg[	        S[        U5      -  5      e)z8Add sequence to list of sequences including the message.zsequence type must be str: %sN)r¹   rÅ   rB  rh  rÎ   rÏ   ©r    r‘  s     r#   rB  ÚMHMessage.add_sequence5  sG   € ä�h¤×$Ñ$ØŸ™Ó.Ø—‘×&Ñ& xÕ0ð /ô Ð;¼dÀ8»nÑLÓMÐMr&   c                 ó\   •  U R                   R                  U5        g! [         a     gf = f)zARemove sequence from the list of sequences including the message.N)rB  r5   r¨   rK  s     r#   Úremove_sequenceÚMHMessage.remove_sequence=  s+   € ð	Ø�O‰O×"Ñ" 8Õ,øÜó 	Ùð	úó   ‚ ž
+ª+c                 óÒ  • [        U[        5      (       aƒ  [        U R                  5       5      nSU;   a  UR	                  S5        O"UR	                  S5        UR                  S5        SU;   a  UR                  S5        SU;   a  UR                  S5        gg[        U[        5      (       ar  [        U R                  5       5      nSU;  a  UR                  S5        OUR                  S	5        SU;   a  UR                  S5        SU;   a  UR                  S
5        gg[        U[        5      (       a)  U R                  5        H  nUR                  U5        M     g[        U[        5      (       aI  [        U R                  5       5      nSU;   a  UR                  S5        SU;   a  UR                  S5        gg[        U[        5      (       a  g[        S[        U5      -  5      e)z6Copy MH-specific state to message insofar as possible.r—  rè   r  r  r  r  r  ÚROr  r  r™  r  N)r¹   r   r@  rA  r"  rG  r
  r   rB  r   r  r
   rÎ   rÏ   )r    r-   r‚  r‘  s       r#   rÝ  ÚMHMessage._explain_toD  s¦  € ä�gœ~×.Ñ.Ü˜D×.Ñ.Ó0Ó1ˆIØ˜9Ó$Ø×"Ñ" 5Õ)à×"Ñ" 5Ô)Ø× Ñ  Ô%Ø˜IÓ%Ø× Ñ  Ô%Ø˜IÓ%Ø× Ñ  Õ%ð &ä˜Ô!1×2Ñ2Ü˜D×.Ñ.Ó0Ó1ˆIØ˜yÓ(Ø× Ñ  Õ&à× Ñ  Ô%Ø˜IÓ%Ø× Ñ  Ô%Ø˜IÓ%Ø× Ñ  Õ%ð &ä˜¤×+Ñ+Ø ×.Ñ.Ö0�Ø×$Ñ$ XÖ.ò 1ä˜¤×.Ñ.Ü˜D×.Ñ.Ó0Ó1ˆIØ˜9Ó$Ø×!Ñ! (Ô+Ø˜IÓ%Ø×!Ñ! *Õ-ð &ä˜¤×)Ñ)ØäÐBÜ  ›Mñ*ó +ð +r&   rF  r8   )rÚ   rÛ   rÜ   rÝ   rÞ   rä  r$   rA  r…  rB  rN  rÝ  rá   râ   r&   r#   r   r   #  s,   † Ù.à!- Ðô(ò
"ò*òNòõ$+r&   r   c                   óZ   • \ rS rSrSrSS/rSS jrS rS rS	 r	S
 r
S rS rS rS rSrg)r   ik  z'Message with Babyl-specific properties.rœ  Ú_visibleNc                 óZ   • / U l         [        5       U l        [        R                  X5        g)z#Initialize a BabylMessage instance.N)rœ  r
   rU  r$   r,   s     r#   r$   ÚBabylMessage.__init__p  s    € àˆŒÜ›	ˆŒÜ×Ñ˜Õ'r&   c                 ó    • U R                   SS $ )z'Return a list of labels on the message.N)rœ  rc   s    r#   rŸ  ÚBabylMessage.get_labelsv  s   € à�|‰|™AˆÐr&   c                 ó$   • [        U5      U l        g)z&Set the list of labels on the message.N)rg   rœ  )r    r¶  s     r#   r¨  ÚBabylMessage.set_labelsz  s   € ä˜F“|ˆ�r&   c                 ó²   • [        U[        5      (       a,  XR                  ;  a  U R                  R                  U5        gg[	        S[        U5      -  5      e)z+Add label to list of labels on the message.zlabel must be a string: %sN)r¹   rÅ   rœ  rh  rÎ   rÏ   ©r    r¾  s     r#   r  ÚBabylMessage.add_label~  sG   € ä�eœS×!Ñ!ØŸL™LÓ(Ø—‘×#Ñ# EÕ*ð )ô Ð8¼4À»;ÑFÓGÐGr&   c                 ó\   •  U R                   R                  U5        g! [         a     gf = f)z4Remove label from the list of labels on the message.N)rœ  r5   r¨   r]  s     r#   Úremove_labelÚBabylMessage.remove_label†  s+   € ð	Ø�L‰L×Ñ Õ&øÜó 	Ùð	úrP  c                 ó,   • [        U R                  5      $ )z3Return a Message representation of visible headers.©r
   rU  rc   s    r#   rÍ  ÚBabylMessage.get_visible�  s   € ä�t—}‘}Ó%Ð%r&   c                 ó$   • [        U5      U l        g)z2Set the Message representation of visible headers.Nrc  )r    Úvisibles     r#   r§  ÚBabylMessage.set_visible‘  s   € ä Ó(ˆ�r&   c                 ó  • U R                   R                  5        H5  nX;   a   U R                   R                  XU   5        M(  U R                   U	 M7     S H,  nX;   d  M
  XR                   ;  d  M  X   U R                   U'   M.     g)z9Update and/or sensibly generate a set of visible headers.)ÚDateÚFromzReply-ToÚToÚCCÚSubjectN)rU  rh   r,  )r    Úheaders     r#   Úupdate_visibleÚBabylMessage.update_visible•  sl   € à—m‘m×(Ñ(Ö*ˆFØ‹~Ø—‘×,Ñ,¨V¸&±\ÖBà—M‘M &Ò)ñ	 +ó
 JˆFØ�~ &·±Õ"=Ø(,©�—‘˜fÓ%ò Jr&   c                 óJ  • [        U[        5      (       a   [        U R                  5       5      nSU;   a  UR	                  S5        O"UR	                  S5        UR                  S5        SU;   d  SU;   a  UR                  S5        SU;   a  UR                  S5        S	U;   a  UR                  S
5        gg[        U[        5      (       ar  [        U R                  5       5      nSU;  a  UR                  S5        OUR                  S5        S	U;   a  UR                  S5        SU;   a  UR                  S5        gg[        U[        5      (       aI  [        U R                  5       5      nSU;   a  UR                  S5        SU;   a  UR                  S5        gg[        U[        5      (       aH  UR                  U R                  5       5        U R                  5        H  nUR                  U5        M     g[        U[        5      (       a  g[        S[        U5      -  5      e)z9Copy Babyl-specific state to message insofar as possible.r—  rè   r  rš  r–  r�  r™  r  r˜  r  rR  r  r  r  r  r  N)r¹   r   r@  rŸ  r"  rG  r
  r   rB  r   r§  rÍ  r  r
   rÎ   rÏ   )r    r-   r¶  r¾  s       r#   rÝ  ÚBabylMessage._explain_to   sÒ  € ä�gœ~×.Ñ.Ü˜Ÿ™Ó*Ó+ˆFØ˜6Ó!Ø×"Ñ" 5Õ)à×"Ñ" 5Ô)Ø× Ñ  Ô%Ø˜fÓ$¨°FÓ(:Ø× Ñ  Ô%Ø˜VÓ#Ø× Ñ  Ô%Ø˜FÓ"Ø× Ñ  Õ%ð #ä˜Ô!1×2Ñ2Ü˜Ÿ™Ó*Ó+ˆFØ˜vÓ%Ø× Ñ  Õ&à× Ñ  Ô%Ø˜FÓ"Ø× Ñ  Ô%Ø˜VÓ#Ø× Ñ  Õ%ð $ä˜¤×+Ñ+Ü˜Ÿ™Ó*Ó+ˆFØ˜6Ó!Ø×$Ñ$ XÔ.Ø˜VÓ#Ø×$Ñ$ YÕ/ð $ä˜¤×.Ñ.Ø×Ñ × 0Ñ 0Ó 2Ô3ØŸ™Ö*�Ø×!Ñ! %Ö(ò +ä˜¤×)Ñ)ØäÐBÜ  ›Mñ*ó +ð +r&   )rœ  rU  r8   )rÚ   rÛ   rÜ   rÝ   rÞ   rä  r$   rŸ  r¨  r  r`  rÍ  r§  ro  rÝ  rá   râ   r&   r#   r   r   k  s>   † Ù1à!*¨JÐ 7Ðô(òò$òHòò&ò)ò	5õ'+r&   r   c                   ó   • \ rS rSrSrSrg)r   iÊ  z&Message with MMDF-specific properties.râ   Nr?  râ   r&   r#   r   r   Ê  r@  r&   r   c                   ó°   • \ rS rSrSrSS jrSS jrSS jrSS jrSS jr	S	 r
S
 rSS jrS rS rS rS rS rS rS rS r\S 5       r\" \5      rSrg)r/  iÎ  zA read-only wrapper of a file.Nc                 óN   • Xl         Uc  UR                  5       U l        gX l        g)zInitialize a _ProxyFile.N)r­  rÌ  Ú_pos)r    r'  Úposs      r#   r$   Ú_ProxyFile.__init__Ñ  s   € àŒ
Ø‰;ØŸ™›ˆD�Ià�Ir&   c                 óL   • U R                  XR                  R                  5      $ ©zRead bytes.)Ú_readr­  r¯   ©r    Úsizes     r#   r¯   Ú_ProxyFile.readÙ  s   € à�z‰z˜$§
¡
§¡Ó0Ð0r&   c                 óL   • U R                  XR                  R                  5      $ rz  )r{  r­  Úread1r|  s     r#   r€  Ú_ProxyFile.read1Ý  s   € à�z‰z˜$§
¡
× 0Ñ 0Ó1Ð1r&   c                 óL   • U R                  XR                  R                  5      $ )zRead a line.)r{  r­  rÌ   r|  s     r#   rÌ   Ú_ProxyFile.readlineá  s   € à�z‰z˜$§
¡
× 3Ñ 3Ó4Ð4r&   c                 óv   • / nU  H0  nUR                  U5        Uc  M  U[        U5      -  nUS::  d  M/    U$    U$ )zRead multiple lines.r   )rh  rU  )r    Úsizehintrˆ   rÕ   s       r#   Ú	readlinesÚ_ProxyFile.readlineså  sG   € àˆÛˆDØ�M‰M˜$ÔØÓ#ØœC ›IÑ%�Ø˜q•=ØØˆñ ð ˆr&   c              #   óv   #   • U R                  5       =n(       a  Uv •  U R                  5       =n(       a  M  gg7f)zIterate over lines.N)rÌ   )r    rÕ   s     r#   rq   Ú_ProxyFile.__iter__ð  s1   é € à—m‘m“oÐ%ˆdÕ%ØŠJð —m‘m“oÐ%ˆd×%Ñ%ùs   ‚39·9c                 ó   • U R                   $ )zReturn the position.)rv  rc   s    r#   rÌ  Ú_ProxyFile.tellõ  s   € à�y‰yÐr&   c                 óÎ   • US:X  a%  U R                   R                  U R                  5        U R                   R                  X5        U R                   R                  5       U l        g)zChange position.rd  N©r­  r¿   rv  rÌ  ©r    ÚoffsetÚwhences      r#   r¿   Ú_ProxyFile.seekù  s?   € à�Q‹;Ø�J‰J�O‰O˜DŸI™IÔ&Ø�
‰
�‰˜Ô'Ø—J‘J—O‘OÓ%ˆ�	r&   c                 ó¦   • [        U S5      (       a9   [        U R                  S5      (       a  U R                  R                  5         U ?gg! U ?f = f)zClose the file.r­  r£   N)r�   r­  r£   rc   s    r#   r£   Ú_ProxyFile.close   sH   € ä�4˜×!Ñ!ðÜ˜4Ÿ:™: w×/Ñ/Ø—J‘J×$Ñ$Ô&à‘Jð "øð
 ‘Jús   “5A ÁAc                 ó¨   • Uc  SnU R                   R                  U R                  5        U" U5      nU R                   R                  5       U l        U$ )z"Read size bytes using read_method.rµ   r�  )r    r}  Úread_methodrˆ   s       r#   r{  Ú_ProxyFile._read	  sA   € à‰<ØˆDØ�
‰
�‰˜Ÿ	™	Ô"Ù˜TÓ"ˆØ—J‘J—O‘OÓ%ˆŒ	Øˆr&   c                 ó   • U $ )z$Context management protocol support.râ   rc   s    r#   Ú	__enter__Ú_ProxyFile.__enter__  s   € àˆr&   c                 ó$   • U R                  5         g r8   )r£   )r    Úexcs     r#   Ú__exit__Ú_ProxyFile.__exit__  s   € Ø�
‰
�r&   c                 ó6   • U R                   R                  5       $ r8   )r­  Úreadablerc   s    r#   rŸ  Ú_ProxyFile.readable  ó   € Ø�z‰z×"Ñ"Ó$Ð$r&   c                 ó6   • U R                   R                  5       $ r8   )r­  Úwritablerc   s    r#   r£  Ú_ProxyFile.writable  r¡  r&   c                 ó6   • U R                   R                  5       $ r8   )r­  Úseekablerc   s    r#   r¦  Ú_ProxyFile.seekable  r¡  r&   c                 ó6   • U R                   R                  5       $ r8   )r­  r—   rc   s    r#   r—   Ú_ProxyFile.flush"  s   € Ø�z‰z×ÑÓ!Ð!r&   c                 óŠ   • [        U S5      (       d  g[        U R                  S5      (       d  gU R                  R                  $ )Nr­  Tr9  F)r�   r­  r9  rc   s    r#   r9  Ú_ProxyFile.closed%  s6   € ä�t˜W×%Ñ%ØÜ�t—z‘z 8×,Ñ,ØØ�z‰z× Ñ Ð r&   )r­  rv  r8   ©r   )rÚ   rÛ   rÜ   rÝ   rÞ   r$   r¯   r€  rÌ   r†  rq   rÌ  r¿   r£   r{  r˜  rœ  rŸ  r£  r¦  r—   Úpropertyr9  rß   r   rà   rá   râ   r&   r#   r/  r/  Î  sv   † Ù(ôô1ô2ô5ô	òò
ô&òòòòò%ò%ò%ò"ð ñ!ó ð!ñ $ LÓ1Ór&   r/  c                   ó>   • \ rS rSrSrS
S jrS rSS jrS rS r	S	r
g)r  i0  z&A read-only wrapper of part of a file.Nc                 óH   • [         R                  XU5        X l        X0l        g)zInitialize a _PartialFile.N)r/  r$   Ú_startÚ_stop)r    r'  rÚ  rÛ  s       r#   r$   Ú_PartialFile.__init__3  s   € ä×Ñ˜D UÔ+ØŒØ�
r&   c                 óF   • [         R                  U 5      U R                  -
  $ )z*Return the position with respect to start.)r/  rÌ  r°  rc   s    r#   rÌ  Ú_PartialFile.tell9  s   € ä�‰˜tÓ$ t§{¡{Ñ2Ð2r&   c                 ó–   • US:X  a  U R                   U l        SnOUS:X  a  U R                  U l        Sn[        R	                  XU5        g)z8Change position, possibly with respect to start or stop.r   rd  r:  N)r°  rv  r±  r/  r¿   rŽ  s      r#   r¿   Ú_PartialFile.seek=  s>   € à�Q‹;ØŸ™ˆDŒIØ‰FØ�q‹[ØŸ
™
ˆDŒIØˆFÜ�‰˜ fÕ-r&   c                 óŽ   • U R                   U R                  -
  nUS::  a  gUb  US:  d  X:”  a  Un[        R                  XU5      $ )z;Read size bytes using read_method, honoring start and stop.r   r&   )r±  rv  r/  r{  )r    r}  r•  Ú	remainings       r#   r{  Ú_PartialFile._readG  sF   € à—J‘J §¡Ñ*ˆ	Ø˜‹>ØØ‰<˜4 !›8 tÓ'7ØˆDÜ×Ñ ¨KÓ8Ð8r&   c                 ó,   • [        U S5      (       a  U ?g g )Nr­  )r�   r­  rc   s    r#   r£   Ú_PartialFile.closeP  s   € ô �4˜×!Ñ!Ø‘
ð "r&   )rv  r°  r±  )NNr¬  )rÚ   rÛ   rÜ   rÝ   rÞ   r$   rÌ  r¿   r{  r£   rá   râ   r&   r#   r  r  0  s   † Ù0ôò3ô.ò9õr&   r  c                 óÈ  • Sn [         (       a7   [         R                  " U [         R                  [         R                  -  5        U(       a|   [        U R                  S-   5      nUR                  5           [        R                  " UR                  U R                  S-   5        Sn[        R                  " UR                  5        gg! [         a[  nUR
                  [
        R                  [
        R                  [
        R                  4;   a  [        SU R                  -  5      ee SnAff = f! [         a9  nUR
                  [
        R                  [
        R                  4;   a   SnAge SnAff = f! [         ["        4 a3    [        R$                  " UR                  U R                  S-   5        Sn gf = f! [&         a9    [        R(                  " UR                  5        [        SU R                  -  5      ef = f!   [         (       a%  [         R                  " U [         R*                  5        U(       a#  [        R(                  " U R                  S-   5        e = f)z(Lock file f using lockf and dot locking.Fzlockf: lock unavailable: %sNú.lockTzdot lock unavailable: %s)ÚfcntlÚlockfÚLOCK_EXÚLOCK_NBr  r  ÚEAGAINr«  r¬  r   rø   rÍ  r£   r   r  rˆ  r  r  r  r–  r5   ÚLOCK_UN)r'  rÊ  Údotlock_doner  Úpre_locks        r#   rÂ  rÂ  W  sÄ  € à€Lð%ßŠ5ðÜ—’˜AœuŸ}™}¬u¯}©}Ñ<Ô=ö ðÜ,¨Q¯V©V°gÑ-=Ó>�Ø—‘Ô ð1ð-Ü—G’G˜HŸM™M¨1¯6©6°GÑ+;Ô<Ø#'�Lô
 —I’I˜hŸm™mÕ,ð# øô ó Ø—7‘7œuŸ|™|¬U¯\©\¼5¿;¹;ÐGÓGÜ,Ð-JØ-.¯V©Vñ.4ó 5ð 5ð ûðûô ó Ø—7‘7œuŸ|™|¬U¯[©[Ð9Ó9Üàûð	ûô '¬Ð8ó (Ü—I’I˜hŸm™m¨Q¯V©V°gÑ-=Ô>Ø#'’Lð(ûô
 #ó 1Ü—	’	˜(Ÿ-™-Ô(Ü(Ð)CØ)*¯©ñ*0ó 1ð 1ð1ûðßŠ5Ü�KŠK˜œ5Ÿ=™=Ô)ÞÜ�IŠI�a—f‘f˜wÑ&Ô'ØúsŒ   „H �6C
 ÁH Á(D2 Á80E8 Â( F> Ã

D/ÃAD*Ä*D/Ä/H Ä2
E5Ä<.E0Å*H Å/E0Å0E5Å5H Å8A F;Æ8F> Æ:F;Æ;F> Æ>AHÈH ÈAI!c                 ó  • [         (       a%  [         R                  " U [         R                  5        [        R                  R                  U R                  S-   5      (       a$  [        R                  " U R                  S-   5        gg)z*Unlock file f using lockf and dot locking.r½  N)r¾  r¿  rÃ  r   r   rì   rø   r5   ©r'  s    r#   rÆ  rÆ  �  sO   € ç‚uÜ�Š�A”u—}‘}Ô%Ü	‡w�w‡~�~�a—f‘f˜wÑ&×'Ñ'Ü
�	Š	�!—&‘&˜7Ñ"Õ#ð (r&   c                 ó  • [         R                  " U [         R                  [         R                  -  [         R                  -  S5      n [        U S5      [         R
                  " U5        $ ! [         R
                  " U5        f = f)zCCreate a file if it doesn't exist and open for reading and writing.rv  r©  )r   r!  rw  r3  ÚO_RDWRr£   )r   Úfds     r#   r•  r•  ˆ  sP   € ä	�Š�”r—z‘z¤B§I¡IÑ-´·	±	Ñ9¸5Ó	A€BðÜ�D˜%Ó ä
�Š��øŒ�Š��ús   Á
A, Á,Bc           
      óº   • [        U < S[        [        R                  " 5       5      < S[        R                  " 5       < S[
        R                  " 5       < 35      $ )zBCreate a temp file based on path and open for reading and writing.re  )r•  r‘  r‡  r�  r�  r   r’  )r   s    r#   rÍ  rÍ  �  s8   € ä«d´C¼¿	º	»Ö4DÜ.4×.@Ò.@Ö.BÜ.0¯iªi­kð;ó <ð <r&   c                 ó˜   • U R                  5         [        [        S5      (       a%  [        R                  " U R	                  5       5        gg)z0Ensure changes to file f are physically on disk.ÚfsyncN)r—   r�   r   rÍ  ÚfilenorÇ  s    r#   rË  rË  –  s/   € à‡G�G„IÜŒr�7×ÑÜ
�Š�—‘“Õð r&   c                 ó:   • [        U 5        U R                  5         g)z:Close file f, ensuring all changes are physically on disk.N)rË  r£   rÇ  s    r#   rù   rù   œ  s   € ä�„NØ‡G�G…Ir&   c                   ó   • \ rS rSrSrSrg)r   i¢  z"Raised for module-specific errors.râ   Nr?  râ   r&   r#   r   r   ¢  s   † Ü,r&   r   c                   ó   • \ rS rSrSrSrg)r   i¥  z:The specified mailbox does not exist and won't be created.râ   Nr?  râ   r&   r#   r   r   ¥  s   † ÜDr&   r   c                   ó   • \ rS rSrSrSrg)r   i¨  z>The specified mailbox is not empty and deletion was requested.râ   Nr?  râ   r&   r#   r   r   ¨  s   † ÜHr&   r   c                   ó   • \ rS rSrSrSrg)r   i«  z)Another process caused an action to fail.râ   Nr?  râ   r&   r#   r   r   «  ó   † Ü3r&   r   c                   ó   • \ rS rSrSrSrg)r   i®  z)A file appears to have an invalid format.râ   Nr?  râ   r&   r#   r   r   ®  rÔ  r&   r   )T)2rÞ   r   r‡  r8  r�  r  rÛ  rÈ   rV   Úemail.messageÚemail.generatorrº   rL   Útypesr   r¾  ÚImportErrorÚ__all__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ù   Ú	Exceptionr   r   r   r   r   râ   r&   r#   Ú<module>rÜ     sË  ðÙ Jó 
Û Û Û Û Û Û Û Û Û Û 	Û Ý ðÛòA€ð
 �*‰*×
Ñ
˜GÓ
$€÷f2ñ f2ôRgˆgô gôTC˜ô CôN@Ð"ô @ôF1.ˆ9ô 1.ôh*.ˆ9ô *.ôZ@*ˆô @*ôF
vÐô vôr"@ˆe�m‰m×#Ñ#ô "@ôJj+�Wô j+ôZn+�wô n+ôb1Ð"ô 1ôE+�ô E+ôP\+�7ô \+ô~1Ð"ô 1÷_2ñ _2ôD$�:ô $ôN(òT$òò<òòô-ˆIô -ôE˜ô EôI�Eô Iô4˜ô 4ô4�%õ 4øðmD ó ØƒEðús   ºE6 Å6FÆF