
    vKgv.                        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JrJrJrJrJr  S SKJr  SS	KJrJrJrJrJrJr  \" \S
9S\S\4S j5       r\" \S
9S\S\4S j5       r\" \S
9S\S\\   4S j5       r\" \S
9S\S\4S j5       r \" \S
9S\S\4S j5       r!\" \S
9S\S\4S j5       r"\" \S
9S\S\4S j5       r#\" \S
9S\S\4S j5       r$\" \S
9S\S\4S j5       r%\" \S
9S\S\4S j5       r&\" \S
9S\S\4S j5       r'\" \S
9S\S\4S j5       r(\" \S
9S\S\4S j5       r)\" \S
9S\S\4S j5       r*\" \S
9S\S\4S j5       r+\" \S
9S\S\4S j5       r,\" \-" \5      S
9S\S\4S j5       r.\" \S
9S\S\4S j5       r/SAS \0S!\1S\\   4S" jjr2\" S#S
9S$\S\4S% j5       r3S \0S\\\   \04   4S& jr4S'\S\4S( jr5SBS)\S*\S\4S+ jjr6S,\S\\   4S- jr7S.\S/\S\84S0 jr9S.\S/\S\4S1 jr:S2\Rv                  S34S$\S4\1S5\SS4S6 jjr< SCS7\0S8\S9\=S:\1S;\S<\S=\0S>\S?\\   S\\SS4   4S@ jjr>g)D    N)IncrementalDecoder)aliases)	lru_cache)findall)	GeneratorListOptionalSetTupleUnion)MultibyteIncrementalDecoder   )ENCODING_MARKSIANA_SUPPORTED_SIMILARRE_POSSIBLE_ENCODING_INDICATIONUNICODE_RANGES_COMBINEDUNICODE_SECONDARY_RANGE_KEYWORDUTF8_MAXIMAL_ALLOCATION)maxsize	characterreturnc                     [         R                  " U 5      nSU;   =(       dM    SU;   =(       dA    SU;   =(       d5    SU;   =(       d)    SU;   =(       d    SU;   =(       d    SU;   =(       d    S	U;   $ ! [         a     gf = f)
NFz
WITH GRAVEz
WITH ACUTEzWITH CEDILLAzWITH DIAERESISzWITH CIRCUMFLEXz
WITH TILDEzWITH MACRONzWITH RING ABOVEunicodedataname
ValueErrorr   descriptions     X/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/charset_normalizer/utils.pyis_accentuatedr       s    &++I6 	# 	,;&	,[(	, {*	, +		,
 ;&	, K'	, +	  s   A1 1
A>=A>c                     [         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*   (   sA    !//	:J!'',Es58R !!    c                 h    [        U 5      n[        R                  " 5        H  u  p#X;   d  M  Us  $    g)zC
Retrieve the Unicode range official name from a single character.
N)ordr   items)r   character_ord
range_name	ord_ranges       r   unicode_ranger2   3   s5    
 YM!8!>!>!@
% "A r+   c                 Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFLATINr   r   s     r   is_latinr5   A   s8    &++I6 k!!      
**c                 d    [         R                  " U 5      nSU;   a  g[        U 5      nUc  gSU;   $ )NPTFPunctuationr   categoryr2   r   character_categorycharacter_ranges      r   is_punctuationr?   J   s=    )229=
  %29%=OO++r+   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Lor:   r<   s      r   	is_symbolrE   Y   sP    )229=
  C+=$=%29%=Oo%D*<*DDr+   c                 B    [        U 5      nUc  gSU;   =(       d    SU;   $ )NF	EmoticonsPictographs)r2   )r   r>   s     r   is_emoticonrI   h   s*    %29%=O/)M]o-MMr+   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   r;   )r   r=   s     r   is_separatorrT   r   sE    i+AA)229=$$P(:>P(PPr+   c                 D    U R                  5       U R                  5       :g  $ N)islowerisupperr   s    r   is_case_variablerZ   |   s    )"3"3"555r+   c                 Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFCJKr   r   character_names     r   is_cjkr_      s8    $)))4 N""  r6   c                 Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFHIRAGANAr   r]   s     r   is_hiraganarb      8    $)))4 ''  r6   c                 Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFKATAKANAr   r]   s     r   is_katakanarf      rc   r6   c                 Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFHANGULr   r]   s     r   	is_hangulri      8    $)))4 ~%%  r6   c                 Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFTHAIr   r]   s     r   is_thairm      s8    $)))4 ^##  r6   c                 Z     [         R                  " U 5      nSU;   $ ! [         a     gf = f)NFARABICr   r]   s     r   	is_arabicrp      rj   r6   c                 r     [         R                  " U 5      nSU;   =(       a    SU;   $ ! [         a     gf = f)NFro   zISOLATED FORMr   r]   s     r   is_arabic_isolated_formrr      sB    $)))4 ~%K/^*KK  s   ) 
66r0   c                 6   ^  [        U 4S j[         5       5      $ )Nc              3   *   >#    U H	  oT;   v   M     g 7frV    ).0keywordr0   s     r   	<genexpr>-is_unicode_range_secondary.<locals>.<genexpr>   s     T4S*$4Ss   )anyr   )r0   s   `r   is_unicode_range_secondaryr{      s    T4STTTr+   c                     U R                  5       SL =(       a*    U R                  5       SL =(       a    U S:g  =(       a    U S:g  $ )NFu   ﻿)rS   isprintablerY   s    r   is_unprintabler      sL     	u$ 	"!!#u,	"	" !	r+   sequencesearch_zonec           	      ~   [        U [        5      (       d  [        e[        U 5      n[	        [
        U S[        X!5       R                  SSS95      n[        U5      S:X  a  gU HW  nUR                  5       R                  SS5      n[        R                  " 5        H  u  pVXT:X  a  Us  s  $ Xd: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errorsr   -_)
isinstancebytes	TypeErrorlenr   r   mindecodelowerreplacer   r.   )r   r   seq_lenresultsspecified_encodingencoding_aliasencoding_ianas          r   any_specified_encodingr      s     h&&x=G ',3w,-44WX4NG
 7|q%/557??SI
 .5]]_)N3$$2$$	 .= & r+      r   c                     U S;   =(       d=    [        [        R                  " SR                  U 5      5      R                  [
        5      $ )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_sigencodings.{})
issubclass	importlibimport_moduleformatr   r   )r   s    r   is_multi_byte_encodingr      sG    
  
 
  
 5 5d ;<OO#
r+   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.
)Nr+   )r   r   r   
startswith)r   iana_encodingmarksmarks       r   identify_sig_or_bomr     sU    
 (+9-+HeU##GED""4(($**  ( r+   r   c                     U S;  $ )N>   r   r   ru   )r   s    r   should_strip_sig_or_bomr     s     444r+   cp_namestrictc                     U R                  5       R                  SS5      n [        R                  " 5        H  u  p#XU4;   d  M  Us  $    U(       a  [	        SR                  U 5      5      eU $ )Nr   r   z Unable to retrieve IANA for '{}')r   r   r   r.   r   r   )r   r   r   r   s       r   	iana_namer   "  sa    mmo%%c3/G
 *1%}55   *9 ;BB7KLLNr+   decoded_sequencec                     [        5       nU  H$  n[        U5      nUc  M  UR                  U5        M&     [        U5      $ rV   )setr2   addlist)r   rangesr   r>   s       r   
range_scanr   2  s>    uF%	)6y)A"

