Ë
    qûàgDN  ã                  óÀ  — d dl mZ d dlmZ d dlmZ ddlmZmZm	Z	 ddl
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ  G d„ d«      Z G d	„ d
e«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z  G d„ de«      Z! G d„ de«      Z" G d„ de«      Z# G d„ de«      Z$ G d„ de«      Z% ed¬«      	 	 	 	 	 	 d!d„«       Z& ed¬«      	 d"	 	 	 	 	 	 	 d#d„«       Z'y )$é    )Úannotations)Ú	lru_cache)Ú	getLoggeré   )ÚCOMMON_SAFE_ASCII_CHARACTERSÚTRACEÚUNICODE_SECONDARY_RANGE_KEYWORD)Úis_accentuatedÚ	is_arabicÚis_arabic_isolated_formÚis_case_variableÚis_cjkÚis_emoticonÚ	is_hangulÚis_hiraganaÚis_katakanaÚis_latinÚis_punctuationÚis_separatorÚ	is_symbolÚis_thaiÚis_unprintableÚremove_accentÚunicode_rangec                  ó:   — e Zd ZdZdd„Zdd„Zd	d„Zed
d„«       Zy)ÚMessDetectorPluginzy
    Base abstract class used for mess detection plugins.
    All detectors MUST extend and implement given methods.
    c                ó   — t         ‚)z@
        Determine if given character should be fed in.
        ©ÚNotImplementedError©ÚselfÚ	characters     úS/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/charset_normalizer/md.pyÚeligiblezMessDetectorPlugin.eligible&   ó
   € ô "Ð!ó    c                ó   — t         ‚)z‰
        The main routine to be executed upon character.
        Insert the logic in witch the text would be considered chaotic.
        r   r    s     r#   ÚfeedzMessDetectorPlugin.feed,   s
   € ô
 "Ð!r&   c                ó   — t         ‚)zB
        Permit to reset the plugin to the initial state.
        r   ©r!   s    r#   ÚresetzMessDetectorPlugin.reset3   r%   r&   c                ó   — t         ‚)z…
        Compute the chaos ratio based on what your feed() has seen.
        Must NOT be lower than 0.; No restriction gt 0.
        r   r*   s    r#   ÚratiozMessDetectorPlugin.ratio9   s
   € ô "Ð!r&   N©r"   ÚstrÚreturnÚbool©r"   r/   r0   ÚNone©r0   r3   ©r0   Úfloat)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   r(   r+   Úpropertyr-   © r&   r#   r   r       s*   „ ñó
"ó"ó"ð ò"ó ñ"r&   r   c                  ó>   — e Zd Zdd„Zdd„Zd	d„Zdd„Zed
d„«       Zy)Ú TooManySymbolOrPunctuationPluginc                óJ   — d| _         d| _        d| _        d | _        d| _        y )Nr   F)Ú_punctuation_countÚ_symbol_countÚ_character_countÚ_last_printable_charÚ_frenzy_symbol_in_wordr*   s    r#   Ú__init__z)TooManySymbolOrPunctuationPlugin.__init__C   s*   € Ø'(ˆÔØ"#ˆÔØ%&ˆÔà04ˆÔ!Ø,1ˆÕ#r&   c                ó"   — |j                  «       S ©N©Úisprintabler    s     r#   r$   z)TooManySymbolOrPunctuationPlugin.eligibleK   ó   € Ø×$Ñ$Ó&Ð&r&   c                ó8  — | xj                   dz  c_         || j                  k7  ro|t        vrgt        |«      r| xj                  dz  c_        || _        y |j                  «       du r-t        |«      r"t        |«      du r| xj                  dz  c_        || _        y )Nr   Fé   )	rB   rC   r   r   r@   Úisdigitr   r   rA   r    s     r#   r(   z%TooManySymbolOrPunctuationPlugin.feedN   s�   € Ø×Ò Ñ"Õð ˜×2Ñ2Ò2ØÔ!=Ñ=ä˜iÔ(Ø×'Ò'¨1Ñ,Õ'ð %.ˆÕ!ð ×!Ñ!Ó# uÑ,Ü˜iÔ(Ü 	Ó*¨eÑ3à×"Ò" aÑ'Õ"à$-ˆÕ!r&   c                ó.   — d| _         d| _        d| _        y ©Nr   )r@   rB   rA   r*   s    r#   r+   z&TooManySymbolOrPunctuationPlugin.reset`   s   € Ø"#ˆÔØ !ˆÔØˆÕr&   c                ó€   — | j                   dk(  ry| j                  | j                  z   | j                   z  }|dk\  r|S dS )Nr   ç        ç333333Ó?)rB   r@   rA   )r!   Úratio_of_punctuations     r#   r-   z&TooManySymbolOrPunctuationPlugin.ratioe   sO   € à× Ñ  AÒ%Øð ×#Ñ# d×&8Ñ&8Ñ8Ø×!Ñ!ñ'"Ðð (<¸sÒ'BÐ#ÐKÈÐKr&   Nr4   r.   r2   r5   ©	r7   r8   r9   rE   r$   r(   r+   r;   r-   r<   r&   r#   r>   r>   B   s,   „ ó2ó'ó.ó$ð
 òLó ñLr&   r>   c                  ó>   — e Zd Zdd„Zdd„Zd	d„Zdd„Zed
