§
    (¶ÕiIo  ã                   óÈ  — d Z g d¢ZddlZddlZddlZddlZddlmZ ddlZddl	Z	ddl
Z
ddlZddlmZ  ej        dde¬¦  «        Z e¦   «                              ej        ¦  «         d	Z G d
„ d¦  «        ZdZ e
j        d¦  «        Zd3d„Zd„ Z e
j        de
j        ¦  «        Zd„ Zd„ Zd„ Z G d„ d¦  «        Z  G d„ d¦  «        Z! G d„ de!¦  «        Z"d„ Z# G d„ de$¦  «        Z%ddd d!d"œZ& e'¦   «         Z( G d#„ d$¦  «        Z)d%„ Z*e+e,e-ej        e.fZ/ G d&„ d'e'¦  «        Z0d(„ Z1e2 e3e#e e"¬)¦  «        e4 e3e1e)e0¬)¦  «        iZ5de3d*œd+„Z6de3d*œd,„Z7e2d-d.d/œd0„Z8e2d.d-d1œd2„Z9dS )4aÕ  plistlib.py -- a tool to generate and parse MacOSX .plist files.

The property list (.plist) file format is a simple XML pickle supporting
basic object types, like dictionaries, lists, numbers and strings.
Usually the top level object is a dictionary.

To write out a plist file, use the dump(value, file)
function. 'value' is the top level object, 'file' is
a (writable) file object.

To parse a plist from a file, use the load(file) function,
with a (readable) file object as the only argument. It
returns the top level object (again, usually a dictionary).

To work with plist data in bytes objects, you can use loads()
and dumps().

Values can be strings, integers, floats, booleans, tuples, lists,
dictionaries (but only with string keys), Data, bytes, bytearray, or
datetime.datetime objects.

Generate Plist example:

    pl = dict(
        aString = "Doodah",
        aList = ["A", "B", 12, 32.1, [1, 2, 3]],
        aFloat = 0.1,
        anInt = 728,
        aDict = dict(
            anotherString = "<hello & hi there!>",
            aUnicodeValue = "M\xe4ssig, Ma\xdf",
            aTrueValue = True,
            aFalseValue = False,
        ),
        someData = b"<binary gunk>",
        someMoreData = b"<lots of binary gunk>" * 10,
        aDate = datetime.datetime.fromtimestamp(time.mktime(time.gmtime())),
    )
    with open(fileName, 'wb') as fp:
        dump(pl, fp)

Parse Plist example:

    with open(fileName, 'rb') as fp:
        pl = load(fp)
    print(pl["aKey"])
)ÚInvalidFileExceptionÚFMT_XMLÚ
FMT_BINARYÚloadÚdumpÚloadsÚdumpsÚUIDé    N)ÚBytesIO)ÚParserCreateÚPlistFormatzFMT_XML FMT_BINARY)Úmodulei   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )r	   c                 ó°   — t          |t          ¦  «        st          d¦  «        ‚|dk    rt          d¦  «        ‚|dk     rt          d¦  «        ‚|| _        d S )Nzdata must be an intì            zUIDs cannot be >= 2**64r
   úUIDs must be positive)Ú
isinstanceÚintÚ	TypeErrorÚ
ValueErrorÚdata©Úselfr   s     ú/usr/lib/python3.11/plistlib.pyÚ__init__zUID.__init__H   s^   € Ý˜$¥Ñ$Ô$ð 	3ÝÐ1Ñ2Ô2Ð2Ø�7Š?ˆ?ÝÐ6Ñ7Ô7Ð7Ø�!Š8ˆ8ÝÐ4Ñ5Ô5Ð5ØˆŒ	ˆ	ˆ	ó    c                 ó   — | j         S ©N)r   ©r   s    r   Ú	__index__zUID.__index__Q   s
   € ØŒyÐr   c                 óJ   — | j         j        ›dt          | j        ¦  «        ›d�S )Nú(ú))Ú	__class__Ú__name__Úreprr   r   s    r   Ú__repr__zUID.__repr__T   s$   € Øœ>Ô2Ð2Ð2µD¸¼±O´O°O°OÐDÐDr   c                 ó    — | j         | j        ffS r   )r$   r   r   s    r   Ú
__reduce__zUID.__reduce__W   s   € ØŒ~ ¤	˜|Ð+Ð+r   c                 óZ   — t          |t          ¦  «        st          S | j        |j        k    S r   )r   r	   ÚNotImplementedr   )r   Úothers     r   Ú__eq__z
UID.__eq__Z   s)   € Ý˜%¥Ñ%Ô%ð 	"Ý!Ð!ØŒy˜EœJÒ&Ð&r   c                 ó*   — t          | j        ¦  «        S r   )Úhashr   r   s    r   Ú__hash__zUID.__hash___   s   € Ý�D”I‰ŒÐr   N)	r%   Ú
__module__Ú__qualname__r   r    r'   r)   r-   r0   © r   r   r	   r	   G   sq   € € € € € ðð ð ðð ð ðEð Eð Eð,ð ,ð ,ð'ð 'ð 'ð
ð ð ð ð r   r	   sŽ   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
zv[\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]éL   c                 óê   — |dz  dz  }g }t          dt          | ¦  «        |¦  «        D ]6}| |||z   …         }|                     t          j        |¦  «        ¦  «         Œ7d                     |¦  «        S )Né   é   r
   r   )ÚrangeÚlenÚappendÚbinasciiÚ
