§
    ¥	Êjó�  ã                  ó¶  — U d dl mZ d dlmZ d dl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mZmZmZmZ ddlmZmZmZm Z m!Z!m"Z"m#Z# eez  ez  ez  ez  Z$de%d<    G d	„ d
¦  «        Z& ed¬¦  «        d7d„¦   «         Z'd„  e(d¦  «        D ¦   «         Z)de%d<    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*¦  «        Z0 G d#„ d$e*¦  «        Z1 G d%„ d&e*¦  «        Z2 G d'„ d(e*¦  «        Z3 G d)„ d*e*¦  «        Z4 ed¬¦  «        d8d/„¦   «         Z5	 d9d:d6„Z6dS );é    )Úannotations)Ú	lru_cache)Ú	getLoggeré   )ÚCOMMON_CJK_CHARACTERSÚCOMMON_SAFE_ASCII_CHARACTERSÚTRACEÚCompatibleFamillyRangeÚ_ACCENTUATEDÚ_ARABICÚ_ARABIC_ISOLATED_FORMÚ&_BASIC_LATIN_COMPATIBLE_RANGE_FAMILIESÚ_CJKÚ_COMPATIBLE_RANGE_FAMILIESÚ#_COMPATIBLE_WITH_ANY_RANGE_FAMILIESÚ_HANGULÚ_HALFWIDTH_KATAKANAÚ	_HIRAGANAÚ	_KATAKANAÚ_LATINÚ	_LIGATUREÚ_RANGE_FAMILIESÚ_SENTENCE_OPEN_PUNCTUATIONÚ_SUPERSCRIPTÚ_THAI)Ú_character_flagsÚis_emoticonÚis_punctuationÚis_separatorÚ	is_symbolÚremove_accentÚunicode_rangeÚintÚ_GLYPH_MASKc                  ó8  — e Zd ZU dZdZded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded <   ded!<   ded"<   d'd%„Zd&S )(ÚCharInfoz>Pre-computed character properties shared across all detectors.)Ú	characterÚ	printableÚalphaÚupperÚlowerÚspaceÚdigitÚis_asciiÚcase_variableÚflagsÚaccentuatedÚlatinÚis_cjkÚis_katakanaÚis_halfwidth_katakanaÚ	is_arabicÚis_ligatureÚis_superscriptÚis_sentence_open_punctuationÚis_glyphÚpunctÚsymÚrangeÚsepÚemoticonÚsafeÚ
common_cjkÚ
unaccentedÚstrr'   Úboolr(   r)   r*   r+   r,   r-   r.   r/   r#   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   ú
str | Noner=   r>   r?   r@   rA   rB   ÚreturnÚNonec                óª
  — || _         t          |¦  «        }|dk     �r†d| _        d| _        || _        d| _        d| _        |t          v | _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        d|cxk    rdk    rWn nTd| _        d| _        d| _        d| _        d| _        d| _        d| _        t0          | _        d| _        d| _        d| _        �n@d|cxk    rdk    rWn nTd| _        d| _        d| _        d| _        d| _        d| _        d| _        t0          | _        d| _        d| _        d| _        �nÜd|cxk    rd	k    rRn nOd| _        d| _        d| _        d| _        d| _        d| _        d| _        d
