Ë
    Õ±1h×1  ã                  óæ  — U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZmZ ddlmZmZ 	 ddlmZ g d¢Z G d	„ d
ej,                  «      Zej0                  Zej4                  Zej8                  Zej<                  Zej@                  Z!ejD                  Z#eeefZ$ee!e#fZ% G d„ dej,                  «      Z&e&jN                  de&jP                  de&jR                  de&jT                  de&jV                  de&jX                  de&jZ                  de&j\                  de&j^                  de&j`                  de&jb                  de&jd                  de&jf                  de&jh                  de&jj                  diZ6de7d<   e&jN                  e&jP                  e&jR                  e&jT                  e&jZ                  e&j\                  e&j^                  e&j`                  e&jb                  e&jd                  e&jf                  e&jh                  hZ8e&jN                  e&jP                  e&jV                  hZ9e:e;e<fZ=ej|                   G d„ d«      «       Z?ej|                   G d „ d!«      «       Z@dd"lAmBZB y# e$ r
 ddlmZ Y �Œ0w xY w)#é    )ÚannotationsN)Ú	GeneratorÚSequence)ÚCallableÚUnioné   )ÚPayloadTooBigÚProtocolError)Ú
apply_mask)ÚOpcodeÚOP_CONTÚOP_TEXTÚ	OP_BINARYÚOP_CLOSEÚOP_PINGÚOP_PONGÚDATA_OPCODESÚCTRL_OPCODESÚ	CloseCodeÚFrameÚClosec                  ó(   — e Zd ZdZd\  ZZZd\  ZZZ	y)r   z#Opcode values for WebSocket frames.)r   r   é   )é   é	   é
   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚCONTÚTEXTÚBINARYÚCLOSEÚPINGÚPONG© ó    úO/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/websockets/frames.pyr   r   %   s   „ Ù-à)Ñ€Dˆ$�Ø(Ñ€Eˆ4‘r(   r   c                  óL   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZy)r   z-Close code values for WebSocket close frames.iè  ié  iê  ië  ií  iî  iï  ið  iñ  iò  ió  iô  iõ  iö  i÷  N)r   r   r   r    ÚNORMAL_CLOSUREÚ
GOING_AWAYÚPROTOCOL_ERRORÚUNSUPPORTED_DATAÚNO_STATUS_RCVDÚABNORMAL_CLOSUREÚINVALID_DATAÚPOLICY_VIOLATIONÚMESSAGE_TOO_BIGÚMANDATORY_EXTENSIONÚINTERNAL_ERRORÚSERVICE_RESTARTÚTRY_AGAIN_LATERÚBAD_GATEWAYÚTLS_HANDSHAKEr'   r(   r)   r   r   7   sT   „ Ù7à€NØ€JØ€NØÐà€NØÐØ€LØÐØ€OØÐØ€NØ€OØ€OØ€KØ�Mr(   r   ÚOKz
going awayzprotocol errorzunsupported datazno status received [internal]zabnormal closure [internal]zinvalid frame payload datazpolicy violationzmessage too bigzmandatory extensionzinternal errorzservice restartztry again laterzbad gatewayz TLS handshake failure [internal]zdict[int, str]ÚCLOSE_CODE_EXPLANATIONSc                  óö   — e Zd ZU dZded<   ded<   dZded<   d	Zded
<   d	Zded<   d	Zded<    e	e
j                  j                  dd«      «      Zdd„Zedddœ	 	 	 	 	 	 	 	 	 dd„«       Zddœ	 	 	 	 	 dd„Zdd„Zy)r   aN  
    WebSocket frame.

    Attributes:
        opcode: Opcode.
        data: Payload data.
        fin: FIN bit.
        rsv1: RSV1 bit.
        rsv2: RSV2 bit.
        rsv3: RSV3 bit.

    Only these fields are needed. The MASK bit, payload length and masking-key
    are handled on the fly when parsing and serializing frames.

    r   Úopcodez#Union[bytes, bytearray, memoryview]ÚdataTÚboolÚfinFÚrsv1Úrsv2Úrsv3ÚWEBSOCKETS_MAX_LOG_SIZEÚ75c                ó  — d}t        | j                  «      › dt        | j                  «      dk(  rdnd› �}| j                  rdnd}| j                  t        u r-t        t        | j                  «      j                  «       «      }nþ| j                  t        u rs| j                  }t        |«      | j                  dz  kD  r3| j                  dz  dz
  dz  }dj                  |dd	|z   d