b2a_base64Újoin)ÚsÚmaxlinelengthÚ
maxbinsizeÚpiecesÚiÚchunks         r   Ú_encode_base64rD   s   s|   € à Ñ" AÑ%€JØ€FÝ�1•c˜!‘f”f˜jÑ)Ô)ð 2ð 2ˆØ�!�a˜*‘nÐ$Ô%ˆØ�Š•hÔ)¨%Ñ0Ô0Ñ1Ô1Ð1Ð1Ø�8Š8�FÑÔÐr   c                 ó¢   — t          | t          ¦  «        r't          j        |                      d¦  «        ¦  «        S t          j        | ¦  «        S )Núutf-8)r   Ústrr;   Ú
a2b_base64Úencode)r>   s    r   Ú_decode_base64rJ   |   sD   € Ý�!•SÑÔð &ÝÔ" 1§8¢8¨GÑ#4Ô#4Ñ5Ô5Ð5õ Ô" 1Ñ%Ô%Ð%r   z{(?P<year>\d\d\d\d)(?:-(?P<month>\d\d)(?:-(?P<day>\d\d)(?:T(?P<hour>\d\d)(?::(?P<minute>\d\d)(?::(?P<second>\d\d))?)?)?)?)?Zc                 óä   — d}t                                | ¦  «                             ¦   «         }g }|D ]0}||         }|€ n#|                     t	          |¦  «        ¦  «         Œ1t          j        |Ž S )N©ÚyearÚmonthÚdayÚhourÚminuteÚsecond)Ú_dateParserÚmatchÚ	groupdictr:   r   Údatetime)r>   ÚorderÚgdÚlstÚkeyÚvals         r   Ú_date_from_stringr\   ‰   sv   € Ø@€EÝ	×	Ò	˜1Ñ	Ô	×	'Ò	'Ñ	)Ô	)€BØ
€CØð ð ˆØ�ŒgˆØˆ;ØˆEØ�
Š
•3�s‘8”8ÑÔÐÐÝÔ˜cÐ"Ð"r   c                 óT   — d| j         | j        | j        | j        | j        | j        fz  S )Nz%04d-%02d-%02dT%02d:%02d:%02dZrL   )Úds    r   Ú_date_to_stringr_   •   s.   € Ø+Ø	Œ�”˜œØ	Œ�”˜!œ(ð/ñ ð r   c                 ó8  — t                                | ¦  «        }|�t          d¦  «        ‚|                      dd¦  «        } |                      dd¦  «        } |                      dd¦  «        } |                      dd¦  «        } |                      d	d
¦  «        } | S )Nz;strings can't contain control characters; use bytes insteadz
ú
úú&z&amp;ú<z&lt;ú>z&gt;)Ú_controlCharPatÚsearchr   Úreplace)ÚtextÚms     r   Ú_escaperk   ›   s•   € Ý×Ò˜tÑ$Ô$€AØ€}Ýð -ñ .ô .ð 	.à�<Š<˜ Ñ%Ô%€DØ�<Š<˜˜dÑ#Ô#€DØ�<Š<˜˜WÑ%Ô%€DØ�<Š<˜˜VÑ$Ô$€DØ�<Š<˜˜VÑ$Ô$€DØ€Kr   c                   ó†   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú_PlistParserc                 ó>   — g | _         d | _        d | _        || _        d S r   )ÚstackÚcurrent_keyÚrootÚ
_dict_type©r   Ú	dict_types     r   r   z_PlistParser.__init__¨   s#   € ØˆŒ
ØˆÔØˆŒ	Ø#ˆŒˆˆr   c                 óò   — t          ¦   «         | _        | j        | j        _        | j        | j        _        | j        | j        _        | j        | j        _	        | j         
                    |¦  «         | j        S r   )r   ÚparserÚhandle_begin_elementÚStartElementHandlerÚhandle_end_elementÚEndElementHandlerÚhandle_dataÚCharacterDataHandlerÚhandle_entity_declÚEntityDeclHandlerÚ	ParseFilerq   )r   Úfileobjs     r   Úparsez_PlistParser.parse®   s_   € Ý"‘n”nˆŒØ*.Ô*CˆŒÔ'Ø(,Ô(?ˆŒÔ%Ø+/Ô+;ˆŒÔ(Ø(,Ô(?ˆŒÔ%ØŒ×Ò˜gÑ&Ô&Ð&ØŒyÐr   c                 ó    — t          d¦  «        ‚)Nz8XML entity declarations are not supported in plist files)r   )r   Úentity_nameÚis_parameter_entityÚvalueÚbaseÚ	system_idÚ	public_idÚnotation_names           r   r}   z_PlistParser.handle_entity_decl·   s   € õ #Ð#]Ñ^Ô^Ð^r   c                 óZ   — g | _         t          | d|z   d ¦  «        }|� ||¦  «         d S d S )NÚbegin_)r   Úgetattr)r   ÚelementÚattrsÚhandlers       r   rw   z!_PlistParser.handle_begin_element½   s>   € ØˆŒ	Ý˜$ ¨7Ñ 2°DÑ9Ô9ˆØÐØˆG�E‰NŒNˆNˆNˆNð Ðr   c                 óJ   — t          | d|z   d ¦  «        }|� |¦   «          d S d S )NÚend_)rŒ   )r   r�   r�   s      r   ry   z_PlistParser.handle_end_elementÃ   s5   € Ý˜$ ¨Ñ 0°$Ñ7Ô7ˆØÐØˆG‰IŒIˆIˆIˆIð Ðr   c                 ó:   — | j                              |¦  «         d S r   )r   r:   r   s     r   r{   z_PlistParser.handle_dataÈ   s   € ØŒ	×Ò˜ÑÔÐÐÐr   c                 óÀ  — | j         �bt          | j        d         t          i ¦  «        ¦  «        st	          d| j        j        z  ¦  «        ‚|| j        d         | j         <   d | _         d S | j        s	|| _        d S t          | j        d         t          g ¦  «        ¦  «        st	          d| j        j        z  ¦  «        ‚| j        d                              |¦  «         d S )Néÿÿÿÿzunexpected element at line %d)	rp   r   ro   Útyper   rv   ÚCurrentLineNumberrq   r:   ©r   r…   s     r   Ú
add_objectz_PlistParser.add_objectË   sé   € ØÔÐ'Ý˜dœj¨œn­d°2©h¬hÑ7Ô7ð @Ý Ð!@Ø!%¤Ô!>ñ"?ñ @ô @ð @à/4ˆDŒJ�rŒN˜4Ô+Ñ,Ø#ˆDÔÐÐØ”ð 	)àˆDŒIˆIˆIå˜dœj¨œn­d°2©h¬hÑ7Ô7ð @Ý Ð!@Ø!%¤Ô!>ñ"?ñ @ô @ð @àŒJ�rŒN×!Ò! %Ñ(Ô(Ð(Ð(Ð(r   c                 óH   — d                      | j        ¦  «        }g | _        |S )NÚ )r=   r   r   s     r   Úget_dataz_PlistParser.get_dataÛ   s!   € Ø�wŠw�t”yÑ!Ô!ˆØˆŒ	Øˆr   c                 óŒ   — |                       ¦   «         }|                      |¦  «         | j                             |¦  «         d S r   )rr   r˜   ro   r:   )r   rŽ   r^   s      r   Ú
begin_dictz_PlistParser.begin_dictâ   s?   € Ø�OŠOÑÔˆØ�Š˜ÑÔÐØŒ
×Ò˜!ÑÔÐÐÐr   c                 óŒ   — | j         r#t          d| j         | j        j        fz  ¦  «        ‚| j                             ¦   «          d S )Nz%missing value for key '%s' at line %d)rp   r   rv   r–   ro   Úpopr   s    r   Úend_dictz_PlistParser.end_dictç   sT   € ØÔð 	OÝÐDØ"Ô.¨t¬{Ô/LÐMñNñ Oô Oð OàŒ
�ŠÑÔÐÐÐr   c                 óÎ   — | j         s(t          | j        d         t          i ¦  «        ¦  «        st	          d| j        j        z  ¦  «        ‚|                      ¦   «         | _         d S )Nr”   zunexpected key at line %d)rp   r   ro   r•   r   rv   r–   r›   r   s    r   Úend_keyz_PlistParser.end_keyí   sb   € ØÔð 	<¥:¨d¬j¸¬n½dÀ2¹h¼hÑ#GÔ#Gð 	<ÝÐ8Ø!œ[Ô:ñ;ñ <ô <ð <àŸ=š=™?œ?ˆÔÐÐr   c                 óh   — g }|                       |¦  «         | j                             |¦  «         d S r   )r˜   ro   r:   )r   rŽ   Úas      r   Úbegin_arrayz_PlistParser.begin_arrayó   s5   € ØˆØ�Š˜ÑÔÐØŒ
×Ò˜!ÑÔÐÐÐr   c                 ó8   — | j                              ¦   «          d S r   )ro   rŸ   r   s    r   Ú	end_arrayz_PlistParser.end_arrayø   s   € ØŒ
�ŠÑÔÐÐÐr   c                 ó0   — |                       d¦  «         d S )NT©r˜   r   s    r   Úend_truez_PlistParser.end_trueû   s   € Ø�Š˜ÑÔÐÐÐr   c                 ó0   — |                       d¦  «         d S )NFr©   r   s    r   Ú	end_falsez_PlistParser.end_falseþ   s   € Ø�Š˜ÑÔÐÐÐr   c                 ó  — |                       ¦   «         }|                     d¦  «        s|                     d¦  «        r%|                      t          |d¦  «        ¦  «         d S |                      t          |¦  «        ¦  «         d S )NÚ0xÚ0Xé   )r›   Ú
startswithr˜   r   )r   Úraws     r   Úend_integerz_PlistParser.end_integer  st   € Ø�mŠm‰oŒoˆØ�>Š>˜$ÑÔð 	& 3§>¢>°$Ñ#7Ô#7ð 	&Ø�OŠO�C  R™LœLÑ)Ô)Ð)Ð)Ð)à�OŠO�C ™HœHÑ%Ô%Ð%Ð%Ð%r   c                 ón   — |                       t          |                      ¦   «         ¦  «        ¦  «         d S r   )r˜   Úfloatr›   r   s    r   Úend_realz_PlistParser.end_real  s*   € Ø�Š�˜dŸmšm™oœoÑ.Ô.Ñ/Ô/Ð/Ð/Ð/r   c                 óT   — |                       |                      ¦   «         ¦  «         d S r   )r˜   r›   r   s    r   Ú
end_stringz_PlistParser.end_string  s"   € Ø�Š˜Ÿš™œÑ(Ô(Ð(Ð(Ð(r   c                 ón   — |                       t          |                      ¦   «         ¦  «        ¦  «         d S r   )r˜   rJ   r›   r   s    r   Úend_dataz_PlistParser.end_data  s*   € Ø�Š� t§}¢}¡¤Ñ7Ô7Ñ8Ô8Ð8Ð8Ð8r   c                 ón   — |                       t          |                      ¦   «         ¦  «        ¦  «         d S r   )r˜   r\   r›   r   s    r   Úend_datez_PlistParser.end_date  s+   € Ø�ŠÕ)¨$¯-ª-©/¬/Ñ:Ô:Ñ;Ô;Ð;Ð;Ð;r   N)r%   r1   r2   r   r�   r}   rw   ry   r{   r˜   r›   r�   r    r¢   r¥   r§   rª   r¬   r³   r¶   r¸   rº   r¼   r3   r   r   rm   rm   §   sC  € € € € € ð$ð $ð $ðð ð ð_ð _ð _ðð ð ðð ð ð
ð ð ð)ð )ð )ð ð ð ðð ð ð
ð ð ð+ð +ð +ðð ð ð
ð ð ðð ð ðð ð ð&ð &ð &ð0ð 0ð 0ð)ð )ð )ð9ð 9ð 9ð<ð <ð <ð <ð <r   rm   c                   ó0   — e Zd Zd	d„Zd„ Zd„ Zd
d„Zd„ ZdS )Ú_DumbXMLWriterr
   ú	c                 ó>   — || _         g | _        || _        || _        d S r   )Úfilero   Ú_indent_levelÚindent)r   rÁ   Úindent_levelrÃ   s       r   r   z_DumbXMLWriter.__init__  s#   € ØˆŒ	ØˆŒ
