o
    RÊÆhóf  ã                	   @   sþ  U d 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Zddlm	Z	 ddl
mZ ddlmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZmZ dd	lmZ dd
lm Z  dZ!G dd„ de	ƒZ"dd„ e"D ƒZ#eee$  e%d< dZ&G dd„ de	ƒZ'dZ(ee) e%d< edƒj*Z+edƒj*Z,edƒj-Z.edƒj/Z0edƒj/Z1edƒj/Z2edƒj/Z3dZ4ee$ e%d< dZ5ee$ e%d< G dd „ d eƒZ6e6e'j7ddƒZ8e6e'j9ddƒZ:G d!d"„ d"e;ƒZ<G d#d$„ d$e;ƒZ=ej>Z?ee@ e%d%< ejAd&ee) fd'd(„ƒZBd)e)d*eCd&dfd+d,„ZDe�r	eDZEnz
dd-lFmGZG eGZEW n eH�y   eDZEY nw e)g d.¢ƒZIee) e%d/< e Jd0¡ZKeee@  e%d1< e Jd2¡ZLeee@  e%d3< dDd5ee@ d6eMd&ee$eMf fd7d8„ZN	4dEd:e$d6eMd;eMd&e@fd<d=„ZOG d>d?„ d?e	ƒZPG d@dA„ dAƒZQG dBdC„ dCƒZRdS )Fz%WebSocket protocol versions 13 and 8.é    N)ÚIntEnum)ÚStruct)ÚAnyÚCallableÚFinalÚListÚ
NamedTupleÚOptionalÚPatternÚSetÚTupleÚUnionÚcasté   )ÚBaseProtocol)ÚZLibCompressorÚZLibDecompressor)ÚNO_EXTENSIONS)Ú	DataQueue)	ÚWS_CLOSED_MESSAGEÚWS_CLOSING_MESSAGEÚWS_KEYÚWebSocketReaderÚWebSocketWriterÚ	WSMessageÚWebSocketErrorÚ	WSMsgTypeÚWSCloseCodec                   @   s@   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S )r   éè  ié  iê  ië  iî  iï  ið  iñ  iò  ió  iô  iõ  iö  N)Ú__name__Ú
__module__Ú__qualname__ÚOKÚ
GOING_AWAYÚPROTOCOL_ERRORÚUNSUPPORTED_DATAÚABNORMAL_CLOSUREÚINVALID_TEXTÚPOLICY_VIOLATIONÚMESSAGE_TOO_BIGÚMANDATORY_EXTENSIONÚINTERNAL_ERRORÚSERVICE_RESTARTÚTRY_AGAIN_LATERÚBAD_GATEWAY© r/   r/   úc/var/www/html/HyperOracle/crypto_trader/venv/lib/python3.10/site-packages/aiohttp/http_websocket.pyr   ,   s    r   c                 C   s   h | ]}t |ƒ’qS r/   )Úint)Ú.0Úir/   r/   r0   Ú	<setcomp><   s    r4   ÚALLOWED_CLOSE_CODESi   c                   @   sP   e Zd ZdZdZdZdZdZdZdZ	dZ
d	ZeZeZeZeZeZe	Ze
ZeZd
S )r   r   r   é   é	   é
   é   é   i  i  N)r   r    r!   ÚCONTINUATIONÚTEXTÚBINARYÚPINGÚPONGÚCLOSEÚCLOSINGÚCLOSEDÚERRORÚtextÚbinaryÚpingÚpongÚcloseÚclosingÚclosedÚerrorr/   r/   r/   r0   r   H   s$    r   s$   258EAFA5-E914-47DA-95CA-C5AB0DC85B11r   z!Hz!Qz!BBz!BBHz!BBQi @  ÚMSG_SIZEé   ÚDEFAULT_LIMITc                   @   sN   e Zd ZU eed< eed< ee ed< ej	dœde
egef defdd„Zd	S )
r   ÚtypeÚdataÚextra)ÚloadsrR   Úreturnc                C   s
   || j ƒS )zAReturn parsed JSON data.

        .. versionadded:: 0.22
        )rP   )ÚselfrR   r/   r/   r0   Újsont   s   
