§
    JŠtjÞ  ã                  óô   — d dl mZ d dlZd dlmZmZ d dlmZmZm	Z	 ddl
mZmZ ddlmZmZ ddlmZ dd	lmZ 	 dd
lmZ n# e$ r	 dd
lmZ Y nw xY w G d„ de	¦  «        Zdd„Zdd„ZeZddlmZ dd„Zdd„ZdS ) é    )ÚannotationsN)Ú	AwaitableÚSequence)ÚAnyÚCallableÚ
NamedTupleé   )Ú
extensionsÚframes)ÚPayloadTooBigÚProtocolError)Ú	BytesLike)ÚData)Ú
apply_maskc                  ó®   — e Zd ZU ded<   ded<   ded<   dZded<   dZded	<   dZded
<   ed d„¦   «         Zd!d„Z	d"d„Z
edddœd#d„¦   «         Zddœd$d„ZdS )%ÚFrameÚboolÚfinzframes.OpcodeÚopcodeÚbytesÚdataFÚrsv1Úrsv2Úrsv3Úreturnúframes.Framec                óp   — t          j        | j        | j        | j        | j        | j        | j        ¦  «        S ©N)r   r   r   r   r   r   r   r   ©Úselfs    úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/websockets/legacy/framing.pyÚ	new_framezFrame.new_frame   s4   € åŒ|ØŒKØŒIØŒHØŒIØŒIØŒIñ
ô 
ð 	
ó    Ústrc                ó*   — t          | j        ¦  «        S r   )r$   r"   r   s    r!   Ú__str__zFrame.__str__&   s   € Ý�4”>Ñ"Ô"Ð"r#   ÚNonec                ó4   — | j                              ¦   «         S r   )r"   Úcheckr   s    r!   r)   zFrame.check)   s   € ØŒ~×#Ò#Ñ%Ô%Ð%r#   N)Úmax_sizer
   Úreaderú!Callable[[int], Awaitable[bytes]]Úmaskr*   ú
int | Noner
   ú%Sequence[extensions.Extension] | Nonec             ƒ  ó¾  K  —  |d¦  «        ƒ d{V —†}t          j        d|¦  «        \  }}|dz  rdnd}|dz  rdnd}	|dz  rdnd}
|d	z  rdnd}	 t          j        |d
z  ¦  «        }n"# t          $ r}t          d¦  «        |‚d}~ww xY w|dz  rdnd|k    rt          d¦  «        ‚|dz  }|dk    r) |d¦  «        ƒ d{V —†}t          j        d|¦  «        \  }n.|dk    r( |d¦  «        ƒ d{V —†}t          j        d|¦  «        \  }|�||k    rt          ||¦  «        ‚|r |d¦  «        ƒ d{V —†} ||¦  «        ƒ d{V —†}|rt          ||¦  «        }t          j        ||||	|
|¦  «        }|€g }t          |¦  «        D ]}| 
                    ||¬¦  «        }Œ|                     ¦   «           | |j        |j        |j        |j        |j        |j        ¦  «        S )a@  
        Read a WebSocket frame.

        Args:
            reader: Coroutine that reads exactly the requested number of
                bytes, unless the end of file is reached.
            mask: Whether the frame should be masked i.e. whether the read
                happens on the server side.
            max_size: Maximum payload size in bytes.
            extensions: List of extensions, applied in reverse order.

        Raises:
            PayloadTooBig: If the frame exceeds ``max_size``.
            ProtocolError: If the frame contains incorrect values.

        r	   Nz!BBé€   TFé@   é    é   é   zinvalid opcodezincorrect maskingé   é~   z!Hé   z!Qé   )r*   )ÚstructÚunpackr   ÚOpcodeÚ
ValueErrorr   r   r   r   ÚreversedÚdecoder)   r   r   r   r   r   r   )Úclsr+   r-   r*   r
   r   Úhead1Úhead2r   r   r   r   r   ÚexcÚlengthÚ	mask_bitsr"   Ú	extensions                     r!   Úreadz