| _        d| _        d| _        d| _        �n}|dk    sd|cxk    rdk    rVn nSd| _        d| _        d| _        d| _        d| _        |dk    | _        d| _        d
| _        d| _        d| _        d| _        �n|                     ¦   «         | _        d| _        d| _        d| _        d| _        d| _        d| _        d
| _        d| _        | j        rt=          |¦  «        nd| _        | j        rt?          |¦  «        nd| _        �n‡d| _        d| _        |                     ¦   «         | _        |                      ¦   «         | _        | !                    ¦   «         | _        | "                    ¦   «         | _        | #                    ¦   «         | _        | $                    ¦   «         | _        | j        | j        k    | _        tK          |¦  «        }| j        rd| _        ntM          |¦  «        | _        || _        tO          |tP          z  ¦  «        | _        tO          |t0          z  ¦  «        | _        tO          |tR          z  ¦  «        | _	        tO          |tT          z  ¦  «        | _
        tO          |tV          z  ¦  «        | _        tO          |tX          z  ¦  «        | _        tO          |tZ          z  ¦  «        | _        tO          |t\          z  ¦  «        | _        tO          |t^          z  ¦  «        | _        tO          |t`          z  ¦  «        | _        | j        r| j        rtc          |¦  «        | _        n|| _        | j	        o|td          v | _        | j        r)t=          |¦  «        | _        t?          |¦  «        | _        nd| _        d| _        tg          |¦  «        | _4        tk          |¦  «        | _6        dS )zkCompute all properties for *character* (built once per codepoint,
        every branch assigns every slot).é€   TFéA   éZ   éa   éz   é0   é9   r   é    é	   é   N)7r'   Úordr.   r1   rB   r?   rA   r   r@   r3   r4   r5   r6   r7   r8   r9   r:   r)   r*   r+   r,   r-   r(   r/   r   r0   r2   r;   r<   Úisprintabler   r    ÚisalphaÚisupperÚislowerÚisspaceÚisdigitr   r   rD   r   r   r   r   r   r   r   r   r$   r!   r   r"   r=   r   r>   )Úselfr'   Úor0   s       úEC:\Projects\Muse2API\.venv\Lib\site-packages\charset_normalizer/md.pyÚ__init__zCharInfo.__init__k   sù  € ð #ˆŒõ �Y‘”ˆØˆsŠ7‰7Ø ˆDŒMØ$ˆDÔØ'ˆDŒOØ!ˆDŒMØ#ˆDŒOØ!Õ%AÐAˆDŒIØˆDŒKØ$ˆDÔØ).ˆDÔ&Ø"ˆDŒNØ$ˆDÔØ"'ˆDÔØ05ˆDÔ-Ø!ˆDŒMà�Qˆ}ˆ}Š}ˆ}˜"Š}ˆ}ˆ}ˆ}ˆ}à!�”
Ø!�”
Ø"�”
Ø"�”
Ø"�”
Ø!%�”Ø%)�Ô"Ý#�”
Ø!�”
Ø"�”
Ø �”‘Ø�q��’�˜C’����à!�”
Ø"�”
Ø!�”
Ø"�”
Ø"�”
Ø!%�”Ø%)�Ô"Ý#�”
Ø!�”
Ø"�”
Ø �”‘Ø�q��’�˜B’����à"�”
Ø"�”
Ø"�”
Ø"�”
Ø!�”
Ø!%�”Ø%*�Ô"Ø�”
Ø"�”
Ø"�”
Ø �”‘Ø�b’�˜Q !˜\˜\š\˜\ rš\˜\˜\˜\˜\à"�”
Ø"�”
Ø"�”
Ø!�”
Ø"�”
Ø!" b¢�”Ø%*�Ô"Ø�”
Ø"�”
Ø"�”
Ø �”‘ð "+×!6Ò!6Ñ!8Ô!8�”Ø"�”
Ø"�”
Ø"�”
Ø"�”
Ø"�”
Ø%*�Ô"Ø�”
Ø"�”
Ø:>¼.ÐS�^¨IÑ6Ô6Ð6Èe�”
Ø37´>ÐL�9 YÑ/Ô/Ð/Àu�”‘ð "ˆDŒMØˆDŒIØ&×2Ò2Ñ4Ô4ˆDŒNØ"×*Ò*Ñ,Ô,ˆDŒJØ"×*Ò*Ñ,Ô,ˆDŒJØ"×*Ò*Ñ,Ô,ˆDŒJØ"×*Ò*Ñ,Ô,ˆDŒJØ"×*Ò*Ñ,Ô,ˆDŒJØ!%¤¨t¬zÒ!9ˆDÔõ *¨)Ñ4Ô4ˆEØŒzð 7Ø %�”�å +¨IÑ 6Ô 6�”ØˆDŒJÝ# E­LÑ$8Ñ9Ô9ˆDÔÝ˜e¥f™nÑ-Ô-ˆDŒJÝ˜u¥t™|Ñ,Ô,ˆDŒKÝ# E­IÑ$5Ñ6Ô6ˆDÔÝ)-¨eÕ6IÑ.IÑ)JÔ)JˆDÔ&Ý! %­'¡/Ñ2Ô2ˆDŒNÝ# E­IÑ$5Ñ6Ô6ˆDÔÝ"& u­|Ñ';Ñ"<Ô"<ˆDÔÝ04°UÕ=WÑ5WÑ0XÔ0XˆDÔ-Ý  ­Ñ!4Ñ5Ô5ˆDŒMàŒzð ,˜dÔ.ð ,Ý"/°	Ñ":Ô":�”�à"+�”à"œkÐP¨iÕ;PÐ.PˆDŒOð Œ~ð !Ý+¨IÑ6Ô6�”
Ý$ YÑ/Ô/�”�à"�”
Ø �”å" 9Ñ-Ô-ˆŒ
Ý 	Ñ*Ô*ˆŒˆˆó    N)r'   rC   rF   rG   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__Ú__annotations__r]   © r^   r\   r&   r&   ,   sV  € € € € € € ØHÐHð€Ið> €N€N�NØ€O€O�OØ€K€K�KØ€K€K�KØ€K€K�KØ€K€K�KØ€K€K�KØ€N€N�NØÐÐÑØ€J€J�JØÐÐÑØ€K€K�KØ€L€L�LØÐÐÑØÐÐÑØ€O€O�OØÐÐÑØÐÐÑØ&Ð&Ð&Ñ&Ø€N€N�NØ€K€K�KØ€I€I�IØÐÐÑØ€I€I�IØ€N€N�NØ€J€J�JØÐÐÑØ€O€O�OðH+ð H+ð H+ð H+ð H+ð H+r^   r&   N)Úmaxsizer'   rC   rF   c                ó    — t          | ¦  «        S )zBBuild (once per codepoint) and cache the CharInfo for *character*.)r&   )r'   s    r\   Ú
_char_inforh   ø   s   € õ �IÑÔÐr^   c                óF   — g | ]}t          t          |¦  «        ¦  «        ‘ŒS re   )r&   Úchr)Ú.0Ú
_codepoints     r\   ú
<listcomp>rm   ÿ   s3   € ð $ð $ð $Ø",…H�S�‰_Œ_ÑÔð$ð $ð $r^   rI   zlist[CharInfo]Ú_ASCII_CHAR_INFOc                  ó>   — e Zd ZdZdZdd	„Zdd
„Zedd„¦   «         ZdS )ÚMessDetectorPluginzy
    Base abstract class used for mess detection plugins.
    All detectors MUST extend and implement given methods.
    re   r'   rC   Úinfor&   rF   rG   c                ó   — t           ‚)z‰
        The main routine to be executed upon character.
        Insert the logic in witch the text would be considered chaotic.
        ©ÚNotImplementedError©rZ   r'   rq   s      r\   Ú	feed_infozMessDetectorPlugin.feed_info  s
   € õ
 "Ð!r^   c                ó   — t           ‚)zB
        Permit to reset the plugin to the initial state.
        rs   ©rZ   s    r\   ÚresetzMessDetectorPlugin.reset  s
   € õ "Ð!r^   Úfloatc                ó   — t           ‚)z…
        Compute the chaos ratio based on what your feed() has seen.
        Must NOT be lower than 0.; No restriction gt 0.
        rs   rx   s    r\   ÚratiozMessDetectorPlugin.ratio  s
   € õ "Ð!r^   N©r'   rC   rq   r&   rF   rG   ©rF   rG   ©rF   rz   )	r_   r`   ra   rb   rc   rv   ry   Úpropertyr|   re   r^   r\   rp   rp     sm   € € € € € ðð ð
 €Ið"ð "ð "ð "ð"ð "ð "ð "ð ð"ð "ð "ñ „Xð"ð "ð "r^   rp   c                  óB   — e Zd ZdZdd„Zdd	„Zdd