zWSMessage.jsonN)r   r    r!   r   Ú__annotations__r   r	   ÚstrrU   rR   r   r/   r/   r/   r0   r   n   s
   
 (r   c                       s<   e Zd ZdZdededdf‡ fdd„Zdefdd	„Z‡  ZS )
r   z WebSocket protocol parser error.ÚcodeÚmessagerS   Nc                    s   || _ tƒ  ||¡ d S ©N)rX   ÚsuperÚ__init__©rT   rX   rY   ©Ú	__class__r/   r0   r\   ƒ   s   zWebSocketError.__init__c                 C   s   t t| jd ƒS )Nr   )r   rW   Úargs©rT   r/   r/   r0   Ú__str__‡   s   zWebSocketError.__str__)	r   r    r!   Ú__doc__r1   rW   r\   rb   Ú__classcell__r/   r/   r^   r0   r   €   s    r   c                   @   s   e Zd ZdZdS )ÚWSHandshakeErrorz#WebSocket protocol handshake error.N)r   r    r!   rc   r/   r/   r/   r0   re   ‹   s    re   Únative_byteorderrS   c                   C   s   dd„ t dƒD ƒS )Nc                    s&   g | ]‰ t ‡ fd d„tdƒD ƒƒ‘qS )c                 3   s   � | ]}|ˆ A V  qd S rZ   r/   )r2   Úa©Úbr/   r0   Ú	<genexpr>•   ó   € z(_xor_table.<locals>.<listcomp>.<genexpr>r:   )ÚbytesÚrange)r2   r/   rh   r0   Ú
<listcomp>•   s   & z_xor_table.<locals>.<listcomp>r:   )rm   r/   r/   r/   r0   Ú
_xor_table“   s   ro   ÚmaskrP   c                    sÊ   t |tƒs	J |ƒ‚t| ƒdksJ | ƒ‚|rctƒ ‰ ‡ fdd„| D ƒ\}}}}|ddd…  |¡|ddd…< |ddd…  |¡|ddd…< |ddd…  |¡|ddd…< |ddd…  |¡|ddd…< dS dS )aw  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.

    é   c                 3   s   � | ]}ˆ | V  qd S rZ   r/   )r2   Ún©Ú
_XOR_TABLEr/   r0   rj   ª   rk   z)_websocket_mask_python.<locals>.<genexpr>Nr   r6   é   )Ú
isinstanceÚ	bytearrayÚlenro   Ú	translate)rp   rP   rg   ri   ÚcÚdr/   rs   r0   Ú_websocket_mask_python˜   s   "úr|   )Ú_websocket_mask_cython)r   r   éÿ   r~   Ú_WS_DEFLATE_TRAILINGz�^(?:;\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_SPLITFÚextstrÚisserverc                 C   sþ   | sdS d}d}t  | ¡D ]m}| d¡}|sd} ||fS t |¡}|rod}|rK| d¡r?t| d¡ƒ}|dks<|dk r?d}q| d¡rFd} ||fS | d	¡rct| d	¡ƒ}|dks_|dk rctd
ƒ‚| d¡rjd} ||fS |sztd| d¡ ƒ‚q||fS )N)r   Fr   Fr   é   rq   r7   Té   zInvalid window sizer6   z#Extension for deflate not supported)r�   ÚfinditerÚgroupr€   Úmatchr1   re   )r‚   rƒ   ÚcompressÚ
notakeoverÚextÚdefextrˆ   r/   r/   r0   Úws_ext_parseÉ   sF   
%
Ü


ð
ýÿr�   r„   r‰   Úserver_notakeoverc                 C   s^   | dk s| dkrt dƒ‚dg}|s| d¡ | dk r#| dt| ƒ ¡ |r*| d¡ d |¡S )	Nr7   r„   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ÚappendrW   Újoin)r‰   rƒ   rŽ   Ú
enabledextr/   r/   r0   Ú
ws_ext_genü   s   ÿ


