File: //opt/saltstack/salt/lib/python3.10/site-packages/tornado/__pycache__/websocket.cpython-310.pyc
o
;j� � @ s� d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlmZ ddl
Z
ddlZddlmZmZ ddlmZmZmZ ddl
mZmZmZ ddlmZ ddlmZmZ dd lmZm Z dd
l!m"Z" ddl
m#Z# ddl$m%Z% dd
l&m'Z' ddl(m)Z) ddl*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7 e+r�ddl8m9Z9 G dd� de9�Z:G dd� de9�Z;G dd� de9�Z<dZ=e�>ej?�Z@G dd� deA�ZBG dd� deB�ZCG dd� deA�ZDG dd � d �ZEG d!d"� d"e
jFjG�ZHd#e-d$e-d%dfd&d'�ZIG d(d)� d)ejJ�ZKG d*d+� d+�ZLG d,d-� d-�ZMG d.d/� d/eK�ZNG d0d1� d1e#jO�ZPdddddde=ddf d2e0eQejRf d3e.e3d4gdf d5e.eS d6e.e3e0deQeTf gdf d7e.e/eQe-f d8e.eS d9e.eS d:eUd;e.e1eQ d<e.e" d%d=fd>d?�ZVdS )@a� Implementation of the WebSocket protocol.
`WebSockets <http://dev.w3.org/html5/websockets/>`_ allow for bidirectional
communication between the browser and server. WebSockets are supported in the
current versions of all major browsers.
This module implements the final version of the WebSocket protocol as
defined in `RFC 6455 <http://tools.ietf.org/html/rfc6455>`_.
.. versionchanged:: 4.0
Removed support for the draft 76 protocol version.
� N)�urlparse)�Future�"future_set_result_unless_cancelled)�utf8�
native_str�
to_unicode)�gen�
httpclient�httputil)�IOLoop)�StreamClosedError�IOStream)�gen_log�app_log)�Resolver)�simple_httpclient)�Queue)� TCPClient)�_websocket_mask)�
TYPE_CHECKING�cast�Any�Optional�Dict�Union�List� Awaitable�Callable�Tuple�Type)�
TracebackType)�Protocolc @ s0 e Zd Zdedefdd�Zdedefdd�ZdS ) �_Compressor�data�returnc C � d S �N� ��selfr# r'