|| d g«      }dj                  d„ |D «       «      }ny| j                  t        u r)t        t        j                  | j                  «      «      }n>| j                  r0	 t        t        | j                  «      j                  «       «      }d}nd}t        |«      | j                  kD  r$| j                  dz  dz
  }|dd	|z   dz   || d z   }dj                  t#        d|||g«      «      }| j                  j$                  › d|› d|› d�S # t        t         f$ rw | j                  }t        |«      | j                  dz  kD  r3| j                  dz  dz
  dz  }dj                  |dd	|z   d
|| d g«      }dj                  d„ |D «       «      }d}Y Œþw xY w)zE
        Return a human-readable representation of a frame.

        Nz byter   Ú ÚsÚ	continuedé   r(   r   s     ú c              3  ó$   K  — | ]  }|d ›–— Œ
 y­w©Ú02xNr'   ©Ú.0Úbytes     r)   ú	<genexpr>z Frame.__str__.<locals>.<genexpr>¬   s   è ø€ Ò=¨d˜t C˜j›MÑ=ùó   ‚Útextc              3  ó$   K  — | ]  }|d ›–— Œ
 y­wrM   r'   rO   s     r)   rR   z Frame.__str__.<locals>.<genexpr>½   s   è ø€ ÒA°$ 4¨ *£ÑAùrS   Úbinaryz''z...z, z [ú])Úlenr>   r@   r=   r   ÚreprÚbytesÚdecoder   ÚMAX_LOG_SIZEÚjoinr   Ústrr   ÚparseÚUnicodeDecodeErrorÚAttributeErrorÚfilterÚname)ÚselfÚcodingÚlengthÚ	non_finalr>   rV   ÚcutÚmetadatas           r)   Ú__str__zFrame.__str__˜   s_  € ð
 ˆÜ˜Ÿ	™	“NÐ# 5¬s°4·9±9«~ÀÒ/B©ÈÐ(LÐMˆØŸ(š(‘B¨ˆ	à�;‰;œ'Ñ!ô œ˜dŸi™iÓ(×/Ñ/Ó1Ó2‰DØ�[‰[œIÑ%ð —Y‘YˆFÜ�6‹{˜T×.Ñ.°!Ñ3Ò3Ø×(Ñ(¨AÑ-°Ñ1°aÑ7�ØŸ™ 6¨)¨A°©GÐ#4°kÀ6È3È$È%À=Ð"QÓR�Ø—8‘8Ñ=°fÔ=Ó=‰DØ�[‰[œHÑ$Ü”u—{‘{ 4§9¡9Ó-Ó.‰DØ�YŠYð	"ÜœE $§)¡)Ó,×3Ñ3Ó5Ó6�Ø‘ð ˆDäˆt‹9�t×(Ñ(Ò(Ø×#Ñ# qÑ(¨1Ñ,ˆCØ˜	˜!˜c™'�? UÑ*¨T°3°$°%¨[Ñ8ˆDà—9‘9œV D¨6°6¸9Ð*EÓFÓGˆà—+‘+×"Ñ"Ð# 1 T F¨"¨X¨J°aÐ8Ð8øô! '¬Ð7ò "ØŸ™�Ü�v“; ×!2Ñ!2°aÑ!7Ò7Ø×,Ñ,°Ñ1°AÑ5¸!Ñ;�CØ ŸX™X v¨i°°C±Ð'8¸+ÀvÈsÈdÈeÀ}Ð&UÓV�FØ—x‘xÑA¸&ÔAÓA�Ø!’ð"ús   Å.G= Ç=BJÊJN)Úmax_sizeÚ