?# & <r+   iana_name_aiana_name_bc                    [        U 5      (       d  [        U5      (       a  g[        R                  " SR                  U 5      5      R                  n[        R                  " SR                  U5      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        r   r   r   r      r      )r   r   r   r   r   ranger   r   )	r   r   	decoder_a	decoder_bid_aid_bcharacter_match_countito_be_decodeds	            r   cp_similarityr   @  s    k**.D[.Q.Q''k*  ''k*   )9D(9D!"3Z$aSz;;}%])CC!Q&! 
 !3&&r+   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   X  s%     	-- 	?1+>>r+   charset_normalizerz)%(asctime)s | %(levelname)s | %(message)slevelformat_stringc                     [         R                  " U 5      nUR                  U5        [         R                  " 5       nUR	                  [         R
                  " U5      5        UR                  U5        g rV   )logging	getLoggersetLevelStreamHandlersetFormatter	Formatter
addHandler)r   r   r   loggerhandlers        r   set_logging_handlerr   c  sU    
 t$F
OOE##%G**=9:
gr+   	sequencesr   offsets
chunk_sizebom_or_sig_availablestrip_sig_or_bomsig_payloadis_multi_byte_decoderdecoded_payloadc	              #     #    U(       a"  USL a  U H  n	XX-    n
U
(       d    g U
v   M     g U H  n	X-   nU[        U 5      S-   :  a  M  X	X-    nU(       a	  USL a  Xl-   nUR                  UU(       a  SOSS9n
U(       ag  U	S:  aa  [        US5      nU(       aN  U
S U U;  aE  [        XS-
  S	5       H2  nXU nU(       a	  USL a  Xl-   nUR                  USS9n
U
S U U;   d  M2    O   U
v   M     g 7f)
NF   r   r   r   r   r#      )r   r   r   r   )r   r   r   r   r   r   r   r   r   r   chunk	chunk_endcut_sequencechunk_partial_size_chkjs                  r   cut_sequence_chunksr   p  s)     0E9A#7EK	  AI3y>A--$8L#(8E(A*9 ''#8xh ( E %Q.1*b.A& $556oM"1!eR0'09'=/4D4M+6+EL , 3 3M( 3 S !8"89_L! 1 KG s   CC/"C/)i    )TrV   )?r   r   r   codecsr   encodings.aliasesr   	functoolsr   rer   typingr   r   r	   r
   r   r   _multibytecodecr   constantr   r   r   r   r   r   strboolr    r*   r2   r5   r?   rE   rI   rT   rZ   r_   rb   rf   ri   rm   rp   rr   r   r{   r   r   r'   r   r   r   r   r   r   floatr   r   INFOr   r   r   ru   r+   r   <module>r      s      % %   ? ? 7  *+c d  ," *+"S "S " ," *+
S 
Xc] 
 ,
 *+" " " ," *+,c ,d , ,, *+E E E ,E *+N3 N4 N ,N *+QC QD Q ,Q *+6 6 6 ,6 *+#c #d # ,# *+(3 (4 ( ,( *+(3 (4 ( ,( *+& & & ,& *+$s $t $ ,$ *+& & & ,& *+Ls Lt L ,L 3./0U3 U4 U 1U *+c d  ,U  QT @ 3   (% E(3-2F,G $53 54 5s D C   c 's ' ' '0s    %D



 
 
	
, &*555 5 	5
 5 5 5  5 c]5 sD$5r+   