� ���g���P�ddlZddlmZd\ZZZZZZ Z gd�Z Gd�d��Z dS)�N)�json)r������)�CONNECT� DISCONNECT�EVENT�ACK� CONNECT_ERROR� BINARY_EVENT� BINARY_ACKc�d�eZdZdZdZeZedddddfd�Zd�Z d�Z d�Z d�Z d �Z d �Zd �Zd �Zd �ZdS)�PacketzSocket.IO packet.TNc�v�||_||_||_||_|jrg|s|�c|�|j��rI|jt kr t|_n,|jtkr t|_ntd���d|_ g|_ |r|� |��pd|_ dSdS)Nz'Packet does not support binary payload.r)� packet_type�data� namespace�id�uses_binary_events�_data_is_binaryr rr r� ValueError�attachment_count� attachments�decode)�selfrrrr�binary�encoded_packets �_/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/socketio/packet.py�__init__zPacket.__init__s���&����� �"������ � "� L�� L�"�N�t�/C�/C��I�0�0�N���5�(�(�#/�� � ��!�S�(�(�#-�� � � �!J�K�K�K� !������ � E�$(�K�K��$?�$?�$D�1�D� !� !� !� E� E�c���t|j��}|jtks|jtkr@|�|j��\}}|tt |����dzz }n |j}d}|j�|jdkr ||jdzz }|j�|t|j��z }|�||j � |d���z }|�|g|z}|S)aEncode the packet for transmission. If the packet contains binary elements, this function returns a list of packets where the first is the original packet with placeholders for the binary components and the remaining ones the binary attachments. �-N�/�,)r'�:)� separators) �strrrr�_deconstruct_binaryr�lenrrr�dumps)rr rrs r!�encodez Packet.encode-s����T�-�.�.�� � �|� +� +�t�/?�:�/M�/M� $� 8� 8��� C� C� �D�+� �c�#�k�"2�"2�3�3�c�9� 9�N�N��9�D��K� �>� %�$�.�C�*?�*?� �d�n�s�2� 2�N� �7� � �c�$�'�l�l� *�N� � � �d�i�o�o�d�z�o�J�J� J�N� � "�,�-� �;�N��r#c�Z�|} t|dd���|_n#t$r ||_d}YnwxYwd|_d|_|dd�}|�d��}d}|dkrU|d|����r9|dkrtd���t|d|���}||dzd�}|r�|dd�dkru|�d ��}|d kr ||_d}n|d|�|_||dzd�}|j�d ��}|d kr|jd|�|_|r�|d���r�d}t|��}||kr,||���r|d krn |dz }||k�,t|d|���|_ ||d�}t|��dkr)|d���rtd ���|r|j � |��|_|S)z�Decode a transmitted package. The return value indicates how many binary attachment packets are necessary to fully decode the packet. rr�Nr%� ztoo many attachmentsr&r'������?�dzid field is too long) �intr� TypeErrorrr�find�isdigitrr,rr�loads) rr �ep�dashr�sep�q�i�ends r!rz Packet.decodeEsM�� �� �"�2�a��c�7�|�|�D� � ��� � � �!�D� ��B�B�B� ��������� � ����V���w�w�s�|�|���� �!�8�8��1�T�6� �*�*�,�,�8��b�y�y� �!7�8�8�8�"�2�a��f�:��� ��D�1�H�I�I��B� � 5�"�Q�q�S�'�S�.�.��'�'�#�,�,�C��b�y�y�!#������!#�A�c�E������a����\����#�#�C�(�(�A��B�w�w�!%���!��!4��� � 9�"�Q�%�-�-�/�/� 9��A��b�'�'�C��c�'�'��!�u�}�}����!�s�(�(���Q����c�'�'��"�R�a�R�&�k�k�D�G��A�B�B��B��2�w�w��{�{�r�!�u�}�}���{� �!7�8�8�8� � ,�� ����+�+�D�I��s �!�7�7c��|jt|j��krtd���|j�|��|jt|j��kr|�|j��dSdS)NzUnexpected binary attachmentTF)rr,rr�append�reconstruct_binary)r� attachments r!�add_attachmentzPacket.add_attachmentus{�� � �C��(8�$9�$9� 9� 9��;�<�<� <� ���� �+�+�+� � �C��(8�$9�$9� 9� 9� � #� #�D�$4� 5� 5� 5��4��ur#c�P�|�|j|j��|_dS)zYReconstruct a decoded packet using the given list of binary attachments. N)�_reconstruct_binary_internalrr)rrs r!rBzPacket.reconstruct_binary~s+���5�5�d�i�6:�6F�H�H�� � � r#c� ���t|t��r��fd�|D��St|t��rH|�d��rd|vr�|dS��fd�|���D��S|S)Nc�<��g|]}��|�����S��rF��.0�itemrrs ��r!� <listcomp>z7Packet._reconstruct_binary_internal.<locals>.<listcomp>��9���&�&�&���5�5�d�K�H�H�&�&�&r#� _placeholder�numc�D��i|]\}}|��|�����SrIrJ�rL�key�valuerrs ��r!� <dictcomp>z7Packet._reconstruct_binary_internal.<locals>.<dictcomp>�sF���8�8�8�&�C���T�>�>�u�?J�L�L�8�8�8r#)� isinstance�list�dict�get�items�rrrs` `r!rFz#Packet._reconstruct_binary_internal�s����� �d�D� !� !� �&�&�&�&�&� $�&�&�&� &� ��d� #� #� ��x�x��'�'� 8�E�T�M�M�"�4��;�/�/�8�8�8�8�8�*.�*�*�,�,�8�8�8�8��Kr#c�:�g}|�||��}||fS)z(Extract binary components in the packet.��_deconstruct_binary_internalr\s r!r+zPacket._deconstruct_binary�s'��� ��0�0��{�C�C���[� � r#c�<���t|t��r*��|��dt���dz d�St|t��r��fd�|D��St|t ��r!��fd�|���D��S|S)NTr)rPrQc�<��g|]}��|�����SrIr^rKs ��r!rNz7Packet._deconstruct_binary_internal.<locals>.<listcomp>�rOr#c�D��i|]\}}|��|�����SrIr^rSs ��r!rVz7Packet._deconstruct_binary_internal.<locals>.<dictcomp>�s?���4�4�4�"��U���:�:�5�+�N�N�4�4�4r#)rW�bytesrAr,rXrYr[r\s` `r!r_z#Packet._deconstruct_binary_internal�s����� �d�E� "� "� � � � �t� $� $� $�$(��[�1A�1A�A�1E�F�F� F� ��d� #� #� �&�&�&�&�&� $�&�&�&� &� ��d� #� #� �4�4�4�4�4�&*�j�j�l�l�4�4�4� 4��Kr#c�:��t|t��rdSt|t��r#tjd��fd�|D��d��St|t ��r5tjd��fd�|���D��d��SdS)z-Check if the data contains binary components.Tc� �|p|S�NrI��a�bs r!�<lambda>z(Packet._data_is_binary.<locals>.<lambda>�� ��Q�V�!�r#c�:��g|]}��|����SrI�r�rLrMrs �r!rNz*Packet._data_is_binary.<locals>.<listcomp>�s7���&8�&8�&8�*.�'+�&:�&:�4�&@�&@�&8�&8�&8r#Fc� �|p|SrfrIrgs r!rjz(Packet._data_is_binary.<locals>.<lambda>�rkr#c�:��g|]}��|����SrIrmrns �r!rNz*Packet._data_is_binary.<locals>.<listcomp>�s=���&A�&A�&A�*.�'+�&:�&:�4�&@�&@�&A�&A�&Ar#)rWrcrX� functools�reducerY�values)rrs` r!rzPacket._data_is_binary�s���� �d�E� "� "� ��4� ��d� #� #� ��#�#�#�&8�&8�&8�&8�26�&8�&8�&8�9>�@�@� @���d� #� #� ��#�#�#�&A�&A�&A�&A�26�+�+�-�-�&A�&A�&A���� � �5r#c�R�|j|j|jd�}|j� |j|d<|S)N)�typer�nspr)rrrr)r�ds r!�_to_dictzPacket._to_dict�s8���$��I��>� � �� �7� ��g�A�d�G��r#)�__name__� __module__� __qualname__�__doc__r�_jsonrr r"r.rrDrBrFr+r_rrxrIr#r!rr s����������� �D�#(�t�t���T�E�E�E�E�(���0. �. �. �`���H�H�H� � � �!�!�!� � � ���� ����r#r) rq�engineiorr}r r r r rrr� packet_namesrrIr#r!�<module>r�s�������"�"�"�"�"�"��K��*�e�S�-��z�.�.�.� �t�t�t�t�t�t�t�t�t�tr#
Memory