d„«       Zy)ÚTooManyAccentuatedPluginc                ó    — d| _         d| _        y rO   ©rB   Ú_accentuated_countr*   s    r#   rE   z!TooManyAccentuatedPlugin.__init__r   s   € Ø%&ˆÔØ'(ˆÕr&   c                ó"   — |j                  «       S rG   )Úisalphar    s     r#   r$   z!TooManyAccentuatedPlugin.eligiblev   s   € Ø× Ñ Ó"Ð"r&   c                óp   — | xj                   dz  c_         t        |«      r| xj                  dz  c_        y y ©Nr   )rB   r
   rY   r    s     r#   r(   zTooManyAccentuatedPlugin.feedy   s1   € Ø×Ò Ñ"Õä˜)Ô$Ø×#Ò# qÑ(Ö#ð %r&   c                ó    — d| _         d| _        y rO   rX   r*   s    r#   r+   zTooManyAccentuatedPlugin.reset   s   € Ø !ˆÔØ"#ˆÕr&   c                óf   — | j                   dk  ry| j                  | j                   z  }|dk\  r|S dS )Né   rQ   gffffffÖ?rX   )r!   Úratio_of_accentuations     r#   r-   zTooManyAccentuatedPlugin.ratioƒ   s=   € à× Ñ  1Ò$Øà'+×'>Ñ'>À×AVÑAVÑ'VÐØ(=ÀÒ(EÐ$ÐNÈ3ÐNr&   Nr4   r.   r2   r5   rT   r<   r&   r#   rV   rV   q   s,   „ ó)ó#ó)ó$ð òOó ñOr&   rV   c                  ó>   — e Zd Zdd„Zdd„Zd	d„Zdd„Zed
d„«       Zy)ÚUnprintablePluginc                ó    — d| _         d| _        y rO   )Ú_unprintable_countrB   r*   s    r#   rE   zUnprintablePlugin.__init__�   s   € Ø'(ˆÔØ%&ˆÕr&   c                 ó   — y©NTr<   r    s     r#   r$   zUnprintablePlugin.eligible‘   ó   € Ør&   c                ón   — t        |«      r| xj                  dz  c_        | xj                  dz  c_        y r]   )r   re   rB   r    s     r#   r(   zUnprintablePlugin.feed”   s,   € Ü˜)Ô$Ø×#Ò# qÑ(Õ#Ø×Ò Ñ"Ör&   c                ó   — d| _         y rO   )re   r*   s    r#   r+   zUnprintablePlugin.reset™   s
   € Ø"#ˆÕr&   c                óZ   — | j                   dk(  ry| j                  dz  | j                   z  S )Nr   rQ   r`   )rB   re   r*   s    r#   r-   zUnprintablePlugin.ratioœ   s/   € à× Ñ  AÒ%Øà×'Ñ'¨!Ñ+¨t×/DÑ/DÑDÐDr&   Nr4   r.   r2   r5   rT   r<   r&   r#   rc   rc   Œ   s,   „ ó'óó#ó