„Zedd„¦   «         ZdS )Ú TooManySymbolOrPunctuationPlugin©Ú_punctuation_countÚ_symbol_countÚ_character_countÚ_last_printable_charrF   rG   c                ó>   — d| _         d| _        d| _        d | _        d S ©Nr   rƒ   rx   s    r\   r]   z)TooManySymbolOrPunctuationPlugin.__init__*  s(   € Ø'(ˆÔØ"#ˆÔØ%&ˆÔà04ˆÔ!Ð!Ð!r^   r'   rC   rq   r&   c                óÒ   — | xj         dz  c_         || j        k    rD|j        s=|j        r| xj        dz  c_        n%|j        s|j        r|j        s| xj        dz  c_        || _        dS )ú1Optimized feed using pre-computed character info.r   é   N)	r†   r‡   r@   r;   r„   r-   r<   r?   r…   ru   s      r\   rv   z*TooManySymbolOrPunctuationPlugin.feed_info1  sŠ   € àÐÔ Ñ"ÐÔà˜Ô1Ò1Ð1¸$¼)Ð1ØŒzð (ØÐ'Ô'¨1Ñ,Ð'Ô'Ð'Ø”Zð ( D¤Hð (°T´]ð (ØÐ"Ô" aÑ'Ð"Ô"à$-ˆÔ!Ð!Ð!r^   c                ó0   — d| _         d| _        d| _        d S r‰   )r„   r†   r…   rx   s    r\   ry   z&TooManySymbolOrPunctuationPlugin.reset=  s    € Ø"#ˆÔØ !ˆÔØˆÔÐÐr^   rz   c                ó^   — | j         dk    rdS | j        | j        z   | j         z  }|dk    r|ndS )Nr   ç        ç333333Ó?)r†   r„   r…   )rZ   Úratio_of_punctuations     r\   r|   z&TooManySymbolOrPunctuationPlugin.ratioB  sK   € àÔ  AÒ%Ð%Ø�3ð Ô# dÔ&8Ñ8ØÔ!ñ'"Ðð (<¸sÒ'BÐ'BÐ#Ð#ÈÐKr^   Nr~   r}   r   ©	r_   r`   ra   rc   r]   rv   ry   r€   r|   re   r^   r\   r‚   r‚   "  s}   € € € € € ð€Ið5ð 5ð 5ð 5ð
.ð 
.ð 
.ð 
.ðð ð ð ð
 ðLð Lð Lñ „XðLð Lð Lr^   r‚   c                  óB   — e Zd ZdZdd„Zdd	„Zdd