extensionsc             #  ó  K  —  |d«      E d{  –—† }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        |d
z  «      }|dz  rdnd|k7  rt	        d«      ‚|dz  }|dk(  r) |d«      E d{  –—† }t        j                  d|«      \  }n-|dk(  r( |d«      E d{  –—† }t        j                  d|«      \  }|�||kD  rt        ||«      ‚|r |d«      E d{  –—† } ||«      E d{  –—† }|rt        |«      } | ||||	|
|«      }|€g }t        |«      D ]  }|j                  ||¬«      }Œ |j                  «        |S 7 �ŒQ# t        $ r}t	        d«      |‚d}~ww xY w7 Œó7 ŒÇ7 ŒŒ7 Œ~­w)aá  
        Parse a WebSocket frame.

        This is a generator-based coroutine.

        Args:
            read_exact: Generator-based coroutine that reads the requested
                bytes or raises an exception if there isn't enough data.
            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:
            EOFError: If the connection is closed without a full WebSocket frame.
            PayloadTooBig: If the frame's payload size exceeds ``max_size``.
            ProtocolError: If the frame contains incorrect values.

        r   Nú!BBé€   TFé@   é    é   é   zinvalid opcodezincorrect maskingé   é~   ú!Hr   z!Qé   )rk   )
ÚstructÚunpackr   Ú
ValueErrorr
   r	   r   Úreversedr[   Úcheck)ÚclsÚ
read_exactÚmaskrk   rl   r>   Úhead1Úhead2r@   rA   rB   rC   r=   Úexcrf   Ú
mask_bytesÚframeÚ	extensions                     r)   r_   zFrame.parseÊ   sÅ  è ø€ ñ: % Q›-×'ˆÜ—}‘} U¨DÓ1‰ˆˆuð ˜jÒ(‰d¨eˆØ˜zÒ)‰t¨uˆØ˜zÒ)‰t¨uˆØ˜zÒ)‰t¨uˆð	;Ü˜E JÑ.Ó/ˆFð ˜JÒ&‰D¨E°dÒ:ÜÐ 3Ó4Ð4à˜Ñ#ˆØ�SŠ=Ù(¨›m×+ˆDÜŸ™ d¨DÓ1‰I‰VØ�sŠ]Ù(¨›m×+ˆDÜŸ™ d¨DÓ1‰IˆVØÐ F¨XÒ$5Ü ¨Ó1Ð1ÙÙ$.¨q£M×1ˆJñ % VÓ,×,ˆÙÜ˜d JÓ/ˆDá�F˜D # t¨T°4Ó8ˆàÐØˆJÜ! *Ó-ò 	?ˆIØ×$Ñ$ U°XÐ$Ó>‰Eð	?ð 	�‰ŒàˆðW (úô ò 	;ÜÐ 0Ó1°sÐ:ûð	;úð ,øð ,øð
 2øð -úsw   ‚FŽE�AFÁE" Á,FÂE?Â-FÂ9FÂ:<FÃ6FÃ7FÄFÄAFÅ"	E<Å+E7Å7E<Å<FÆFÆFÆF©rl   c               óF  — | j                  «        |€g }|D ]  }|j                  | «      } Œ t        j                  «       }| j                  rdnd| j
                  rdndz  | j                  rdndz  | j                  rdndz  | j                  z  }|rdnd}t        | j                  «      }|dk  r*|j                  t        j                  d|||z  «      «       nZ|dk  r+|j                  t        j                  d	||dz  |«      «       n*|j                  t        j                  d
||dz  |«      «       |r&t        j                  d«      }|j                  |«       |rt!        | j                  «      }	n| j                  }	|j                  |	«       |j#                  «       S )aH  
        Serialize a WebSocket frame.

        Args:
            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.

        ro   r   rp   rq   rr   ru   rn   i   z!BBHz!BBQrt   rw   )r|   ÚencodeÚioÚBytesIOr@   rA   rB   rC   r=   rX   r>   Úwriterx   ÚpackÚsecretsÚtoken_bytesr   Úgetvalue)