Ø)ˆÔØˆŒˆˆr   c                 óŠ   — | j                              |¦  «         |                      d|z  ¦  «         | xj        dz  c_        d S )Nz<%s>é   )ro   r:   ÚwritelnrÂ   ©r   r�   s     r   Úbegin_elementz_DumbXMLWriter.begin_element  sI   € ØŒ
×Ò˜'Ñ"Ô"Ð"Ø�Š�V˜gÑ%Ñ&Ô&Ð&ØÐÔ˜aÑÐÔÐÐr   c                 ó®   — | j         dk    sJ ‚| j                             ¦   «         |k    sJ ‚| xj         dz  c_         |                      d|z  ¦  «         d S )Nr
   rÆ   z</%s>)rÂ   ro   rŸ   rÇ   rÈ   s     r   Úend_elementz_DumbXMLWriter.end_element!  sd   € ØÔ! AÒ%Ð%Ð%Ð%ØŒz�~Š~ÑÔ 7Ò*Ð*Ð*Ð*ØÐÔ˜aÑÐÔØ�Š�W˜wÑ&Ñ'Ô'Ð'Ð'Ð'r   Nc           	      óš   — |�0t          |¦  «        }|                      d|›d|›d|›d�¦  «         d S |                      d|z  ¦  «         d S )Nrd   re   z</z<%s/>)rk   rÇ   )r   r�   r…   s      r   Úsimple_elementz_DumbXMLWriter.simple_element'  s_   € ØÐÝ˜E‘N”NˆEØ�LŠLˆL¨'¨'¨'°5°5°5¸'¸'¸'ÐBÑCÔCÐCÐCÐCð �LŠL˜ 7Ñ*Ñ+Ô+Ð+Ð+Ð+r   c                 ó  — |rkt          |t          ¦  «        r|                     d¦  «        }| j                             | j        | j        z  ¦  «         | j                             |¦  «         | j                             d¦  «         d S )NrF   ó   
)r   rG   rI   rÁ   ÚwriterÂ   rÃ   )r   Úlines     r   rÇ   z_DumbXMLWriter.writeln/  s{   € Øð 	"õ ˜$¥Ñ$Ô$ð ,Ø—{’{ 7Ñ+Ô+�ØŒI�OŠO˜DÔ.°´Ñ<Ñ=Ô=Ð=ØŒI�OŠO˜DÑ!Ô!Ð!ØŒ	�Š˜ÑÔÐÐÐr   )r
   r¿   r   )r%   r1   r2   r   rÉ   rË   rÍ   rÇ   r3   r   r   r¾   r¾     si   € € € € € ðð ð ð ð ð  ð  ð
(ð (ð (ð,ð ,ð ,ð ,ð	ð 	ð 	ð 	ð 	r   r¾   c                   ó8   — e Zd Z	 	 dd„Zd„ Zd„ Zd	„ Zd
„ Zd„ ZdS )Ú_PlistWriterr
   ó   	rÆ   TFc                 ó”   — |r|                      t          ¦  «         t                               | |||¦  «         || _        || _        d S r   )rÐ   ÚPLISTHEADERr¾   r   Ú
_sort_keysÚ	_skipkeys)r   rÁ   rÄ   rÃ   ÚwriteHeaderÚ	sort_keysÚskipkeyss          r   r   z_PlistWriter.__init__<  sJ   € ð ð 	$Ø�JŠJ•{Ñ#Ô#Ð#Ý×Ò  d¨L¸&ÑAÔAÐAØ#ˆŒØ!ˆŒˆˆr   c                 ó„   — |                       d¦  «         |                      |¦  «         |                       d¦  «         d S )Nz<plist version="1.0">z</plist>)rÇ   Úwrite_valuer—   s     r   rÐ   z_PlistWriter.writeF  sA   € Ø�ŠÐ.Ñ/Ô/Ð/Ø×Ò˜ÑÔÐØ�Š�ZÑ Ô Ð Ð Ð r   c                 óº  — t          |t          ¦  «        r|                      d|¦  «         d S |du r|                      d¦  «         d S |du r|                      d¦  «         d S t          |t          ¦  «        r:d|cxk    rdk     rn n|                      dd	|z  ¦  «         d S t	          |¦  «        ‚t          |t
          ¦  «        r%|                      d
t          |¦  «        ¦  «         d S t          |t          ¦  «        r|                      |¦  «         d S t          |t          t          f¦  «        r|                      |¦  «         d S t          |t          j        ¦  «        r%|                      dt          |¦  «        ¦  «         d S t          |t          t          f¦  «        r|                      |¦  «         d S t#          dt%          |¦  «        z  ¦  «        ‚)NÚstringTÚtrueFÚfalselûÿÿÿ         r   Úintegerz%dÚrealÚdatezunsupported type: %s)r   rG   rÍ   r   ÚOverflowErrorrµ   r&   ÚdictÚ
write_dictÚbytesÚ	bytearrayÚwrite_bytesrV   r_   ÚtupleÚlistÚwrite_arrayr   r•   r—   s     r   rÝ   z_PlistWriter.write_valueK  só  € Ý�e�SÑ!Ô!ð 	BØ×Ò ¨%Ñ0Ô0Ð0Ð0Ð0à�dˆ]ˆ]Ø×Ò Ñ'Ô'Ð'Ð'Ð'à�eˆ^ˆ^Ø×Ò Ñ(Ô(Ð(Ð(Ð(å˜�sÑ#Ô#ð 	BØ˜5Ð*Ð*Ò*Ð* 7Ò*Ð*Ð*Ð*Ð*Ø×#Ò# I¨t°e©|Ñ<Ô<Ð<Ð<Ð<å# EÑ*Ô*Ð*å˜�uÑ%Ô%ð 	BØ×Ò ­¨U©¬Ñ4Ô4Ð4Ð4Ð4å˜�tÑ$Ô$ð 	BØ�OŠO˜EÑ"Ô"Ð"Ð"Ð"å˜¥¥yÐ1Ñ2Ô2ð 
	BØ×Ò˜UÑ#Ô#Ð#Ð#Ð#å˜�xÔ0Ñ1Ô1ð 	BØ×Ò ­¸Ñ(>Ô(>Ñ?Ô?Ð?Ð?Ð?å˜¥¥t˜}Ñ-Ô-ð 	BØ×Ò˜UÑ#Ô#Ð#Ð#Ð#õ Ð2µT¸%±[´[Ñ@ÑAÔAÐAr   c           
      ó–  — |                       d¦  «         | xj        dz  c_        t          ddt          | j                             dd¦  «        | j        z  ¦  «        z
  ¦  «        }t          ||¦  «                             d¦  «        D ]}|r|                      |¦  «         Œ| xj        dz  c_        |  	                    d¦  «         d S )Nr   rÆ   r°   r4   rÔ   s           rÏ   )
