� D�gW����UddlZddlZddlZddlmZmZmZmZmZm Z m Z m Z m Z ddl mZddlmZmZmZmZmZddlmZdZe d��ZGd �d e��ZGd �d ee��ZGd �d��ZGd�d��ZGd�de��ZGd�de��Ze��Z eee!d<Gd�dee��Z"Gd�de"e��Z#dS)�N) � Awaitable�Callable�Deque�Final�Generic�List�Optional�Tuple�TypeVar�)� BaseProtocol)� _EXC_SENTINEL�BaseTimerContext� TimerNoop� set_exception� set_result)�internal_logger)� EMPTY_PAYLOAD� EofStream� StreamReader� DataQueue�_Tc��eZdZdZdS)rzeof stream indication.N)�__name__� __module__� __qualname__�__doc__���_/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/aiohttp/streams.pyrr$s������ � � � rrc�R�eZdZdZdegeefddfd�Zd d�Zdefd�Z dS) �AsyncStreamIterator�� read_funcr$�returnNc��||_dS�Nr#)�selfr$s r �__init__zAsyncStreamIterator.__init__,s ��"����r�AsyncStreamIterator[_T]c��|Sr'r�r(s r � __aiter__zAsyncStreamIterator.__aiter__/���� rc��K� |����d{V��}n#t$rt�wxYw|dkrt�|S�Nr)r$r�StopAsyncIteration�r(�rvs r � __anext__zAsyncStreamIterator.__anext__2sc���� %��~�~�'�'�'�'�'�'�'�'�B�B��� %� %� %�$� $� %���� ��9�9�$� $�� s��1)r%r*) rrr� __slots__rrrr)r-r4rrr r"r"(sx�������I�#�(�2�y��}�+<�"=�#�$�#�#�#�#������������rr"c�>�eZdZdZd d�Zd d�Zdeeeffd�Z dS) �ChunkTupleAsyncStreamIterator��_stream�streamrr%Nc��||_dSr'r8)r(r:s r r)z&ChunkTupleAsyncStreamIterator.__init__@s ���� � � rc��|Sr'rr,s r r-z'ChunkTupleAsyncStreamIterator.__aiter__Cr.rc��bK�|j����d{V��}|dkrt�|S)N�rF)r9� readchunkr1r2s r r4z'ChunkTupleAsyncStreamIterator.__anext__FsA�����<�)�)�+�+� +� +� +� +� +� +�� �� � �$� $�� r)r:rr%N)r%r7) rrrr5r)r-r �bytes�boolr4rrr r7r7<se�������I�����������u�d�{�!3������rr7c�j�eZdZdZdeefd�Zdedeefd�Zdeefd�Z de fd�Z dS) �AsyncStreamReaderMixinrr%c�*�t|j��Sr')r"�readliner,s r r-z AsyncStreamReaderMixin.__aiter__Qs��"�4�=�1�1�1r�nc�,���t��fd���S)z>Returns an asynchronous iterator that yields chunks of size n.c�.�������Sr')�read)rFr(s��r �<lambda>z5AsyncStreamReaderMixin.iter_chunked.<locals>.<lambda>Vs���4�9�9�Q�<�<�r)r"�r(rFs``r � iter_chunkedz#AsyncStreamReaderMixin.iter_chunkedTs����"�#7�#7�#7�#7�#7�8�8�8rc�*�t|j��S)z3Yield all available data as soon as it is received.)r"�readanyr,s r �iter_anyzAsyncStreamReaderMixin.iter_anyXs��"�4�<�0�0�0rc� �t|��S)z�Yield chunks of data as they are received by the server. The yielded objects are tuples of (bytes, bool) as returned by the StreamReader.readchunk method. )r7r,s r � iter_chunksz"AsyncStreamReaderMixin.iter_chunks\s�� -�T�2�2�2rN) rrrr5r"r@r-�intrLrOr7rQrrr rCrCMs��������I�2�.�u�5�2�2�2�2�9�c�9�&9�%�&@�9�9�9�9�1�-�e�4�1�1�1�1�3�:�3�3�3�3�3�3rrCc ���eZdZdZdZddd�dededeedee j d df d �Z d e fd �Z d eeeffd �Zd eefd �Zefdeded dfd�Zdegdfd dfd�Zd-d�Zd efd�Zd efd�Zd-d�Zded dfd�Zd.deded dfd�Zd-d�Zd-d�Zde d dfd�Z d efd �Z!d/d"ed efd#�Z"d0d%ed efd&�Z#d efd'�Z$d eeeffd(�Z%d%ed efd)�Z&d0d%ed efd*�Z'd%ed efd+�Z(d%ed efd,�Z)dS)1ra*An enhancement of asyncio.StreamReader. Supports asynchronous iteration by line, chunk or as available:: async for line in reader: ... async for chunk in reader.iter_chunked(1024): ... async for slice in reader.iter_any(): ... )� _protocol� _low_water� _high_water�_loop�_size�_cursor�_http_chunk_splits�_buffer�_buffer_offset�_eof�_waiter� _eof_waiter� _exception�_timer�_eof_callbacks� _eof_counter� total_bytesN)�timer�loop�protocol�limitrerfr%c�f�||_||_|dz|_|�tj��}||_d|_d|_d|_tj ��|_ d|_ d|_ d|_d|_d|_|�t#��n||_g|_d|_d|_dS)N�rF)rTrUrV�asyncio�get_event_looprWrXrYrZ� collections�dequer[r\r]r^r_r`rrarbrcrd)r(rgrhrerfs r r)zStreamReader.__init__�s���"������ �1�9��� �<��)�+�+�D��� ��� ��� �7;���%0�%6�%8�%8�� ������ �7;�� �;?���37���%*�]�i�k�k�k��� �8:����������rc��|jjg}|jr|�d|jz��|jr|�d��|jdkr$|�d|j|jfz��|jr|�d|jz��|jr|�d|jz��dd� |��zS) Nz%d bytes�eofizlow=%d high=%dzw=%rze=%r�<%s>� ) � __class__rrX�appendr]rUrVr^r`�join)r(�infos r �__repr__zStreamReader.__repr__�s�����'�(�� �:� 1� �K�K� �T�Z�/� 0� 0� 0� �9� � �K�K�� � � � �?�e� #� #� �K�K�(�D�O�T�=M�+N�N� O� O� O� �<� /� �K�K����-� .� .� .� �?� 2� �K�K����0� 1� 1� 1��������&�&rc��|j|jfSr')rUrVr,s r �get_read_buffer_limitsz#StreamReader.get_read_buffer_limits�s�����!1�2�2rc��|jSr'�r`r,s r � exceptionzStreamReader.exception�� ����r�exc� exc_causec���||_|j���|j}|�d|_t |||��|j}|�d|_t |||��dSdSr')r`rb�clearr^rr_�r(r~r�waiters r rzStreamReader.set_exception�s|�� ��� ��!�!�#�#�#���� � ��D�L� �&�#�y� 1� 1� 1��!�� � �#�D� � �&�#�y� 1� 1� 1� 1� 1� � r�callbackc��|jr2 |��dS#t$rtjd��YdSwxYw|j�|��dS�N�Exception in eof callback)r]� Exceptionrr|rbrt�r(r�s r �on_eofzStreamReader.on_eof�sz�� �9� 1� G��� � � � � ��� G� G� G��)�*E�F�F�F�F�F�F� G���� � � &� &�x� 0� 0� 0� 0� 0s � �7�7c��d|_|j}|�d|_t|d��|j}|�d|_t|d��|jjr|j���|jD]1} |���#t$rtj d��Y�.wxYw|j� ��dS)NTr�) r]r^rr_rT�_reading_paused�resume_readingrbr�rr|r�)r(r��cbs r �feed_eofzStreamReader.feed_eof�s����� ���� � ��D�L� �v�t� $� $� $��!�� � �#�D� � �v�t� $� $� $� �>� )� ,� �N� )� )� +� +� +��%� G� G�B� G��������� G� G� G��)�*E�F�F�F�F�F� G���� ��!�!�#�#�#�#�#s�7 B�B#�"B#c��|jS)z&Return True if 'feed_eof' was called.�r]r,s r �is_eofzStreamReader.is_eof�s ���y�rc� �|jo|j S)z=Return True if the buffer is empty and 'feed_eof' was called.�r]r[r,s r �at_eofzStreamReader.at_eof�s���y�-���-�-rc��K�|jrdS|j�J�|j���|_ |j�d{V��d|_dS#d|_wxYwr')r]r_rW� create_futurer,s r �wait_eofzStreamReader.wait_eof�s|���� �9� � �F���'�'�'��:�3�3�5�5��� $��"� "� "� "� "� "� "� "�#�D� � � ��t�D� � #� #� #� #s � A � A�datac�\�tjdtd���|sdS|jr)|jd|jd�|jd<d|_|xjt |��z c_|xjt |��zc_|j�|��d|_ dS)zDrollback reading some data from stream, inserting it to buffer head.zJunread_data() is deprecated and will be removed in future releases (#3260)rj)� stacklevelNr) �warnings�warn�DeprecationWarningr\r[rX�lenrY� appendleftrc)r(r�s r � unread_datazStreamReader.unread_data�s���� � =� ��  � � � � � � �F� � � $�"�l�1�o�d�.A�.C�.C�D�D�L��O�"#�D� � � � �c�$�i�i�� � � � � ��D� � �!� � � � ����%�%�%�����rr�sizec�t�|jr Jd���|sdSt|��}|xj|z c_|j�|��|xj|z c_|j}|�d|_t|d��|j|jkr'|j j s|j � ��dSdSdS)Nzfeed_data after feed_eof) r]r�rXr[rtrdr^rrVrTr�� pause_reading)r(r�r��data_lenr�s r � feed_datazStreamReader.feed_datas����9�8�8�8�8�8�}�� � �F��t�9�9�� � � �h�� � � � ���D�!�!�!� ���H�$������ � ��D�L� �v�t� $� $� $� �:��(� (� (���1O� (� �N� (� (� *� *� *� *� *� )� (� (� (rc�R�|j�|jrtd���g|_dSdS)Nz@Called begin_http_chunk_receiving when some data was already fed)rZrd� RuntimeErrorr,s r �begin_http_chunk_receivingz'StreamReader.begin_http_chunk_receiving$sC�� � "� *��� �"�V����')�D� #� #� #� +� *rc���|j�td���|jr |jdnd}|j|krdS|j�|j��|j}|�d|_t |d��dSdS)NzFCalled end_chunk_receiving without calling begin_chunk_receiving first�����r)rZr�rdrtr^r)r(�posr�s r �end_http_chunk_receivingz%StreamReader.end_http_chunk_receiving,s��� � "� *��.��� �.2�-D�K�d�%�b�)�)�!�� � �s� "� "� �F� ��&�&�t�'7�8�8�8���� � ��D�L� �v�t� $� $� $� $� $� � r� func_namec��(K�|jjstd���|j�td|z���|j���x}|_ |j5|�d{V��ddd��n #1swxYwYd|_dS#d|_wxYw)NzConnection closed.zH%s() called while another coroutine is already waiting for incoming data)rT� connectedr�r^rWr�ra)r(r�r�s r �_waitzStreamReader._waitJs������~�'� 5��3�4�4� 4� �<� #��4�6?�@��� � !%� � 8� 8� :� :�:���� ��� � �� � � � � � � � � � � � � � � � � � ���� � � � � �D�L�L�L��4�D�L� � � � s0�B� A4�( B�4A8�8B�;A8�<B� Bc��:K�|����d{V��Sr')� readuntilr,s r rEzStreamReader.readline_s(�����^�^�%�%�%�%�%�%�%�%�%r� � separatorc���K�t|��}|dkrtd���|j�|j�d}d}d}|r�|jr�|r�|j}|jd�||��dz}|�|r ||z |zdz nd��}||z }|t|��z }|rd}||jkrtd���|jr|��|jrn|r|� d ���d{V��|��|S) Nrz,Separator should be at least one-byte stringrTr r�Fz Chunk too bigr�) r�� ValueErrorr`r[r\�find�_read_nowait_chunkrVr]r�) r(r��seplen�chunk� chunk_size� not_enough�offset�icharr�s r r�zStreamReader.readuntilbs\�����Y���� �Q�;�;��K�L�L� L� �?� &��/� !���� �� �� .��,� 6�:� 6��,��� �Q��,�,�Y��?�?�!�C���.�.�38�@�E�F�N�V�+�a�/�/�b������ ���c�$�i�i�'� ��'�!&�J��� 0�0�0�$�_�5�5�5��,� 6�:� 6��y� ��� .��j�j��-�-�-�-�-�-�-�-�-�)� .�,� rr�rFc���K�|j�|j� |jrA|js:t|dd��dz|_|jdkrt jdd���|sdS|dkrKg} |����d{V��}|sn|�|���3d� |��S|js0|js)|� d ���d{V��|js|j�)|� |��S) NTrcrr �zEMultiple access to StreamReader in eof state, might be infinite loop.)� stack_inforrI) r`r]r[�getattrrcr�warningrNrtrur�� _read_nowait)r(rF�blocks�blocks r rIzStreamReader.read�sT���� �?� &��/� !�  ��y� ��� �$+�D�.�!�$D�$D�q�$H��!��$�q�(�(�#�+�2�#'����� � ��3� �q�5�5� �F� %�"�l�l�n�n�,�,�,�,�,�,������ � �e�$�$�$�  %� �8�8�F�#�#� #� �,� %�t�y� %��*�*�V�$�$� $� $� $� $� $� $� $��,� %�t�y� %�� � ��#�#�#rc��K�|j�|j�|js0|js)|�d���d{V��|js|j�)|�d��S)NrNr�)r`r[r]r�r�r,s r rNzStreamReader.readany�sz���� �?� &��/� !� �,� (�t�y� (��*�*�Y�'�'� '� '� '� '� '� '� '��,� (�t�y� (�� � ��$�$�$rc��K� |j�|j�|jrl|j�d��}||jkrdS||jkr|�||jz ��dfSt jd��|j�l|jr|�d��dfS|j rdS|� d ���d{V����) aReturns a tuple of (data, end_of_http_chunk). When chunked transfer encoding is used, end_of_http_chunk is a boolean indicating if the end of the data corresponds to the end of a HTTP chunk , otherwise it is always False. TNr�rTzESkipping HTTP chunk end due to data consumption beyond chunk boundaryr�Fr>r?) r`rZ�poprYr�rr�r[r�r]r�)r(r�s r r?zStreamReader.readchunk�s���� *���*��o�%��)� ��-�1�1�!�4�4���$�,�&�&�&�;����%�%� �-�-�c�D�L�.@�A�A�4�H�H��'�8���� �)� ��|� <��/�/��3�3�U�;�;��y� $�$�|��*�*�[�)�)� )� )� )� )� )� )� )�1 *rc��dK�|j�|j�g}|dkr�|�|���d{V��}|s:d�|��}tj|t |��|z���|�|��|t |��z}|dk��d�|��S)Nrr)r`rIrurk�IncompleteReadErrorr�rt)r(rFr�r��partials r � readexactlyzStreamReader.readexactly�s����� �?� &��/� !� ���!�e�e��)�)�A�,�,�&�&�&�&�&�&�E�� M��(�(�6�*�*���1�'�3�w�<�<�!�;K�L�L�L� �M�M�%� � � � ��U���O�A� �!�e�e��x�x����rc��|j�|j�|jr(|j���std���|�|��S)Nz9Called while some coroutine is waiting for incoming data.)r`r^�doner�r�rKs r � read_nowaitzStreamReader.read_nowait�s^�� �?� &��/� !� �<� �� � 1� 1� 3� 3� ��K��� �� � ��#�#�#rc�z�|jd}|j}|dkr4t|��|z |kr||||z�}|xj|z c_nF|r+|j���||d�}d|_n|j���}t|��}|xj|zc_|xj|z c_|j}|r9|d|jkr(|�d��|r|d|jk�(|j|jkr%|j j r|j � ��|S)Nrr�) r[r\r��popleftrXrYrZr�rUrTr�r�)r(rF� first_bufferr�r�r�� chunk_splitss r r�zStreamReader._read_nowait_chunk�sV���|�A�� ��$�� ��7�7�s�<�(�(�6�1�A�5�5����!�� 3�4�D� � � �1� $� � � � � *� �L� � � "� "� "�����(�D�"#�D� � ��<�'�'�)�)�D��t�9�9�� � � �h�� � � � � �� � � ��.� �� �|�A����=�=� � � �Q� � � �� �|�A����=�=� �:��� '� '�D�N�,J� '� �N� )� )� +� +� +�� rc��|j���g}|jrP|�|��}|�|��|dkr|t |��z}|dkrn|j�P|rd�|��ndS)z6Read not more than n bytes, or whole buffer if n == -1r�rr)ra�assert_timeoutr[r�rtr�ru)r(rF�chunksr�s r r�zStreamReader._read_nowaits��� � �"�"�$�$�$����l� ��+�+�A�.�.�E� �M�M�%� � � ��B�w�w��S��Z�Z�����6�6�� �l� �$*�2�s�x�x�����s�2r�r%N�r)r��r�)*rrrrr5r rRr rrk�AbstractEventLoopr)�strrwr ry� BaseExceptionr|rrrr�r�rAr�r�r�r@r�r�r�r�r�rEr�rIrNr?r�r�r�r�rrr rres|������ � ��I�2-1�48� ������� �(�)� � �w�0�1� � �����8 '�#� '� '� '� '�3��c�3�h��3�3�3�3��8�M�2����� $1�2�2� �2�!�2� � 2�2�2�2�$1�x��D��1�1�d�1�1�1�1�$�$�$�$�0������.��.�.�.�.� $� $� $� $����$�����(+�+�e�+�3�+�t�+�+�+�+�&)�)�)�)�%�%�%�%�< �S� �T� � � � �*&��&�&�&�&�"�"��"�5�"�"�"�"�H($�($�C�($��($�($�($�($�T %�u� %� %� %� %� *��u�d�{�!3� *� *� *� *�D  �3�  �5�  �  �  �  � $� $�S� $�%� $� $� $� $��C��E�����8 3�c� 3�e� 3� 3� 3� 3� 3� 3rrc��eZdZdZdd�Zdefd�Zdeefd�Z e fdededdfd �Z d e gdfddfd �Z dd �Zdefd �Zdefd�Zdd�Zddededdfd�Zdefd�Zddedefd�Zdefd�Zdeeeffd�Zdedefd�Zddedefd�ZdS)�EmptyStreamReader��_read_eof_chunkr%Nc��d|_dS�NFr�r,s r r)zEmptyStreamReader.__init__,s��$����rc� �d|jjzS)Nrq)rsrr,s r rwzEmptyStreamReader.__repr__/s�����/�/�/rc��dSr'rr,s r r|zEmptyStreamReader.exception2����trr~rc��dSr'r)r(r~rs r rzEmptyStreamReader.set_exception5s �� �rr�c�f� |��dS#t$rtjd��YdSwxYwr�)r�rr|r�s r r�zEmptyStreamReader.on_eof<sQ�� C� �H�J�J�J�J�J��� C� C� C� � %�&A� B� B� B� B� B� B� C���s � �0�0c��dSr'rr,s r r�zEmptyStreamReader.feed_eofB��� �rc��dS�NTrr,s r r�zEmptyStreamReader.is_eofEr�rc��dSr�rr,s r r�zEmptyStreamReader.at_eofHr�rc�� K�dSr'rr,s r r�zEmptyStreamReader.wait_eofKs �����rrr�rFc��dSr'r)r(r�rFs r r�zEmptyStreamReader.feed_dataNr�rc�� K�dSr0rr,s r rEzEmptyStreamReader.readlineQ� �����srr�c�� K�dSr0rrKs r rIzEmptyStreamReader.readTr�rc�� K�dSr0rr,s r rNzEmptyStreamReader.readanyYr�rc��*K�|js d|_dSdS)NTr>r�r�r,s r r?zEmptyStreamReader.readchunk\s#�����#� �#'�D� ��<��{rc��0K�tjd|���r0)rkr�rKs r r�zEmptyStreamReader.readexactlycs�����)�#�q�1�1�1rc��dSr0rrKs r r�zEmptyStreamReader.read_nowaitfs���srr�r�r�)rrrr5r)r�rwr r�r|rrrr�r�rAr�r�r�r@rRr�rErIrNr r?r�r�rrr r�r�(s)������$�I�%�%�%�%�0�#�0�0�0�0��8�M�2����� $1� � � � �!� � �  � � � �C�x��D��1�C�d�C�C�C�C�  � � � ����������������� � �e� �� �D� � � � ���������C������� �u�������u�d�{�!3�����2�3�2�5�2�2�2�2���S��%������rr�rc���eZdZdZdejddfd�Zdefd�Zde fd�Z de fd�Z de e fd �Zefd e d e ddfd �Zddededdfd�Zdd�Zdefd�Zdeefd�ZdS)rz>DataQueue is a general-purpose blocking queue with one reader.rfr%Nc�n�||_d|_d|_d|_t j��|_dSr�)rWr]r^r`rmrnr[)r(rfs r r)zDataQueue.__init__ps2���� ��� �7;�� �37���.9�.?�.A�.A�� � � rc�*�t|j��Sr')r�r[r,s r �__len__zDataQueue.__len__ws���4�<� � � rc��|jSr'r�r,s r r�zDataQueue.is_eofzs ���y�rc� �|jo|j Sr'r�r,s r r�zDataQueue.at_eof}s���y�-���-�-rc��|jSr'r{r,s r r|zDataQueue.exception�r}rr~rc�h�d|_||_|jx}�d|_t|||��dSdSr�)r]r`r^rr�s r rzDataQueue.set_exception�sF�� �� �����l� "�F� /��D�L� �&�#�y� 1� 1� 1� 1� 1� 0� /rrr�r�c��|j�||f��|jx}�d|_t|d��dSdSr')r[rtr^r)r(r�r�r�s r r�zDataQueue.feed_data�sN�� � ���T�4�L�)�)�)��l� "�F� /��D�L� �v�t� $� $� $� $� $� 0� /rc�X�d|_|jx}�d|_t|d��dSdSr�)r]r^r)r(r�s r r�zDataQueue.feed_eof�s;���� ��l� "�F� /��D�L� �v�t� $� $� $� $� $� 0� /rc��PK�|jsd|js]|jrJ�|j���|_ |j�d{V��n'#t jt jf$r d|_�wxYw|jr|j���\}}|S|j �|j �t�r') r[r]r^rWr�rk�CancelledError� TimeoutErrorr�r`r)r(r��_s r rIzDataQueue.read�s������|� �D�I� ��|� #� #�#��:�3�3�5�5�D�L� ��l�"�"�"�"�"�"�"�"���*�G�,@�A� � � �#�� �� ���� �<� ��l�*�*�,�,�G�D�!��K� �?� &��/� !��� � A�$A+c�*�t|j��Sr')r"rIr,s r r-zDataQueue.__aiter__�s��"�4�9�-�-�-rr�r�)rrrrrkr�r)rRr�rAr�r�r r�r|rrrr�r�rIr"r-rrr rrmsn������H�H�B�W�6�B�4�B�B�B�B�!��!�!�!�!�������.��.�.�.�.��8�M�2����� $1� 2� 2� � 2�!� 2� � 2� 2� 2� 2�%�%�b�%��%�D�%�%�%�%� %�%�%�%� �B����� .�.�r�2�.�.�.�.�.�.rrc�d��eZdZdZdededejddf�fd� Zd d e d eddf�fd � Z de fd �Z �xZ S)�FlowControlDataQueuez�FlowControlDataQueue resumes and pauses an underlying stream. It is a destination for parsed data. This class is deprecated and will be removed in version 4.0. rgrhrfr%Nc�|��t���|���d|_||_|dz|_dS)N)rfrrj)�superr)rXrT�_limit)r(rgrhrfrss �r r)zFlowControlDataQueue.__init__�s=��� �����d��#�#�#��� �!����a�i�� � � rrr�r�c����t���||��|xj|z c_|j|jkr'|jjs|j���dSdSdSr')r r�rXr rTr�r�)r(r�r�rss �r r�zFlowControlDataQueue.feed_data�sn��� �����$��%�%�%� � � �d�� � � �:�� � #� #�D�N�,J� #� �N� (� (� *� *� *� *� *� $� #� #� #rc���K�|jsd|js]|jrJ�|j���|_ |j�d{V��n'#t jt jf$r d|_�wxYw|jrc|j���\}}|xj |zc_ |j |j kr%|j j r|j � ��|S|j�|j�t�r')r[r]r^rWr�rkrrr�rXr rTr�r�r`r)r(r�r�s r rIzFlowControlDataQueue.read�s�����|� �D�I� ��|� #� #�#��:�3�3�5�5�D�L� ��l�"�"�"�"�"�"�"�"���*�G�,@�A� � � �#�� �� ���� �<� ���-�-�/�/�J�D�$� �J�J�$� �J�J��z�D�K�'�'�D�N�,J�'���-�-�/�/�/��K� �?� &��/� !��rr�) rrrrr rRrkr�r)rr�rI� __classcell__)rss@r r r �s���������� �$� �-0� �;B�;T� � � � � � � � �+�+�b�+��+�D�+�+�+�+�+�+��B��������rr )$rkrmr��typingrrrrrrr r r � base_protocolr �helpersrrrrr�logr�__all__rr�rr"r7rCrr�r�__annotations__rr rrr �<module>rs���������������� � � � � � � � � � � � � � � � � � � � � � �(�'�'�'�'�'���������������!� � � � � � �� �W�T�]�]��!�!�!�!�!� �!�!�!������'�"�+����(��������"3�3�3�3�3�3�3�3�0@3�@3�@3�@3�@3�)�@3�@3�@3�F?�?�?�?�?� �?�?�?�D&7�%6�%8�%8� �u�\�"�8�8�8�>.�>.�>.�>.�>.��� �>.�>.�>.�B(�(�(�(�(�9�R�=�(�(�(�(�(r
Memory