rd   r   rl   r…   Úoutputr€   r�   rf   rƒ   r>   s
             r)   Ú	serializezFrame.serialize  sm  € ð$ 	�
‰
ŒàÐØˆJØ#ò 	*ˆIØ×#Ñ# DÓ)‰Dð	*ô —‘“ˆð  Ÿ8š8‰Z¨Ø!ŸYšY‰z¨Añ/à!ŸYšY‰z¨Añ/ð "ŸYšY‰z¨Añ/ð �k‰kñ	ð 	ñ #‘
¨ˆä�T—Y‘Y“ˆØ�CŠ<Ø�L‰LœŸ™ U¨E°5¸6±>ÓBÕCØ�eŠ^Ø�L‰LœŸ™ V¨U°E¸C±KÀÓHÕIà�L‰LœŸ™ V¨U°E¸C±KÀÓHÔIáÜ ×,Ñ,¨QÓ/ˆJØ�L‰L˜Ô$ñ Ü˜dŸi™i¨Ó4‰Dà—9‘9ˆDØ�‰�TÔà�‰Ó Ð r(   c                óü   — | j                   s| j                  s| j                  rt        d«      ‚| j                  t
        v r;t        | j                  «      dkD  rt        d«      ‚| j                  st        d«      ‚yy)z¦
        Check that reserved bits and opcode have acceptable values.

        Raises:
            ProtocolError: If a reserved bit or the opcode is invalid.

        zreserved bits must be 0é}   zcontrol frame too longzfragmented control frameN)	rA   rB   rC   r
   r=   r   rX   r>   r@   ©rd   s    r)   r|   zFrame.checkO  sh   € ð �9Š9˜Ÿ	š	 T§Y¢YÜÐ 9Ó:Ð:à�;‰;œ,Ñ&Ü�4—9‘9‹~ Ò#Ü#Ð$<Ó=Ð=Ø—8’8Ü#Ð$>Ó?Ð?ð ð 'r(   ©Úreturnr^   )
r~   z-Callable[[int], Generator[None, None, bytes]]r   r?   rk   z
int | Nonerl   ú%Sequence[extensions.Extension] | Noner–   zGenerator[None, None, Frame])r   r?   rl   r—   r–   rZ   ©r–   ÚNone)r   r   r   r    Ú__annotations__r@   rA   rB   rC   ÚintÚosÚenvironÚgetr\   rj   Úclassmethodr_   r‘   r|   r'   r(   r)   r   r   |   sâ   … ñð  ƒNØ
-Ó-Ø€CˆÓØ€Dˆ$ÓØ€Dˆ$ÓØ€Dˆ$Óñ �r—z‘z—~‘~Ð&?ÀÓFÓG€Ló09ðd ð  $Ø<@ñGàAðGð ð	Gð
 ðGð :ðGð 
&òGó ðGðZ =Añ	9!ð ð9!ð :ð	9!ð
 
ó9!ôv@r(   r   c                  óP   — e Zd ZU dZded<   ded<   dd„Zedd„«       Zdd„Zdd	„Z	y
)r   z
    Code and reason for WebSocket close frames.

    Attributes:
        code: Close code.
        reason: Close reason.

    r›   Úcoder^   Úreasonc                ó  — d| j                   cxk  rdk  rn nd}n;d| j                   cxk  rdk  rn nd}n t        j                  | j                   d«      }| j                   › d|› d�}| j                  r|› d	| j                  › �}|S )
zU
        Return a human-readable representation of a close code and reason.

        é¸  i   Ú