„Zedd„¦   «         ZdS )ÚTooManyAccentuatedPlugin©r†   Ú_accentuated_countrF   rG   c                ó"   — d| _         d| _        d S r‰   r•   rx   s    r\   r]   z!TooManyAccentuatedPlugin.__init__Q  s   € Ø%&ˆÔØ'(ˆÔÐÐr^   r'   rC   rq   r&   c                óX   — | xj         dz  c_         |j        r| xj        dz  c_        dS dS ©r‹   r   N)r†   r1   r–   ru   s      r\   rv   z"TooManyAccentuatedPlugin.feed_infoU  sE   € àÐÔ Ñ"ÐÔàÔð 	)ØÐ#Ô# qÑ(Ð#Ô#Ð#Ð#ð	)ð 	)r^   c                ó"   — d| _         d| _        d S r‰   r•   rx   s    r\   ry   zTooManyAccentuatedPlugin.reset\  s   € Ø !ˆÔØ"#ˆÔÐÐr^   rz   c                óN   — | j         dk     rdS | j        | j         z  }|dk    r|ndS )Né   r�   gffffffÖ?r•   )rZ   Úratio_of_accentuations     r\   r|   zTooManyAccentuatedPlugin.ratio`  s<   € àÔ  1Ò$Ð$Ø�3à'+Ô'>ÀÔAVÑ'VÐØ(=ÀÒ(EÐ(EÐ$Ð$È3ÐNr^   Nr~   r}   r   r’   re   r^   r\   r”   r”   N  s{   € € € € € Ø:€Ið)ð )ð )ð )ð)ð )ð )ð )ð$ð $ð $ð $ð ðOð Oð Oñ „XðOð Oð Or^   r”   c                  óB   — e Zd ZdZdd„Zdd	„Zdd
„Zedd„¦   «         ZdS )ÚUnprintablePlugin©Ú_unprintable_countr†   Ú_has_escaperF   rG   c                ó0   — d| _         d| _        d| _        d S ©Nr   Fr    rx   s    r\   r]   zUnprintablePlugin.__init__l  s    € Ø'(ˆÔØ%&ˆÔØ!&ˆÔÐÐr^   r'   rC   rq   r&   c                ó”   — |dk    rd| _         |j        s#|j        s|dk    r|dk    r| xj        dz  c_        | xj        dz  c_        dS )r‹   úTúu   ï»¿r   N)r¢   r(   r,   r¡   r†   ru   s      r\   rv   zUnprintablePlugin.feed_infoq  sq   € à˜ÒÐØ#ˆDÔð ”ð	)à”Jð	)ð ˜VÒ#Ð#Ø˜XÒ%Ð%àÐ#Ô# qÑ(Ð#Ô#ØÐÔ Ñ"ÐÔÐÐr^   c                ó"   — d| _         d| _        d S r¤   )r¡   r¢   rx   s    r\   ry   zUnprintablePlugin.reset  s   € Ø"#ˆÔØ ˆÔÐÐr^   rz   c                óR   — | j         dk    rdS | j        rdS | j        dz  | j         z  S )Nr   r�   ç      ð?rœ   )r†   r¢   r¡   rx   s    r\   r|   zUnprintablePlugin.ratioƒ  s;   € àÔ  AÒ%Ð%Ø�3àÔð 	Ø�3àÔ'¨!Ñ+¨tÔ/DÑDÐDr^   Nr~   r}   r   r’   re   r^   r\   rŸ   rŸ   i  s{   € € € € € ØI€Ið'ð 'ð 'ð 'ð
#ð #ð #ð #ð!ð !ð !ð !ð ðEð Eð Eñ „XðEð Eð Er^   rŸ   c                  óB   — e Zd ZdZdd„Zdd	„Zdd
„Zedd„¦   «         ZdS )ÚSuspiciousDuplicateAccentPlugin©Ú_successive_countr†   Ú_last_latin_characterÚ_last_was_accentuatedrF   rG   c                ó>   — d| _         d| _        d | _        d| _        d S r¤   r­   rx   s    r\   r]   z(SuspiciousDuplicateAccentPlugin.__init__–  s(   € Ø&'ˆÔØ%&ˆÔà6:ˆÔ"Ø+0ˆÔ"Ð"Ð"r^   r'   rC   rq   r&   c                ó  — | xj         dz  c_         | j        �V|j        rO| j        rH|j        r| j        j        r| xj        dz  c_        |j        | j        j        k    r| xj        dz  c_        || _        |j        | _        dS r™   )r†   r¯   r1   r°   r*   r®   rB   ru   s      r\   rv   z)SuspiciousDuplicateAccentPlugin.feed_info�  s¢   € àÐÔ Ñ"ÐÔàÔ&Ð2ØÔ ð 3àÔ*ð 3ð Œzð ,˜dÔ8Ô>ð ,ØÐ&Ô&¨!Ñ+Ð&Ô&ØŒ $Ô"<Ô"GÒGÐGØÐ&Ô&¨!Ñ+Ð&Ô&Ø%)ˆÔ"Ø%)Ô%5ˆÔ"Ð"Ð"r^   c                ó>   — d| _         d| _        d | _        d| _        d S r¤   r­   rx   s    r\   ry   z%SuspiciousDuplicateAccentPlugin.reset¬  s(   € Ø!"ˆÔØ !ˆÔØ%)ˆÔ"Ø%*ˆÔ"Ð"Ð"r^   rz   c                ó@   — | j         dk    rdS | j        dz  | j         z  S )Nr   r�   rŒ   )r†   r®   rx   s    r\   r|   z%SuspiciousDuplicateAccentPlugin.ratio²  s+   € àÔ  AÒ%Ð%Ø�3àÔ&¨Ñ*¨dÔ.CÑCÐCr^   Nr~   r}   r   r’   re   r^   r\   r¬   r¬   Ž  s}   € € € € € ð€Ið1ð 1ð 1ð 1ð6ð 6ð 6ð 6ð+ð +ð +ð +ð ðDð Dð Dñ „XðDð Dð Dr^   r¬   c                  óB   — e Zd ZdZdd„Zdd	„Zdd
„Zedd„¦   «         ZdS )ÚSuspiciousRange©Ú"_suspicious_successive_range_countr†   Ú_last_printable_seenÚ_last_printable_rangerF   rG   c                ó>   — d| _         d| _        d | _        d | _        d S r‰   r·   rx   s    r\   r]   zSuspiciousRange.__init__Â  s(   € Ø78ˆÔ/Ø%&ˆÔØ04ˆÔ!Ø15ˆÔ"Ð"Ð"r^   r'   rC   rq   r&   c                ó0  — | xj         dz  c_         |j        s|j        s|j        rd| _        d| _        dS | j        €|| _        |j        | _        dS | j        }|j        }||k    s|€ t          ||¦  «        r| xj        dz  c_        || _        || _        dS r™   )	r†   r,   r;   r@   r¹   rº   r=   Ú is_suspiciously_successive_ranger¸   )rZ   r'   rq   Úunicode_range_aÚunicode_range_bs        r\   rv   zSuspiciousRange.feed_infoÈ  sÄ   € àÐÔ Ñ"ÐÔàŒ:ð 	˜œð 	 t¤yð 	Ø(,ˆDÔ%Ø)-ˆDÔ&ØˆFàÔ$Ð,Ø(1ˆDÔ%Ø)-¬ˆDÔ&ØˆFà&*Ô&@ˆØ&*¤jˆð ˜oÒ-Ð-°Ð1HÝ/°ÀÑQÔQð =ØÐ7Ô7¸1Ñ<Ð7Ô7à$-ˆÔ!Ø%4ˆÔ"Ð"Ð"r^   c                ó>   — d| _         d| _        d | _        d | _        d S r‰   )r†   r¸   r¹   rº   rx   s    r\   ry   zSuspiciousRange.resetá  s(   € Ø !ˆÔØ23ˆÔ/Ø$(ˆÔ!Ø%)ˆÔ"Ð"Ð"r^   rz   c                óD   — | j         dk    rdS | j        dz  | j         z  }|S )NrR   r�   rŒ   )r†   r¸   )rZ   Úratio_of_suspicious_range_usages     r\   r|   zSuspiciousRange.ratioç  s8   € àÔ  BÒ&Ð&Ø�3ð Ô3°aÑ7ØÔ!ñ2"Ð'ð /Ð.r^   Nr~   r}   r   r’   re   r^   r\   r¶   r¶   º  sw   € € € € € ð€Ið6ð 6ð 6ð 6ð5ð 5ð 5ð 5ð2*ð *ð *ð *ð ð/ð /ð /ñ „Xð/ð /ð /r^   r¶   c                  óB   — e Zd ZdZdd„Zdd	„Zdd
„Zedd„¦   «         ZdS )ÚSuperWeirdWordPlugin©Ú_word_countÚ_bad_word_countÚ_foreign_long_countÚ_is_current_word_badÚ_foreign_long_watchr†   Ú_bad_character_countÚ_buffer_lengthÚ_buffer_last_charÚ_buffer_last_char_accentuatedÚ_buffer_accent_countÚ_buffer_glyph_countÚ_buffer_upper_countÚ_buffer_first_lowerÚ_buffer_has_non_asciiÚ_buffer_last_char_ligatureÚ_buffer_has_internal_ligatureÚ_is_current_word_invalidÚ_invalid_word_countrF   rG   c                ó  — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d | _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d S r¤   rÅ   rx   s    r\   r]   zSuperWeirdWordPlugin.__init__
  s    € Ø !ˆÔØ$%ˆÔØ()ˆÔ à*/ˆÔ!Ø).ˆÔ à%&ˆÔØ)*ˆÔ!à#$ˆÔØ-1ˆÔØ38ˆÔ*Ø)*ˆÔ!Ø()ˆÔ Ø()ˆÔ Ø).ˆÔ Ø+0ˆÔ"Ø05ˆÔ'Ø38ˆÔ*Ø.3ˆÔ%Ø()ˆÔ Ð Ð r^   r'   rC   rq   r&   c                ó
  — |j         rÆ| j        rd| _        |j        | _        | j        dk    r|j        | _        | xj        dz  c_        || _        |j        r| xj	        dz  c_	        |j
        sd| _        |j        | _        |j        r| xj        dz  c_        |j        r| xj        dz  c_        n| j        s|j        r|j        rd| _        dS | j        sdS |j        s|j        r| j        rd| _        d| _        |j        s|j        s|j        �r¶| xj        dz  c_        | j        }| xj        |z  c_        |dk    r¯| j        |z  dk    rd| _        n™| j        r<| j                             ¦   «         r#| j	        |k    r| xj        dz  c_        d| _        nV| j        dk    rd| _        | xj        dz  c_        n3| j        r,| j        r%| j	        |dz
  k    r| xj        dz  c_        d| _        |dk    r9| j        r2| j	        dk    o| j	        |z  dk    }|s| xj        dz  c_        d| _        | j        r'| xj        dz  c_        | xj        |z  c_        d	| _        | j        r| xj         dz  c_         d	| _        d	| _        d| _        d| _        d	| _        d| _        d| _        d| _	        d	| _        d	| _        d	| _        d	| _        dS |d
