
    vg\j4                       % S SK Jr  S SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  S	S
KJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"  S1S jr#S2S jr$\" \S9S3S j5       r%\&" S \RN                  " 5        5       5      r(S\)S'   \( V s/ s H  o S    PM	     sn r*S\)S'   S4S jr+S2S jr,S2S jr-S2S jr.S2S jr/S2S jr0\" \S9S2S j5       r1\" \S9S2S j5       r2\" \S9S2S j5       r3\" \S9S2S j5       r4\" \S9S2S j5       r5\" \S9S2S j5       r6\" \S9S2S  j5       r7\" \S9S2S! j5       r8\" \S9S2S" j5       r9S5S# jr:\" \S9S2S$ j5       r; S6     S7S% jjr<\" S&S9S8S' j5       r=S9S( jr>S:S) jr?S;S<S* jjr@S=S+ jrAS>S, jrBS-\R                  S.4       S?S/ jjrD  S@                     SAS0 jjrEgs  sn f )B    )annotationsN)bisect_right)IncrementalDecoder)aliases)	lru_cache)findall)	Generator   )ENCODING_MARKSIANA_SUPPORTED_SIMILARRE_POSSIBLE_ENCODING_INDICATIONUNICODE_RANGES_COMBINED_SECONDARY_RANGE_NAMESUTF8_MAXIMAL_ALLOCATIONCOMMON_CJK_CHARACTERS_LATIN_CJK_HANGUL	_KATAKANA	_HIRAGANA_THAI_ARABIC_ARABIC_ISOLATED_FORM_ACCENT_KEYWORDS_ACCENTUATEDc                    [         R                  " U 5      nSnSU;   a	  U[        -  nSU;   a	  U[        -  nSU;   a	  U[
        -  nSU;   a	  U[        -  nSU;   a	  U[        -  nSU;   a	  U[        -  nSU;   a  U[        -  nS	U;   a	  U[        -  n[         H  nX1;   d  M
  U[        -  n  U$    U$ ! [         a     gf = f)
zRCompute all name-based classification flags with a single unicodedata.name() call.r   LATINCJKHANGULKATAKANAHIRAGANATHAIARABICzISOLATED FORM)unicodedataname
ValueErrorr   r   r   r   r   r   r   r   r   r   )	characterdescflagskws       S/home/edenadmin/noVNC/venv/lib/python3.13/site-packages/charset_normalizer/utils.py_character_flagsr,   "   s    $$Y/ E$}4TT~4d"**E:\!EL 
 L7  s   B2 2
B?>B?c                8    [        [        U 5      [        -  5      $ N)boolr,   r   r'   s    r+   is_accentuatedr1   D   s     +l:;;    )maxsizec                    [         R                  " U 5      nU(       d  U $ UR                  S5      n[        [	        US   S5      5      $ )N r      )r$   decompositionsplitchrint)r'   
decomposedcodess      r+   remove_accentr=   H   sA    !//	:J!'',Es58R !!r2   c              #  X   #    U  H   u  pUR                   UR                  U4v   M"     g 7fr.   )startstop).0r%   	ord_ranges      r+   	<genexpr>rC   U   s(      <: __innd+:s   (*zlist[tuple[int, int, str]]_UNICODE_RANGES_SORTEDz	list[int]_UNICODE_RANGE_STARTSc                r    [        U 5      n[        [        U5      S-
  nUS:  a  [        U   u  p4nX:  a  U$ g)zC
Retrieve the Unicode range official name from a single character.
r
   r   N)ordr   rE   rD   )r'   character_ordidxr?   r@   r%   s         r+   unicode_rangerJ   \   sE     YM ,m
<q
@C
ax237TKr2   c                8    [        [        U 5      [        -  5      $ r.   )r/   r,   r   r0   s    r+   is_latinrL   l   s     +f455r2   c                d    [         R                  " U 5      nSU;   a  g[        U 5      nUc  gSU;   $ )NPTFPunctuationr$   categoryrJ   r'   character_categorycharacter_ranges      r+   is_punctuationrU   p   s=    )229=
  "/	":OO++r2   c                    [         R                  " U 5      nSU;   d  SU;   a  g[        U 5      nUc  gSU;   =(       a    US:g  $ )NSNTFFormsLorP   rR   s      r+   	is_symbolr[   ~   sP    )229=
  C+=$="/	":Oo%D*<*DDr2   c                B    [        U 5      nUc  gSU;   =(       d    SU;   $ )NF	EmoticonsPictographs)rJ   )r'   rT   s     r+   is_emoticonr_      s*    "/	":O/)M]o-MMr2   c                    U R                  5       (       d  U S;   a  g[        R                  " U 5      nSU;   =(       d    US;   $ )N>   +<>   ｜TZ>   PcPdPo)isspacer$   rQ   )r'   rS   s     r+   is_separatorrj      sE    i+AA)229=$$P(:>P(PPr2   c                D    U R                  5       U R                  5       :g  $ r.   )islowerisupperr0   s    r+   is_case_variablern      s    )"3"3"555r2   c                8    [        [        U 5      [        -  5      $ r.   )r/   r,   r   r0   s    r+   is_cjkrp      s     +d233r2   c                8    [        [        U 5      [        -  5      $ r.   )r/   r,   r   r0   s    r+   is_hiraganarr           +i788r2   c                8    [        [        U 5      [        -  5      $ r.   )r/   r,   r   r0   s    r+   is_katakanaru      rs   r2   c                8    [        [        U 5      [        -  5      $ r.   )r/   r,   r   r0   s    r+   	is_hangulrw           +g566r2   c                8    [        [        U 5      [        -  5      $ r.   )r/   r,   r   r0   s    r+   is_thairz      s     +e344r2   c                8    [        [        U 5      [        -  5      $ r.   )r/   r,   r   r0   s    r+   	is_arabicr|      rx   r2   c                8    [        [        U 5      [        -  5      $ r.   )r/   r,   r   r0   s    r+   is_arabic_isolated_formr~      s     +.CCDDr2   c                    U [         ;  $ r.   )r   r0   s    r+   is_cjk_uncommonr      s    111r2   c                    U [         ;   $ r.   )r   )
range_names    r+   is_unicode_range_secondaryr      s    ///r2   c                    U R                  5       (       + =(       a-    U R                  5       (       + =(       a    U S:g  =(       a    U S:g  $ )Nu   ﻿)ri   isprintabler0   s    r+   is_unprintabler      sH      	"%%''	"	" !	r2   c                   [        U [        [        45      (       d  [        e[	        U 5      nU S[        X!5       R                  SSS9nUR                  5       nSU;  a  SU;  a  g[        [        U5      n[	        U5      S:X  a  gU HW  nUR                  5       R                  SS	5      n[        R                  " 5        H  u  pxXv:X  a  Us  s  $ X:X  d  M  Us  s  $    MY     g)
zO
Extract using ASCII-only decoder any specified encoding in the first n-bytes.
Nasciiignoreerrorscodingcharsetr   -_)
isinstancebytes	bytearray	TypeErrorlenmindecodelowerr   r   replacer   items)	sequencesearch_zoneseq_lendecoded_zonelowered_zoneresultsspecified_encodingencoding_aliasencoding_ianas	            r+   any_specified_encodingr      s     h	 233x=G !<3w#<=DD E L
 %**,L|#	(E 'G
 7|q%/557??SI
 .5]]_)N3$$2$$	 .= & r2      c                    U S;   a  gS H)  n [         R                  " U5      R                  U 5          g   g! [        [        [
        4 a     MF  f = f)zI
Verify is a specific encoding is a multi byte one based on it IANA name
>	   utf_7utf_8utf_16utf_32	utf_16_be	utf_16_le	utf_32_be	utf_32_le	utf_8_sigT)
_codecs_cn
_codecs_hk_codecs_iso2022
_codecs_jp
_codecs_kr
_codecs_twF)	importlibimport_modulegetcodecImportErrorAttributeErrorLookupError)r%   providers     r+   is_multi_byte_encodingr     se    
  
 
 	##H-66t<  	 ^[9 		s   %8AAc                    [          HJ  n[         U   n[        U[        5      (       a  U/nU H   nU R                  U5      (       d  M  X4s  s  $    ML     g)z1
