� ,�ReiX� �4�ddlmZddlmZddlZddlmZddlmZm Z m Z ddl m Z m Z mZmZmZmZddlmZmZmZed �ed ��D����eed ����zZeed ��z Zeed ��z ZeZeZeZed��Zeed��zZ eej!ej"zdz��Z#e#ed��zZ$eej%��Z&edd dddddd���Z'Gd�de(��Z)e*d�d]d!�Z+e*d�d^d$�Z,Gd%�d&��Z-Gd'�d(��Z.Gd)�d*e ��Z/d_d0�Z0d`d6�Z1dad7�Z2dad8�Z3dbd;�Z4dbd<�Z5dcd?�Z6dddA�Z7dedB�Z8dfdD�Z9dfdE�Z:dgdG�Z;dhdI�ZdjdQ�Z?dfdR�Z@dkdT�ZAdidU�ZBdldW�ZCdmdY�ZDdnd[�ZEdod\�ZFdS)p�)� annotations)�IterableN)�MappingProxyType)�Any�BinaryIO� NamedTuple�)� RE_DATETIME� RE_LOCALTIME� RE_NUMBER�match_to_datetime�match_to_localtime�match_to_number)�Key� ParseFloat�Posc#�4K�|]}t|��V��dS�N)�chr)�.0�is ��/builddir/build/BUILDROOT/alt-python311-setuptools-65.6.3-2.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/setuptools/_vendor/tomli/_parser.py� rs(����1�1�!�s�1�v�v�1�1�1�1�1�1�� �� z z � z-_z"'�� � �"�\)z\bz\tz\nz\fz\rz\"z\\c��eZdZdZdS)�TOMLDecodeErrorz0An error raised if a document is not valid TOML.N)�__name__� __module__� __qualname__�__doc__�rrr%r%5s������:�:�:�:rr%�� parse_float�__fprr,r�return�dict[str, Any]c��|���} |���}n#t$rtd��d�wxYwt ||���S)z%Parse TOML from a binary file object.zEFile must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`Nr+)�read�decode�AttributeError� TypeError�loads)r-r,�b�ss r�loadr89sk�� � � � � �A�� �H�H�J�J���� ����� S� � �� ����� �� � ,� ,� ,�,s �+�A�__s�strc�d�|�dd��}d}tt��t����}d}t |��} t ||t ��} ||}n#t$rY�n&wxYw|dkr|dz }�>|tvr*t|||||��}t ||t ��}n�|dkr~ ||dz}n#t$rd}YnwxYw|j � ��|dkrt|||��\}}nt|||��\}}t ||t ��}n|d krt||d ���t||��} ||}n#t$rYn"wxYw|dkrt||d ���|dz }��S|jjS) zParse TOML from a string.z rrr*Tr �[N�#zInvalid statementz5Expected newline or end of document after a statement)�replace�Output� NestedDict�Flags�make_safe_parse_float� skip_chars�TOML_WS� IndexError�KEY_INITIAL_CHARS�key_value_rule�flags�finalize_pending�create_list_rule�create_dict_rule� suffixed_err� skip_comment�data�dict)r9r,�src�pos�out�header�char� second_chars rr5r5Es�� �+�+�f�d� #� #�C� �C� ����u�w�w� '� '�C��F�'� �4�4�K�0���c�7�+�+�� ��s�8�D�D��� � � � �E� ���� �4�<�<� �1�H�C� � �$� $� $� ��c�3�� �D�D�C��S�#�w�/�/�C�C� �S�[�[� #�*-�c�A�g�,� � ��� #� #� #�"� � � � #���� �I� &� &� (� (� (��c�!�!�.�s�C��=�=� ��V�V�.�s�C��=�=� ��V��S�#�w�/�/�C�C� �S�[�[��s�C�)<�=�=� =��3��$�$�� ��s�8�D�D��� � � � �E� ���� �4�<�<���S�Q��� � �q���a0�d �8�=�s6�*A3�3 B�B� C� C%�$C%�/E8�8 F�Fc�J�eZdZdZdZdZdd�Zdd �Zdd �Zdd �Z dd�Z dd�Z dS)rAz)Flags that map to parsed keys/namespaces.rr r.�Nonec�:�i|_t��|_dSr)�_flags�set�_pending_flags��selfs r�__init__zFlags.__init__�s��')�� �47�E�E����r�keyr�flag�intc�>�|j�||f��dSr)r[�add�r]r_r`s r� add_pendingzFlags.add_pending�s#�� �����d� �,�,�,�,�,rc��|jD]\}}|�||d����|j���dS)NF�� recursive)r[rZ�clearrds rrIzFlags.finalize_pending�sN���,� 1� 1�I�C�� �H�H�S�$�%�H� 0� 0� 0� 0� ��!�!�#�#�#�#�#rc��|j}|dd�D]}||vrdS||d}�|�|dd��dS)N������nested)rY�pop)r]r_�cont�ks r� unset_allzFlags.unset_all�s^���{���S�b�S�� %� %�A���}�}������7�8�$�D�D� ����R��$�����rrh�boolc�<�|j}|dd�|d}}|D]5}||vr!t��t��id�||<||d}�6||vr!t��t��id�||<|||rdnd�|��dS)Nrk)rH�recursive_flagsrlrlrsrH)rYrZrc)r]r_r`rhrn� key_parent�key_stemros rrZz Flags.set�s����{��"�3�B�3�x��R��H� �� %� %�A���}�}�$'�E�E�c�e�e�r�R�R��Q����7�8�$�D�D� �4� � �'*�u�u����RT�U�U�D��N� �X��I�B�(�(�7�C�G�G��M�M�M�M�Mrc���|sdS|j}|dd�D]&}||vrdS||}||dvrdS|d}�'|d}||vr||}||dvp ||dvSdS)NFrkrsTrlrH)rY)r]r_r`rnro� inner_contrus r�is_z Flags.is_�s���� ��5��{���S�b�S�� (� (�A���}�}��u�u��a��J��z�"3�4�4�4��t�t��h�'�D�D��r�7�� �t� � ���>�D��4��=�(�K�D�D�9J�4K�,K� K��urN�r.rW)r_rr`rar.rW�r_rr.rW)r_rr`rarhrqr.rW)r_rr`rar.rq) r&r'r(r)�FROZEN� EXPLICIT_NESTr^rerIrprZrxr*rrrArA�s�������3�3��F��M�:�:�:�:�-�-�-�-�$�$�$�$�  � � � � N� N� N� N������rrAc�,�eZdZdd�Zdd�dd �Zdd �Zd S)r@r.rWc��i|_dSr)rOr\s rr^zNestedDict.__init__�s ��$&�� � � rT�� access_listsr_rr�rqrOc���|j}|D]V}||vri||<||}|rt|t��r|d}t|t��std����W|S)Nrkz There is no nest behind this key)rO� isinstance�list�KeyError)r]r_r�rnros r�get_or_create_nestzNestedDict.get_or_create_nest�s��� �I��� C� C�A���}�}���Q����7�D�� � �4�� 6� 6� ��B�x���d�D�)�)� C��A�B�B�B� C�� rc���|�|dd���}|d}||vrC||}t|t��std���|�i��dSig||<dS)Nrkz/An object other than list found behind this key)r�r�r�r��append)r]r_rn�last_key�list_s r�append_nest_to_listzNestedDict.append_nest_to_list�s����&�&�s�3�B�3�x�0�0���r�7�� �t� � ���N�E��e�T�*�*� R��P�Q�Q�Q� �L�L�� � � � � � �T�D��N�N�NrNry)r_rr�rqr.rOrz)r&r'r(r^r�r�r*rrr@r@�s_������'�'�'�'�"� ������" "� "� "� "� "� "rr@c�$�eZdZUded<ded<dS)r?r@rNrArHN)r&r'r(�__annotations__r*rrr?r?�s%������������L�L�L�L�Lrr?rPrQr�chars� Iterable[str]c�\� |||vr|dz }|||v�n#t$rYnwxYw|S)Nr )rE)rPrQr�s rrCrC�sV�� ��#�h�%��� �1�H�C��#�h�%����� � � � � �� ���� �Js �� )�)�expect�error_on�frozenset[str]� error_on_eofrqc�B� |�||��}n6#t$r)t|��}|rt||d|����d�YnwxYw|�|||���s3|||vr|dz }|||v�t||d||�����|S)Nz Expected r zFound invalid character )�index� ValueError�lenrL� isdisjoint)rPrQr�r�r��new_poss r� skip_untilr��s���O��)�)�F�C�(�(���� �O�O�O��c�(�(�� � O��s�G�-C��-C�-C�D�D�$� N� O� O�O���� � � �s�3�w�;�/� 0� 0�N��#�h�h�&�&� �1�H�C��#�h�h�&�&��3��%L��C��%L�%L�M�M�M� �Ns��0A � A c�� ||}n#t$rd}YnwxYw|dkrt||dzdtd���S|S)Nr=r rF�r�r�)rEr��ILLEGAL_COMMENT_CHARS)rPrQrTs rrMrMsm����s�8���� ������������ �s�{�{�� ��q��$�)>�U� � � � � �J� � � �c�f� |}t||t��}t||��}||kr|S�1r)rC�TOML_WS_AND_NEWLINErM)rPrQ�pos_before_skips r�skip_comments_and_array_wsr�sB�������c�#6�7�7���3��$�$�� �/� !� !��J� rrR�tuple[Pos, Key]c�>�|dz }t||t��}t||��\}}|j�|t j��s%|j�|t j��rt||d|�d����|j� |t jd��� |j � |��n #t$rt||d��d�wxYw|� d|��st||d���|dz|fS) Nr zCannot declare z twiceFrg�Cannot overwrite a value�]z.Expected ']' at the end of a table declaration)rCrD� parse_keyrHrxrAr|r{rLrZrNr�r�� startswith�rPrQrRr_s rrKrKs-���1�H�C� �S�#�w� '� '�C���c�"�"�H�C�� �y�}�}�S�%�-�.�.�D�#�)�-�-��U�\�2R�2R�D��3��%B�s�%B�%B�%B�C�C�C��I�M�M�#�u�*�e�M�<�<�<�K� ��#�#�C�(�(�(�(�� �K�K�K��3��%?�@�@�d�J�K���� �>�>�#�s� #� #�W��3��%U�V�V�V� ��7�C�<�s �6C�C.c�&�|dz }t||t��}t||��\}}|j�|t j��rt||d|�����|j�|��|j� |t j d��� |j � |��n #t$rt||d��d�wxYw|�d|��st||d���|dz|fS)N��"Cannot mutate immutable namespace Frgr�z]]z0Expected ']]' at the end of an array declaration)rCrDr�rHrxrAr{rLrprZr|rNr�r�r�r�s rrJrJ.s%���1�H�C� �S�#�w� '� '�C���c�"�"�H�C�� �y�}�}�S�%�,�'�'�Q��3��%O�#�%O�%O�P�P�P��I��������I�M�M�#�u�*�e�M�<�<�<�K� ��$�$�S�)�)�)�)�� �K�K�K��3��%?�@�@�d�J�K���� �>�>�$�� $� $�Y��3��%W�X�X�X� ��7�C�<�s �*C�C"rSrc�&�� �t|||��\}� }� dd�� d}}�|z}�� fd�tdt� ����D��} | D]`} |j�| t j��rt||d| �����|j�| t j���a|j�|t j ��rt||d|����� |j � |��} n #t$rt||d��d�wxYw|| vrt||d���t|ttf��r*|j��� zt j d���|| |<|S) Nrkc3�2�K�|]}��d|�zV��dSrr*)rrrSr_s ��rrz!key_value_rule..Js0�����L�L�A�v��B�Q�B��/�L�L�L�L�L�Lrr zCannot redefine namespace r�r�Trg)�parse_key_value_pair�ranger�rHrxrAr|rLrer{rNr�r�r�rOr�rZ) rPrQrRrSr,�valuertru�abs_key_parent�relative_path_cont_keys�cont_key�nestr_s ` @rrGrGCs�����+�3��[�A�A�O�C��e��s��s�8�S��W��J��j�(�N�L�L�L�L�L��q�#�c�(�(�9K�9K�L�L�L��+�=�=�� �9�=�=��5�#6� 7� 7� R��s�C�)P�h�)P�)P�Q�Q� Q� � ���h��(;�<�<�<�<� �y�}�}�^�U�\�2�2� �� ��K�>�K�K� � � �K��x�*�*�>�:�:���� �K�K�K��3��%?�@�@�d�J�K�����4����3��%?�@�@�@��%�$���&�&�B� � � � �f�s�l�E�L�D� �A�A�A��D��N� �Js �6D�D.�tuple[Pos, Key, Any]c���t||��\}} ||}n#t$rd}YnwxYw|dkrt||d���|dz }t||t��}t |||��\}}|||fS)N�=z,Expected '=' after a key in a key/value pairr )r�rErLrCrD� parse_value)rPrQr,r_rTr�s rr�r�es�����c�"�"�H�C����s�8���� ������������ �s�{�{��3��%S�T�T�T��1�H�C� �S�#�w� '� '�C��S�#�{�3�3�J�C�� ��U�?�s �� -�-c�>�t||��\}}|f}t||t��} ||}n#t$rd}YnwxYw|dkr||fS|dz }t||t��}t||��\}}||fz }t||t��}�q)NT�.r )�parse_key_partrCrDrE)rPrQ�key_partr_rTs rr�r�us���"�3��,�,�M�C���{�C� �S�#�w� '� '�C� ,� �"�3�x�D�D��� � � ��D�D�D� ���� �3�;�;���8�O� �q�����c�7�+�+��&�s�C�0�0� ��X� ��{�����c�7�+�+�� ,s�8� A�A�tuple[Pos, str]c�� ||}n#t$rd}YnwxYw|tvr$|}t||t��}||||�fS|dkrt||��S|dkrt ||��St ||d���)N�'r"z(Invalid initial character for a key part)rE�BARE_KEY_CHARSrC�parse_literal_str�parse_one_line_basic_strrL)rPrQrT� start_poss rr�r��s�����s�8���� ������������ �~���� ���c�>�2�2���C� �#� �&�&�&� �s�{�{� ��c�*�*�*� �s�{�{�'��S�1�1�1� �s�C�!K� L� L�Lr�c�0�|dz }t||d���S)Nr F�� multiline)�parse_basic_str�rPrQs rr�r��s ���1�H�C� �3��u� 5� 5� 5�5r�tuple[Pos, list]c��|dz }g}t||��}|�d|��r|dz|fS t|||��\}}|�|��t||��}|||dz�}|dkr|dz|fS|dkrt ||d���|dz }t||��}|�d|��r|dz|fS��)Nr r�T�,zUnclosed array)r�r�r�r�rL)rPrQr,�array�val�cs r� parse_arrayr��s���1�H�C��E� $�S�#� .� .�C� �~�~�c�3�����Q�w��~��"��s�C��5�5���S� � � �S����(��c�2�2�� ��c�A�g� � �� ��8�8���7�E�>� !� ��8�8��s�C�)9�:�:� :� �q���(��c�2�2�� �>�>�#�s� #� #� "���7�E�>� !�"r�tuple[Pos, dict]c�f�|dz }t��}t��}t||t��}|�d|��r |dz|jfS t |||��\}}}|dd�|d}}|�|tj��rt||d|����� |� |d���} n #t$rt||d��d�wxYw|| vrt||d |�����|| |<t||t��}|||dz�} | dkr |dz|jfS| d krt||d ���t|t tf��r"|�|tjd� ��|dz }t||t��}��X) Nr �}Trkr�Frr�zDuplicate inline table key r�zUnclosed inline tablerg)r@rArCrDr�rOr�rxr{rLr�r�r�r�rZ) rPrQr,� nested_dictrHr_r�rtrur�r�s r�parse_inline_tabler��s����1�H�C��,�,�K� �G�G�E� �S�#�w� '� '�C� �~�~�c�3���)��Q�w� �(�(�(�,�.�s�C��E�E���S�%�"�3�B�3�x��R��H� � �9�9�S�%�,� '� '� U��s�C�)S�c�)S�)S�T�T� T� O��1�1�*�5�1�Q�Q�D�D��� O� O� O��s�C�)C�D�D�$� N� O���� �t� � ��s�C�)S�x�)S�)S�T�T� T���X����c�7�+�+�� ��c�A�g� � �� ��8�8���7�K�,�,� ,� ��8�8��s�C�)@�A�A� A� �e�d�D�\� *� *� 9� �I�I�c�5�<�4�I� 8� 8� 8� �q�����c�7�+�+��+,s �7C�C,Fr�r�c���|||dz�}|dz }|rt|dvrp|dkrPt||t��} ||}n#t$r|dfcYSwxYw|dkrt||d���|dz }t||t��}|dfS|dkrt ||d ��S|d krt ||d ��S |t |fS#t$rt||d��d�wxYw) Nr�>�\ �\ �\ r��rzUnescaped '\' in a stringr z\u�z\U�)rCrDrErLr��parse_hex_char�BASIC_STR_ESCAPE_REPLACEMENTSr�)rPrQr�� escape_idrTs r�parse_basic_str_escaper��sM���C�#��'�M�"�I��1�H�C�� �Y�"9�9�9� �� � ��S�#�w�/�/�C� ��3�x����� � � ��B�w���� �����t�|�|�"�3��-I�J�J�J� �1�H�C���c�#6�7�7���B�w���E����c�3��*�*�*��E����c�3��*�*�*�M��1�)�<�<�<�� �M�M�M��3��%A�B�B��L�M���s�?�A�A�8C�C$c�&�t||d���S)NTr�)r�r�s r� parse_basic_str_escape_multiliner��s�� !�#�s�d� ;� ;� ;�;r�hex_lenrac�$�||||z�}t|��|kst�|��st||d���||z }t |d��}t |��st||d���|t |��fS)NzInvalid hex value�z/Escaped character is not a Unicode scalar value)r��HEXDIGIT_CHARS� issupersetrLra�is_unicode_scalar_valuer)rPrQr��hex_str�hex_ints rr�r��s����#��g� �%�&�G� �7�|�|�w���n�&?�&?��&H�&H���3��%8�9�9�9��7�N�C��'�2���G� "�7� +� +�X��3��%V�W�W�W� ��G� � � �rc�`�|dz }|}t||dtd���}|dz|||�fS)Nr r�Tr�)r��ILLEGAL_LITERAL_STR_CHARS)rPrQr�s rr�r�sJ���1�H�C��I� � �S�#� 9�� � � �C� ��7�C� �#� �&� &�&r�literalc�`�|dz }|�d|��r|dz }|r+d}t||dtd���}|||�}|dz}nd}t||d� ��\}}|�||��s||fS|dz }|�||��s|||zfS|dz }|||d zzfS) N�rr r��'''Tr�r"r�r�)r�r��#ILLEGAL_MULTILINE_LITERAL_STR_CHARSr�)rPrQr��delim�end_pos�results r�parse_multiline_strr� s���1�H�C� �~�~�d�C� � �� �q���� @���� � � �8��  � � ���S��[�!����k�����%�c�3�$�?�?�?� ��V� �>�>�%�� %� %���F�{���1�H�C� �>�>�%�� %� %�#��F�U�N�"�"��1�H�C� ��%�!�)�$� $�$rc��|rt}t}nt}t}d}|} ||}n #t$rt ||d��d�wxYw|dkrB|s|dz||||�zfS|�d|��r|dz||||�zfS|dz }�s|dkr$||||�z }|||��\}}||z }|}��||vrt ||d |�����|dz }��) Nr�TzUnterminated stringr"r �"""r�r#zIllegal character )�!ILLEGAL_MULTILINE_BASIC_STR_CHARSr��ILLEGAL_BASIC_STR_CHARSr�rErLr�) rPrQr�r�� parse_escapesr�r�rT� parsed_escapes rr�r�(sY���/�4��8� � �*��.� � �F��I�� J��s�8�D�D��� J� J� J��s�C�)>�?�?�T� I� J���� �3�;�;�� <��Q�w���Y�s�]�);� ;�;�;��~�~�e�S�)�)� <��Q�w���Y�s�]�);� ;�;�;� �1�H�C� � �4�<�<� �c�)�C�-�(� (�F�!.��s�C�!8�!8� �C�� �m� #�F��I� � �8� � ��s�C�)F�d�)F�)F�G�G� G� �q���)s �/�A �tuple[Pos, Any]c�n� ||}n#t$rd}YnwxYw|dkr8|�d|��rt||d���St||��S|dkr8|�d|��rt||d���St ||��S|dkr|�d |��r|d zdfS|d kr|�d |��r|d zdfS|dkrt |||��S|dkrt |||��Stj||��}|rK t|��}n$#t$r}t||d��|�d}~wwxYw|� ��|fStj||��}|r#|� ��t|��fStj||��}|r$|� ��t!||��fS|||dz�} | dvr|dz|| ��fS|||d z�} | dvr|d z|| ��fSt||d���)Nr"r�F)r�r�r�T�t�truer��f�false�r<�{zInvalid date or datetimer�>�inf�nan>�+inf�+nan�-inf�-nanz Invalid value)rEr�r�r�r�r�r�r �matchr r�rL�endr rr r) rPrQr,rT�datetime_match� datetime_obj�e�localtime_match� number_match� first_three� first_fours rr�r�Hs�����s�8���� ������������  �s�{�{� �>�>�%�� %� %� @�&�s�C��?�?�?� ?�'��S�1�1�1� �s�{�{� �>�>�%�� %� %� ?�&�s�C��>�>�>� >� ��c�*�*�*� �s�{�{� �>�>�&�#� &� &� !���7�D�=� � �s�{�{� �>�>�'�3� '� '� "���7�E�>� !� �s�{�{��3��[�1�1�1� �s�{�{�!�#�s�K�8�8�8�!�&�s�C�0�0�N��2� L�,�^�<�<�L�L��� L� L� L��s�C�)C�D�D�!� K����� L�����!�!�#�#�\�1�1�"�(��c�2�2�O��J��"�"�$�$�&8��&I�&I�I�I� �?�3��,�,�L��N����!�!�?�<��#M�#M�M�M��c�C�!�G�m�$�K��n�$�$��Q�w� � �K�0�0�0�0��S�3��7�]�#�J��5�5�5��Q�w� � �J�/�/�/�/� �s�C�� 1� 1�1s$� � ��%D5�5 E�?E�E�msgc�H�d d�}t|�d|||���d���S) zZReturn a `TOMLDecodeError` where error message is suffixed with coordinates in source.rPr:rQrr.c��|t|��krdS|�dd|��dz}|dkr|dz}n||�dd|��z }d|�d|��S)Nzend of documentrrr zline z , column )r��count�rindex)rPrQ�line�columns r� coord_reprz suffixed_err..coord_repr�su�� �#�c�(�(�?�?�$�$��y�y��q�#�&�&��*�� �1�9�9��1�W�F�F��3�:�:�d�A�s�3�3�3�F�.�t�.�.�f�.�.�.rz (at �))rPr:rQrr.r:)r%)rPrQrrs rrLrL�sC��/�/�/�/� �c�?�?� � �3��(<�(<�?�?�?� @� @�@r� codepointc�B�d|cxkodkncpd|cxkodkncS)Nri��i�i��r*)rs rr�r��sE�� �� #� #� #� #�e� #� #� #� #� G��)�)F�)F�)F�)F�w�)F�)F�)F�)F�Grc�4���turtSd�fd� }|S)a%A decorator to make `parse_float` safe. `parse_float` must not return dicts or lists, because these types would be mixed with parsed TOML tables and arrays, thus confusing the parser. The returned decorated callable raises `ValueError` instead of returning illegal types. � float_strr:r.rc�t���|��}t|ttf��rtd���|S)Nz*parse_float must not return dicts or lists)r�rOr�r�)r� float_valuer,s �r�safe_parse_floatz/make_safe_parse_float..safe_parse_float�s>���!�k�)�,�,� � �k�D�$�<� 0� 0� K��I�J�J� J��r)rr:r.r)�float)r,r"s` rrBrB�s;����e���� ������� �r)r-rr,rr.r/)r9r:r,rr.r/)rPr:rQrr�r�r.r) rPr:rQrr�r:r�r�r�rqr.r)rPr:rQrr.r)rPr:rQrrRr?r.r�) rPr:rQrrRr?rSrr,rr.r)rPr:rQrr,rr.r�)rPr:rQrr.r�)rPr:rQrr.r�)rPr:rQrr,rr.r�)rPr:rQrr,rr.r�)rPr:rQrr�rqr.r�)rPr:rQrr�rar.r�)rPr:rQrr�rqr.r�)rPr:rQrr,rr.r�)rPr:rQrrr:r.r%)rrar.rq)r,rr.r)G� __future__r�collections.abcr�string�typesr�typingrrr�_rer r r r rr�_typesrrr� frozensetr�r� ASCII_CTRLr�r�r�r�r�rDr�� ascii_letters�digitsr�rF� hexdigitsr�r�r�r%r#r8r5rAr@r?rCr�rMr�rKrJrGr�r�r�r�r�r�r�r�r�r�r�r�r�rLr�rBr*rr�r0s��� #�"�"�"�"�"�$�$�$�$�$�$� � � � �"�"�"�"�"�"�,�,�,�,�,�,�,�,�,�,�����������������)�(�(�(�(�(�(�(�(�(� �Y�1�1�u�u�R�y�y�1�1�1� 1� 1�I�I�c�c�#�h�h�4G�4G� G� �%�y�y����6��$.���6�1B�1B�$B�!�3��&G�#�/�� �)�E� � ��� � �$���/����6�/�&�-�?�$�F�G�G��"�Y�Y�u�%5�%5�5����6�+�,�,�� 0� 0���������� !� !��;�;�;�;�;�j�;�;�;�7<� -� -� -� -� -� -�27�?�?�?�?�?�?�D7�7�7�7�7�7�7�7�t"�"�"�"�"�"�"�"�D�����Z���� ��������, � � � ���������$����*����D � � � � ,�,�,�,�$ M� M� M� M� 6�6�6�6� "�"�"�"�0,�,�,�,�B.3�M�M�M�M�M�M�:<�<�<�<�����'�'�'�'�%�%�%�%�>����@A2�A2�A2�A2�HA�A�A�A�"H�H�H�H������r