
    h              	          % S r SSKrSSKrSSKJr  SSKJrJrJrJ	r	J
r
Jr  SSKJr  SSKJr  \" S	5      R                   r\" S
5      R$                  r\" S5      R(                  r\" S5      R(                  r\" S5      R(                  r\" S
5      R(                  r\" S5      R(                  rSr\\   \S'   Sr\\   \S'   Sr\\   \S'   \R@                  S\\   4S j5       r!S\S\"SS4S jr#\(       d  \(       a  \#r$O	 SSK%J&r&  \&r$\RP                  " S5      r)\\
\*      \S'   \RP                  " S5      r+\\
\*      \S'   S%S\	\*   S \,S\\\,4   4S! jjr- S&S"\S \,S#\,S\*4S$ jjr.g! \' a    \#r$ Njf = f)'z1Helpers for WebSocket protocol versions 13 and 8.    N)Struct)TYPE_CHECKINGFinalListOptionalPatternTuple   )NO_EXTENSIONS   )WSHandshakeErrorz!Qz!Hz!BBz!BBHz!BBQz!Li @  MSG_SIZE   MASK_LENs$   258EAFA5-E914-47DA-95CA-C5AB0DC85B11WS_KEYreturnc            	         ^  [        S5       V ^ s/ s H!  m [        U 4S j[        S5       5       5      PM#     sn $ s  sn f )N   c              3   ,   >#    U  H	  oT-  v   M     g 7fN ).0abs     L/var/www/html/env/lib/python3.13/site-packages/aiohttp/_websocket/helpers.py	<genexpr>_xor_table.<locals>.<genexpr>   s     ,Aa%s   )rangebytes)r   s   `r   
_xor_tabler       s.    6;CjAjE,s,,jAAAs   (;maskdatac                   ^ [        U[        5      (       d   U5       e[        U 5      S:X  d   U 5       eU(       a  [        5       mU4S jU  5       u  p#pEUSSS2   R	                  U5      USSS2'   USSS2   R	                  U5      USSS2'   USSS2   R	                  U5      USSS2'   USSS2   R	                  U5      USSS2'   gg)a[  Websocket masking function.

`mask` is a `bytes` object of length 4; `data` is a `bytearray`
object of any length. The contents of `data` are masked with `mask`,
as specified in section 5.3 of RFC 6455.

Note that this function mutates the `data` argument.

This pure-python implementation may be replaced by an optimized
version when available.

r   c              3   .   >#    U  H
  nTU   v   M     g 7fr   r   )r   n
_XOR_TABLEs     r   r   )_websocket_mask_python.<locals>.<genexpr>0   s     2TjmTs   Nr   r
      )
isinstance	bytearraylenr    	translate)r!   r"   r   r   cdr&   s         @r   _websocket_mask_pythonr/      s     dI&&,,&t9>4>\
2T2
a1I''*SqS	!$Q$Z))!,QTT
!$Q$Z))!,QTT
!$Q$Z))!,QTT
     )_websocket_mask_cythonz^(?:;\s*(?:(server_no_context_takeover)|(client_no_context_takeover)|(server_max_window_bits(?:=(\d+))?)|(client_max_window_bits(?:=(\d+))?)))*$
_WS_EXT_REzpermessage-deflate([^,]+)?_WS_EXT_RE_SPLITextstrisserverc                    U (       d  gSnSn[         R                  U 5       GH*  nUR                  S5      nU(       d  Sn  X#4$ [        R	                  U5      nU(       a  SnU(       a\  UR                  S5      (       a*  [        UR                  S5      5      nUS:  d  US:  a  SnM  UR                  S5      (       a  Sn  X#4$ UR                  S	5      (       a1  [        UR                  S	5      5      nUS:  d  US:  a  [        S
5      eUR                  S5      (       a  Sn  X#4$ U(       a  GM  [        SUR                  S5      -   5      e   X#4$ )N)r   Fr   Fr      r   	   T   zInvalid window sizer
   z#Extension for deflate not supported)r3   finditergroupr2   matchintr   )r4   r5   compress
notakeoverextdefextr<   s          r   ws_ext_parserB   M   sK   HJ((01HJ I   (H ;;q>>"5;;q>2H
  "}1#$ ;;q>>!%J$ ! ;;q>>"5;;q>2H
  "}1./DEE;;q>>!%J
  "#H399UV<#WXXQ 1T r0   r>   server_notakeoverc                     U S:  d  U S:  a  [        S5      eS/nU(       d  UR                  S5        U S:  a  UR                  S[        U 5      -   5        U(       a  UR                  S5        SR                  U5      $ )	Nr8   r7   zCCompress wbits must between 9 and 15, zlib does not support wbits=8zpermessage-deflateclient_max_window_bitszserver_max_window_bits=server_no_context_takeoverz; )
ValueErrorappendstrjoin)r>   r5   rC   
enabledexts       r   
ws_ext_genrL      s    
 !|x"}Q
 	
 ''J23"}3c(mCD67 99Z  r0   )F)r7   FF)/__doc__	functoolsrestructr   typingr   r   r   r   r   r	   helpersr   modelsr   unpack_fromUNPACK_LEN3unpackUNPACK_CLOSE_CODEpack	PACK_LEN1	PACK_LEN2	PACK_LEN3PACK_CLOSE_CODEPACK_RANDBITSr   r=   __annotations__r   r   r   	lru_cacher    r*   r/   websocket_maskr!   r1   ImportErrorcompiler2   rI   r3   boolrB   rL   r   r0   r   <module>rd      s   7  	  G G # $Tl&&4L'' 5M	6N	6N	,##t!!%* %* >e > BDK B B- -i -D -2 M+N00/
 #%**/#
E'#,  )+

3P(Q %% Q0 # 0 $ 0 5dCS 0 h KP!!"&!CG!!E  0/0s    E( (E32E3