rÉ   rÂ   Úmaxr9   rÃ   rh   rD   ÚsplitrÇ   rË   )r   r   r?   rÑ   s       r   rê   z_PlistWriter.write_bytesm  sÚ   € Ø×Ò˜6Ñ"Ô"Ð"ØÐÔ˜aÑÐÔÝØØ•�T”[×(Ò(¨°Ñ9Ô9¸DÔ<NÑNÑOÔOÑOñQô Qˆõ # 4¨Ñ7Ô7×=Ò=¸eÑDÔDð 	#ð 	#ˆDØð #Ø—’˜TÑ"Ô"Ð"øØÐÔ˜aÑÐÔØ×Ò˜Ñ Ô Ð Ð Ð r   c                 óÄ  — |rÈ|                       d¦  «         | j        r"t          |                     ¦   «         ¦  «        }n|                     ¦   «         }|D ]\\  }}t	          |t
          ¦  «        s| j        rŒ"t          d¦  «        ‚|                      d|¦  «         |  	                    |¦  «         Œ]|  
                    d¦  «         d S |                      d¦  «         d S )Nræ   úkeys must be stringsrZ   )rÉ   r×   ÚsortedÚitemsr   rG   rØ   r   rÍ   rÝ   rË   )r   r^   rô   rZ   r…   s        r   rç   z_PlistWriter.write_dictz  sð   € Øð 	(Ø×Ò˜vÑ&Ô&Ð&ØŒð "Ý˜qŸwšw™yœyÑ)Ô)��àŸš™	œ	�à#ð (ð (‘
��UÝ! #¥sÑ+Ô+ð <Ø”~ð !Ø Ý#Ð$:Ñ;Ô;Ð;Ø×#Ò# E¨3Ñ/Ô/Ð/Ø× Ò  Ñ'Ô'Ð'Ð'Ø×Ò˜VÑ$Ô$Ð$Ð$Ð$ð ×Ò Ñ'Ô'Ð'Ð'Ð'r   c                 óÀ   — |rF|                       d¦  «         |D ]}|                      |¦  «         Œ|                      d¦  «         d S |                      d¦  «         d S )NÚarray)rÉ   rÝ   rË   rÍ   )r   rö   r…   s      r   rí   z_PlistWriter.write_arrayŽ  sz   € Øð 	)Ø×Ò˜wÑ'Ô'Ð'Øð (ð (�Ø× Ò  Ñ'Ô'Ð'Ð'Ø×Ò˜WÑ%Ô%Ð%Ð%Ð%ð ×Ò Ñ(Ô(Ð(Ð(Ð(r   N)r
   rÔ   rÆ   TF)	r%   r1   r2   r   rÐ   rÝ   rê   rç   rí   r3   r   r   rÓ   rÓ   ;  s}   € € € € € àBCØ%*ð"ð "ð "ð "ð!ð !ð !ð
 Bð  Bð  BðD!ð !ð !ð(ð (ð (ð()ð )ð )ð )ð )r   rÓ   c                 ól  — d}|D ]}|                       |¦  «        r dS Œt          j        dft          j        dft          j        dffD ]j\  }}|                       |¦  «        sŒ|D ]L}||                     d¦  «                             |¦  «        z   }| d t          |¦  «        …         |k    r  dS ŒMŒkdS )N)s   <?xmls   <plistTrF   z	utf-16-bez	utf-16-leÚasciiF)r±   ÚcodecsÚBOM_UTF8ÚBOM_UTF16_BEÚBOM_UTF16_LEÚdecoderI   r9   )ÚheaderÚprefixesÚpfxÚbomÚencodingÚstartÚprefixs          r   Ú_is_fmt_xmlr  ™  sñ   € Ø$€Hàð ð ˆØ×Ò˜SÑ!Ô!ð 	Ø�4�4ð	õ ” 'Ð*ÝÔ$ kÐ2ÝÔ$ kÐ2ðð ð ‰ˆˆXð × Ò  Ñ%Ô%ð 	Øàð 	ð 	ˆEØ˜5Ÿ<š<¨Ñ0Ô0×7Ò7¸ÑAÔAÑAˆFØ�l•s˜6‘{”{�lÔ# vÒ-Ð-Ø�t�t�tð .ð	ð
 ˆ5r   c                   ó   — e Zd Zdd„ZdS )r   úInvalid filec                 ó<   — t                                | |¦  «         d S r   )r   r   )r   Úmessages     r   r   zInvalidFileException.__init__»  s   € Ý×Ò˜D 'Ñ*Ô*Ð*Ð*Ð*r   N)r  )r%   r1   r2   r   r3   r   r   r   r   º  s(   € € € € € ð+ð +ð +ð +ð +ð +r   r   ÚBÚHÚLÚQ)rÆ   é   r6   é   c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
Ú_BinaryPlistParsera  
    Read or write a binary plist file, following the description of the binary
    format.  Raise InvalidFileException in case of error, otherwise return the
    root object.

    see also: http://opensource.apple.com/source/CF/CF-744.18/CFBinaryPList.c
    c                 ó   — || _         d S r   )rr   rs   s     r   r   z_BinaryPlistParser.__init__Ê  s   € Ø#ˆŒˆˆr   c                 ó:  — 	 || _         | j                              dt          j        ¦  «         | j                              d¦  «        }t          |¦  «        dk    rt          ¦   «         ‚t          j        d|¦  «        \  }| _	        }}}| j                              |¦  «         |  
                    ||¦  «        | _        t          g|z  | _        |                      |¦  «        S # t          t           t          j        t$          t&          f$ r t          ¦   «         ‚w xY w)Niàÿÿÿé    z>6xBBQQQ)Ú_fpÚseekÚosÚSEEK_ENDÚreadr9   r   ÚstructÚunpackÚ	_ref_sizeÚ