vr5|j!        s0|j"        r+d| _        | xj        dz  c_        || _        d	| _        dS dS dS dS )r‹   Tr   r   Né   g      à?é   r�   F>   Ú_ú-ú<ú=ú>ú|ú~)#r)   rÔ   rÕ   r7   rÌ   r+   rÒ   rÍ   r*   rÑ   r.   rÓ   r1   rÎ   rÏ   r:   rÐ   rÊ   r2   r9   r8   rÉ   rÖ   r,   r;   r>   rÆ   r†   rV   rÈ   rÇ   rË   r×   r-   r<   )rZ   r'   rq   Úbuffer_lengthÚprobable_camel_caseds        r\   rv   zSuperWeirdWordPlugin.feed_info"  s  € àŒ:ð 	ØÔ.ð :Ø59�Ô2Ø.2Ô.>ˆDÔ+ØÔ" aÒ'Ð'Ø+/¬:�Ô(ØÐÔ 1Ñ$ÐÔØ%.ˆDÔ"àŒzð .ØÐ(Ô(¨AÑ-Ð(Ô(Ø”=ð 2Ø-1�Ô*à15Ô1AˆDÔ.àÔð /ØÐ)Ô)¨QÑ.Ð)Ô)ØŒ}ð 0ØÐ(Ô(¨AÑ-Ð(Ô(Ð(ØÔ-ð 0°t´zð 0ÀTÔEUð 0Ø+/�Ô(ØˆFØÔ"ð 	ØˆFØÔ,ð 	1ØÔð	1Ø$(Ô$Fð	1ð )-ˆDÔ%Ø,0ˆDÔ)ØŒ:ð B	7˜œð B	7 t¤xñ B	7ØÐÔ Ñ!ÐÔØ!%Ô!4ˆMàÐ!Ô! ]Ñ2Ð!Ô!à Ò!Ð!ØÔ,¨}Ñ<ÀÒCÐCØ04�DÔ-Ð-àÔ6ð5àÔ.×6Ò6Ñ8Ô8ð5ð Ô0°MÒAÐAàÐ,Ô,°Ñ1Ð,Ô,Ø04�DÔ-Ð-ØÔ-°Ò2Ð2Ø04�DÔ-ØÐ,Ô,°Ñ1Ð,Ô,Ð,àÔ.ð	5àÔ0ð	5ð Ô0°MÀAÑ4EÒEÐEð
 Ð,Ô,°Ñ1Ð,Ô,Ø04�DÔ-Ø Ò"Ð" tÔ'?Ð"àÔ,¨qÒ0ð HØÔ0°=Ñ@ÀCÒGð %ð
 ,ð 5ØÐ,Ô,°Ñ1Ð,Ô,Ø04�DÔ-àÔ(ð 2ØÐ$Ô$¨Ñ)Ð$Ô$ØÐ)Ô)¨]Ñ:Ð)Ô)Ø,1�Ô)ØÔ,ð 6ØÐ(Ô(¨AÑ-Ð(Ô(Ø05�Ô-à',ˆDÔ$Ø"#ˆDÔØ%)ˆDÔ"Ø16ˆDÔ.Ø()ˆDÔ%Ø'(ˆDÔ$Ø'(ˆDÔ$Ø',ˆDÔ$Ø).ˆDÔ&Ø.3ˆDÔ+Ø16ˆDÔ.Ð.Ð.àÐ@Ð@Ð@Ø”Jð Aà”ð Að )-ˆDÔ%ØÐÔ 1Ñ$ÐÔØ%.ˆDÔ"Ø16ˆDÔ.Ð.Ð.ð AÐ@Ð@Ð@Ð@Ð@r^   c                ó  — d| _         d | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d S r¤   )rÌ   rÍ   rÎ   rÉ   rÊ   rÇ   rÆ   r†   rË   rÈ   rÏ   rÐ   rÑ   rÒ   rÓ   rÔ   rÕ   rÖ   r×   rx   s    r\   ry   zSuperWeirdWordPlugin.reset†  s    € ØˆÔØ!%ˆÔØ-2ˆÔ*Ø$)ˆÔ!Ø#(ˆÔ Ø ˆÔØˆÔØ !ˆÔØ$%ˆÔ!Ø#$ˆÔ Ø$%ˆÔ!Ø#$ˆÔ Ø#$ˆÔ Ø#(ˆÔ Ø%*ˆÔ"Ø*/ˆÔ'Ø-2ˆÔ*Ø(-ˆÔ%Ø#$ˆÔ Ð Ð r^   rz   c                ób   — | j         rdS | j        dk    r| j        dk    rdS | j        | j        z  S )Nrª   é
   r   r�   )r×   rÆ   rÈ   rË   r†   rx   s    r\   r|   zSuperWeirdWordPlugin.ratio›  sC   € àÔ#ð 	Ø�3àÔ˜rÒ!Ð! dÔ&>À!Ò&CÐ&CØ�3àÔ(¨4Ô+@Ñ@Ð@r^   Nr~   r}   r   r’   re   r^   r\   rÄ   rÄ   ó  s‚   € € € € € ð€Ið,*ð *ð *ð *ð0b7ð b7ð b7ð b7ðH%ð %ð %ð %ð* ðAð Að Añ „XðAð Að Ar^   rÄ   c                  óF   — e Zd ZdZdZdd„Zdd
„Zdd„Zedd„¦   «         Z	dS )ÚCjkUncommonPluginz<
    Detect messy CJK text that probably means nothing.
    ©r†   Ú_uncommon_countrF   rG   c                ó"   — d| _         d| _        d S r‰   rê   rx   s    r\   r]   zCjkUncommonPlugin.__init__­  s   € Ø%&ˆÔØ$%ˆÔÐÐr^   r'   rC   rq   r&   c                óX   — | xj         dz  c_         |j        s| xj        dz  c_        dS dS r™   )r†   rA   rë   ru   s      r\   rv   zCjkUncommonPlugin.feed_info±  sD   € àÐÔ Ñ"ÐÔàŒð 	&ØÐ Ô  AÑ%Ð Ô Ð Ð ð	&ð 	&r^   c                ó"   — d| _         d| _        d S r‰   rê   rx   s    r\   ry   zCjkUncommonPlugin.reset¸  s   € Ø !ˆÔØ ˆÔÐÐr^   rz   c                ó’   — | j         dk     rdS d| j        z  | j         z
  dt          | j         d¦  «        z  z  }t          d|¦  «        S )NrÚ   r�   rŒ   é   é   )r†   rë   Úmax)rZ   Úuncommon_form_usages     r\   r|   zCjkUncommonPlugin.ratio¼  sZ   € àÔ  1Ò$Ð$Ø�3ð �Ô$Ñ$ tÔ'<Ñ<Ø•�TÔ*¨BÑ/Ô/Ñ/ñ&1Ðõ �3Ð+Ñ,Ô,Ð,r^   Nr~   r}   r   ©