r•   c                   @   s   e Zd ZdZdZdZdZdS )ÚWSParserStater   r6   ru   rq   N)r   r    r!   ÚREAD_HEADERÚREAD_PAYLOAD_LENGTHÚREAD_PAYLOAD_MASKÚREAD_PAYLOADr/   r/   r/   r0   r–     s
    r–   c                
   @   s–   e Zd Z	ddee dededdfdd„Zdd	d
„Zde	de
ee	f fdd„Zde	de
ee	f fdd„Zde	dee
eee eee f  fdd„ZdS )r   TÚqueueÚmax_msg_sizer‰   rS   Nc                 C   sp   || _ || _d | _tƒ | _tj| _d | _d| _	d | _
tƒ | _d| _d| _d | _d| _d| _d | _d | _|| _d S )NFó    r   )r›   Ú_max_msg_sizeÚ_excrw   Ú_partialr–   r—   Ú_stateÚ_opcodeÚ
_frame_finÚ_frame_opcodeÚ_frame_payloadÚ_tailÚ	_has_maskÚ_frame_maskÚ_payload_lengthÚ_payload_length_flagÚ_compressedÚ_decompressobjÚ	_compress)rT   r›   rœ   r‰   r/   r/   r0   r\     s"   
zWebSocketReader.__init__c                 C   s   | j  ¡  d S rZ   )r›   Úfeed_eofra   r/   r/   r0   r®   2  s   zWebSocketReader.feed_eofrP   c              
   C   sT   | j rd|fS z|  |¡W S  ty) } z|| _ | j |¡ W Y d }~dS d }~ww )NT)Tr�   )rŸ   Ú
_feed_dataÚ	Exceptionr›   Úset_exception)rT   rP   Úexcr/   r/   r0   Ú	feed_data5  s   €ýzWebSocketReader.feed_datac                 C   sb  |   |¡D �]¨\}}}}|r| jstdd�| _|tjkr„t|ƒdkrdt|d d… ƒd }|dk r=|tvr=tt	j
d|› �ƒ‚z|dd …  d¡}W n ty[ } ztt	jdƒ|‚d }~ww ttj||ƒ}	n|rutt	j
d	|› d
|› d
|›�ƒ‚ttjddƒ}	| j |	d¡ q|tjkr˜| j ttj|dƒt|ƒ¡ q|tjkr¬| j ttj|dƒt|ƒ¡ q|tjtjfvrÂ| jd u rÂtt	j
d|›�ƒ‚|sì|tjkrÌ|| _| j |¡ | jrët| jƒ| jkrëtt	jd t| jƒ| j¡ƒ‚q| jrý|tjkrýtt	j
d |¡ƒ‚|tjk�r| jd u�sJ ‚| j}d | _| j |¡ | j�r2t| jƒ| jk�r2tt	jd t| jƒ| j¡ƒ‚|�rf| jd u�s=J ‚| j t¡ | j | j| j¡}
| jj�ret| jjƒ}tt	jd | j| | j¡ƒ‚nt| jƒ}
| j  ¡  |tjk�r z|
 d¡}| j ttj|dƒt|ƒ¡ W q t�yŸ } ztt	jdƒ|‚d }~ww | j ttj|
dƒt|
ƒ¡ qdS )NT)Úsuppress_deflate_headerr6   r   i¸  zInvalid close code: úutf-8zInvalid UTF-8 text messagezInvalid close frame: ú Ú zUnexpected opcode=z Message size {} exceeds limit {}z<The opcode in non-fin frame is expected to be zero, got {!r}z-Decompressed message size {} exceeds limit {})Fr�   )!Úparse_framer¬   r   r   r@   rx   ÚUNPACK_CLOSE_CODEr5   r   r   r$   ÚdecodeÚUnicodeDecodeErrorr'   r   r›   r³   r>   r?   r<   r=   r¢   r;   r    Úextendrž   r)   Úformatr   Údecompress_syncÚunconsumed_tailrl   Úclear)rT   rP   ÚfinÚopcodeÚpayloadÚ
compressedÚ
close_codeÚclose_messager²   ÚmsgÚpayload_mergedÚleftrD   r/   r/   r0   r¯   @  sÚ   

þÿþ€ÿþ
ÿ
ÿ
ÿ
ÿþ€	
ýÿþ	ÿ
ÿþþ
	