_read_intsÚ_object_offsetsÚ
_undefinedÚ_objectsÚ_read_objectÚOSErrorÚ
IndexErrorÚerrorrå   r   )r   ÚfpÚtrailerÚoffset_sizeÚnum_objectsÚ
top_objectÚoffset_table_offsets          r   r�   z_BinaryPlistParser.parseÍ  s   € ð	)ð ˆDŒHØŒH�MŠM˜#�rœ{Ñ+Ô+Ð+Ø”h—m’m BÑ'Ô'ˆGÝ�7‰|Œ|˜rÒ!Ð!Ý*Ñ,Ô,Ð,õ ”˜j¨'Ñ2Ô2ñØ˜Tœ^¨[¸*Ø#àŒH�MŠMÐ-Ñ.Ô.Ð.Ø#'§?¢?°;ÀÑ#LÔ#LˆDÔ Ý'˜L¨;Ñ6ˆDŒMØ×$Ò$ ZÑ0Ô0Ð0øå�¥V¤\µ=Ýðð 	)ð 	)ð 	)å&Ñ(Ô(Ð(ð	)øøøs   ‚C C# Ã#7Dc                 óè   — |dk    rk| j                              d¦  «        d         dz  }d|z  }dt          |         z   }t          j        || j                              |¦  «        ¦  «        d         S |S )z$ return the size of the next object.é   rÆ   r
   r7   re   )r  r  Ú_BINARY_FORMATr  r  )r   ÚtokenLrj   r>   Úfs        r   Ú	_get_sizez_BinaryPlistParser._get_sizeæ  sj   € à�SŠ=ˆ=Ø”—’˜aÑ Ô  Ô# cÑ)ˆAØ�Q‘ˆAØ•n QÔ'Ñ'ˆAÝ”=  D¤H§M¢M°!Ñ$4Ô$4Ñ5Ô5°aÔ8Ð8àˆr   c                 ó  — t          |t          ¦  «        }| j                             |¦  «        }	 t	          |¦  «        |k    rt
          ‚||k    r|S t          |||z
  ¦  «        }|| j                             |¦  «        z  }||z  }ŒXr   )ÚminÚ_MIN_READ_BUF_SIZEr  r  r9   r   )r   ÚsizeÚcursizer   Údeltas        r   Ú_readz_BinaryPlistParser._readð  s‰   € Ý�dÕ.Ñ/Ô/ˆØŒx�}Š}˜WÑ%Ô%ˆð	Ý�4‰yŒy˜GÒ#Ð#Ý*Ð*Ø˜$ŠˆØ�Ý˜ ¨¡Ñ0Ô0ˆEØ�D”H—M’M %Ñ(Ô(Ñ(ˆDØ�uÑˆGð	r   c                 ó  ‡‡— |                       ‰|z  ¦  «        Š‰t          v r%t          j        d|› t          ‰         › �‰¦  «        S ‰st	          ¦   «         ‚t          ˆˆfd„t          d‰|z  ‰¦  «        D ¦   «         ¦  «        S )Nre   c              3   ód   •K  — | ]*}t                                ‰||‰z   …         d ¦  «        V — Œ+dS )ÚbigN)r   Ú
