
    8'h(              	           d Z dZdZdZ	 dd lmZ y# e$ r^ ddlZej                  r e	e      Z
 G d de      ZY ydj                  eD  cg c]
  }  e|        nc c} w c}       Z
 G d de      ZY yw xY w)	)Utf8Validator(      r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      r      r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
      r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
      r
   r
         r   r      r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r
   r   r   r   r   r   r   r   r
   r   r   r   r   r   r
   r   r
   r   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Nc                   ,    e Zd ZdZdZd Zd Zd Zd Zy)r     
            Incremental UTF-8 validator with constant memory consumption (minimal state).

            Implements the algorithm "Flexible and Economical UTF-8 Decoder" by
            Bjoern Hoehrmann (http://bjoern.hoehrmann.de/utf-8/decoder/dfa/).
            
_codepoint_state_indexc                 N    d | _         d | _        d | _        | j                          y Nr   r   r   resetselfs    \/var/www/html/trade_iq/venv/lib/python3.12/site-packages/autobahn/websocket/utf8validator.py__init__zUtf8Validator.__init__Z        "&""

    c                     t         |   }| j                  t        k7  r|dz  | j                  dz  z  | _        nd|z	  |z  | _        t         d| j                  dz  z   |z      | _        | j                  S a  
                Eat one UTF-8 octet, and validate on the fly.

                Returns ``UTF8_ACCEPT`` when enough octets have been consumed, in which case
                ``self.codepoint`` contains the decoded Unicode code point.

                Returns ``UTF8_REJECT`` when invalid UTF-8 was encountered.

                Returns some other positive integer when more octets need to be eaten.
                ?   r            )UTF8VALIDATOR_DFA_Sr   UTF8_ACCEPTr   r   btts      r   decodezUtf8Validator.decode`   sl     )+;;+-'(4xDOOq4H&IDO'+rzQ&6DO1#b8H2H22MN{{"r   c                 6    t         | _        d| _        d| _        yzc
                Reset validator to start new incremental UTF-8 decode/validation.
                r   Nr&   r   r   r   r   s    r   r   zUtf8Validator.resets        *"#r   c                 \   t        |      }d}| j                  }||k  r\t        d|dz  z   t        ||      z      }|t        k(  r,|| _        | xj                  |z  c_        dd|| j                  fS |dz  }||k  r\|| _        | xj                  |z  c_        d|t
        k(  || j                  fS a  
                Incrementally validate a chunk of bytes provided as string.

                Will return a quad ``(valid?, endsOnCodePoint?, currentIndex, totalIndex)``.

                As soon as an octet is encountered which renders the octet sequence
                invalid, a quad with ``valid? == False`` is returned. ``currentIndex`` returns
                the index within the currently consumed chunk, and ``totalIndex`` the
                index within the total consumed sequence that was the point of bail out.
                When ``valid? == True``, currentIndex will be ``len(ba)`` and ``totalIndex`` the
                total amount of consumed bytes.
                r   r#   r   Fr   T)lenr   r%   UTF8_REJECTr   r&   r   balistates        r   validatezUtf8Validator.validate{   s    " G!e/uz0BEXY[\]Y^E_0_`E+&+q($eQ;;FA !e $q Uk11dkkAAr   N	__name__
__module____qualname____doc__	__slots__r   r*   r   r8    r   r   r   r   L   #    I#& Br   r    c                   ,    e Zd ZdZdZd Zd Zd Zd Zy)r   r   r   c                 N    d | _         d | _        d | _        | j                          y r   r   r   s    r   r   zUtf8Validator.__init__   r   r   c                    t        t        |         }| j                  t        k7  r|dz  | j                  dz  z  | _        nd|z	  |z  | _        t        t        d| j                  dz  z   |z            | _        | j                  S r    )ordr%   r   r&   r   r'   s      r   r*   zUtf8Validator.decode   sx     ,Q/0;;+-'(4xDOOq4H&IDO'+rzQ&6DO!"5cDKK"<L6Lr6Q"RS{{"r   c                 6    t         | _        d| _        d| _        yr,   r-   r   s    r   r   zUtf8Validator.reset   r.   r   c                    t        |      }d}| j                  }||k  rwt        t        d|dz  z   t        t        t        ||                  z            }|t        k(  r,|| _        | xj
                  |z  c_        dd|| j
                  fS |dz  }||k  rw|| _        | xj
                  |z  c_        d|t        k(  || j
                  fS r0   )r1   r   rE   r%   r2   r   r&   r3   s        r   r8   zUtf8Validator.validate   s    " G!e 3C5A:4FM`adeghiejakMlIm4m noE+&+q($eQ;;FA !e $q Uk11dkkAAr   Nr9   r?   r   r   r   r      r@   r   )__all__UTF8VALIDATOR_DFAr&   r2   wsaccel.utf8validatorr   ImportErrorsixPY3bytesr%   objectjoinchr)cs   0r   <module>rS      s   >  " tB3 qB 
ww
 $$56M	BF M	Bd !gg7H&I!s1v&I&IJM	BF M	BIqBs     (A4A4
A
A43A4