� !A?h�n����dZgd�ZddlZddlZddlZddlZddlmZddlZddl Z ddl Z ddl Z ddl m Z ejdde���Ze���ej��Gd �d ��Zd Ze jd ��Zd2d�Zd�Ze jde j��Zd�Zd�Zd�ZGd�d��ZGd�d��Z Gd�de ��Z!d�Z"Gd�de#��Z$dddd d!�Z%e&��Z'Gd"�d#��Z(d$�Z)e*e+e,eje-fZ.Gd%�d&e&��Z/d'�Z0e1e2e"ee!�(��e3e2e0e(e/�(��iZ4de2d)�d*�Z5de2d)�d+�Z6e1d,d-d.�d/�Z7e1d-d,d0�d1�Z8dS)3a>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: import datetime import plistlib pl = dict( aString = "Doodah", aList = ["A", "B", 12, 32.1, [1, 2, 3]], aFloat = 0.1, anInt = 728, aDict = dict( anotherString = "", aThirdString = "M\xe4ssig, Ma\xdf", aTrueValue = True, aFalseValue = False, ), someData = b"", someMoreData = b"" * 10, aDate = datetime.datetime.now() ) print(plistlib.dumps(pl).decode()) Parse Plist example: import plistlib plist = b''' foo bar ''' pl = plistlib.loads(plist) print(pl["foo"]) )�InvalidFileException�FMT_XML� FMT_BINARY�load�dump�loads�dumps�UID�N)�BytesIO)� ParserCreate� PlistFormatzFMT_XML FMT_BINARY)�modulec�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)r c��t|t��std���|dkrtd���|dkrtd���||_dS)Nzdata must be an int�zUIDs cannot be >= 2**64r �UIDs must be positive)� isinstance�int� TypeError� ValueError�data��selfrs �5/opt/alt/python-internal/lib64/python3.11/plistlib.py�__init__z UID.__init__Ns^���$��$�$� 3��1�2�2� 2� �7�?�?��6�7�7� 7� �!�8�8��4�5�5� 5��� � � �c��|jS�N)r�rs r� __index__z UID.__index__Ws ���y�rc�J�|jj�dt|j���d�S)N�(�))� __class__�__name__�reprrrs r�__repr__z UID.__repr__Zs$���>�2�2�2�D���O�O�O�O�D�Drc� �|j|jffSr)r$rrs r� __reduce__zUID.__reduce__]s���~�� �|�+�+rc�Z�t|t��stS|j|jkSr)rr �NotImplementedr)r�others r�__eq__z UID.__eq__`s)���%��%�%� "�!� !��y�E�J�&�&rc�*�t|j��Sr)�hashrrs r�__hash__z UID.__hash__es���D�I���rN) r%� __module__� __qualname__rr r'r)r-r0�rrr r Msq������������E�E�E�,�,�,�'�'�'� ����rr s� 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]�Lc���|dzdz}g}tdt|��|��D]6}||||z�}|�tj|�����7d�|��S)N��r r)�range�len�append�binascii� b2a_base64�join)�s� maxlinelength� maxbinsize�pieces�i�chunks r�_encode_base64rDys|����"�A�%�J� �F� �1�c�!�f�f�j� )� )�2�2���!�a�*�n�$�%��� � �h�)�%�0�0�1�1�1�1� �8�8�F� � �rc��t|t��r'tj|�d����Stj|��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�%�%�%rz{(?P\d\d\d\d)(?:-(?P\d\d)(?:-(?P\d\d)(?:T(?P\d\d)(?::(?P\d\d)(?::(?P\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� "�"rc�T�d|j|j|j|j|j|jfzS)Nz%04d-%02d-%02dT%02d:%02d:%02dZrL)�ds r�_date_to_stringr_�s.�� +� ������ ����!�(�/� �rc�8�t�|��}|�td���|�dd��}|�dd��}|�dd��}|�dd��}|�d d ��}|S) Nz;strings can't contain control characters; use bytes insteadz � � �&z&�z>)�_controlCharPat�searchr�replace)�text�ms r�_escaperk�s������t�$�$�A��}��-�.�.� .� �<�<��� %� %�D� �<�<��d� #� #�D� �<�<��W� %� %�D� �<�<��V� $� $�D� �<�<��V� $� $�D� �Krc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d �Z d �Z d �Z d �Zd �Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)� _PlistParserc�>�g|_d|_d|_||_dSr)�stack� current_key�root� _dict_type�r� dict_types rrz_PlistParser.__init__�s#���� ������ �#����rc���t��|_|j|j_|j|j_|j|j_|j|j_ |j� |��|j Sr) 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�rc� �td���)Nz8XML entity declarations are not supported in plist files)r)r� entity_name�is_parameter_entity�value�base� system_id� public_id� notation_names rr}z_PlistParser.handle_entity_decl�s��#�#]�^�^�^rc�Z�g|_t|d|zd��}|� ||��dSdS)N�begin_)r�getattr)r�element�attrs�handlers rrwz!_PlistParser.handle_begin_element�s>���� ��$��7� 2�D�9�9�� � � �G�E�N�N�N�N�N� � rc�J�t|d|zd��}|� |��dSdS)N�end_)r�)rr�r�s rryz_PlistParser.handle_end_element�s5���$��� 0�$�7�7�� � � �G�I�I�I�I�I� � rc�:�|j�|��dSr)rr:rs rr{z_PlistParser.handle_data�s�� � ��������rc���|j�bt|jdti����st d|jjz���||jd|j<d|_dS|js ||_dSt|jdtg����st d|jjz���|jd�|��dS)N�����zunexpected element at line %d) rprro�typerrv�CurrentLineNumberrqr:�rr�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� !� !�%� (� (� (� (� (rc�H�d�|j��}g|_|S)N�)r=rrs r�get_dataz_PlistParser.get_data�s!���w�w�t�y�!�!���� �� rc��|���}|�|��|j�|��dSr)rrr�ror:)rr�r^s r� begin_dictz_PlistParser.begin_dict�s?�� �O�O� � �� ������� � ���!�����rc��|jr#td|j|jjfz���|j���dS)Nz%missing value for key '%s' at line %d)rprrvr�ro�poprs r�end_dictz_PlistParser.end_dict�sT�� � � O��D�"�.�t�{�/L�M�N�O�O� O� � �������rc���|js(t|jdti����st d|jjz���|���|_dS)Nr�zunexpected key at line %d)rprror�rrvr�r�rs r�end_keyz_PlistParser.end_key�sb�� � � <�:�d�j��n�d�2�h�h�#G�#G� <��8�!�[�:�;�<�<� <��=�=�?�?����rc�h�g}|�|��|j�|��dSr)r�ror:)rr��as r� begin_arrayz_PlistParser.begin_array�s5�� �� ������� � ���!�����rc�8�|j���dSr)ror�rs r� end_arrayz_PlistParser.end_array�s�� � �������rc�0�|�d��dS)NT�r�rs r�end_truez_PlistParser.end_trues�� ��������rc�0�|�d��dS)NFr�rs r� end_falsez_PlistParser.end_falses�� ��������rc��|���}|�d��s|�d��r%|�t|d����dS|�t|����dS)N�0x�0X�)r�� startswithr�r)r�raws r� end_integerz_PlistParser.end_integerst���m�m�o�o�� �>�>�$� � � &�3�>�>�$�#7�#7� &� �O�O�C��R�L�L� )� )� )� )� )� �O�O�C��H�H� %� %� %� %� %rc�n�|�t|�������dSr)r��floatr�rs r�end_realz_PlistParser.end_reals*�� ����d�m�m�o�o�.�.�/�/�/�/�/rc�T�|�|�����dSr)r�r�rs r� end_stringz_PlistParser.end_strings"�� ���� � ���(�(�(�(�(rc�n�|�t|�������dSr)r�rJr�rs r�end_dataz_PlistParser.end_datas*�� ����t�}�}���7�7�8�8�8�8�8rc�n�|�t|�������dSr)r�r\r�rs r�end_datez_PlistParser.end_dates+�� ���)�$�-�-�/�/�:�:�;�;�;�;�;rN)r%r1r2rr�r}rwryr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r3rrrmrm�sC������$�$�$� ���_�_�_� ��� ��� ���)�)�)� ������ ��� +�+�+� ��� ���������&�&�&�0�0�0�)�)�)�9�9�9�<�<�<�<��||_g|_||_||_dSr)�filero� _indent_level�indent)rr�� indent_levelr�s rrz_DumbXMLWriter.__init__s#���� ��� �)����� � � rc��|j�|��|�d|z��|xjdz c_dS)Nz<%s>�)ror:�writelnr��rr�s r� begin_elementz_DumbXMLWriter.begin_element"sI�� � ���'�"�"�"� � � �V�g�%�&�&�&� ���a�����rc�V�|xjdzc_|�d|z��dS)Nr�z)r�r�r�s r� end_elementz_DumbXMLWriter.end_element's5�� ���a���� � � �W�w�&�'�'�'�'�'rNc ��|�0t|��}|�d|�d|�d|�d���dS|�d|z��dS)Nrdrez)rkr�)rr�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�*� +� +� +� +� +rc��|rkt|t��r|�d��}|j�|j|jz��|j�|��|j�d��dS)NrF� )rrGrIr��writer�r�)r�lines rr�z_DumbXMLWriter.writeln5s{�� � "��$��$�$� ,��{�{�7�+�+�� �I�O�O�D�.���<� =� =� =� �I�O�O�D� !� !� !� � ��������r)r r�r)r%r1r2rr�r�r�r�r3rrr�r�si����������  � � � (�(�(� ,�,�,�,� � � � � rr�c�8�eZdZ d d�Zd�Zd�Zd �Zd �Zd �Zd S)� _PlistWriterr � r�TFc��|r|�t��t�||||��||_||_dSr)r�� PLISTHEADERr�r� _sort_keys� _skipkeys)rr�r�r�� writeHeader� sort_keys�skipkeyss rrz_PlistWriter.__init__BsJ�� � $� �J�J�{� #� #� #�����d�L�&�A�A�A�#���!����rc��|�d��|�|��|�d��dS)Nzz)r�� write_valuer�s rr�z_PlistWriter.writeLsA�� � � �.�/�/�/� ������� � � �Z� � � � � rc��t|t��r|�d|��dS|dur|�d��dS|dur|�d��dSt|t��r:d|cxkrdkrnn|�dd |z��dSt |���t|t ��r%|�d t |����dSt|t��r|�|��dSt|ttf��r|� |��dSt|tj ��r%|�d t|����dSt|ttf��r|�|��dSt#d t%|��z���) N�stringT�trueF�falsel����r�integerz%d�real�datezunsupported type: %s)rrGr�r� OverflowErrorr�r&�dict� write_dict�bytes� bytearray� write_bytesrVr_�tuple�list� write_arrayrr�r�s rr�z_PlistWriter.write_valueQs��� �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� Arc ��|�d��|xjdzc_tddt|j�dd��|jz��z ��}t ||���d��D]}|r|�|���|xjdz c_|� d��dS)Nrr�r�r4r�s r�) r�r��maxr9r�rhrD�splitr�r�)rrr?r�s rr�z_PlistWriter.write_bytesss��� ���6�"�"�"� ���a����� � ��T�[�(�(���9�9�D�6xBBQQQ)�_fp�seek�os�SEEK_END�readr9r�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 rr�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#�#7Dc���|dkrk|j�d��ddz}d|z}dt|z}tj||j�|����dS|S)z$ return the size of the next object.�r�r r7re)rr�_BINARY_FORMATrr)r�tokenLrjr>�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�� rc�D���|j��|z����tvr%tjd|�t������S�rt ����|zkrt ���t��fd�td�|z���D����S)Nrec3�d�K�|]*}t��||�z�d��V��+dS)�bigN)r� from_bytes)�.0rBr�sizes ��r� z0_BinaryPlistParser._read_ints..�sR�����<�<������Q��D��[�(9�5�A�A�<�<�<�<�<�� !� !��=�!>�Q�!>��t�(<�!>�!>��E�E� E�� -�3�t�9�9��q��0�0�*�,�,�,��<�<�<�<�<�"'��4�!�8�T�":�":�<�<�<�<�<� t ��j�d|z��d |d k���}�n�|dkr5tj d�j�d����d}�nP|dkr5tj d�j�d����d}�n|dkratj d�j�d����d}tj ddd��tj |���z}�n�|dkrR�� |��}�j�|��}t|��|krt����nV|dkrg�� |��}�j�|��} t| ��|krt���| �d��}�n�|dkrj�� |��dz}�j�|��} t| ��|krt���| �d��}�ny|dkrEt!t ��j�d|z��d ����}�n.|dkrX�� |��}��|��} g}|�j|<|��fd�| D����n�|d kr��� |��}��|��} ��|��} ����}|�j|< t)| | ��D]0\} } ��| ��|��| ��<�1n*#t,$rt���wxYwt���|�j|<|S)!zx read the object by reference. May recursively read sub-objects (content of an array/dict/set) r�r ��r,NrF� Trr�r3r7��signed�"z>fr6�#z>d�3��)�seconds�@�Pr��`r�utf-16be��c3�B�K�|]}��|��V��dSr)r!)r5�xrs �rr7z2_BinaryPlistParser._read_object..Os1�����A�A�1�$�+�+�A�.�.�A�A�A�A�A�Ar��)r rrrrrrr4rrrV� timedeltar0r9rr�r r:�extendrr�zipr!r)r�ref�result�offset�token�tokenHr.r/r>r�obj_refs�key_refs�k�os` rr!z_BinaryPlistParser._read_objectsF��� ��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��X�]�]�1�%�%�F��6�{�{�a���*�,�,�,� ��t�^�^����v�&�&�A��8�=�=��#�#�D��4�y�y�A�~�~�*�,�,�,��[�[��)�)�F�F� �t�^�^����v�&�&��*�A��8�=�=��#�#�D��4�y�y�A�~�~�*�,�,�,��[�[��,�,�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 �6AP8�8QN) r%r1r2�__doc__rr�r0rr:r!r3rrrr�s}��������$�$�$�)�)�)�2���<�<�<�2�2�2�c�c�c�c�crrc�6�|dkrdS|dkrdS|dkrdSdS)N�r��r�r6rr3)�counts r�_count_to_sizer`hs3�� �v�~�~��q� �����q� �����q��qrc�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�_BinaryPlistWriterc�0�||_||_||_dSr)rr�r�)rr%r�r�s rrz_BinaryPlistWriter.__init__xs�����#���!����rc���g|_i|_i|_|�|��t |j��}dg|z|_t |��|_t|j|_ |j � d��|jD]}|� |���|� |��}|j ���}t |��}dt||zz}|j � tj|g|j�R���d}|||j|||f} |j � tjdg| �R���dS)Nr �bplist00rez >5xBBBQQQ)�_objlist� _objtable� _objidtable�_flattenr9rr`rr-� _ref_formatrr�� _write_object� _getrefnum�tellr�pack) rr�r(�objr)r*r'� offset_format� sort_versionr&s rr�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�:�:�:�:�:rc��t|t��rt|��|f|jvrdSnt |��|jvrdSt |j��}|j�|��t|t��r||jt|��|f<n||jt |��<t|t��r�g}g}|� ��}|j rt|��}|D][\}}t|t��s|jr�"td���|�|��|�|���\t!j||��D]}|�|���dSt|t&t(f��r|D]}|�|���dSdS)Nr�)r�_scalarsr�rg�idrhr9rfr:r�r�r�r�rGr�r� itertools�chainrir�r�) rr��refnum�keys�valuesr�rX�vrYs rriz_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� � � � � !� !� !� !rc��t|t��r|jt|��|fS|jt |��Sr)rrsrgr�rhrtr�s rrlz_BinaryPlistWriter._getrefnum�s@�� �e�X� &� &� /��>�4��;�;��"6�7� 7��#�B�u�I�I�.� .rc�6�|dkr2|j�tjd||z����dS|dkr4|j�tjd|dzd|����dS|dkr4|j�tjd|dzd|����dS|d kr4|j�tjd |dzd |����dS|j�tjd |dzd |����dS)Nr,z>Br\z>BBBr�r]z>BBH�r^z>BBL�z>BBQ�)rr�rrn)rrTr6s 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� Hrc�>����|��}�j����j|<|��j�d��dS|dur�j�d��dS|dur�j�d��dSt |t ���r||dkrT �j�tjdd|����dS#tj $rt|��d�wxYw|d kr0�j�tjd d |����dS|d kr0�j�tjd d|����dS|dkr0�j�tjdd|����dS|dkr0�j�tjdd|����dS|dkr5�j�d|� d dd���z��dSt|���t |t��r0�j�tjdd|����dSt |tj ��r[|tj ddd��z ���}�j�tjdd|����dSt |tt f��r?��dt%|�����j�|��dSt |t&��r� |�d��}��dt%|����nK#t*$r>|�d ��}��d!t%|��d"z��YnwxYw�j�|��dSt |t,���r|jdkrt1d#���|jd kr0�j�tjd d$|����dS|jd kr0�j�tjd d%|����dS|jdkr0�j�tjdd&|����dS|jdkr0�j�tjdd'|����dSt|���t |t2t4f��rj�fd(�|D��}t%|��}��d)|���j�tjd*�j|zzg|�R���dSt |t8���rVgg}}�jr"t=|�����} n|���} | D]�\} } t | t&��s�j r�"tCd+���|�"��| ����|�"��| ������t%|��}��d,|���j�tjd*�j|zzg|�R����j�tjd*�j|zzg|�R���dStC|���)-N�F�Tr�r z>Bqrr\z>BBr�r]z>BHr}r^z>BLr~lz>BQr�r3r>z>BdrArCr�rBrEr�rFrHrGrrrI���c�:��g|]}��|����Sr3)rl)r5rYrs �r� z4_BinaryPlistWriter._write_object..-s%���6�6�6�1�D�O�O�A�&�&�6�6�6rrJrer�rM)#rlrrmrr�rrrrnr$r��to_bytesr�rV� total_secondsr�r�r�r9rGrI�UnicodeEncodeErrorr rrr�r�rjr�r�r�r�r�rr:) rr�rQr/�t�refsr>�keyRefs�valRefs� rootItemsrXrzs ` rrkz _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 � AO�ON) r%r1r2rr�rirlr�rkr3rrrbrbwsx������"�"�"� +;�+;�+;�Z(!�(!�(!�T/�/�/� I�I�I� ^#�^#�^#�^#�^#rrbc��|dd�dkS)Nrrer3)r�s r�_is_fmt_binaryr�Ks�� �"�1�"�:�� $�$r)�detectrv�writer��fmtrtc�N�|�p|�d��}|�d��t���D]}|d|��r |d}n�t ���nt|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). Nrr r�rv)rt)rr�_FORMATSryrr�)r%r�rtr��info�P�ps rrras��� �{�������� ���� � � ��O�O�%�%� )� )�D��t�H�~�f�%�%� ���N���� � '�(�(� (�� �S�M�(� #�� ��I����A� �7�7�2�;�;�rc�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�rtr%s rrrws$�� ����B� ���y� 1� 1� 1�1rTF)r�r�r�c��|tvrtd|�����t|d|||���}|�|��dS)zWWrite 'value' to a .plist file. 'fp' should be a writable, binary file object. zUnsupported format: r�)r�r�N)r�rr�)r�r%r�r�r�r�s rrrsY�� �(����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 rrr�s4�� ���B�����h�)�D�D�D�D� �;�;�=�=�r)r4)9rZ�__all__r;r�rV�enum�ior rur�rer�xml.parsers.expatr �Enumr%r �globals�update� __members__r r��compilerfrDrJ�ASCIIrSr\r_rkrmr�r�rrrr-�objectrrr`rGrr�r�rsrbr�rr�rr�rrrrr3rr�r�s���7�7�p � � ������ � � � ����� � � � ����������� � � � � � � � � � � � �*�*�*�*�*�*��d�i� �';�H�M�M�M� ��� � ����(�)�)�)���������B� ��"�*�I�J�J������&�&�&��b�j�X�Z\�Zb�c�c� � #� #� #���� � � �k<�k<�k<�k<�k<�k<�k<�k<�\#�#�#�#�#�#�#�#�L[)�[)�[)�[)�[)�>�[)�[)�[)�|���B+�+�+�+�+�J�+�+�+��S�S�S�1�1�� �V�X�X� �^�^�^�^�^�^�^�^�@ � � � ��e�X�.�� 6��Q#�Q#�Q#�Q#�Q#�&�Q#�Q#�Q#�h%�%�%� �T�T������� ����!�!���� ���D������,��2�2�2�2�2�#�d�U������ �%�4�������r