from_bytes)Ú.0rB   r   r4  s     €€r   ú	<genexpr>z0_BinaryPlistParser._read_ints.<locals>.<genexpr>  sR   øè è € ð <ð <Øõ Ÿš¨¨Q°°D±¨[Ô(9¸5ÑAÔAð <ð <ð <ð <ð <ð <r   r
   )r7  r-  r  r  r   rë   r8   )r   Únr4  r   s     `@r   r  z_BinaryPlistParser._read_intsü  sª   øø€ Ø�zŠz˜$ ™(Ñ#Ô#ˆØ•>Ð!Ð!Ý”=Ð!> QÐ!>­°tÔ(<Ð!>Ð!>ÀÑEÔEÐEàð -Ý*Ñ,Ô,Ð,Ýð <ð <ð <ð <ð <Ý"'¨¨4°!©8°TÑ":Ô":ð<ñ <ô <ñ <ô <ð <r   c                 ó8   — |                       || j        ¦  «        S r   )r  r  )r   r>  s     r   Ú
_read_refsz_BinaryPlistParser._read_refs  s   € Ø�Š˜q $¤.Ñ1Ô1Ð1r   c                 óø  ‡ — ‰ j         |         }|t          ur|S ‰ j        |         }‰ j                             |¦  «         ‰ j                             d¦  «        d         }|dz  |dz  }}|dk    rd}�n{|dk    rd}�nq|dk    rd	}�ng|dk    rd
}�n]|dk    r>t                               ‰ j                             d|z  ¦  «        d|dk    ¬¦  «        }�n|dk    r5t          j	        d‰ j                             d¦  «        ¦  «        d         }�nÞ|dk    r5t          j	        d‰ j                             d¦  «        ¦  «        d         }�n£|dk    rat          j	        d‰ j                             d¦  «        ¦  «        d         }t          j
        ddd¦  «        t          j        |¬¦  «        z   }�n<|dk    r,‰                      |¦  «        }‰                      |¦  «        }�n
|dk    rA‰                      |¦  «        }‰                      |¦  «        }	|	                     d¦  «        }�nÃ|dk    rD‰                      |¦  «        dz  }‰                      |¦  «        }	|	                     d¦  «        }�ny|dk    rEt          t                               ‰ j                             d|z   ¦  «        d¦  «        ¦  «        }�n.|dk    rX‰                      |¦  «        }‰                      |¦  «        }
g }|‰ j         |<   |                     ˆ fd„|
D ¦   «         ¦  «         nÐ|d k    r¼‰                      |¦  «        }‰                      |¦  «        }‰                      |¦  «        }
‰                      ¦   «         }|‰ j         |<   	 t'          ||
¦  «        D ]0\  }}‰                      |¦  «        |‰                      |¦  «        <   Œ1n*# t*          $ r t-          ¦   «         ‚w xY wt-          ¦   «         ‚|‰ j         |<   |S )!zx
        read the object by reference.

        May recursively read sub-objects (content of an array/dict/set)
        rÆ   r
   éð   r,  Nr  Fé	   Tr   r°   r:  r7   ©Úsignedé"   z>fr6   é#   z>dé3   éÑ  )Úsecondsé@   éP   rø   é`   r  úutf-16beé€   é    c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r   )r!  )r<  Úxr   s     €r   r=  z2_BinaryPlistParser._read_object.<locals>.<genexpr>O  s1   øè è € ÐAÐA°1˜$×+Ò+¨AÑ.Ô.ÐAÐAÐAÐAÐAÐAr   éÐ   )r   r  r  r  r  r  r   r;  r  r  rV   Ú	timedeltar0  r7  rý   r	   r@  Úextendrr   Úzipr!  r   r   )r   ÚrefÚresultÚoffsetÚtokenÚtokenHr.  r/  r>   r   Úobj_refsÚkey_refsÚkÚos   `             r   r!  z_BinaryPlistParser._read_object	  sâ  ø€ ð ”˜sÔ#ˆØ�Ð#Ð#ØˆMàÔ% cÔ*ˆØŒ�Š�fÑÔÐØ”—’˜aÑ Ô  Ô#ˆØ ™ u¨t¡|�ˆà�DŠ=ˆ=ØˆF‰Fà�dŠ]ˆ]ØˆF‰Fà�dŠ]ˆ]ØˆF‰Fð
 �dŠ]ˆ]ØˆF‰Fà�tŠ^ˆ^Ý—^’^ D¤H§M¢M°!°v±+Ñ$>Ô$>Ø$)°&¸A²+ð $ñ ?ô ?ˆF‰Fð �dŠ]ˆ]Ý”] 4¨¬¯ª°qÑ)9Ô)9Ñ:Ô:¸1Ô=ˆF‰Fà�dŠ]ˆ]Ý”] 4¨¬¯ª°qÑ)9Ô)9Ñ:Ô:¸1Ô=ˆF‰Fà�dŠ]ˆ]Ý”˜d D¤H§M¢M°!Ñ$4Ô$4Ñ5Ô5°aÔ8ˆAõ Ô'¨¨a°Ñ3Ô3ÝÔ(°Ð3Ñ3Ô3ñ4ˆF‰Fð �tŠ^ˆ^Ø—’˜vÑ&Ô&ˆAØ—Z’Z ‘]”]ˆF‰Fà�tŠ^ˆ^Ø—’˜vÑ&Ô&ˆAØ—:’:˜a‘=”=ˆDØ—[’[ Ñ)Ô)ˆF‰Fà�tŠ^ˆ^Ø—’˜vÑ&Ô&¨Ñ*ˆAØ—:’:˜a‘=”=ˆDØ—[’[ Ñ,Ô,ˆF‰Fà�tŠ^ˆ^å�Ÿš¨¬¯ª°a¸&±jÑ(AÔ(AÀ5ÑIÔIÑJÔJˆF‰Fà�tŠ^ˆ^Ø—’˜vÑ&Ô&ˆAØ—’ qÑ)Ô)ˆHØˆFØ!'ˆDŒM˜#ÑØ�MŠMÐAÐAÐAÐA¸ÐAÑAÔAÑAÔAÐAÐAð �tŠ^ˆ^Ø—’˜vÑ&Ô&ˆAØ—’ qÑ)Ô)ˆHØ—’ qÑ)Ô)ˆHØ—_’_Ñ&Ô&ˆFØ!'ˆDŒM˜#Ñð-Ý ¨(Ñ3Ô3ð Hð H‘D�A�qØ37×3DÒ3DÀQÑ3GÔ3G�F˜4×,Ò,¨QÑ/Ô/Ñ0Ð0ðHøåð -ð -ð -Ý*Ñ,Ô,Ð,ð-øøøõ 'Ñ(Ô(Ð(à#ˆŒ�cÑØˆs   ÎAO ÏON)r%   r1   r2   Ú__doc__r   r�   r0  r7  r  r@  r!  r3   r   r   r  r  Â  sŒ   € € € € € ðð ð$ð $ð $ð)ð )ð )ð2ð ð ð
ð 
ð 
ð<ð <ð <ð2ð 2ð 2ð]ð ]ð ]ð ]ð ]r   r  c                 ó6   — | dk     rdS | dk     rdS | dk     rdS dS )Né   rÆ   é   r  ì        r6   r  r3   )Úcounts    r   Ú_count_to_sizerf  h  s3   € Øˆv‚~€~Øˆqà	�ŠˆØˆqà	�ŠˆØˆqð ˆqr   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú_BinaryPlistWriterc                 ó0   — || _         || _        || _        d S r   )r  r×   rØ   )r   r%  rÚ   rÛ   s       r   r   z_BinaryPlistWriter.__init__x  s   € ØˆŒØ#ˆŒØ!ˆŒˆˆr   c                 óÐ  — g | _         i | _        i | _        |                      |¦  «         t	          | j         ¦  «        }dg|z  | _        t          |¦  «        | _        t          | j                 | _	        | j
                             d¦  «         | j         D ]}|                      |¦  «         Œ|                      |¦  «        }| j
                             ¦   «         }t          |¦  «        }dt          |         |z  z   }| j
                             t          j        |g| j        ¢R Ž ¦  «         d}||| j        |||f}	| j
                             t          j        dg|	¢R Ž ¦  «         d S )Nr
   ó   bplist00re   z	>5xBBBQQQ)Ú_objlistÚ	_objtableÚ_objidtableÚ_flattenr9   r  rf  r  r-  Ú_ref_formatr  rÐ   Ú_write_objectÚ
_getrefnumÚtellr  Úpack)
r   r…   r(  Úobjr)  r*  r'  Úoffset_formatÚsort_versionr&  s
             r   rÐ   z_BinaryPlistWriter.write}  sh  € ð ˆŒð ˆŒØˆÔð 	�Š�eÑÔÐõ ˜$œ-Ñ(Ô(ˆØ !˜s ;™ˆÔÝ'¨Ñ4Ô4ˆŒå)¨$¬.Ô9ˆÔð 	Œ�Š�{Ñ#Ô#Ð#ð ”=ð 	$ð 	$ˆCØ×Ò˜sÑ#Ô#Ð#Ð#ð —_’_ UÑ+Ô+ˆ
Ø"œhŸmšm™oœoÐÝ$Ð%8Ñ9Ô9ˆØ�n¨[Ô9¸KÑGÑGˆØŒ�Š•v”{ =ÐH°4Ô3GÐHÐHÐHÑIÔIÐIð ˆà˜+ t¤~°{ØÐ+ð
ˆð 	Œ�Š•v”{ ;Ð9°Ð9Ð9Ð9Ñ:Ô:Ð:Ð:Ð:r   c                 óŽ  — t          |t          ¦  «        rt          |¦  «        |f| j        v rd S nt	          |¦  «        | j        v rd S t          | j        ¦  «        }| j                             |¦  «         t          |t          ¦  «        r|| j        t          |¦  «        |f<   n|| j        t	          |¦  «        <   t          |t          ¦  «        r»g }g }| 
                    ¦   «         }| j        rt          |¦  «        }|D ][\  }}t          |t          ¦  «        s| j        rŒ"t          d¦  «        ‚|                     |¦  «         |                     |¦  «         Œ\t!          j        ||¦  «        D ]}|                      |¦  «         Œd S t          |t&          t(          f¦  «        r|D ]}|                      |¦  «         Œd S d S )Nrò   )r   Ú_scalarsr•   rm  Úidrn  r9   rl  r:   ræ   rô   r×   ró   rG   rØ   r   Ú	itertoolsÚchainro  rì   rë   )	r   r…   ÚrefnumÚkeysÚvaluesrô   r^  Úvr_  s	            r   ro  z_BinaryPlistWriter._flattenª  sè  € õ �e�XÑ&Ô&ð 	Ý�U‘”˜UÐ# t¤~Ð5Ð5Ø�ð 6õ �‰YŒY˜$Ô*Ð*Ð*ØˆFõ �T”]Ñ#Ô#ˆØŒ×Ò˜UÑ#Ô#Ð#Ý�e�XÑ&Ô&ð 	1Ø39ˆDŒN�D ™KœK¨Ð/Ñ0Ð0à*0ˆDÔ�R ™YœYÑ'õ �e�TÑ"Ô"ð 	!ØˆDØˆFØ—K’K‘M”MˆEØŒð &Ý˜u™œ�àð !ð !‘��1Ý! !¥SÑ)Ô)ð <Ø”~ð !Ø Ý#Ð$:Ñ;Ô;Ð;Ø—’˜A‘”�Ø—’˜aÑ Ô Ð Ð å”_ T¨6Ñ2Ô2ð !ð !�Ø—’˜aÑ Ô Ð Ð ð!ð !õ ˜¥¥e˜}Ñ-Ô-ð 	!Øð !ð !�Ø—’˜aÑ Ô Ð Ð ð	!ð 	!ð!ð !r   c                 ó˜   — t          |t          ¦  «        r| j        t          |¦  «        |f         S | j        t          |¦  «                 S r   )r   ry  rm  r•   rn  rz  r—   s     r   rr  z_BinaryPlistWriter._getrefnumÔ  s@   € Ý�e�XÑ&Ô&ð 	/Ø”>¥4¨¡;¤;°Ð"6Ô7Ð7àÔ#¥B u¡I¤IÔ.Ð.r   c                 ó6  — |dk     r2| j                              t          j        d||z  ¦  «        ¦  «         d S |dk     r4| j                              t          j        d|dz  d|¦  «        ¦  «         d S |dk     r4| j                              t          j        d|dz  d|¦  «        ¦  «         d S |d	k     r4| j                              t          j        d
|dz  d|¦  «        ¦  «         d S | j                              t          j        d|dz  d|¦  «        ¦  «         d S )Nr,  z>Brb  z>BBBr°   rc  z>BBHé   rd  z>BBLé   z>BBQé   )r  rÐ   r  rt  )r   rZ  r4  s      r   Ú_write_sizez_BinaryPlistWriter._write_sizeÚ  s
  € Ø�"Š9ˆ9ØŒH�NŠN�6œ; t¨U°T©\Ñ:Ô:Ñ;Ô;Ð;Ð;Ð;à�FŠ]ˆ]ØŒH�NŠN�6œ; v¨u°s©{¸DÀ$ÑGÔGÑHÔHÐHÐHÐHà�GŠ^ˆ^ØŒH�NŠN�6œ; v¨u°s©{¸DÀ$ÑGÔGÑHÔHÐHÐHÐHà�GŠ^ˆ^ØŒH�NŠN�6œ; v¨u°s©{¸DÀ$ÑGÔGÑHÔHÐHÐHÐHð ŒH�NŠN�6œ; v¨u°s©{¸DÀ$ÑGÔGÑHÔHÐHÐHÐHr   c                 ó>  ‡ — ‰                       |¦  «        }‰ j                             ¦   «         ‰ j        |<   |€‰ j                             d¦  «         d S |du r‰ j                             d¦  «         d S |du r‰ j                             d¦  «         d S t          |t          ¦  «        �r||dk     rT	 ‰ j                             t          j        dd|¦  «        ¦  «         d S # t          j	        $ r t          |¦  «        d ‚w xY w|d	k     r0‰ j                             t          j        d
d|¦  «        ¦  «         d S |dk     r0‰ j                             t          j        dd|¦  «        ¦  «         d S |dk     r0‰ j                             t          j        dd|¦  «        ¦  «         d S |dk     r0‰ j                             t          j        dd|¦  «        ¦  «         d S |dk     r5‰ j                             d|                     ddd¬¦  «        z   ¦  «         d S t          |¦  «        ‚t          |t          ¦  «        r0‰ j                             t          j        dd|¦  «        ¦  «         d S t          |t          j        ¦  «        r[|t          j        ddd¦  «        z
                       ¦   «         }‰ j                             t          j        dd|¦  «        ¦  «         d S t          |t          t           f¦  «        r?‰                      dt%          |¦  «        ¦  «         ‰ j                             |¦  «         d S t          |t&          ¦  «        r¡	 |                     d¦  «        }‰                      dt%          |¦  «        ¦  «         nK# t*          $ r> |                     d ¦  «        }‰                      d!t%          |¦  «        d"z  ¦  «         Y nw xY w‰ j                             |¦  «         d S t          |t,          ¦  «        �r|j        dk     rt1          d#¦  «        ‚|j        d	k     r0‰ j                             t          j        d
d$|¦  «        ¦  «         d S |j        dk     r0‰ j                             t          j        dd%|¦  «        ¦  «         d S |j        dk     r0‰ j                             t          j        dd&|¦  «        ¦  «         d S |j        dk     r0‰ j                             t          j        dd'|¦  «        ¦  «         d S t          |¦  «        ‚t          |t2          t4          f¦  «        rjˆ fd(„|D ¦   «         }t%          |¦  «        }‰                      d)|¦  «         ‰ j                             t          j        d*‰ j        |z  z   g|¢R Ž ¦  «         d S t          |t8          ¦  «        �rVg g }}‰ j        r"t=          |                     ¦   «         ¦  «        }	n|                     ¦   «         }	|	D ]�\  }
}t          |
t&          ¦  «        s‰ j         rŒ"tC          d+¦  «        ‚| "                    ‰                       |
¦  «        ¦  «         | "                    ‰                       |¦  «        ¦  «         Œ‚t%          |¦  «        }‰                      d,|¦  «         ‰ j                             t          j        d*‰ j        |z  z   g|¢R Ž ¦  «         ‰ j                             t          j        d*‰ j        |z  z   g|¢R Ž ¦  «         d S tC          |¦  «        ‚)-Nó    Fó   TrÔ   r
   z>Bqr…  rb  z>BBr°   rc  z>BHrƒ  rd  z>BLr„  l            z>BQr   ó   r:  rD  z>BdrG  rI  rÆ   rH  rK  rø   rL  rN  rM  r  r   rO  é�   éƒ   é‡   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   )rr  )r<  r_  r   s     €r   ú
<listcomp>z4_BinaryPlistWriter._write_object.<locals>.<listcomp>-  s%   ø€ Ð6Ð6Ð6¨1�D—O’O AÑ&Ô&Ð6Ð6Ð6r   rP  re   rò   rS  )#rr  r  rs  r  rÐ   r   r   r  rt  r$  rå   Úto_bytesrµ   rV   Útotal_secondsrè   ré   r†  r9   rG   rI   ÚUnicodeEncodeErrorr	   r   r   rì   rë   rp  ræ   r×   ró   rô   rØ   r   r:   )r   r…   rW  r/  ÚtÚrefsr>   ÚkeyRefsÚvalRefsÚ	rootItemsr^  r€  s   `           r   rq  z _BinaryPlistWriter._write_objectê  s­  ø€ Ø�oŠo˜eÑ$Ô$ˆØ$(¤H§M¢M¡O¤OˆÔ˜SÑ!Øˆ=ØŒH�NŠN˜7Ñ#Ô#Ð#Ð#Ð#à�eˆ^ˆ^ØŒH�NŠN˜7Ñ#Ô#Ð#Ð#Ð#à�dˆ]ˆ]ØŒH�NŠN˜7Ñ#Ô#Ð#Ð#Ð#å˜�sÑ#Ô#ñ R	#Ø�qŠyˆyð9Ø”H—N’N¥6¤;¨u°d¸EÑ#BÔ#BÑCÔCÐCÐCÐCøÝ”|ð 9ð 9ð 9Ý'¨Ñ.Ô.°DÐ8ð9øøøà˜’�Ø”—’�vœ{¨5°$¸Ñ>Ô>Ñ?Ô?Ð?Ð?Ð?Ø˜’�Ø”—’�vœ{¨5°$¸Ñ>Ô>Ñ?Ô?Ð?Ð?Ð?Ø˜’�Ø”—’�vœ{¨5°$¸Ñ>Ô>Ñ?Ô?Ð?Ð?Ð?Ø˜’�Ø”—’�vœ{¨5°$¸Ñ>Ô>Ñ?Ô?Ð?Ð?Ð?Ø˜’�Ø”—’˜w¨¯ª¸¸EÈ$¨Ñ)OÔ)OÑOÑPÔPÐPÐPÐPå# EÑ*Ô*Ð*å˜�uÑ%Ô%ð ?	#ØŒH�NŠN�6œ; u¨d°EÑ:Ô:Ñ;Ô;Ð;Ð;Ð;å˜�xÔ0Ñ1Ô1ð <	#Ø�Ô*¨4°°AÑ6Ô6Ñ6×EÒEÑGÔGˆAØŒH�NŠN�6œ; u¨d°AÑ6Ô6Ñ7Ô7Ð7Ð7Ð7å˜¥¥yÐ1Ñ2Ô2ð 8	#Ø×Ò˜T¥3 u¡:¤:Ñ.Ô.Ð.ØŒH�NŠN˜5Ñ!Ô!Ð!Ð!Ð!å˜�sÑ#Ô#ð 4	#ð4Ø—L’L Ñ)Ô)�Ø× Ò  ¥s¨5¡z¤zÑ2Ô2Ð2Ð2øÝ%ð 4ð 4ð 4Ø—L’L Ñ,Ô,�Ø× Ò  ¥s¨1¡v¤v°¡{Ñ3Ô3Ð3Ð3Ð3ð4øøøð ŒH�NŠN˜1ÑÔÐÐÐå˜�sÑ#Ô#ñ *	#ØŒz˜AŠ~ˆ~Ý Ð!8Ñ9Ô9Ð9Ø”˜fÒ$Ð$Ø”—’�vœ{¨5°$¸Ñ>Ô>Ñ?Ô?Ð?Ð?Ð?Ø”˜gÒ%Ð%Ø”—’�vœ{¨5°$¸Ñ>Ô>Ñ?Ô?Ð?Ð?Ð?Ø”˜gÒ%Ð%Ø”—’�vœ{¨5°$¸Ñ>Ô>Ñ?Ô?Ð?Ð?Ð?Ø”˜gÒ%Ð%Ø”—’�vœ{¨5°$¸Ñ>Ô>Ñ?Ô?Ð?Ð?Ð?å# EÑ*Ô*Ð*å˜¥¥e˜}Ñ-Ô-ð 	#Ø6Ð6Ð6Ð6°Ð6Ñ6Ô6ˆDÝ�D‘	”	ˆAØ×Ò˜T 1Ñ%Ô%Ð%ØŒH�NŠN�6œ; s¨TÔ-=ÀÑ-AÑ'AÐIÀDÐIÐIÐIÑJÔJÐJÐJÐJå˜�tÑ$Ô$ñ 	#Ø! 2�WˆGàŒð *Ý" 5§;¢;¡=¤=Ñ1Ô1�	�	à!ŸKšK™MœM�	à!ð 3ð 3‘��1Ý! !¥SÑ)Ô)ð <Ø”~ð !Ø Ý#Ð$:Ñ;Ô;Ð;Ø—’˜tŸš¨qÑ1Ô1Ñ2Ô2Ð2Ø—’˜tŸš¨qÑ1Ô1Ñ2Ô2Ð2Ð2å�G‘”ˆAØ×Ò˜T 1Ñ%Ô%Ð%ØŒH�NŠN�6œ; s¨TÔ-=ÀÑ-AÑ'AÐLÀGÐLÐLÐLÑMÔMÐMØŒH�NŠN�6œ; s¨TÔ-=ÀÑ-AÑ'AÐLÀGÐLÐLÐLÑMÔMÐMÐMÐMõ ˜EÑ"Ô"Ð"s   Â3.C# Ã# DÍ8N ÎAOÏON)	r%   r1   r2   r   rÐ   ro  rr  r†  rq  r3   r   r   rh  rh  w  sx   € € € € € ð"ð "ð "ð
+;ð +;ð +;ðZ(!ð (!ð (!ðT/ð /ð /ðIð Ið Ið ^#ð ^#ð ^#ð ^#ð ^#r   rh  c                 ó   — | d d…         dk    S )Nr  rk  r3   )rþ   s    r   Ú_is_fmt_binaryr™  K  s   € Ø�"�1�"Œ:˜Ò$Ð$r   )Údetectrv   Úwriter©Úfmtrt   c                óN  — |€p|                       d¦  «        }|                      d¦  «         t                               ¦   «         D ]} |d         |¦  «        r
|d         } nŒt	          ¦   «         ‚nt          |         d         } ||¬¦  «        }|                     | ¦  «        S )z�Read a .plist file. 'fp' should be a readable and binary file object.
    Return the unpacked root object (which usually is a dictionary).
    Nr  r
   rš  rv   )rt   )r  r  Ú_FORMATSr  r   r�   )r%  r�  rt   rþ   ÚinfoÚPÚps          r   r   r   a  s®   € ð €{Ø—’˜‘”ˆØ
�Š�‰
Œ
ˆ
Ý—O’OÑ%Ô%ð 	)ð 	)ˆDØˆt�HŒ~˜fÑ%Ô%ð Ø˜”N�Ø�ðõ
 'Ñ(Ô(Ð(ð õ �SŒM˜(Ô#ˆà	ˆ�IÐÑÔ€AØ�7Š7�2‰;Œ;Ðr   c                óD   — t          | ¦  «        }t          |||¬¦  «        S )zqRead a .plist file from a bytes object.
    Return the unpacked root object (which usually is a dictionary).
    rœ  )r   r   )r…   r�  rt   r%  s       r   r   r   w  s$   € õ 