registeredéˆ  zprivate useÚunknownz (ú)rK   )r¡   r;   rž   r¢   )rd   ÚexplanationÚresults      r)   rj   zClose.__str__o  s|   € ð
 �4—9‘9Ô#˜tÕ#Ø&‰KØ�T—Y‘YÔ% Õ%Ø'‰Kä1×5Ñ5°d·i±iÀÓKˆKØ—I‘I�;˜b  ¨QÐ/ˆà�;Š;Ø�x˜q §¡ Ð.ˆFàˆr(   c                ó  — t        |«      dk\  rIt        j                  d|dd «      \  }|dd j                  «       } | ||«      }|j	                  «        |S t        |«      dk(  r | t
        j                  d«      S t        d«      ‚)z÷
        Parse the payload of a close frame.

        Args:
            data: Payload of the close frame.

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

        r   rv   Nr   rG   zclose frame too short)rX   rx   ry   r[   r|   r   r/   r
   )r}   r>   r¡   r¢   Úcloses        r)   r_   zClose.parse�  s}   € ô ˆt‹9˜Š>Ü—m‘m D¨$¨r°¨(Ó3‰GˆTØ˜!˜"�X—_‘_Ó&ˆFÙ˜˜fÓ%ˆEØ�K‰KŒMØˆLÜ�‹Y˜!Š^Ù”y×/Ñ/°Ó4Ð4äÐ 7Ó8Ð8r(   c                ó˜   — | j                  «        t        j                  d| j                  «      | j                  j                  «       z   S )z:
        Serialize the payload of a close frame.

        rv   )r|   rx   rŒ   r¡   r¢   rˆ   r”   s    r)   r‘   zClose.serialize™  s4   € ð
 	�
‰
ŒÜ�{‰{˜4 §¡Ó+¨d¯k©k×.@Ñ.@Ó.BÑBÐBr(   c                ó‚   — | j                   t        v s-d| j                   cxk  rdk  st        d«      ‚ t        d«      ‚yy)z›
        Check that the close code has a valid value for a close frame.

        Raises:
            ProtocolError: If the close code is invalid.

        r¤   r¦   zinvalid status codeN)r¡   ÚEXTERNAL_CLOSE_CODESr
   r”   s    r)   r|   zClose.check¡  sH   € ð —	‘	Ô1Ñ1°T¸T¿Y¹YÔ5MÈÒ5MÜÐ 5Ó6Ð6ð 6NÜÐ 5Ó6Ð6ð 6NÐ1r(   Nr•   )r>   rZ   r–   r   )r–   rZ   r˜   )
r   r   r   r    rš   rj   rŸ   r_   r‘   r|   r'   r(   r)   r   r   a  s7   … ñð ƒIØƒKóð$ ò9ó ð9ó.Cô	7r(   r   r†   )CÚ
__future__r   ÚdataclassesÚenumr‰   rœ   r�   rx   Úcollections.abcr   r   Útypingr   r   Ú
exceptionsr	   r
   Úspeedupsr   ÚImportErrorÚutilsÚ__all__ÚIntEnumr   r!   r   r"   r   r#   r   r$   r   r%   r   r&   r   r   r   r   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r;   rš   r¯   ÚOK_CLOSE_CODESrZ   Ú	bytearrayÚ
memoryviewÚ	BytesLikeÚ	dataclassr   r   rG   rl   r'   r(   r)   ú<module>rÀ      sr  ðÞ "ã Û Û 	Û 	Û Û ß /ß "ç 4ð"Ý$ò
€ô )ˆT�\‰\ô )ð �+‰+€Ø
�+‰+€Ø�M‰M€	Ø�<‰<€Ø
�+‰+€Ø
�+‰+€à˜ Ð*€Ø˜ 'Ð)€ô�—‘ô ð. ×Ñ˜dØ×Ñ˜,Ø×ÑÐ.Ø×ÑÐ 2Ø×ÑÐ=Ø×ÑÐ =Ø×ÑÐ8Ø×ÑÐ 2Ø×ÑÐ0Ø×!Ñ!Ð#8Ø×ÑÐ.Ø×ÑÐ0Ø×ÑÐ0Ø×Ñ˜=Ø×ÑÐ?ð+Ð ˜ó ð, ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×!Ñ!Ø×ÑØ×ÑØ×ÑØ×ÑðÐ ð" ×ÑØ×ÑØ×Ñð€ð �9˜jÐ(€	ð ×Ñ÷a@ð a@ó ða@ðH ×Ñ÷H7ð H7ó ðH7öX øð{ ò "ß!Ð!ð"ús   ¹I! É!I0É/I0