$ð òEó ñEr&   rc   c                  ó>   — e Zd Zdd„Zdd„Zd	d„Zdd„Zed
d„«       Zy)ÚSuspiciousDuplicateAccentPluginc                ó.   — d| _         d| _        d | _        y rO   ©Ú_successive_countrB   Ú_last_latin_characterr*   s    r#   rE   z(SuspiciousDuplicateAccentPlugin.__init__¥   s   € Ø&'ˆÔØ%&ˆÔà15ˆÕ"r&   c                ó<   — |j                  «       xr t        |«      S rG   )r[   r   r    s     r#   r$   z(SuspiciousDuplicateAccentPlugin.eligible«   s   € Ø× Ñ Ó"Ò:¤x°	Ó':Ð:r&   c                ó~  — | xj                   dz  c_         | j                  �•t        |«      rŠt        | j                  «      ru|j                  «       r/| j                  j                  «       r| xj                  dz  c_        t        |«      t        | j                  «      k(  r| xj                  dz  c_        || _        y r]   )rB   rq   r
   Úisupperrp   r   r    s     r#   r(   z$SuspiciousDuplicateAccentPlugin.feed®   s”   € Ø×Ò Ñ"Õà×&Ñ&Ð2Ü˜yÔ)Ü˜t×9Ñ9Ô:à× Ñ Ô" t×'AÑ'A×'IÑ'IÔ'KØ×&Ò&¨!Ñ+Õ&ä˜YÓ'¬=¸×9SÑ9SÓ+TÒTØ×&Ò&¨!Ñ+Õ&Ø%.ˆÕ"r&   c                ó.   — d| _         d| _        d | _        y rO   ro   r*   s    r#   r+   z%SuspiciousDuplicateAccentPlugin.reset¼   s   € Ø!"ˆÔØ !ˆÔØ%)ˆÕ"r&   c                óZ   — | j                   dk(  ry| j                  dz  | j                   z  S )Nr   rQ   rL   )rB   rp   r*   s    r#   r-   z%SuspiciousDuplicateAccentPlugin.ratioÁ   s/   € à× Ñ  AÒ%Øà×&Ñ&¨Ñ*¨d×.CÑ.CÑCÐCr&   Nr4   r.   r2   r5   rT   r<   r&   r#   rm   rm   ¤   s,   „ ó6ó;ó/ó*ð
 òDó ñDr&   rm   c                  ó>   — e Zd Zdd„Zdd„Zd	d„Zdd„Zed
d„«       Zy)ÚSuspiciousRangec                ó.   — d| _         d| _        d | _        y rO   )Ú"_suspicious_successive_range_countrB   Ú_last_printable_seenr*   s    r#   rE   zSuspiciousRange.__init__Ê   s   € Ø78ˆÔ/Ø%&ˆÔØ04ˆÕ!r&   c                ó"   — |j                  «       S rG   rH   r    s     r#   r$   zSuspiciousRange.eligibleÏ   rJ   r&   c                ó<  — | xj                   dz  c_         |j                  «       st        |«      s|t        v rd | _        y | j                  €|| _        y t        | j                  «      }t        |«      }t        ||«      r| xj                  dz  c_        || _        y r]   )rB   Úisspacer   r   r{   r   Ú is_suspiciously_successive_rangerz   )r!   r"   Úunicode_range_aÚunicode_range_bs       r#   r(   zSuspiciousRange.feedÒ   s‘   € Ø×Ò Ñ"Õð ×ÑÔÜ˜iÔ(ØÔ8Ñ8à(,ˆDÔ%Øà×$Ñ$Ð,Ø(1ˆDÔ%Øä&3°D×4MÑ4MÓ&NˆÜ&3°IÓ&>ˆä+¨O¸_ÔMØ×3Ò3°qÑ8Õ3à$-ˆÕ!r&   c                ó.   — d| _         d| _        d | _        y rO   )rB   rz   r{   r*   s    r#   r+   zSuspiciousRange.reseté   s   € Ø !ˆÔØ23ˆÔ/Ø$(ˆÕ!r&   c                ó^   — | j                   dk  ry| j                  dz  | j                   z  }|S )Né   rQ   rL   )rB   rz   )r!   Úratio_of_suspicious_range_usages     r#   r-   zSuspiciousRange.ratioî   s<   € à× Ñ  BÒ&Øð ×3Ñ3°aÑ7Ø×!Ñ!ñ2"Ð'ð /Ð.r&   Nr4   r.   r2   r5   rT   r<   r&   r#   rx   rx   É   s*   „ ó5ó
'ó.ó.)ð
 ò/ó ñ/r&   rx   c                  ó>   — e Zd Zdd„Zdd„Zd	d„Zdd„Zed