ÿÿþ€ÿþzWebSocketReader._feed_dataÚbufc                 C   sf  g }| j r| j | d}| _ d}t|ƒ}	 | jtjkr°|| dkr¯|||d … }|d7 }|\}}|d? d@ }|d? d@ }	|d? d@ }
|d	? d@ }|d
@ }|
sV|sV|	r\| js\ttjdƒ‚|dkrj|dkrjttjdƒ‚|d? d@ }|d@ }|dkr‚|dkr‚ttjdƒ‚| j	sŠ| j
du r’|	rŽdnd| _
n|	ršttjdƒ‚t|ƒ| _	|| _t|ƒ| _|| _tj| _nnú| jtjk�r!| j}|dkrå|| dkrä|||d … }|d7 }t|ƒd }|| _| jrßtjntj| _n=nÅ|dk�r|| dk�r|||d … }|d7 }t|ƒd }|| _| j�rtjntj| _nn—|| _| j�rtjntj| _| jtjk�rB|| d	k�rA|||d	 … | _|d	7 }tj| _nnh| jtjk�r©| j}| j}|| }||k�ri|| | _| ||d… ¡ |}nd| _| |||| … ¡ || }| jdk�r¨| j�r“| jdu�s�J ‚t| j|ƒ | | j	| j|| j
f¡ tƒ | _tj| _nnq||d… | _ |S )z&Return the next frame from the socket.r�   r   Tr6   é   r   r…   é   rq   r„   z*Received frame with non-zero reserved bitsz!Received fragmented control frameé   é}   z5Control frame payload cannot be larger than 125 bytesNFé~   r9   )r¦   rx   r¡   r–   r—   r­   r   r   r$   r£   r«   Úboolr¤   r§   rª   r˜   ÚUNPACK_LEN2r©   r™   rš   ÚUNPACK_LEN3r¨   r¥   r¼   Ú_websocket_maskr’   rw   )rT   rÊ   ÚframesÚ	start_posÚ
buf_lengthrP   Ú
first_byteÚsecond_byterÁ   Úrsv1Úrsv2Úrsv3rÂ   Úhas_maskÚlengthrÃ   Ú	chunk_lenr/   r/   r0   r¸   ¼  sÖ   þþþþ


ÿý

ÿý
ÿý


ÿ
 �õ zWebSocketReader.parse_frame)T)rS   N)r   r    r!   r   r   r1   rÐ   r\   r®   rl   r   r³   r¯   r   r	   rw   r¸   r/   r/   r/   r0   r     s&    ÿÿÿÿ
þ
|ÿþr   c                   @   s  e Zd Zdee ¡ dddœdedejde	de
ded	e
d
e	ddfdd„Z	d"dede
d	ee
 ddfdd„Zdeddfdd„Zd#deeef ddfdd„Zd#deeef ddfdd„Z		d$deeef de	d	ee
 ddfdd„Zd%de
deeef ddfd d!„ZdS )&r   Fr   )Úuse_maskÚlimitÚrandomr‰   rŠ   ÚprotocolÚ	transportrß   rà   rá   r‰   rŠ   rS   Nc                C   sB   || _ || _|| _|j| _|| _|| _d| _|| _d| _d | _	d S )NFr   )
râ   rã   rß   Ú	randranger‰   rŠ   Ú_closingÚ_limitÚ_output_sizeÚ_compressobj)rT   râ   rã   rß   rà   rá   r‰   rŠ   r/   r/   r0   r\   Y  s   
zWebSocketWriter.__init__rY   rÂ   c                 Ã   s  �| j r|tj@ stdƒ‚d}|s| jrZ|dk rZ|r$ttj| td�}n| j	s2ttj| j td�| _	| j	}| |¡I dH }|| 
| jrFtjntj¡7 }| t¡rV|dd… }|dB }t|ƒ}| j}|rfd}nd}|d	k rxtd|B |B ||B ƒ}	n|d
k r‰td|B |B d	|B |ƒ}	ntd|B |B d|B |ƒ}	|rÇ|  dd¡}
|
 dd¡}