r_   r`   ra   rb   rc   r]   rv   ry   r€   r|   re   r^   r\   ré   ré   ¦  s�   € € € € € ðð ð 8€Ið&ð &ð &ð &ð&ð &ð &ð &ð!ð !ð !ð !ð ð
-ð 
-ð 
-ñ „Xð
-ð 
-ð 
-r^   ré   c                  óF   — e Zd ZdZdZdd„Zdd
„Zdd„Zedd„¦   «         Z	dS )ÚSuspiciousKatakanaPluginzDDetect implausible halfwidth Katakana and uncommon CJK combinations.©Ú_katakana_countÚ_halfwidth_katakana_countÚ
_cjk_countÚ_uncommon_cjk_countrF   rG   c                ó>   — d| _         d| _        d| _        d| _        d S r‰   r÷   rx   s    r\   r]   z!SuspiciousKatakanaPlugin.__init__Ô  s'   € Ø$%ˆÔØ./ˆÔ&Ø ˆŒØ()ˆÔ Ð Ð r^   r'   rC   rq   r&   c                ó¸   — |j         r)| xj        dz  c_        |j        r| xj        dz  c_        dS | xj        dz  c_        |j        s| xj        dz  c_        dS dS r™   )r4   rø   r5   rù   rú   rA   rû   ru   s      r\   rv   z"SuspiciousKatakanaPlugin.feed_infoÚ  sƒ   € àÔð 	ØÐ Ô  AÑ%Ð Ô ØÔ)ð 4ØÐ.Ô.°!Ñ3Ð.Ô.ØˆFàˆŒ˜1ÑˆŒØŒð 	*ØÐ$Ô$¨Ñ)Ð$Ô$Ð$Ð$ð	*ð 	*r^   c                ó>   — d| _         d| _        d| _        d| _        d S r‰   r÷   rx   s    r\   ry   zSuspiciousKatakanaPlugin.resetæ  s'   € Ø ˆÔØ)*ˆÔ&ØˆŒØ#$ˆÔ Ð Ð r^   rz   c                ót   — | j         dk    r,| j         | j        k    rd| j        cxk    r| j        k    rn ndS dS )NrÚ   é   rª   r�   )rù   rø   rú   rû   rx   s    r\   r|   zSuspiciousKatakanaPlugin.ratioì  sT   € ð Ô*¨aÒ/Ð/ØÔ.°$Ô2FÒFÐFØ�T”_Ð@Ð@Ò@Ð@¨Ô(@Ò@Ð@Ð@Ð@Ð@à�3àˆsr^   Nr~   r}   r   rô   re   r^   r\   rö   rö   Ê  s}   € € € € € ØNÐNð€Ið*ð *ð *ð *ð
*ð 
*ð 
*ð 
*ð%ð %ð %ð %ð ðð ð ñ „Xðð ð r^   rö   c                  óB   — e Zd ZdZdd„Zdd	„Zdd
„Zedd„¦   «         ZdS )ÚArchaicUpperLowerPlugin©Ú_bufÚ_character_count_since_last_sepÚ_successive_upper_lower_countÚ#_successive_upper_lower_count_finalr†   Ú_last_alpha_seen_upperÚ_last_alpha_seen_lowerÚ_current_ascii_onlyrF   rG   c                óv   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d S )NFr   Tr  rx   s    r\   r]   z ArchaicUpperLowerPlugin.__init__  sG   € ØˆŒ	à45ˆÔ,à23ˆÔ*Ø89ˆÔ0à%&ˆÔà,1ˆÔ#Ø,1ˆÔ#Ø)-ˆÔ Ð Ð r^   r'   rC   rq   r&   c                ó>  — |j         o|j        }| }|rg| j        dk    r\| j        dk    r#|j        s| j        s| xj        | j        z  c_        d| _        d| _        d| _        | xj        dz  c_        d| _        dS | j        r|j	        sd| _        | j        dk    rJ|j
        r| j        s|j        r.| j        r'| j        r| xj        dz  c_        d| _        nd| _        nd| _        | xj        dz  c_        | xj        dz  c_        |j
        | _        |j        | _        dS )r‹   r   é@   Fr   TNrŒ   )r)   r/   r  r-   r
  r  r  r  r†   r.   r*   r	  r+   r  )rZ   r'   rq   Úis_concernedÚ	chunk_seps        r\   rv   z!ArchaicUpperLowerPlugin.feed_info  su  € à!œZÐ>¨DÔ,>ˆØ*Ð*ˆ	àð 	˜Ô=ÀÒAÐAàÔ4¸Ò:Ð:Øœ
ð ;àÔ0ð ;ð Ð8Ô8ØÔ6ñÐ8Ô8ð 23ˆDÔ.Ø34ˆDÔ0ØˆDŒIØÐ!Ô! QÑ&Ð!Ô!Ø'+ˆDÔ$àˆFàÔ#ð 	-¨D¬Mð 	-Ø',ˆDÔ$àÔ/°!Ò3Ð3Ø”
ð 	"˜tÔ:ð 	"Ø”
ð	"Ø#Ô:ð	"ð ”9ð %ØÐ6Ô6¸!Ñ;Ð6Ô6Ø %�D”I�Ià $�D”I�Ià!�”	àÐÔ Ñ"ÐÔØÐ,Ô,°Ñ1Ð,Ô,Ø&*¤jˆÔ#Ø&*¤jˆÔ#Ð#Ð#r^   c                óv   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d S )Nr   FT)r†   r  r  r  r  r	  r  r
  rx   s    r\   ry   zArchaicUpperLowerPlugin.reset=  sG   € Ø !ˆÔØ/0ˆÔ,Ø-.ˆÔ*Ø34ˆÔ0Ø&+ˆÔ#Ø&+ˆÔ#ØˆŒ	Ø#'ˆÔ Ð Ð r^   rz   c                ó:   — | j         dk    rdS | j        | j         z  S )Nr   r�   )r†   r  rx   s    r\   r|   zArchaicUpperLowerPlugin.ratioG  s&   € àÔ  AÒ%Ð%Ø�3àÔ7¸$Ô:OÑOÐOr^   Nr~   r}   r   r’   re   r^   r\   r  r  ø  s~   € € € € € ð	€Ið.ð .ð .ð .ð)1ð )1ð )1ð )1ðV(ð (ð (ð (ð ðPð Pð Pñ „XðPð Pð Pr^   r  c                  óB   — e Zd ZdZdd„Zdd„Zdd
„Zedd„¦   «         ZdS )ÚArabicIsolatedFormPlugin©r†   Ú_isolated_form_countrF   rG   c                ó"   — d| _         d| _        d S r‰   r  rx   s    r\   r]   z!ArabicIsolatedFormPlugin.__init__R  s   € Ø%&ˆÔØ)*ˆÔ!Ð!Ð!r^   c                ó"   — d| _         d| _        d S r‰   r  rx   s    r\   ry   zArabicIsolatedFormPlugin.resetV  s   € Ø !ˆÔØ$%ˆÔ!Ð!Ð!r^   r'   rC   rq   r&   c                óh   — | xj         dz  c_         |j        t          z  r| xj        dz  c_        dS dS r™   )r†   r0   r   r  ru   s      r\   rv   z"ArabicIsolatedFormPlugin.feed_infoZ  sJ   € àÐÔ Ñ"ÐÔàŒ:Õ-Ñ-ð 	+ØÐ%Ô%¨Ñ*Ð%Ô%Ð%Ð%ð	+ð 	+r^   rz   c                ó>   — | j         dk     rdS | j        | j         z  }|S )Nrœ   r�   r  )rZ   Úisolated_form_usages     r\   r|   zArabicIsolatedFormPlugin.ratioa  s,   € àÔ  1Ò$Ð$Ø�3à%)Ô%>ÀÔAVÑ%VÐà"Ð"r^   Nr~   r}   r   )	r_   r`   ra   rc   r]   ry   rv   r€   r|   re   r^   r\   r  r  O  su   € € € € € Ø<€Ið+ð +ð +ð +ð&ð &ð &ð &ð+ð +ð +ð +ð ð#ð #ð #ñ „Xð#ð #ð #r^   r  r¾   rE   r¿   rD   c                óì   — | �|€dS t           |          }t           |         }||k    rdS |t          v s	|t          v rdS t          ||¦  «        t          v rdS | dk    r	|t          vS |dk    r	|t          vS dS )z_
    Determine if two Unicode ranges seen next to each other can be considered suspicious.
    NTFzBasic Latin)r   r   r
   r   r   )r¾   r¿   Ú	familly_aÚ	familly_bs       r\   r½   r½   k  s§   € ð Ð /Ð"9Øˆtå$ _Ô5€IÝ$ _Ô5€Ià�IÒÐØˆuð 	Õ8Ð8Ð8ØÕ;Ð;Ð;àˆuå˜i¨Ñ3Ô3Õ7QÐQÐQØˆuð ˜-Ò'Ð'ØÕ FÐFÐFà˜-Ò'Ð'ØÕ FÐFÐFàˆ4r^   çš™™™™™É?FÚdecoded_sequenceÚmaximum_thresholdrz   Údebugc           
     ó   — t          | ¦  «        }|dk     rd}n|dk     rd}nd}|                      ¦   «         }t          }t          }t	          ¦   «         }t          ¦   «         }	t          ¦   «         }