Frame.read,   s‚  è è € ð6 �V˜A‘Y”YˆˆˆˆˆˆˆÝ”} U¨DÑ1Ô1‰ˆˆuð ˜jÑ(Ð3ˆdˆd¨eˆØ˜zÑ)Ð4ˆtˆt¨uˆØ˜zÑ)Ð4ˆtˆt¨uˆØ˜zÑ)Ð4ˆtˆt¨uˆð	;Ý”] 5¨:Ñ#5Ñ6Ô6ˆFˆFøÝð 	;ð 	;ð 	;ÝÐ 0Ñ1Ô1°sÐ:øøøøð	;øøøð ˜JÑ&Ð1ˆDˆD¨E°dÒ:Ð:ÝÐ 3Ñ4Ô4Ð4à˜Ñ#ˆØ�SŠ=ˆ=Ø˜ ™œ�?�?�?�?�?�?ˆDÝœ d¨DÑ1Ô1‰IˆVˆVØ�sŠ]ˆ]Ø˜ ™œ�?�?�?�?�?�?ˆDÝœ d¨DÑ1Ô1‰IˆVØÐ F¨XÒ$5Ð$5Ý ¨Ñ1Ô1Ð1Øð 	(Ø$˜f Q™iœi˜˜˜˜˜˜ˆIð �V˜F‘^”^Ð#Ð#Ð#Ð#Ð#Ð#ˆØð 	/Ý˜d IÑ.Ô.ˆDå”L ¨¨s°D¸$ÀÑEÔEˆ	àÐØˆJÝ! *Ñ-Ô-ð 	Gð 	GˆIØ!×(Ò(¨¸XÐ(ÑFÔFˆIˆIà�ŠÑÔÐàˆsØŒMØÔØŒNØŒNØŒNØŒNñ
ô 
ð 	
s   ÁA) Á)
BÁ3BÂB)r
   ÚwriteúCallable[[bytes], Any]c               óP   —  || j                              ||¬¦  «        ¦  «         dS )a–  
        Write a WebSocket frame.

        Args:
            frame: Frame to write.
            write: Function that writes bytes.
            mask: Whether the frame should be masked i.e. whether the write
                happens on the client side.
            extensions: List of extensions, applied in order.

        Raises:
            ProtocolError: If the frame contains incorrect values.

        )r-   r
   N)r"   Ú	serialize)r    rH   r-   r
   s       r!   rH   zFrame.write{   s/   € ð0 	ˆˆdŒn×&Ò&¨D¸ZÐ&ÑHÔHÑIÔIÐIÐIÐIr#   )r   r   )r   r$   )r   r'   )
r+   r,   r-   r   r*   r.   r
   r/   r   r   )rH   rI   r-   r   r
   r/   r   r'   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   r   r   Úpropertyr"   r&   r)   ÚclassmethodrG   rH   © r#   r!   r   r      s  € € € € € € Ø€I€I�IØÐÐÑØ€K€K�KØ€DÐÐÐÑØ€DÐÐÐÑØ€DÐÐÐÑàð
ð 
ð 
ñ „Xð
ð#ð #ð #ð #ð&ð &ð &ð &ð ð  $Ø<@ðL
ð L
ð L
ð L
ð L
ñ „[ðL
ðf =AðJð Jð Jð Jð Jð Jð Jð Jr#   r   r   r   r   útuple[int, bytes]c                óä   — t          | t          ¦  «        r%t          j        j        |                      ¦   «         fS t          | t          ¦  «        rt          j        j        | fS t          d¦  «        ‚)až  
    Convert a string or byte-like object to an opcode and a bytes-like object.

    This function is designed for data frames.

    If ``data`` is a :class:`str`, return ``OP_TEXT`` and a :class:`bytes`
    object encoding ``data`` in UTF-8.

    If ``data`` is a bytes-like object, return ``OP_BINARY`` and a bytes-like
    object.

    Raises:
        TypeError: If ``data`` doesn't have a supported type.

    údata must be str or bytes-like)	Ú
isinstancer$   r   r<   ÚTEXTÚencoder   ÚBINARYÚ	TypeError©r   s    r!   Úprepare_datar\   –   s_   € õ  �$�ÑÔð :ÝŒ}Ô! 4§;¢;¡=¤=Ð0Ð0Ý	�D�)Ñ	$Ô	$ð :ÝŒ}Ô# TÐ)Ð)åÐ8Ñ9Ô9Ð9r#   r   c                óº   — t          | t          ¦  «        r|                      ¦   «         S t          | t          ¦  «        rt	          | ¦  «        S t          d¦  «        ‚)ai  
    Convert a string or byte-like object to bytes.

    This function is designed for ping and pong frames.

    If ``data`` is a :class:`str`, return a :class:`bytes` object encoding
    ``data`` in UTF-8.

    If ``data`` is a bytes-like object, return a :class:`bytes` object.

    Raises:
        TypeError: If ``data`` doesn't have a supported type.

    rU   )rV   r$   rX   r   r   rZ   r[   s    r!   Úprepare_ctrlr^   ®   sQ   € õ �$�ÑÔð :Ø�{Š{‰}Œ}ÐÝ	�D�)Ñ	$Ô	$ð :Ý�T‰{Œ{ÐåÐ8Ñ9Ô9Ð9r#   )ÚCloseútuple[int, str]c                óF   — t          j        | ¦  «        }|j        |j        fS )zÕ
    Parse the payload from a close frame.

    Returns:
        Close code and reason.

    Raises:
        ProtocolError: If data is ill-formed.
        UnicodeDecodeError: If the reason isn't valid UTF-8.

    )r_   ÚparseÚcodeÚreason)r   Úcloses     r!   Úparse_closerf   Ì   s"   € õ ŒK˜ÑÔ€EØŒ:�u”|Ð#Ð#r#   rc   Úintrd   r$   c                óF   — t          | |¦  «                             ¦   «         S )z3
    Serialize the payload for a close frame.

    )r_   rK   )rc   rd   s     r!   Úserialize_closeri   Ü   s    € õ
 ��vÑÔ×(Ò(Ñ*Ô*Ð*r#   )r   r   r   rS   )r   r   r   r   )r   r   r   r`   )rc   rg   rd   r$   r   r   )Ú
__future__r   r:   Úcollections.abcr   r   Útypingr   r   r   Ú r
   r   Ú
exceptionsr   r   r   r   Úspeedupsr   ÚImportErrorÚutilsr   r\   r^   Úencode_datar_   rf   ri   rR   r#   r!   ú<module>rs      s§  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð#Ø%Ð%Ð%Ð%Ð%Ð%Ð%øØð #ð #ð #Ø"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ð#øøøð@Jð @Jð @Jð @Jð @JˆJñ @Jô @Jð @JðF:ð :ð :ð :ð0:ð :ð :ð :ð0 €ð Ð Ð Ð Ð Ð ð$ð $ð $ð $ð +ð +ð +ð +ð +ð +s   ºA ÁAÁA