ó
    ÷Þ j*7  ã                  óê  • % 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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J r J!r!J"r"J#r#J$r$J%r%  S.S	 jr&S/S
 jr'S0S jr(\)" S \RT                  " 5        5       5      r+S\,S'   \+ V s/ sH  o S    PM	     sn r-S\,S'   S1S jr.S/S jr/S/S jr0S/S jr1S/S jr2S/S jr3S/S jr4S/S jr5S/S jr6S/S jr7S/S jr8S/S jr9S/S jr:S/S jr;S/S jr<S2S  jr=S/S! jr> S3     S4S" jjr?\
" SS#9S5S$ j5       r@S6S% jrAS7S& jrBS8S9S' jjrCS:S( jrDS;S) jrES*\RŒ                  S+4       S<S, jjrG  S=                     S>S- jjrHgs  sn f )?é    )ÚannotationsN)Úbisect_right)ÚIncrementalDecoder)Ú	lru_cache)Ú	Generatoré   )ÚENCODING_MARKSÚIANA_SUPPORTED_SIMILARÚRE_POSSIBLE_ENCODING_INDICATIONÚUNICODE_RANGES_COMBINEDÚ_SECONDARY_RANGE_NAMESÚCOMMON_CJK_CHARACTERSÚ_LATINÚ_CJKÚ_HANGULÚ	_KATAKANAÚ	_HIRAGANAÚ_HALFWIDTH_KATAKANAÚ_THAIÚ_ARABICÚ_ARABIC_ISOLATED_FORMÚ	_LIGATUREÚ_SUPERSCRIPTÚ_SENTENCE_OPEN_PUNCTUATIONÚ_ACCENT_KEYWORDSÚ_ACCENTUATEDÚ_KNOWN_MB_DECODERSÚ_KNOWN_MB_CLASSESÚ_IANA_NAMESÚ_MULTIBYTE_SEARCH_RADIUSc                ó(  •  [         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S
U;   a	  U[        -  nSU;   d  UR                  S5      (       a	  U[        -  nSU;   a	  U[        -  nUS;   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Ú	HALFWIDTHÚHIRAGANAÚTHAIÚARABICzISOLATED FORMÚLIGATUREz	LETTER AEÚSUPERSCRIPT>   úINVERTED QUESTION MARKúINVERTED EXCLAMATION MARK)ÚunicodedataÚnameÚ
ValueErrorr   r   r   r   r   r   r   r   r   Úendswithr   r   r   r   r   )Ú	characterÚdescÚflagsÚkws       ÚR/var/www/html/gaurav/venv/lib/python3.13/site-packages/charset_normalizer/utils.pyÚ_character_flagsr7   '   s?  € ðÜ×$Ò$ YÓ/ˆð €Eà�$ƒØ”‰ˆØ�ƒ}Ø”‰ˆØ�4ÓØ”ÑˆØ�TÓØ”ÑˆØ˜$ÓØÔ(Ñ(ˆEØ�TÓØ”ÑˆØ�ƒ~Ø”‰ˆØ�4ÓØ”ÑˆØ˜dÓ"ØÔ*Ñ*ˆEØ�TÓ˜TŸ]™]¨;×7Ñ7Ø”ÑˆØ˜ÓØ”ÑˆØÐFÓFØÔ+Ñ+ˆçˆØ�:Ø”\Ñ!ˆEØà€Lñ ð
 €LøôG ó Ùðús   ‚D Ä
DÄDc                ó8   • [        [        U 5      [        -  5      $ ©N)Úboolr7   r   ©r2   s    r6   Úis_accentuatedr<   Q   s   € ÜÔ  Ó+¬lÑ:Ó;Ð;ó    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)r2   Ú
decomposedÚcodess      r6   Úremove_accentrG   U   sA   € Ü!×/Ò/°	Ó:€JÞØÐà!×'Ñ'¨Ó,€EäŒs�5˜‘8˜RÓ Ó!Ð!r=   c              #  óV   #   • U H   u  pUR                   UR                  U4v •  M"     g 7fr9   )ÚstartÚstop)Ú.0r/   Ú	ord_ranges      r6   Ú	<genexpr>rM   a   s(   é € ð <á:‰ˆð ‡_�_�i—n‘n dÕ+Ú:ùs   ‚')zlist[tuple[int, int, str]]Ú_UNICODE_RANGES_SORTEDz	list[int]Ú_UNICODE_RANGE_STARTSc                óŽ   • [        U 5      nUS:  a  gUS:  a  g[        [        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.
é    zControl characteré€   zBasic Latinr   r   N)Úordr   rO   rN   )r2   Úcharacter_ordÚidxrI   rJ   r/   s         r6   Úunicode_rangerV   h   s[   € ô ˜Y›€Mà�rÓØ"Ø�sÓØô Ô,¨mÓ
<¸qÑ
@€CØ
ˆaƒxÜ2°3Ñ7Ñˆ�TØÓØˆKàr=   c                ó8   • [        [        U 5      [        -  5      $ r9   )r:   r7   r   r;   s    r6   Úis_latinrX   }   s   € ÜÔ  Ó+¬fÑ4Ó5Ð5r=   c                ód   • [         R                  " U 5      nSU;   a  g[        U 5      nUc  gSU;   $ )NÚPTFÚPunctuation©r.   ÚcategoryrV   ©r2   Úcharacter_categoryÚcharacter_ranges      r6   Úis_punctuationra   �   s=   € Ü)×2Ò2°9Ó=Ðà
Ð Ó Øä"/°	Ó":€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      r6   Ú	is_symbolrg   �   sP   € Ü)×2Ò2°9Ó=Ðà
Ð Ó  CÐ+=Ó$=Øä"/°	Ó":€OàÑØà�oÑ%×DÐ*<ÀÑ*DÐDr=   c                óB   • [        U 5      nUc  gSU;   =(       d    SU;   $ )NFÚ	EmoticonsÚPictographs)rV   )r2   r`   s     r6   Úis_emoticonrk   �   s*   € Ü"/°	Ó":€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]   )r2   r_   s     r6   Úis_separatorrv   ¦   sE   € Ø×Ñ×Ñ˜iÐ+AÓAØä)×2Ò2°9Ó=ÐàÐ$Ñ$×PÐ(:Ð>PÑ(PÐPr=   c                óD   • U R                  5       U R                  5       :g  $ r9   )ÚislowerÚisupperr;   s    r6   Úis_case_variablerz   ¯   s   € Ø×ÑÓ )×"3Ñ"3Ó"5Ñ5Ð5r=   c                ó8   • [        [        U 5      [        -  5      $ r9   )r:   r7   r   r;   s    r6   Úis_cjkr|   ³   s   € ÜÔ  Ó+¬dÑ2Ó3Ð3r=   c                ó8   • [        [        U 5      [        -  5      $ r9   )r:   r7   r   r;   s    r6   Úis_hiraganar~   ·   ó   € ÜÔ  Ó+¬iÑ7Ó8Ð8r=   c                ó8   • [        [        U 5      [        -  5      $ r9   )r:   r7   r   r;   s    r6   Úis_katakanar�   »   r   r=   c                ó8   • [        [        U 5      [        -  5      $ r9   )r:   r7   r   r;   s    r6   Ú	is_hangulrƒ   ¿   ó   € ÜÔ  Ó+¬gÑ5Ó6Ð6r=   c                ó8   • [        [        U 5      [        -  5      $ r9   )r:   r7   r   r;   s    r6   Úis_thair†   Ã   s   € ÜÔ  Ó+¬eÑ3Ó4Ð4r=   c                ó8   • [        [        U 5      [        -  5      $ r9   )r:   r7   r   r;   s    r6   Ú	is_arabicrˆ   Ç   r„   r=   c                ó8   • [        [        U 5      [        -  5      $ r9   )r:   r7   r   r;   s    r6   Úis_arabic_isolated_formrŠ   Ë   s   € ÜÔ  Ó+Ô.CÑCÓDÐDr=   c                ó   • U [         ;  $ r9   )r   r;   s    r6   Úis_cjk_uncommonrŒ   Ï   s   € ØÔ1Ñ1Ð1r=   c                ó   • U [         ;   $ r9   )r   )Ú
range_names    r6   Úis_unicode_range_secondaryr�   Ó   s   € ØÔ/Ñ/Ð/r=   c                ó”   • U R                  5       (       + =(       a-    U R                  5       (       + =(       a    U S:g  =(       a    U S:g  $ )NÚu   ï»¿)ru   Úisprintabler;   s    r6   Úis_unprintabler“   ×   sF   € à×ÑÓÔ÷ 	"Ø×%Ñ%Ó'Ô'÷	"à˜Ñ÷	"ð ˜Ñ!ð	r=   c                ó¤  • [        U [        [        45      (       d  [        e[	        U 5      nU S[        X!5       nUR                  5       nSU;  a  SU;  a  gUR                  SSS9n[        R                  " U5       HO  nUR                  S5      R                  5       R                  SS	5      n[        R                  " U5      nUc  MM  Us  $    g)
zO
Extract using ASCII-only decoder any specified encoding in the first n-bytes.
Ns   codings   charsetÚasciiÚignore©Úerrorsr   Ú-Ú_)Ú
isinstanceÚbytesÚ	bytearrayÚ	TypeErrorÚlenÚminÚlowerÚdecoder   ÚfinditerÚgroupÚreplacer   Úget)	ÚsequenceÚsearch_zoneÚseq_lenÚsearch_bytesÚlowered_bytesÚdecoded_zoneÚmatchÚspecified_encodingÚencoding_ianas	            r6   Úany_specified_encodingr°   á   sÇ   € ô �h¤¬	Ð 2×3Ñ3Üˆä�x“=€Gð Ð7œc 'Ó7Ð8€LØ ×&Ñ&Ó(€MØ˜Ó%¨*¸MÓ*IØà$×+Ñ+¨G¸HÐ+ÐE€Lä0×9Ò9¸,ÖGˆØ"Ÿ[™[¨›^×1Ñ1Ó3×;Ñ;¸CÀÓEÐÜ#ŸšÐ(:Ó;ˆØÓ$Ø Ò ñ	 Hð r=   )Úmaxsizec                ó¸   • U [         ;   a  g[         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
TF)r   r   Ú	importlibÚimport_moduleÚgetcodecÚImportErrorÚAttributeErrorÚLookupError)r/   Úproviders     r6   Úis_multi_byte_encodingrº   ý   s_   € ð
 Ô!Ó!Ø÷ &ˆð	Ü×#Ò# HÓ-×6Ñ6°tÔ<ñ ñ &ð øô	 œ^¬[Ð9ó 	Úð	ús   –%A Á 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.
)Nr=   )r	   r›   rœ   Ú
startswith)r§   Úiana_encodingÚmarksÚmarks       r6   Úidentify_sig_or_bomrÀ     sU   € ÷
 (ˆÜ%3°MÑ%Bˆä�eœU×#Ñ#Ø�GˆEãˆDØ×"Ñ" 4×(Ó(Ø$Ð*Ô*ó ñ (ð r=   c                ó   • U S;  $ )N>   Úutf_16Úutf_32© )r½   s    r6   Úshould_strip_sig_or_bomrÅ   (  s   € ØÐ 4Ñ4Ð4r=   c                ó¨   • U R                  5       R                  SS5      n [        R                  " U 5      nUb  U$ 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¦   r0   )Úcp_nameÚstrictr¯   s      r6   Ú	iana_namerÊ   ,  sQ   € à�m‰m‹o×%Ñ% c¨3Ó/€Gä—O’O GÓ,€MØÑ ØÐæÜÐ8¸¸	ÀÐCÓDÐDà€Nr=   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	            r6   Úcp_similarityr×   :  sº   € Ü˜k×*Ñ*Ô.DÀ[×.QÑ.QØä×'Ò'¨*°[°MÐ(BÓC×VÑV€IÜ×'Ò'¨*°[°MÐ(BÓC×VÑV€Iá(°Ñ9€DÙ(°Ñ9€Dà!"Ðä�3ŽZˆÜ$ a S›zˆØ�;‰;�}Ó%¨¯©°]Ó)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     r6   Úis_cp_similarrÙ   N  s%   € ð 	Ô-Ñ-÷ 	?ØÔ1°+Ñ>Ñ>ðr=   Ú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 r9   )ÚloggingÚ	getLoggerÚsetLevelÚStreamHandlerÚsetFormatterÚ	FormatterÚ
addHandler)r/   ÚlevelÚformat_stringÚloggerÚhandlers        r6   Úset_logging_handlerrç   Y  sU   € ô
 ×Ò˜tÓ$€FØ
‡O�O�EÔä×#Ò#Ó%€GØ×Ñœ×*Ò*¨=Ó9Ô:Ø
×Ñ�gÕr=   c
              #  ó  #   • U(       aP  UR                  S5      (       a:  [        U5      n
[        U 5      nU H  nXÊ-  U-  nX�XÓ-    nU(       d    g Uv •  M     g U(       a$  U(       d  U H  nXŒXÃ-    nU(       d    g Uv •  M     g U	(       a>  U(       d  U OU [        U5      S  nU H   nXüXÃ-    nU(       d    g [        UU5      v •  M"     g U GH-  nXÃ-   nU[        U 5      S-   :”  a  M  XXÃ-    nU(       a  U(       d  UU-   nUR                  UU(       a  SOSS9nU(       aÔ  US:”  aÎ  [	        US5      nUS U nSnU(       aW  [        U5      n
XÊ-  [        U 5      -  n[        SU[        -
  5      n[	        U
U[        -   5      nUR                  UUU5      S:¬  nU(       aV  U(       dO  UU;  aI  [        XÌS	-
  S
5       H6  nU UU nU(       a  U(       d  UU-   nUR                  USS9nUS U U;   d  M6    O   Uv •  GM0     g 7f)NÚiso2022_é   r–   rÉ   r—   r   r@   Fé   éÿÿÿÿ)	r¼   rŸ   Ústrr¢   r    Úmaxr    ÚfindrÍ   )Ú	sequencesr¯   ÚoffsetsÚ
chunk_sizeÚbom_or_sig_availableÚstrip_sig_or_bomÚsig_payloadÚis_multi_byte_decoderÚdecoded_payloadÚdeferred_decodingÚdecoded_lengthÚsequence_lengthrÕ   Údecoded_offsetÚchunkÚ
base_bytesÚcut_sequenceÚ	chunk_endÚchunk_partial_size_chkÚchunk_prefixÚfound_nearbyÚexpected_offsetÚsearch_startÚ
search_endÚjs                            r6   Úcut_sequence_chunksr  f  s5  é € ö ˜=×3Ñ3°J×?Ñ?Ü˜_Ó-ˆÜ˜i›.ˆÛˆAØÑ/°?ÑBˆNØ#°^Ñ5PÐQˆEÞÙØŒKò ö 
Ö!6ÛˆAØ#¨©Ð7ˆEÞÙØŒKò	 ö
 
ö .‰I°9¼SÀÓ=MÐ=OÐ3Pð 	ó ˆAØ%¨!©.Ð9ˆLÞÙÜ�l MÓ2Ô2ò	 ô ˆAØ™ˆIØœ3˜y›>¨AÑ-Ó-Ùà$¨©Ð8ˆLæ#Ö,<Ø*¨\Ñ9�à ×'Ñ'ØÞ#8‘x¸hð (ð ˆEö %¨¨Q«Ü.1°*¸bÓ.AÐ&Ø$Ð%<Ð&<Ð=�Ø$�æ"Ü%(¨Ó%9�NØ&'Ñ&8¼CÀ	»NÑ&J�OÜ#& q¨/Ô<TÑ*TÓ#U�LÜ!$Ø&¨Ô:RÑ(Ró"�Jð (×,Ñ,¨\¸<ÈÓTØñð !ö $Þ(Ø$¨OÓ;ä" 1¨!¡e¨RÖ0˜Ø'0°°9Ð'=˜æ/Ö8HØ+6¸Ñ+E˜Là ,× 3Ñ 3°MÈ(Ð 3Ð S˜à Ð!8Ð"8Ð9¸_ÕLÙ!ñ 1ð �Kòe ùs   ‚G+G?Ç1G?)r2   rí   ÚreturnrD   )r2   rí   r  r:   )r2   rí   r  rí   )r2   rí   r  ú
str | None)rŽ   rí   r  r:   )i    )r§   úbytes | bytearrayr¨   rD   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ã   rD   rä   rí   r  ÚNone)NF)rð   r
  r¯   rí   rñ   rÍ   rò   rD   ró   r:   rô   r:   rõ   rœ   rö   r:   r÷   r	  rø   r:   r  zGenerator[str, None, None])IÚ
__future__r   r³   rÜ   r.   Úbisectr   Úcodecsr   Ú	functoolsr   Útypingr   Úconstantr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r7   r<   rG   ÚsortedÚitemsrN   Ú__annotations__rO   rV   rX   ra   rg   rk   rv   rz   r|   r~   r�   rƒ   r†   rˆ   rŠ   rŒ   r�   r“   r°   rº   rÀ   rÅ   rÊ   r×   rÙ   ÚINFOrç   r  )Úes   0r6   Ú<module>r     s  ðÞ "ã Û Û Ý Ý %Ý Ý ÷÷ ÷ ÷ ÷ ÷ ó ô8'ôT<ô"ñ 6<ñ <à2×8Ò8Ô:ó<ó 6Ð Ð2ó ñ 3IÓ#IÑ2H¨Q a¤DÑ2HÑ#IÐ �yÓ Iôô*6ô,ôEôNôQô6ô4ô9ô9ô7ô5ô7ôEô2ô0ôð 59ðØðØ.1ðàõñ8 �4Ñóó ðô0ô$5öô'ô(ð %Ø—‘ØDð
Ø
ð
àð
ð ð
ð 
õ	
ð, #'Ø#ð^Ø ð^àð^ð ð^ð ð	^ð
 ð^ð ð^ð ð^ð  ð^ð  ð^ð ð^ð  ö^ùòC $Js   ÂE0