t          ¦   «         }t          ¦   «         }t          ¦   «         }t          ¦   «         }t          ¦   «         }t          ¦   «         }t          ¦   «         }|j        }|	j        }|
j        }|j        }|j        }|j        }|j        }|j        }|j        }|j        }t          d||¦  «        D �]X}| |||z   …         D ]ð}t!          |¦  «        }|dk     r	||         }n ||¦  «        } |||¦  «          |||¦  «         |r|j        r |||¦  «         ŒY |||¦  «         |j        r |||¦  «          |||¦  «         |j        re |||¦  «         |j        r |||¦  «         |j        r |||¦  «          |||¦  «         n|j        r |||¦  «         |j        r |||¦  «         Œñ|j        |	j        z   |
j        z   |j        z   |j        z   |j        z   |j        z   |j        z   |j        z   |j        z   } | |k    r n�ŒZ|d         }! |d|!¦  «         |s |d|!¦  «          |d|!¦  «         |j        |	j        z   |
j        z   |j        z   |j        z   |j        z   |j        z   |j        z   |j        z   |j        z   } |r¾t1          d	¦  «        }"|"                     t4          d
|› d| › d|› �¦  «         |dk    rL|"                     t4          d| dd…         › �¦  «         |"                     t4          d| dd…         › �¦  «         ||	|
|||||||f
D ],}#|"                     t4          |#j        › d|#j        › �¦  «         Œ-t9          | d¦  «        S )zw
    Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier.
    iÿ  rP   i   r  rI   r   rç   ú