�‰Œ€BÝ�˜ yÐ1Ñ1Ô1Ð1r   TF)r�  rÚ   rÛ   c                ó¢   — |t           vrt          d|›�¦  «        ‚t          |         d         |||¬¦  «        }|                     | ¦  «         dS )zWWrite 'value' to a .plist file. 'fp' should be a writable,
    binary file object.
    zUnsupported format: r›  )rÚ   rÛ   N)rŸ  r   rÐ   )r…   r%  r�  rÚ   rÛ   r›  s         r   r   r     sY   € ð •(ÐÐÝˆj°3°3Ð8Ñ9Ô9Ð9å�cŒ]˜8Ô$ R°9ÀxÐPÑPÔP€FØ
‡L‚L�ÑÔÐÐÐr   ©r�  rÛ   rÚ   c                ón   — t          ¦   «         }t          | ||||¬¦  «         |                     ¦   «         S )z?Return a bytes object with the contents for a .plist file.
    r¥  )r   r   Úgetvalue)r…   r�  rÛ   rÚ   r%  s        r   r   r   Š  s4   € õ 
‰Œ€BÝˆ�˜ h¸)ÐDÑDÔDÐDØ�;Š;‰=Œ=Ðr   )r4   ):r`  Ú__all__r;   rù   rV   ÚenumÚior   r{  r  Úrer  Úxml.parsers.expatr   ÚEnumr%   r   ÚglobalsÚupdateÚ__members__r3  r	   rÖ   Úcompilerf   rD   rJ   ÚASCIIrS   r\   r_   rk   rm   r¾   rÓ   r  r   r   r-  Úobjectr  r  rf  rG   r   rµ   rè   ry  rh  r™  r   ræ   r   rŸ  r   r   r   r   r3   r   r   ú<module>r´     sí  ðð.ð .ð^ð ð €ð €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø *Ð *Ð *Ð *Ð *Ð *ð ˆdŒi˜Ð';ÀHÐMÑMÔM€Ø €�	„	× Ò �Ô(Ñ )Ô )Ð )ð Ð ðð ð ð ð ñ ô ð ðB€ð �"”*ðIñJô J€ðð ð ð ð&ð &ð &ð ˆbŒjð  Xð  Z\ô  Zbñ  cô  c€ð	#ð 	#ð 	#ðð ð ð
ð 
ð 
ðk<ð k<ð k<ð k<ð k<ñ k<ô k<ð k<ð\#ð #ð #ð #ð #ñ #ô #ð #ðL[)ð [)ð [)ð [)ð [)�>ñ [)ô [)ð [)ð|ð ð ðB+ð +ð +ð +ð +˜Jñ +ô +ð +ð ˜S S¨SÐ1Ð1€àˆV‰XŒX€
ðdð dð dð dð dñ dô dð dðLð ð ð ��e˜XÔ.°Ð6€ðQ#ð Q#ð Q#ð Q#ð Q#˜&ñ Q#ô Q#ð Q#ðh%ð %ð %ð ˆTˆTØØØðñ ô ð
 ��ØØ!Ø!ðñ ô ð
€ð  Dð ð ð ð ð ð, ¨ð 2ð 2ð 2ð 2ð 2ð #¨d¸Uð ð ð ð ð ð  ¨%¸4ð ð ð ð ð ð ð r   