� ��g1 ���dZddlZddlZejZGd�de��Zd�Zd�Zd�Z dd �Z d �Z d �Z d �Z dd�Zdd�Zd�Zd�Zdd�Zdd�Zedkr,ddlZddlZejej��j��dSdS)z6fontTools.misc.textTools.py -- miscellaneous routines.�Nc�B�eZdZed���Zd�Zd�Zd�Zd�Zd�Z dS)�Tagc�Z�t|t��r|�d��}|S�Nzlatin-1)� isinstance�bytes�decode)�blobs �h/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/fontTools/misc/textTools.py� transcodez Tag.transcode s*�� �d�E� "� "� *��;�;�y�)�)�D�� �c�^�t�||�|����S�N)�str�__new__r )�self�contents r rz Tag.__new__s"���{�{�4�����!8�!8�9�9�9r c�.�|�|�� Sr)�__eq__�r�others r �__ne__z Tag.__ne__s���;�;�u�%�%�%�%r c�^�t�||�|����Sr)rrr rs r rz Tag.__eq__s"���z�z�$����u� 5� 5�6�6�6r c�6�t�|��Sr)r�__hash__�rs r rz Tag.__hash__s���|�|�D�!�!�!r c�,�|�d��Sr)�encoders r �tobytesz Tag.tobytess���{�{�9�%�%�%r N) �__name__� __module__� __qualname__� staticmethodr rrrrr�r r rr sx����������\�� :�:�:�&�&�&�7�7�7�"�"�"�&�&�&�&�&r rc�N�ttd�|D������S)z-Convert a list of hex strings to binary data.c3�DK�|]}t|t���|V��dSr)rr)�.0�chunks r � <genexpr>zreadHex.<locals>.<genexpr>$s1����Q�Q�e�*�U�C�:P�:P�Q�E�Q�Q�Q�Q�Q�Qr )�deHexStr�strjoin)rs r �readHexr,"s'�� �G�Q�Q�w�Q�Q�Q�Q�Q� R� R�Rr c �L�t|�����}t|��dzr|dz}g}tdt|��d��D]=}|�t t |||dz�d�������>t|��S)z$Convert a hex string to binary data.��0r�)r+�split�len�range�append�bytechr�int� bytesjoin)�hexdata�data�is r r*r*'s����g�m�m�o�o�&�&�G� �7�|�|�a�� ��C�-�� �D� �1�c�'�l�l�A� &� &�:�:�� � � �G�C���A��E� � 2�B�7�7�8�8�9�9�9�9� �T�?�?�r c��tj}d}|D].}t|��}|||dz dzz||dzz}�/|S)z$Convert binary data to a hex string.���)�string� hexdigits�byteord)r9�h�r�cr:s r �hexStrrE2sT����A� �A� �/�/�� �A�J�J�� ��1��6�S�.�!� !�A�a�#�g�J� .��� �Hr � c�2�g}d}t|��D]6}|dzrd|z}nd|z}|dz }|dzdzs|�|��d}�7|r|�|��|���|dvs Jd���d�|��S) Nr<��1r/�)r�����z$number doesn't fit in number of bits� )r3r4�reverse�join)�l�bits�items�binaryr:s r � num2binaryrS<s��� �E� �F� �4�[�[���� �s�7� "��6�\�F�F��6�\�F� ��F���Q��!� � � �L�L�� � � ��F�� �� � � �V���� �M�M�O�O�O� ��<�<�<�?�<�<�<� �8�8�E�?�?�r c�v�t|�����}d}|D]}|dz}|dkr|dz}�|S)NrrHr/)r+r1)�binrO�digits r � binary2numrWOsL�� �#�)�)�+�+� � �C� �A����� ��F�� �C�<�<��C��A�� �Hr c�f� t|d����S#t$rt|��cYSwxYw)zjReturn a sorted copy of a list. If there are only strings in the list, it will not consider case. c�.�|���|fSr)�lower)�as r �<lambda>zcaselessSort.<locals>.<lambda>_s��A�G�G�I�I�q�>�r )�key)�sorted� TypeError)�alists r � caselessSortraYsK�� ��e�!9�!9�:�:�:�:�� �����e�}�}�������s ��0�0c�n�t|��}|dkrt|��|z}|r |d||z zz }|S)z�Pad byte string 'data' with null bytes until its length is a multiple of 'size'. >>> len(pad(b'abcd', 4)) 4 >>> len(pad(b'abcde', 2)) 6 >>> len(pad(b'abcde', 4)) 8 >>> pad(b'abcdef', 4) == b'abcdef\x00\x00' True rH�)rr2)r9�size� remainders r �padrfdsI�� �4�=�=�D� �a�x�x���I�I��$� � � /� �E�T�I�-�.� .�D� �Kr �ascii�strictc�\�t|t��s|�||��S|Sr)rrr ��s�encoding�errorss r �tostrrnys-�� �a�� � ���x�x��&�)�)�)��r c�v�t|t��r|�||��St|��Sr)rrrrrjs r rr�s3���!�S�����x�x��&�)�)�)��Q�x�x�r c�"�t|g��Sr)r)�ns r r5r5�s�� �!��:�:�r c�N�t|t��r|nt|��Sr)rr6�ord)rDs r rArA�s!���1�c�"�"� .�1�1��A���.r r<c�F�t|���|��Sr)rnrN��iterable�joiners r r+r+�s�� ��=�=� � �h� '� '�'r r c�Z�t|���d�|D����S)Nc3�4K�|]}t|��V��dSr)r)r'�items r r)zbytesjoin.<locals>.<genexpr>�s(����C�C�$��� � �C�C�C�C�C�Cr )rrNrus r r7r7�s+�� �6�?�?� � �C�C�(�C�C�C� C� C�Cr �__main__)rF)rgrh)r<)r )�__doc__�astr?� literal_eval�safeEvalrrr,r*rErSrWrarfrnrr5rAr+r7r �doctest�sys�exit�testmod�failedr$r r �<module>r�s���<�<� � � � � � � � � � ��&�&�&�&�&�#�&�&�&�.S�S�S� ��� � � �����& � � �������*�����������/�/�/�(�(�(�(�D�D�D�D� �z����������� �C�H�_�W�_� � � %�&�&�&�&�&��r
Memory