
    <g                        d 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m	Z	m
Z
mZ ddlZddlZ ej                  dd      Z edddd      aed!ddded	ed
dfd       Zed!deded	ed
efd       Zed!deded	ed
e
eef   fd       Zd!de
deef   ded	ed
e
deef   fdZed!ddded	ed
dfd       Zed!deded	ed
e
eef   fd       Zed!deded	ed
efd       Zd!de
deef   d
e
deef   fdZd Zded
efdZded
efdZded
efdZded
efdZded
efdZded
efdZded
efdZded
efdZeeeeeeedZeeeeeeedZ dd gZ!y)"z1
Utility functions for decoding response bodies.
    N)BytesIO)AnyStrOptionalUnionoverloadCachedDecodezencoded encoding errors decodedencodedencodingerrorsreturnc                      y N r	   r
   r   s      g/var/www/html/myenv/lib/python3.12/site-packages/seleniumwire/thirdparty/mitmproxy/net/http/encoding.pydecoder              c                      y r   r   r   s      r   r   r      r   r   c                      y r   r   r   s      r   r   r   !   r   r   c                 .   | yt        | t              xr= t        j                  | k(  xr( t        j                  |k(  xr t        j
                  |k(  }|rt        j                  S 	 	 t        |   |       }|dv rt        | |||      a|S # t        $ r t        j                  | ||      }Y 6w xY w# t        $ r  t        $ rS}t        dj                  t!        |      j"                  t%        |       dd t%        |      t%        |                  d}~ww xY w)z
    Decode the given input object

    Returns:
        The decoded value

    Raises:
        ValueError, if decoding fails.
    Ngzipdeflatebrzstdz{} when decoding {} with {}: {}
   )
isinstancebytes_cacher	   r
   r   decodedcustom_decodeKeyErrorcodecsr   r   	TypeError	Exception
ValueErrorformattype__name__repr)r	   r
   r   cachedr!   es         r   r   r   &        	7E" 	$NNg%	$OOx'	$ MMV#	  ~~
	?#H-g6G 88!'8VWEF	  	?mmGXv>G	?
   
-44Q  Wcr"XQ	
 	

7   'B	 5B/ 	 B,)B/ +B,,B/ /DADDr!   c                      y r   r   r!   r
   r   s      r   encoder2   Q   r   r   c                      y r   r   r1   s      r   r2   r2   V   r   r   c                      y r   r   r1   s      r   r2   r2   [   r   r   c                 .   | yt        | t              xr= t        j                  | k(  xr( t        j                  |k(  xr t        j
                  |k(  }|rt        j                  S 	 	 t        |   |       }|dv rt        ||||       a|S # t        $ r t        j                  | ||      }Y 6w xY w# t        $ r  t        $ rS}t        dj                  t!        |      j"                  t%        |       dd t%        |      t%        |                  d}~ww xY w)z
    Encode the given input object

    Returns:
        The encoded value

    Raises:
        ValueError, if encoding fails.
    Nr   z{} when encoding {} with {}: {}r   )r   r   r    r!   r
   r   r	   custom_encoder#   r$   r2   r   r%   r&   r'   r(   r)   r*   r+   )r!   r
   r   r,   r	   r-   s         r   r2   r2   `   r.   r/   c                     | S )zb
    Returns content unchanged. Identity is the default value of
    Accept-Encoding headers.
    r   contents    r   identityr:      s	    
 Nr   r9   c                 f    | syt        j                  t        |             }|j                         S )Nr   )fileobj)r   GzipFiler   read)r9   gfiles     r   decode_gzipr@      s'    MM''"23E::<r   c                     t               }t        j                  |d      }|j                  |        |j	                          |j                         S )Nwb)r<   mode)r   r   r=   writeclosegetvalue)r9   sgfs      r   encode_gziprI      s:    	A	qt	,BHHWHHJ::<r   c                 2    | syt        j                  |       S )Nr   )brotli
decompressr8   s    r   decode_brotlirM      s    W%%r   c                 ,    t        j                  |       S r   )rK   compressr8   s    r   encode_brotlirP      s    ??7##r   c                     | syt        j                         }	 |j                  |       S # t         j                  $ r |j                  | d      cY S w xY w)Nr   i   )max_output_size)r   ZstdDecompressorrL   	ZstdErrorr9   zstd_ctxs     r   decode_zstdrW      sZ    $$&HJ""7++>> J ""7L"IIJs   * &AAc                 L    t        j                         }|j                  |       S r   )r   ZstdCompressorrO   rU   s     r   encode_zstdrZ      s!    ""$HW%%r   c                     | sy	 t        j                  |       S # t         j                  $ r t        j                  | d      cY S w xY w)a  
    Returns decompressed data for DEFLATE. Some servers may respond with
    compressed data without a zlib header or checksum. An undocumented
    feature of zlib permits the lenient decompression of data missing both
    values.

    http://bugs.python.org/issue5784
    r   i)zlibrL   errorr8   s    r   decode_deflater^      sB     -w'':: -w,,-s    )AAc                 ,    t        j                  |       S )zP
    Returns compressed content, always including zlib header and checksum.
    )r\   rO   r8   s    r   encode_deflater`      s     ==!!r   )noner:   r   r   
deflateRawr   r   r2   r   )strict)"__doc__r$   collectionsr   r\   ior   typingr   r   r   r   rK   	zstandardr   
namedtupler   r    strr   r   r2   r:   r@   rI   rM   rP   rW   rZ   r^   r`   r"   r6   __all__r   r   r   <module>rl      s        4 4   &{%%n6WX	dD$	- 
D C  D  
 
C 3  3  
 
E S # U3PU:EV  
(
E$U*+ (
s (
C (
W\]acfhm]mWn (
V 
D C  D  
 
C 3  5eCT  
 
E S # U  
(
E$U*+ (
5QUWZ\aQaKb (
V 5  5 &5 &U &$5 $U $	J 	J5 	J& &5 &
-E -e -""E "e "  
  
 X
r   