d„«       Zy)ÚSuperWeirdWordPluginc                ó�   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        y )Nr   FÚ )
Ú_word_countÚ_bad_word_countÚ_foreign_long_countÚ_is_current_word_badÚ_foreign_long_watchrB   Ú_bad_character_countÚ_bufferÚ_buffer_accent_countÚ_buffer_glyph_countr*   s    r#   rE   zSuperWeirdWordPlugin.__init__û   sQ   € Ø !ˆÔØ$%ˆÔØ()ˆÔ à*/ˆÔ!Ø).ˆÔ à%&ˆÔØ)*ˆÔ!àˆŒØ)*ˆÔ!Ø()ˆÕ r&   c                 ó   — yrg   r<   r    s     r#   r$   zSuperWeirdWordPlugin.eligible
  rh   r&   c                óî  — |j                  «       rð| xj                  |z  c_        t        |«      r| xj                  dz  c_        | j                  du r`t        |«      du st        |«      rHt        |«      du r;t        |«      du r.t        |«      du r!t        |«      du rt        |«      du rd| _        t        |«      s,t        |«      s!t        |«      st        |«      st        |«      r| xj                  dz  c_        y | j                  sy |j                  «       st        |«      st        |«      �rû| j                  �rî| xj                  dz  c_        t!        | j                  «      }| xj"                  |z  c_        |dk\  rµ| j                  |z  dk\  rd| _        n›t        | j                  d   «      rX| j                  d   j'                  «       r;t)        d„ | j                  D «       «      du r| xj*                  dz  c_        d| _        n+| j                  dk(  rd| _        | xj*                  dz  c_        |dk\  rƒ| j                  rwt-        | j                  t/        d	|«      «      D ��cg c]  \  }}|j'                  «       r|‘Œ }}}d}|rt!        |«      |z  d
k  rd}|s| xj*                  dz  c_        d| _        | j$                  rD| xj0                  dz  c_        | xj2                  t!        | j                  «      z  c_        d| _        d| _        d| _        d	| _        d	| _        y |dvr<|j5                  «       du r)t7        |«      rd| _        | xj                  |z  c_        y y y y c c}}w )Nr   FTé   g      à?éÿÿÿÿc              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wrG   )rt   )Ú.0Ú_s     r#   ú	<genexpr>z,SuperWeirdWordPlugin.feed.<locals>.<genexpr>7  s   è ø€ Ò>¨A˜AŸI™IŸKÑ>ùs   ‚é   r   rR   r‰   >   r™   ú-ú<ú=ú>ú|ú~)r[   r�   r
   r‘   rŽ   r   r   r   r   r   r   r’   r~   r   r   rŠ   ÚlenrB   r�   rt   ÚallrŒ   ÚzipÚranger‹   r�   rM   r   )r!   r"   Úbuffer_lengthÚcÚiÚcamel_case_dstÚprobable_camel_caseds          r#   r(   zSuperWeirdWordPlugin.feed  s  € Ø×ÑÔØ�LŠL˜IÑ%�LÜ˜iÔ(Ø×)Ò)¨QÑ.Õ)à×(Ñ(¨EÑ1Ü˜iÓ(¨EÑ1´^ÀIÔ5NÜ˜9Ó%¨Ñ.Ü˜iÓ(¨EÑ1Ü 	Ó*¨eÑ3Ü 	Ó*¨eÑ3Ü˜IÓ&¨%Ñ/à+/�Ô(ä�yÔ!Ü˜YÔ'Ü˜yÔ)Ü˜yÔ)Ü˜9Ô%à×(Ò(¨AÑ-Õ(ØØ�|Š|Øà×ÑÔ¤>°)Ô#<ÄÈYÕ@WØ�l‹lØ×Ò Ñ!ÕÜ!$ T§\¡\Ó!2ˆMà×!Ò! ]Ñ2Õ!à Ò!Ø×,Ñ,¨}Ñ<ÀÒCØ04�DÕ-ô # 4§<¡<°Ñ#3Ô4ØŸ™ RÑ(×0Ñ0Ô2ÜÑ>°·±Ô>Ó>À%ÑGà×,Ò,°Ñ1Õ,Ø04�DÕ-Ø×-Ñ-°Ò2Ø04�DÔ-Ø×,Ò,°Ñ1Õ,Ø Ò" t×'?Ò'?ô !$ D§L¡L´%¸¸=Ó2IÓ J÷"á˜˜1Ø—y‘y”{ò ð"�ñ "ð
 .3Ð$á!¤s¨>Ó':¸]Ñ'JÈcÒ'QØ+/Ð(á+Ø×,Ò,°Ñ1Õ,Ø04�DÔ-à×(Ò(Ø×$Ò$¨Ñ)Õ$Ø×)Ò)¬S°·±Ó->Ñ>Õ)Ø,1�Ô)à',ˆDÔ$ØˆDŒLØ()ˆDÔ%Ø'(ˆDÕ$àÐ@Ñ@Ø×!Ñ!Ó# uÑ,Ü˜)Ô$à(,ˆDÔ%Ø�LŠL˜IÑ%ŽLð %ð -ð Aùó1"s   É/M1c                ót   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        y )Nr‰   Fr   )r�   r�   rŽ   r‹   rŠ   rB   r�   rŒ   r*   s    r#   r+   zSuperWeirdWordPlugin.reset^  sA   € ØˆŒØ$)ˆÔ!Ø#(ˆÔ Ø ˆÔØˆÔØ !ˆÔØ$%ˆÔ!Ø#$ˆÕ r&   c                ór   — | j                   dk  r| j                  dk(  ry| j                  | j                  z  S )Né
   r   rQ   )rŠ   rŒ   r�   rB   r*   s    r#   r-   zSuperWeirdWordPlugin.ratioh  s7   € à×Ñ˜rÒ! d×&>Ñ&>À!Ò&CØà×(Ñ(¨4×+@Ñ+@Ñ@Ð@r&   Nr4   r.   r2   r5   rT   r<   r&   r#   r‡   r‡   ú   s.   „ ó*óóO&ób%ð òAó ñAr&   r‡   c                  óB   — e Zd ZdZdd„Zd	d„Zd
d„Zdd„Zedd„«       Z	y)ÚCjkInvalidStopPluginu²   
    GB(Chinese) based encoding often render the stop incorrectly when the content does not fit and
    can be easily detected. Searching for the overuse of 'ä¸…' and 'ä¸„'.
    c                ó    — d| _         d| _        y rO   ©Ú_wrong_stop_countÚ_cjk_character_countr*   s    r#   rE   zCjkInvalidStopPlugin.__init__v  s   € Ø&'ˆÔØ)*ˆÕ!r&   c                 ó   — yrg   r<   r    s     r#   r$   zCjkInvalidStopPlugin.eligiblez  rh   r&   c                óz   — |dv r| xj                   dz  c_         y t        |«      r| xj                  dz  c_        y y )N>   õ   ä¸„õ   ä¸…r   )r²   r   r³   r    s     r#   r(   zCjkInvalidStopPlugin.feed}  s<   € Ø˜Ñ&Ø×"Ò" aÑ'Õ"ØÜ�)ÔØ×%Ò%¨Ñ*Ö%ð r&   c                ó    — d| _         d| _        y rO   r±   r*   s    r#   r+   zCjkInvalidStopPlugin.reset„  s   € Ø!"ˆÔØ$%ˆÕ!r&   c                óT   — | j                   dk  ry| j                  | j                   z  S )Né   rQ   )r³   r²   r*   s    r#   r-   zCjkInvalidStopPlugin.ratioˆ  s*   € à×$Ñ$ rÒ)ØØ×%Ñ%¨×(AÑ(AÑAÐAr&   Nr4   r.   r2   r5   )
r7   r8   r9   r:   rE   r$   r(   r+   r;   r-   r<   r&   r#   r¯   r¯   p  s1   „ ñó
+óó+ó&ð òBó ñBr&   r¯   c                  ó>   — e Zd Zdd„Zdd„Zd	d„Zdd„Zed
d„«       Zy)ÚArchaicUpperLowerPluginc                óf   — d| _         d| _        d| _        d| _        d| _        d | _        d| _        y )NFr   T)Ú_bufÚ_character_count_since_last_sepÚ_successive_upper_lower_countÚ#_successive_upper_lower_count_finalrB   Ú_last_alpha_seenÚ_current_ascii_onlyr*   s    r#   rE   z ArchaicUpperLowerPlugin.__init__�  s9   € ØˆŒ	à45ˆÔ,à23ˆÔ*Ø89ˆÔ0à%&ˆÔà,0ˆÔØ)-ˆÕ r&   c                 ó   — yrg   r<   r    s     r#   r$   z ArchaicUpperLowerPlugin.eligible�  rh   r&   c                óZ  — |j                  «       xr t        |«      }|du }|r–| j                  dkD  r‡| j                  dk  r?|j                  «       du r-| j                  du r| xj
                  | j                  z  c_        d| _        d| _        d | _        d| _        | xj                  dz  c_	        d| _        y | j                  du r|j                  «       du rd| _        | j                  �Ž|j                  «       r| j                  j                  «       s*|j                  «       rM| j                  j                  «       r3| j                  du r| xj                  dz  c_        d| _        nd| _        nd| _        | xj                  dz  c_	        | xj                  dz  c_        || _        y )NFr   é@   r   TrL   )r[   r   r¿   rM   rÃ   rÁ   rÀ   rÂ   r¾   rB   Úisasciirt   Úislower)r!   r"   Úis_concernedÚ	chunk_seps       r#   r(   zArchaicUpperLowerPlugin.feed   s�  € Ø ×(Ñ(Ó*ÒJÔ/?À	Ó/JˆØ  EÐ)ˆ	á˜×=Ñ=ÀÒAà×4Ñ4¸Ò:Ø×%Ñ%Ó'¨5Ñ0Ø×,Ñ,°Ñ5à×8Ò8Ø×6Ñ6ñÕ8ð 23ˆDÔ.Ø34ˆDÔ0Ø$(ˆDÔ!ØˆDŒIØ×!Ò! QÑ&Õ!Ø'+ˆDÔ$àà×#Ñ# tÑ+°	×0AÑ0AÓ0CÀuÑ0LØ',ˆDÔ$à× Ñ Ð,Ø×!Ñ!Ô#¨×(=Ñ(=×(EÑ(EÔ(GØ×!Ñ!Ô#¨×(=Ñ(=×(EÑ(EÔ(Gà—9‘9 Ñ$Ø×6Ò6¸!Ñ;Õ6Ø %�D•Ià $�D•Ià!�”	à×Ò Ñ"ÕØ×,Ò,°Ñ1Õ,Ø )ˆÕr&   c                óf   — d| _         d| _        d| _        d| _        d | _        d| _        d| _        y )Nr   FT)rB   r¿   rÀ   rÁ   rÂ   r¾   rÃ   r*   s    r#   r+   zArchaicUpperLowerPlugin.resetÊ  s9   € Ø !ˆÔØ/0ˆÔ,Ø-.ˆÔ*Ø34ˆÔ0Ø $ˆÔØˆŒ	Ø#'ˆÕ r&   c                óT   — | j                   dk(  ry| j                  | j                   z  S )Nr   rQ   )rB   rÁ   r*   s    r#   r-   zArchaicUpperLowerPlugin.ratioÓ  s*   € à× Ñ  AÒ%Øà×7Ñ7¸$×:OÑ:OÑOÐOr&   Nr4   r.   r2   r5   rT   r<   r&   r#   r¼   r¼   �  s-   „ ó.óó(*óT(ð òPó ñPr&   r¼   c                  ó>   — e Zd Zdd„Zdd„Zdd„Zd	d„Zed
d„«       Zy)ÚArabicIsolatedFormPluginc                ó    — d| _         d| _        y rO   ©rB   Ú_isolated_form_countr*   s    r#   rE   z!ArabicIsolatedFormPlugin.__init__Ü  s   € Ø%&ˆÔØ)*ˆÕ!r&   c                ó    — d| _         d| _        y rO   rÐ   r*   s    r#   r+   zArabicIsolatedFormPlugin.resetà  s   € Ø !ˆÔØ$%ˆÕ!r&   c                ó   — t        |«      S rG   )r   r    s     r#   r$   z!ArabicIsolatedFormPlugin.eligibleä  s   € Ü˜Ó#Ð#r&   c                óp   — | xj                   dz  c_         t        |«      r| xj                  dz  c_        y y r]   )rB   r   rÑ   r    s     r#   r(   zArabicIsolatedFormPlugin.feedç  s1   € Ø×Ò Ñ"Õä" 9Ô-Ø×%Ò%¨Ñ*Ö%ð .r&   c                óX   — | j                   dk  ry| j                  | j                   z  }|S )Nr`   rQ   rÐ   )r!   Úisolated_form_usages     r#   r-   zArabicIsolatedFormPlugin.ratioí  s0   € à× Ñ  1Ò$Øà%)×%>Ñ%>À×AVÑAVÑ%VÐà"Ð"r&   Nr4   r.   r2   r5   )	r7   r8   r9   rE   r+   r$   r(   r;   r-   r<   r&   r#   rÎ   rÎ   Û  s*   „ ó+ó&ó$ó+ð ò#ó ñ#r&   rÎ   é   )Úmaxsizec                ó–  — | �|€y| |k(  ryd| v rd|v ryd| v sd|v ryd| v sd|v r	d| v sd|v ry| j                  d«      |j                  d«      }}|D ]  }|t        v rŒ||v sŒ y | dv |dv }}|s|r	d| v sd|v ry|r|ryd	| v sd	|v rd| v sd|v ry| d
k(  s|d
k(  ryd| v sd|v s| dv r!|dv rd| v sd|v ryd| v sd|v ry| d
k(  s|d
k(  ryy)za
    Determine if two Unicode range seen next to each other can be considered as suspicious.
    TFÚLatinÚ	EmoticonsÚ	Combiningú )ÚHiraganaÚKatakanaÚCJKÚHangulzBasic Latin)rß   rÞ   ÚPunctuationÚForms)Úsplitr	   )r€   r�   Úkeywords_range_aÚkeywords_range_bÚelÚrange_a_jp_charsÚrange_b_jp_charss          r#   r   r   ÷  s‡  € ð Ð /Ð"9Øà˜/Ò)Øà�/Ñ! g°Ñ&@Øà�oÑ%¨¸Ñ)GØð 	�?Ñ" g°Ñ&@Ø�Ñ&¨+¸Ñ*Hàð 	×Ñ˜cÓ"Ø×Ñ˜cÓ"ð 'Ðð
 ò ˆØÔ0Ñ0ØØÐ!Ò!Ùð	ð 	ð