Identify and extract SIG/BOM in given sequence.
)Nr2   )r   r   r   
startswith)r   iana_encodingmarksmarks       r+   identify_sig_or_bomr   /  sU    
 (%3M%BeU##GED""4(($**  ( r2   c                    U S;  $ )N>   r   r    )r   s    r+   should_strip_sig_or_bomr   A  s     444r2   c                    U R                  5       R                  SS5      n [        R                  " 5        H  u  p#XU4;   d  M  Us  $    U(       a  [	        SU  S35      eU $ )zIReturns the Python normalized encoding name (Not the IANA official name).r   r   zUnable to retrieve IANA for '')r   r   r   r   r&   )cp_namestrictr   r   s       r+   	iana_namer   E  s_    mmo%%c3/G
 *1%}55   *9 8	CDDNr2   c                   [        U 5      (       d  [        U5      (       a  g[        R                  " SU  35      R                  n[        R                  " SU 35      R                  nU" SS9nU" SS9nSn[	        S5       H:  n[        U/5      nUR                  U5      UR                  U5      :X  d  M5  US-  nM<     US-  $ )Ng        z
encodings.r   r   r      r
   )r   r   r   r   ranger   r   )	iana_name_aiana_name_b	decoder_a	decoder_bid_aid_bcharacter_match_countito_be_decodeds	            r+   cp_similarityr   V  s    k**.D[.Q.Q''*[M(BCVVI''*[M(BCVVI(9D(9D!"3Z$aSz;;}%])CC!Q&! 
 !3&&r2   c                :    U [         ;   =(       a    U[         U    ;   $ )z
Determine if two code page are at least 80% similar. IANA_SUPPORTED_SIMILAR dict was generated using
the function cp_similarity.
)r   )r   r   s     r+   is_cp_similarr   j  s%     	-- 	?1+>>r2   charset_normalizerz)%(asctime)s | %(levelname)s | %(message)sc                    [         R                  " U 5      nUR                  U5        [         R                  " 5       nUR	                  [         R
                  " U5      5        UR                  U5        g r.   )logging	getLoggersetLevelStreamHandlersetFormatter	Formatter
addHandler)r%   levelformat_stringloggerhandlers        r+   set_logging_handlerr   u  sU    
 t$F
OOE##%G**=9:
gr2   c
              #  x  #    U(       a$  U(       d  U H  n
XX-    nU(       d    g Uv   M     g U	(       a=  U(       d  U OU [        U5      S  nU H  n
XX-    nU(       d    g [        X5      v   M!     g U H  n
X-   nU[        U 5      S-   :  a  M  X
X-    nU(       a  U(       d  Xm-   nUR                  UU(       a  SOSS9nU(       aj  U
S:  ad  [        US5      nU(       aQ  US U U;  aH  [	        XS-
  S5       H5  nU UU nU(       a  U(       d  Xm-   nUR                  USS9nUS U U;   d  M5    O   Uv   M     g 7f)	N   r   r   r   r   r6      )r   strr   r   r   )	sequencesr   offsets
chunk_sizebom_or_sig_availablestrip_sig_or_bomsig_payloadis_multi_byte_decoderdecoded_payloaddeferred_decodingr   chunk
base_bytescut_sequence	chunk_endchunk_partial_size_chkjs                    r+   cut_sequence_chunksr     se     4A#7EK	 
 
 .I9S=M=O3P 	 A%!.9Ll22	  AI3y>A--$8L#,<*9 ''#8xh ( E %Q.1*b.A& $556oM"1!eR0'09'=/8H+6+EL , 3 3M( 3 S !8"89_L! 1 KG s   D'D:-D:)r'   r   returnr:   )r'   r   r   r/   )r'   r   r   r   )r'   r   r   
str | None)r   r   r   r/   )i    )r   bytes | bytearrayr   r:   r   r   )r%   r   r   r/   )r   r   r   ztuple[str | None, bytes])r   r   r   r/   )T)r   r   r   r/   r   r   )r   r   r   r   r   float)r   r   r   r   r   r/   )r%   r   r   r:   r   r   r   None)NF)r   r   r   r   r   r   r   r:   r   r/   r   r/   r   r   r   r/   r   r   r   r/   r   zGenerator[str, None, None])F
__future__r   r   r   r$   bisectr   codecsr   encodings.aliasesr   	functoolsr   rer   typingr	   constantr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r,   r1   r=   sortedr   rD   __annotations__rE   rJ   rL   rU   r[   r_   rj   rn   rp   rr   ru   rw   rz   r|   r~   r   r   r   r   r   r   r   r   r   r   INFOr   r   )es   0r+   <module>r     s   "     % %       *D< *+" ," 6< <288:< 6 2  3I#I2HQaD2H#I y I 6,ENQ *+6 ,6 *+4 ,4 *+9 ,9 *+9 ,9 *+7 ,7 *+5 ,5 *+7 ,7 *+E ,E *+2 ,20 *+ , 59((.1((V 3& &R$5"'( %D



 
 
	
, #'#E EE E 	E
 E E E  E  E E  ES	 $Js   G