t|ƒ}t|
|ƒ |  |	|
 | ¡ |  jt|	ƒt|
ƒ t|ƒ 7  _n%t|ƒtkrØ|  |	¡ |  |¡ n|  |	| ¡ |  jt|	ƒt|ƒ 7  _| j| jkrÿd| _| j ¡ I dH  dS dS )ú<Send a frame over the websocket with message as its payload.ú!Cannot write to closing transportr   r9   )ÚlevelÚwbitsÚmax_sync_chunk_sizeNéüÿÿÿé@   é€   rÏ   rM   rÍ   l   ÿÿ rq   Úbig)rå   r   r@   ÚConnectionResetErrorr‰   r   ÚzlibÚZ_BEST_SPEEDÚWEBSOCKET_MAX_SYNC_CHUNK_SIZErè   ÚflushrŠ   ÚZ_FULL_FLUSHÚZ_SYNC_FLUSHÚendswithr   rx   rß   Ú	PACK_LEN1Ú	PACK_LEN2Ú	PACK_LEN3rä   Úto_bytesrw   rÓ   Ú_writerç   rL   ræ   râ   Ú_drain_helper)rT   rY   rÂ   r‰   ÚrsvÚcompressobjÚ
msg_lengthrß   Úmask_bitÚheaderrp   r/   r/   r0   Ú_send_frameo  sf   €ýýÿ

$
þzWebSocketWriter._send_framerP   c                 C   s,   | j d u s
| j  ¡ rtdƒ‚| j  |¡ d S )Nrê   )rã   Ú
is_closingrò   Úwrite)rT   rP   r/   r/   r0   rþ   ¶  s   zWebSocketWriter._writer�   c                 Ã   ó.   �t |tƒr| d¡}|  |tj¡I dH  dS )zSend pong message.rµ   N)rv   rW   Úencoder  r   r?   ©rT   rY   r/   r/   r0   rG   »  ó   €

zWebSocketWriter.pongc                 Ã   r  )zSend ping message.rµ   N)rv   rW   r	  r  r   r>   r
  r/   r/   r0   rF   Á  r  zWebSocketWriter.pingrE   c                 Ã   sN   �t |tƒr| d¡}|r|  |tj|¡I dH  dS |  |tj|¡I dH  dS )ré   rµ   N)rv   rW   r	  r  r   r=   r<   )rT   rY   rE   r‰   r/   r/   r0   ÚsendÇ  s   €

zWebSocketWriter.sendr   rX   c                 Ã   sJ   �t |tƒr| d¡}z| jt|ƒ| tjd�I dH  W d| _dS d| _w )z<Close the websocket, sending the specified code and message.rµ   )rÂ   NT)rv   rW   r	  r  ÚPACK_CLOSE_CODEr   r@   rå   r]   r/   r/   r0   rH   Õ  s   €

ÿzWebSocketWriter.closerZ   )r�   )FN)r   r�   )r   r    r!   rN   rá   ÚRandomr   ÚasyncioÚ	TransportrÐ   r1   r   r\   rl   r	   r  rþ   r   rW   rG   rF   r  rH   r/   r/   r/   r0   r   X  s`    ÷þýûúùø	÷

öÿÿÿÿ
þG	ü
þýü
û$r   )F)r„   FF)Src   r  Ú	functoolsrU   rá   ÚreÚsysró   Úenumr   Ústructr   Útypingr   r   r   r   r   r	   r
   r   r   r   r   Úbase_protocolr   Úcompression_utilsr   r   Úhelpersr   Ústreamsr   Ú__all__r   r5   r1   rV   rõ   r   r   rl   Úunpack_fromrÑ   rÒ   Úunpackr¹   Úpackrú   rû   rü   r  rL   rN   r   rB   r   rA   r   r°   r   re   Ú	byteorderrf   rW   Ú	lru_cachero   rw   r|   rÓ   Ú
_websocketr}   ÚImportErrorr   Úcompiler€   r�   rÐ   r�   r•   r–   r   r   r/   r/   r/   r0   Ú<module>   sˆ    4	






ÿÿ$4ÿÿÿÿ
þ  A