ð	
ð
 	Ð3Ð3ð 'Ðñ 	Ñ,Ø�Ñ  E¨_Ñ$<àÙÑ,Øà�?Ñ" h°/Ñ&AØ�OÑ# u°Ñ'?ØØ˜mÒ+¨À-Ò/OØð 	�Ñ  E¨_Ñ$<ØÐ3Ñ3ØÐ7Ñ7à˜OÑ+¨}ÀÑ/OØØ�oÑ%¨°OÑ)CØØ˜mÒ+¨À-Ò/OØàr&   i   c           	     óö  — t         j                  «       D �cg c]	  } |«       ‘Œ }}t        | «      dz   }d}|dk  rd}n
|dk  rd}nd}t        | dz   t	        |«      «      D ]^  \  }}	|D ]%  }
|
j                  |«      sŒ|
j                  |«       Œ' |	d	kD  r|	|z  d	k(  s	|	|dz
  k(  sŒFt        d
„ |D «       «      }||k\  sŒ^ n |r¦t        d«      }|j                  t        d|› d|› d|› �«       t        | «      dkD  r8|j                  t        d| dd › �«       |j                  t        d| dd › �«       |D ]1  }|j                  t        |j                  › d|j                  › �«       Œ3 t        |d«      S c c}w )zw
    Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier.
    r   rQ   i   é    r×   rÆ   é€   ú
