+
    üg©jæ  ã                  ó‚   € ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^RIHt . ROt	Rt
R R ltR R ltR	 R
 ltR R ltR# )é    )ÚannotationsN)Ú	BytesLikez$258EAFA5-E914-47DA-95CA-C5AB0DC85B11c               ó   € V ^8„  d   QhRR/# )é   ÚreturnÚstr© )Úformats   "ÚK/var/www/html/bestweb/venv/lib/python3.14/site-packages/websockets/utils.pyÚ__annotate__r      s   € ÷ *ñ *�cñ *ó    c                 óv   € \         P                  ! ^4      p \        P                  ! V 4      P	                  4       # )z:
Generate a random key for the Sec-WebSocket-Key header.

)ÚsecretsÚtoken_bytesÚbase64Ú	b64encodeÚdecode)Úkeys    r   Úgenerate_keyr      s.   € ô
 ×
Ò
˜bÓ
!€CÜ×Ò˜CÓ ×'Ñ'Ó)Ð)r   c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r   r	   )r
   s   "r   r   r      s   € ÷ 	+ñ 	+�Cð 	+˜Cñ 	+r   c                óÄ   € \         P                  ! V \        ,           P                  4       4      P	                  4       p\
        P                  ! V4      P                  4       # )zo
Compute the value of the Sec-WebSocket-Accept header.

Args:
    key: Value of the Sec-WebSocket-Key header.

)ÚhashlibÚsha1ÚGUIDÚencodeÚdigestr   r   r   )r   r   s   & r   Ú
accept_keyr      sB   € ô �<Š<˜œt�×+Ñ+Ó-Ó.×5Ñ5Ó7€DÜ×Ò˜DÓ!×(Ñ(Ó*Ð*r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Údatar   Úmaskzbytes | bytearrayr   Úbytesr	   )r
   s   "r   r   r   '   s'   € ÷ Dñ D�Yð DÐ&7ð D¸Eñ Dr   c                óò  € \        V4      ^8w  d   \        R4      h\        V \        4      '       d   V P                  '       g   \        V 4      p \        P                  V \        P                  4      pV\        V 4      ^,          ,          VR\        V 4      ^,           ,           p\        P                  V\        P                  4      pW$,          P                  \        V 4      \        P                  4      # )zk
Apply masking to the data of a WebSocket message.

Args:
    data: Data to mask.
    mask: 4-bytes mask.

zmask must contain 4 bytesN)ÚlenÚ
ValueErrorÚ
isinstanceÚ
memoryviewÚc_contiguousr!   ÚintÚ
from_bytesÚsysÚ	byteorderÚto_bytes)r   r    Údata_intÚmask_repeatedÚmask_ints   &&   r   Ú
apply_maskr0   '   sª   € ô ˆ4ƒy�A„~ÜÐ4Ó5Ð5ô �$œ
×#Ò#¨D×,=×,=Ð,=Ü�T‹{ˆä�~‰~˜d¤C§M¡MÓ2€HØœC ›I¨�NÕ+¨d°?´S¸³YÀµ]Ð.CÕC€MÜ�~‰~˜m¬S¯]©]Ó;€HØÕ×)Ñ)¬#¨d«)´S·]±]ÓCÐCr   c               ó    € V ^8„  d   QhRRRR/# )r   Úsockzsocket.socketr   r   r	   )r
   s   "r   r   r   =   s   € ÷ >ñ >˜-ð >¨Cñ >r   c                óL  € V P                   ;\        P                  8X  d    RV P                  4       ,          # ;\        P                  8X  d     RV P                  4       R,          ,          # \        P
                  8X  d   \        V P                  4       4      #  \        R4      h)zJ
Return a string representation of :meth:`~socket.socket.getsockname()`.

z%s:%dz[%s]:%d:Nr   Nzunsupported socket family)ÚfamilyÚsocketÚAF_INETÚgetsocknameÚAF_INET6ÚAF_UNIXr   ÚAssertionError)r2   s   &r   Úget_socket_namer;   =   sv   € ð
 �+‰+ØŒV�^Ž^Ù˜T×-Ñ-Ó/Õ/Ð/ØŒV�_Ž_Ù˜t×/Ñ/Ó1°"Õ5Õ5Ð5Ü�^Ž^Ü�t×'Ñ'Ó)Ó*Ð*Øô !Ð!<Ó=Ð=r   )r   r0   r;   )Ú
__future__r   r   r   r   r5   r*   Útypingr   Ú__all__r   r   r   r0   r;   r	   r   r   Ú<module>r?      s=   ðÝ "ã Û Û Û Û 
å ò :€ð .€õ*õ	+õD÷,>r   