Ú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   )ÚlenÚisasciirn   rh   r‚   r”   rŸ   r¬   r¶   rÄ   ré   rö   r  r  rv   r=   rS   r(   r)   r2   r3   r4   r6   r|   r   Úlogr	   Ú	__class__Úround)$r  r   r!  Úseq_lenÚstepÚis_pure_asciiÚ
ascii_infoÚ	char_infoÚd_spÚd_taÚd_upÚd_sdaÚd_srÚd_swÚd_cuÚd_skÚd_auÚd_aiÚ	d_sp_feedÚ	d_ta_feedÚ	d_up_feedÚ
d_sda_feedÚ	d_sr_feedÚ	d_sw_feedÚ	d_cu_feedÚ	d_sk_feedÚ	d_au_feedÚ	d_ai_feedÚblock_startr'   Ú	codepointrq   Úmean_mess_ratioÚnl_infoÚloggerÚdts$                                       r\   Ú
mess_ratiorI  �  s  € õ Ð'Ñ(Ô(€Gà�‚}€}ØˆˆØ	�4ŠˆØˆˆàˆð
 +×2Ò2Ñ4Ô4€Mõ
 "€JÝ€Iõ .NÑ-OÔ-O€DÝ%=Ñ%?Ô%?€DÝ/Ñ1Ô1€DÝ-LÑ-NÔ-N€EÝ+Ñ-Ô-€DÝ!5Ñ!7Ô!7€DÝ/Ñ1Ô1€DÝ%=Ñ%?Ô%?€DÝ$;Ñ$=Ô$=€DÝ%=Ñ%?Ô%?€Dð ”€IØ”€IØ”€IØ”€JØ”€IØ”€IØ”€IØ”€IØ”€IØ”€Iå˜Q ¨Ñ.Ô.ð N
ñ N
ˆØ)¨+¸ÀdÑ8JÐ*JÔKð )	/ð )	/ˆIõ ! ™^œ^ˆIØ˜3ŠˆØ! )Ô,��à �y Ñ+Ô+�ð ˆI�i Ñ&Ô&Ð&ØˆI�i Ñ&Ô&Ð&àð à”>ð /Ø�I˜i¨Ñ.Ô.Ð.ØàˆI�i Ñ&Ô&Ð&ð Œ~ð +Ø�	˜) TÑ*Ô*Ð*Ø�	˜) TÑ*Ô*Ð*ð Œzð /Ø�	˜) TÑ*Ô*Ð*à”:ð 0Ø�J˜y¨$Ñ/Ô/Ð/à”;ð /Ø�I˜i¨Ñ.Ô.Ð.Ø�I˜i¨Ñ.Ô.Ð.Ð.ØÔ%ð /Ø�I˜i¨Ñ.Ô.Ð.à”>ð /Ø�I˜i¨Ñ.Ô.Ð.øð ŒJØŒjñàŒjñð Œkñð Œjñ	ð
 Œjñð Œjñð Œjñð Œjñð Œjñ	ð 	ð Ð/Ò/Ð/ØˆEñ 0ð ˜R”.ˆØˆ	�$˜Ñ Ô Ð Øð 	%ØˆI�d˜GÑ$Ô$Ð$Øˆ	�$˜Ñ Ô Ð ð ŒJØŒjñàŒjñð Œkñð Œjñ	ð
 Œjñð Œjñð Œjñð Œjñð Œjñ	ð 	ð ð =ÝÐ/Ñ0Ô0ˆà�
Š
Ýð5Ø15ð5ð 5ØHWð5ð 5à!2ð5ð 5ñ	
ô 	
ð 	
ð �RŠ<ˆ<Ø�JŠJ•uÐGÐ0@ÀÀ"ÀÔ0EÐGÐGÑHÔHÐHØ�JŠJ•uÐGÐ.>¸s¸u¸uÔ.EÐGÐGÑHÔHÐHà˜˜t U¨D°$¸¸dÀDÈ$ÐOð 	=ð 	=ˆBØ�JŠJ•u ¤Ð;Ð;°´Ð;Ð;Ñ<Ô<Ð<Ð<å� !Ñ$Ô$Ð$r^   )r'   rC   rF   r&   )r¾   rE   r¿   rE   rF   rD   )r  F)r  rC   r   rz   r!  rD   rF   rz   )7Ú
__future__r   Ú	functoolsr   Úloggingr   Úconstantr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úutilsr   r   r   r   r    r!   r"   r$   rd   r&   rh   r=   rn   rp   r‚   r”   rŸ   r¬   r¶   rÄ   ré   rö   r  r  r½   rI  re   r^   r\   ú<module>rO     s¼  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð.ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ˜'‘> IÑ-°	Ñ9¸EÑA€Ð AÐ AÐ AÑ AðG+ð G+ð G+ð G+ð G+ñ G+ô G+ð G+ðX €�4ÐÑÔðð ð ñ Ôðð$ð $Ø05°°c±
´
ð$ñ $ô $Ð ð ð ð ñ ð
"ð "ð "ð "ð "ñ "ô "ð "ð<)Lð )Lð )Lð )Lð )LÐ'9ñ )Lô )Lð )LðXOð Oð Oð Oð OÐ1ñ Oô Oð Oð6"Eð "Eð "Eð "Eð "EÐ*ñ "Eô "Eð "EðJ)Dð )Dð )Dð )Dð )DÐ&8ñ )Dô )Dð )DðX6/ð 6/ð 6/ð 6/ð 6/Ð(ñ 6/ô 6/ð 6/ðrpAð pAð pAð pAð pAÐ-ñ pAô pAð pAðf!-ð !-ð !-ð !-ð !-Ð*ñ !-ô !-ð !-ðH+ð +ð +ð +ð +Ð1ñ +ô +ð +ð\TPð TPð TPð TPð TPÐ0ñ TPô TPð TPðn#ð #ð #ð #ð #Ð1ñ #ô #ð #ð8 €�4ÐÑÔð ð  ð  ñ Ôð ðH JOðZ%ð Z%ð Z%ð Z%ð Z%ð Z%ð Z%r^   