r   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrG   )r-   )r˜   Údts     r#   rš   zmess_ratio.<locals>.<genexpr>`  s   è ø€ Ò!?¨r "§(¥(Ñ!?ùs   ‚Úcharset_normalizerzIMess-detector extended-analysis start. intermediary_mean_mess_ratio_calc=z mean_mess_ratio=z maximum_threshold=rº   zStarting with: NzEnding with: iðÿÿÿz: é   )r   Ú__subclasses__r¢   r¤   r¥   r$   r(   Úsumr   Úlogr   Ú	__class__r-   Úround)Údecoded_sequenceÚmaximum_thresholdÚdebugÚmd_classÚ	detectorsÚlengthÚmean_mess_ratioÚ!intermediary_mean_mess_ratio_calcr"   ÚindexÚdetectorÚloggerrï   s                r#   Ú
mess_ratior  A  sÁ  € ô $6×#DÑ#DÓ#Fö+Ø‰�
ð+€Ið +ô Ð&Ó'¨!Ñ+€Fà €Oà�‚|Ø13Ñ)Ø	�4ŠØ,.Ñ)à,/Ð)äÐ 0°4Ñ 7¼¸v»ÓGò Ñˆ	�5Ø!ò 	)ˆHØ× Ñ  Õ+Ø—‘˜iÕ(ð	)ð
 �AŠI˜%Ð"CÑCÀqÒHØ�f˜q‘jÓ Ü!Ñ!?°YÔ!?Ó?ˆOàÐ"3Ó3Ùðñ ÜÐ/Ó0ˆà�
‰
Üð1Ø1RÐ0SÐSdÐetÐduð v!Ø!2Ð 3ð5ô	
ô ÐÓ  2Ò%Ø�J‰J”u Ð0@ÀÀ"Ð0EÐ/FÐGÔHØ�J‰J”u Ð.>¸s¸uÐ.EÐ-FÐGÔHàò 	=ˆBØ�J‰J”u §¡ ¨b°·±°
Ð;Õ<ð	=ô � !Ó$Ð$ùò[+s   —E6N)r€   ú
str | Noner�   r  r0   r1   )gš™™™™™É?F)r÷   r/   rø   r6   rù   r1   r0   r6   )(Ú
__future__r   Ú	functoolsr   Úloggingr   Úconstantr   r   r	   Úutilsr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r>   rV   rc   rm   rx   r‡   r¯   r¼   rÎ   r   r  r<   r&   r#   ú<module>r	     s;  ðÝ "å Ý ÷ñ ÷
÷ ÷ ÷ õ ÷*"ñ "ôD,LÐ'9ô ,Lô^OÐ1ô Oô6EÐ*ô Eô0"DÐ&8ô "DôJ./Ð(ô ./ôbsAÐ-ô sAôlBÐ-ô Bô>IPÐ0ô IPôX#Ð1ô #ñ8 �4ÔðFØðFØ2<ðFà	òFó ðFñR �4ÔàINð4%Øð4%Ø.3ð4%ØBFð4%à
ò4%ó ñ4%r&   