Ë
    òT•j V  ã                   ó²  — d Z ddlZddlZddlmZ dgZ ej                  d«      Z ej                  d«      Z ej                  d«      Z	 ej                  d«      Z
 ej                  d	«      Z ej                  d
«      Z ej                  d«      Z ej                  d«      Z ej                  d«      Z ej                  d«      Z ej                  dej"                  «      Z ej                  dej"                  «      Z ej                  dej"                  «      Z ej                  d«      Z ej                  d«      Z G d„ dej.                  «      Zy)zA parser for HTML and XHTML.é    N)ÚunescapeÚ
HTMLParserz[&<]z
&[a-zA-Z#]z%&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]z)&#(?:[0-9]+|[xX][0-9a-fA-F]+)[^0-9a-fA-F]z	<[a-zA-Z]z
</[a-zA-Z]ú>z--!?>z-?>z0([a-zA-Z][^\t\n\r\f />]*)(?:[\t\n\r\f ]|/(?!>))*a{  
  (
    (?<=['"\t\n\r\f /])[^\t\n\r\f />][^\t\n\r\f /=>]*  # attribute name
   )
  ([\t\n\r\f ]*=[\t\n\r\f ]*        # value indicator
    ('[^']*'                        # LITA-enclosed value
    |"[^"]*"                        # LIT-enclosed value
    |(?!['"])[^>\t\n\r\f ]*         # bare value
    )
   )?
  (?:[\t\n\r\f ]|/(?!>))*           # possibly followed by a space
a  
  [a-zA-Z][^\t\n\r\f />]*           # tag name
  [\t\n\r\f /]*                     # optional whitespace before attribute name
  (?:(?<=['"\t\n\r\f /])[^\t\n\r\f />][^\t\n\r\f /=>]*  # attribute name
    (?:[\t\n\r\f ]*=[\t\n\r\f ]*    # value indicator
      (?:'[^']*'                    # LITA-enclosed value
        |"[^"]*"                    # LIT-enclosed value
        |(?!['"])[^>\t\n\r\f ]*     # bare value
       )
     )?
    [\t\n\r\f /]*                   # possibly followed by a space
   )*
   >?
aF  
  <[a-zA-Z][^\t\n\r\f />\x00]*       # tag name
  (?:[\s/]*                          # optional whitespace before attribute name
    (?:(?<=['"\s/])[^\s/>][^\s/=>]*  # attribute name
      (?:\s*=+\s*                    # value indicator
        (?:'[^']*'                   # LITA-enclosed value
          |"[^"]*"                   # LIT-enclosed value
          |(?!['"])[^>\s]*           # bare value
         )
        \s*                          # possibly followed by a space
       )?(?:\s|/(?!>))*
     )*
   )?
  \s*                                # trailing whitespace
z#</\s*([a-zA-Z][-.a-zA-Z0-9:_]*)\s*>c                   óÜ   ‡ — e Zd ZdZdZdZdddœˆ fd„
Zˆ fd„Zd	„ Zd
„ Z	dZ
d„ Zddœd„Zd„ Zd#d„Zd„ Zd„ Zd#d„Zd$d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd „ Zd!„ Zd"„ Z ˆ xZ!S )%r   aE  Find tags and other markup and call handler functions.

    Usage:
        p = HTMLParser()
        p.feed(data)
        ...
        p.close()

    Start tags are handled by calling self.handle_starttag() or
    self.handle_startendtag(); end tags by self.handle_endtag().  The
    data between tags is passed from the parser to the derived class
    by calling self.handle_data() with the data as argument (the data
    may be split up in arbitrary chunks).  If convert_charrefs is
    True the character references are converted automatically to the
    corresponding Unicode character (and self.handle_data() is no
    longer split in chunks), otherwise they are passed by calling
    self.handle_entityref() or self.handle_charref() with the string
    containing respectively the named or numeric reference as the
    argument.
    )ÚscriptÚstyleÚxmpÚiframeÚnoembedÚnoframes)ÚtextareaÚtitleTF)Úconvert_charrefsÚ	scriptingc                ó^   •— t         ‰| �  «        || _        || _        | j	                  «        y)az  Initialize and reset this instance.

        If convert_charrefs is true (the default), all character references
        are automatically converted to the corresponding Unicode characters.

        If *scripting* is false (the default), the content of the
        ``noscript`` element is parsed normally; if it's true,
        it's returned as is without being parsed.
        N)ÚsuperÚ__init__r   r   Úreset)Úselfr   r   Ú	__class__s      €ú"/usr/lib/python3.12/html/parser.pyr   zHTMLParser.__init__v   s(   ø€ ô 	‰ÑÔØ 0ˆÔØ"ˆŒØ�
‰
�ó    c                 ó¨   •— d| _         d| _        t        | _        d| _        d| _        d| _        g | _        d| _        d| _	        t        ‰| �-  «        y)z1Reset this instance.  Loses all unprocessed data.Ú z???NTr   é   )ÚrawdataÚlasttagÚinteresting_normalÚinterestingÚ
cdata_elemÚ_support_cdataÚ
_escapableÚ_pendingÚ_pending_lenÚ_parse_thresholdr   r   )r   r   s    €r   r   zHTMLParser.reset…   sO   ø€ àˆŒØˆŒÜ-ˆÔØˆŒØ"ˆÔØˆŒØˆŒØˆÔØ !ˆÔÜ‰‰�r   c                 ó‚  — | xj                   t        |«      z  c_         | j                   | j                  k  r| j                  j	                  |«       y| j                  s| xj
                  |z  c_        nc| j                  j	                  |«       | xj
                  dj                  | j                  «      z  c_        | j                  j                  «        d| _         t        | j
                  «      }| j                  d«       t        | j
                  «      |k  rd| _        yt        | j
                  «      | _        y)z‘Feed data to the parser.

        Call this as often as you want, with as little or as much text
        as you want (may include '\n').
        r   r   r   N)	r$   Úlenr%   r#   Úappendr   ÚjoinÚclearÚgoahead)r   ÚdataÚns      r   ÚfeedzHTMLParser.feed’   sÞ   € ð 	×ÒœS ›YÑ&ÕØ×Ñ˜t×4Ñ4Ò4Ø�M‰M× Ñ  Õ&à—=’=Ø—’ Ñ$–à—‘×$Ñ$ TÔ*Ø—’ §¡¨¯©Ó 6Ñ6•Ø—‘×#Ñ#Ô%Ø !ˆDÔÜ�D—L‘LÓ!ˆAØ�L‰L˜ŒOÜ�4—<‘<Ó  1Ò$à()�Õ%ô ),¨D¯L©LÓ(9�Õ%r   c                 óÜ   — | j                   rO| xj                  dj                  | j                   «      z  c_        | j                   j                  «        d| _        | j                  d«       y)zHandle any buffered data.r   r   r   N)r#   r   r)   r*   r$   r+   ©r   s    r   ÚclosezHTMLParser.close°   sG   € à�=Š=Ø�LŠL˜BŸG™G D§M¡MÓ2Ñ2�LØ�M‰M×ÑÔ!Ø !ˆDÔØ�‰�Q�r   Nc                 ó   — | j                   S )z)Return full source of start tag: '<...>'.)Ú_HTMLParser__starttag_textr0   s    r   Úget_starttag_textzHTMLParser.get_starttag_textº   s   € à×#Ñ#Ð#r   ©Ú	escapablec                óÊ  — |j                  «       | _        || _        | j                  dk(  rt        j                  d«      | _        y |rT| j                  sHt        j                  d| j                  z  t        j                  t        j                  z  «      | _        y t        j                  d| j                  z  t        j                  t        j                  z  «      | _        y )NÚ	plaintextz\Zz&|</%s(?=[\t\n\r\f />])z</%s(?=[\t\n\r\f />]))	Úlowerr    r"   ÚreÚcompiler   r   Ú
IGNORECASEÚASCII)r   Úelemr6   s      r   Úset_cdata_modezHTMLParser.set_cdata_mode¾   sœ   € ØŸ*™*›,ˆŒØ#ˆŒØ�?‰?˜kÒ)Ü!Ÿz™z¨%Ó0ˆDÕÙ˜t×4Ò4Ü!Ÿz™zÐ*DÀtÇÁÑ*VÜ*,¯-©-¼¿¹Ñ*@ó BˆDÕô  "Ÿz™zÐ*BÀTÇ_Á_Ñ*TÜ*,¯-©-¼¿¹Ñ*@ó BˆDÕr   c                 ó6   — t         | _        d | _        d| _        y )NT)r   r   r    r"   r0   s    r   Úclear_cdata_modezHTMLParser.clear_cdata_modeÊ   s   € Ü-ˆÔØˆŒØˆ�r   c                 ó   — || _         y)a  Enable or disable support of the CDATA sections.
        If enabled, "<[CDATA[" starts a CDATA section which ends with "]]>".
        If disabled, "<[CDATA[" starts a bogus comments which ends with ">".

        This method is not called by default. Its purpose is to be called
        in custom handle_starttag() and handle_endtag() methods, with
        value that depends on the adjusted current node.
        See https://html.spec.whatwg.org/multipage/parsing.html#markup-declaration-open-state
        for details.
        N)r!   )r   Úflags     r   Ú_set_support_cdatazHTMLParser._set_support_cdataÏ   s   € ð #ˆÕr   c                 óŽ  — | j                   }d}t        |«      }||k  �r9| j                  rq| j                  se|j	                  d|«      }|dk  r�|j                  dt        ||dz
  «      «      }|dk\  r't        j                  d«      j                  ||«      s�n¿|}n?| j                  j                  ||«      }|r|j                  «       }n| j                  r�n|}||k  rJ| j                  r*| j                  r| j                  t        ||| «      «       n| j                  ||| «       | j                  ||«      }||k(  r�n|j                   } |d|«      �r=t"        j%                  ||«      r| j'                  |«      }	n� |d|«      r| j)                  |«      }	nt |d|«      r| j+                  |«      }	nY |d|«      r| j-                  |«      }	n> |d	|«      r| j/                  |«      }	n#|d
z   |k  s|r| j                  d«       |d
z   }	n�nH|	dk  �rl|s�n>t"        j%                  ||«      r�nN |d|«      rK|dz   |k(  r| j                  d«       �n*t0        j%                  ||«      r�n| j3                  ||dz   d  «       nú |d|«      rF|}dD ]'  }
|j5                  |
|dz   «      sŒ|t        |
«      z  } n | j3                  ||dz   | «       n« |d|«      r$| j6                  r| j9                  ||dz   d  «       n~|||dz    j;                  «       dk(  r| j=                  ||dz   d  «       nM |d	|«      r| j3                  ||dz   d  «       n, |d|«      r| j?                  ||dz   d  «       ntA        d«      ‚|}	| j                  ||	«      }�n» |d|«      r¦tB        j%                  ||«      }|rY|jE                  «       dd }| jG                  |«       |jI                  «       }	 |d|	d
z
  «      s|	d
z
  }	| j                  ||	«      }�Œ÷d||d  v r,| j                  |||dz    «       | j                  ||dz   «      }�n |d|«      rütJ        j%                  ||«      }|rW|jE                  d
«      }| jM                  |«       |jI                  «       }	 |d|	d
z
  «      s|	d
z
  }	| j                  ||	«      }�Œ¤tN        j%                  ||«      }|rE|rB|jE                  «       ||d  k(  r,|jI                  «       }	|	|k  r|}	| j                  ||d
z   «      }n>|d
z   |k  r'| j                  d«       | j                  ||d
z   «      }nnJ d«       ‚||k  r�Œ9|ra||k  r\| j                  r*| j                  r| j                  t        ||| «      «       n| j                  ||| «       | j                  ||«      }||d  | _         y )Nr   ú<ú&é"   z[\t\n\r\f ;]ú</ú<!--ú<?ú<!r   é   )z--!z--ú-é   ú	<![CDATA[é   é	   ú	<!doctypezwe should not get here!z&#éÿÿÿÿú;zinteresting.search() lied)(r   r'   r   r    ÚfindÚrfindÚmaxr:   r;   Úsearchr   Ústartr"   Úhandle_datar   Ú	updateposÚ
startswithÚstarttagopenÚmatchÚparse_starttagÚparse_endtagÚparse_commentÚparse_piÚparse_html_declarationÚ
endtagopenÚhandle_commentÚendswithr!   Úunknown_declr9   Úhandle_declÚ	handle_piÚAssertionErrorÚcharrefÚgroupÚhandle_charrefÚendÚ	entityrefÚhandle_entityrefÚ
incomplete)r   ro   r   Úir-   ÚjÚampposr_   r]   ÚkÚsuffixÚnames               r   r+   zHTMLParser.goaheadß   s‹  € Ø—,‘,ˆØˆÜ�‹LˆØ�!‹eØ×$Ò$¨T¯_ª_Ø—L‘L  aÓ(�Ø�q’5ð %Ÿ]™]¨3´°A°q¸±t³Ó=�FØ !šÜŸJ™J Ó7×>Ñ>¸wÈÔOÙØ‘Aà×(Ñ(×/Ñ/°¸Ó;�ÙØŸ™›‘Aà—’ÙØ�AØ�1ŠuØ×(Ò(¨T¯_ª_Ø×$Ñ$¤X¨g°a¸¨lÓ%;Õ<à×$Ñ$ W¨Q¨q \Ô2Ø—‘˜q !Ó$ˆAØ�AŠv‘uØ ×+Ñ+ˆJÙ˜#˜qÕ!Ü×%Ñ% g¨qÔ1Ø×+Ñ+¨AÓ.‘AÙ  aÔ(Ø×)Ñ)¨!Ó,‘AÙ ¨Ô*Ø×*Ñ*¨1Ó-‘AÙ  aÔ(ØŸ™ aÓ(‘AÙ  aÔ(Ø×3Ñ3°AÓ6‘AØ˜!‘e˜q’[¡CØ×$Ñ$ SÔ)Ø˜A™‘AáØ�q“5ÙÙÜ#×)Ñ)¨'°1Ô5ÙÙ# D¨!Ô,Ø˜q™5 Aš:Ø ×,Ñ,¨TÖ2Ü'×-Ñ-¨g°qÔ9Ù ð !×/Ñ/°¸¸!¹¸°Õ>Ù# F¨AÔ.Ø˜Ø&8ò &˜FØ&×/Ñ/°¸¸!¹Õ<Ø !¤S¨£[Ñ 0 Ù %ð&ð ×+Ñ+¨G°A°a±C¸¨NÕ;Ù# K°Ô3¸×8KÒ8KØ×)Ñ)¨'°!°A±#°$¨-Õ8Ø   1 Q¡3˜×-Ñ-Ó/°;Ò>Ø×(Ñ(¨°°1±°¨Õ7Ù# D¨!Ô,à×+Ñ+¨G°A°a±C°D¨MÕ:Ù# D¨!Ô,ØŸ™ w¨q°©s¨t }Õ5ä,Ð-FÓGÐGØ�AØ—N‘N 1 aÓ(’Ù˜D !Ô$ÜŸ™ g¨qÓ1�ÙØ Ÿ;™;›=¨¨2Ð.�DØ×'Ñ'¨Ô-ØŸ	™	›�AÙ% c¨1¨Q©3Ô/Ø ™E˜ØŸ™ q¨!Ó,�AÙà˜g a b˜kÑ)Ø×(Ñ(¨°°1°Q±3¨Ô8Ø ŸN™N¨1¨a°©cÓ2˜ÙÙ˜C Ô#Ü!Ÿ™¨°Ó3�ÙØ Ÿ;™; q›>�DØ×)Ñ)¨$Ô/ØŸ	™	›�AÙ% c¨1¨Q©3Ô/Ø ™E˜ØŸ™ q¨!Ó,�AÙÜ"×(Ñ(¨°!Ó4�Ùá˜uŸ{™{›}°¸¸°Ò;Ø!ŸI™I›K˜Ø š6Ø !˜AØ ŸN™N¨1¨a°!©eÓ4˜àØ˜!‘e˜q’[ð ×$Ñ$ SÔ)ØŸ™ q¨!¨a©%Ó0‘Aàà5Ð5Ó5�qðw �!Œeñz �1�q’5Ø×$Ò$¨¯ªØ× Ñ ¤¨'°!°A¨,Ó!7Õ8à× Ñ  ¨¨1 Ô.Ø—‘˜q !Ó$ˆAØ˜q˜r�{ˆ�r   c                 ó¬  — | j                   }|||dz    dk(  sJ d«       ‚|||dz    dk(  r| j                  |«      S |||dz    dk(  rC| j                  r7|j                  d|dz   «      }|d	k  ry
| j	                  ||dz   | «       |dz   S |||dz    j                  «       dk(  r7|j                  d|dz   «      }|d
k(  ry
| j                  ||dz   | «       |dz   S |||dz    dk(  ra|j                  d|dz   «      }|d	k  ry
||dz
     dk(  r| j	                  ||dz   |dz
   «       |dz   S | j                  ||dz   | «       |dz   S | j                  |«      S )NrM   rL   z+unexpected call to parse_html_declaration()rO   rJ   rR   rP   z]]>r   rT   rQ   rS   r   r   z<![ú])	r   rb   r!   rV   rh   r9   ri   rf   Úparse_bogus_comment)r   rs   r   rt   Úgtposs        r   rd   z!HTMLParser.parse_html_declarationk  s¥  € Ø—,‘,ˆØ�q˜˜1™ˆ~ Ò%ð 	Dð )Có 	DÐ%à�1�Q�q‘Sˆ>˜VÒ#à×%Ñ% aÓ(Ð(Ø�Q�q˜‘sˆ^˜{Ò*¨t×/BÒ/BØ—‘˜U A a¡CÓ(ˆAØ�1ŠuØØ×Ñ˜g a¨¡c¨1˜oÔ.Ø�q‘5ˆLØ�Q�q˜‘sˆ^×!Ñ!Ó# {Ò2à—L‘L  a¨¡cÓ*ˆEØ˜Š{ØØ×Ñ˜W Q q¡S¨Ð/Ô0Ø˜‘7ˆNØ�Q�q˜‘sˆ^˜uÒ$Ø—‘˜S ! A¡#Ó&ˆAØ�1ŠuØØ�q˜‘s‰|˜sÒ"Ø×!Ñ! '¨!¨A©#¨q°©sÐ"3Ô4ð �q‘5ˆLð ×#Ñ# G¨A¨a©C° OÔ4Ø�q‘5ˆLà×+Ñ+¨AÓ.Ð.r   c                 ó,  — | j                   }|j                  d|«      sJ d«       ‚t        j                  ||dz   «      }|st        j                  ||dz   «      }|sy|r'|j                  «       }| j                  ||dz   | «       |j                  «       S )NrJ   ú"unexpected call to parse_comment()rO   rT   )	r   r]   ÚcommentcloserY   Úcommentabruptcloser_   rZ   rf   ro   )r   rs   Úreportr   r_   rt   s         r   rb   zHTMLParser.parse_comment�  sŽ   € Ø—,‘,ˆØ×!Ñ! &¨!Ô,ÐRÐ.RÓRÐ,Ü×#Ñ# G¨Q¨q©SÓ1ˆÙÜ&×,Ñ,¨W°a¸±cÓ:ˆEÙØÙØ—‘“ˆAØ×Ñ ¨¨!©¨Q Ô0Ø�y‰y‹{Ðr   c                 ó®   — | j                   }|||dz    dv sJ d«       ‚|j                  d|dz   «      }|dk(  ry|r| j                  ||dz   | «       |dz   S )NrM   )rL   rI   r~   r   rT   r   )r   rV   rf   )r   rs   r�   r   Úposs        r   r{   zHTMLParser.parse_bogus_commentœ  su   € Ø—,‘,ˆØ�q˜˜1™ˆ~ Ñ-ð 	Cð 1Bó 	CÐ-à�l‰l˜3  !¡Ó$ˆØ�"Š9ØÙØ×Ñ ¨¨!©¨CÐ 0Ô1Ø�Q‰wˆr   c                 óè   — | j                   }|||dz    dk(  sJ d«       ‚t        j                  ||dz   «      }|sy|j                  «       }| j	                  ||dz   | «       |j                  «       }|S )NrM   rK   zunexpected call to parse_pi()rT   )r   ÚpicloserY   rZ   rj   ro   ©r   rs   r   r_   rt   s        r   rc   zHTMLParser.parse_pi¨  st   € Ø—,‘,ˆØ�q˜˜1™ˆ~ Ò%ÐFÐ'FÓFÐ%Ü—‘˜w¨¨!©Ó,ˆÙØØ�K‰K‹MˆØ�‰�w˜q ™s A�Ô'Ø�I‰I‹KˆØˆr   c                 óô  — d | _         | j                  |«      }|dk  r|S | j                  }||| | _         g }t        j	                  ||dz   «      }|sJ d«       ‚|j                  «       }|j                  d«      j                  «       x| _        }||k  r¥t        j	                  ||«      }|snŒ|j                  ddd«      \  }	}
}|
sd }n,|d d dcxk(  r|dd  k(  sn |d d dcxk(  r|dd  k(  rn n|dd }|rt        |«      }|j                  |	j                  «       |f«       |j                  «       }||k  rŒ¥||| j                  «       }|d	vr| j                  ||| «       |S |j                  d
«      r| j                  ||«       |S | j!                  ||«       || j"                  v s| j$                  r|dk(  s|dk(  r| j'                  |d¬«       |S || j(                  v r| j'                  |d¬«       |S )Nr   r   z#unexpected call to parse_starttag()rM   rQ   ú'rT   ú")r   ú/>rŠ   Únoscriptr8   Fr5   T)r3   Úcheck_for_whole_start_tagr   Útagfind_tolerantr_   ro   rm   r9   r   Úattrfind_tolerantr   r(   Ústripr[   rg   Úhandle_startendtagÚhandle_starttagÚCDATA_CONTENT_ELEMENTSr   r?   ÚRCDATA_CONTENT_ELEMENTS)r   rs   Úendposr   Úattrsr_   rv   ÚtagÚmÚattrnameÚrestÚ	attrvaluero   s                r   r`   zHTMLParser.parse_starttag´  s  € ð  $ˆÔØ×/Ñ/°Ó2ˆØ�AŠ:ØˆMØ—,‘,ˆØ& q¨Ð0ˆÔð ˆÜ ×&Ñ& w°°!±Ó4ˆÙÐ;Ð;Ó;ˆuØ�I‰I‹KˆØ"Ÿ[™[¨›^×1Ñ1Ó3Ð3ˆŒ�sØ�&ŠjÜ!×'Ñ'¨°Ó3ˆAÙØØ()¯©°°1°aÓ(8Ñ%ˆH�d˜IÙØ ‘	Ø˜2˜A� $Ô8¨)°B°C¨.Ô8Ø˜2˜A� #Ô7¨°2°3¨Õ7Ø% a¨˜O�	ÙÜ$ YÓ/�	Ø�L‰L˜(Ÿ.™.Ó*¨IÐ6Ô7Ø—‘“ˆAð �&‹jð �a˜Ð×%Ñ%Ó'ˆØ�kÑ!Ø×Ñ˜W Q vÐ.Ô/ØˆMØ�<‰<˜Ôà×#Ñ# C¨Ô/ð ˆð × Ñ   eÔ,Ø�t×2Ñ2Ñ2Ø—’ C¨:Ò$5Ø�{Ò"Ø×#Ñ# C°5Ð#Ô9ð ˆð ˜×4Ñ4Ñ4Ø×#Ñ# C°4Ð#Ô8Øˆr   c                 ó�   — | j                   }t        j                  ||dz   «      }|sJ ‚|j                  «       }||dz
     dk7  ry|S )Nr   r   rT   )r   Úlocatetagendr_   ro   r†   s        r   rŒ   z$HTMLParser.check_for_whole_start_tagæ  sK   € Ø—,‘,ˆÜ×"Ñ" 7¨A¨a©CÓ0ˆÙˆˆuØ�I‰I‹KˆØ�1�Q‘3‰<˜3ÒØØˆr   c                 ó  — | j                   }|||dz    dk(  sJ d«       ‚|j                  d|dz   «      dk  ryt        j                  ||«      s$||dz   |dz    dk(  r|dz   S | j	                  |«      S t
        j                  ||dz   «      }|sJ ‚|j                  «       }||dz
     dk7  ryt        j                  ||dz   «      }|sJ ‚|j                  d«      j                  «       }| j                  |«       | j                  «        |S )	NrM   rI   zunexpected call to parse_endtagr   r   rT   rQ   r   )r   rV   re   r_   r{   rœ   ro   r�   rm   r9   Úhandle_endtagrA   )r   rs   r   r_   rt   r–   s         r   ra   zHTMLParser.parse_endtagð  s  € ð —,‘,ˆØ�q˜˜1™ˆ~ Ò%ÐHÐ'HÓHÐ%Ø�<‰<˜˜Q˜q™SÓ! AÒ%ØÜ×Ñ ¨Ô+Ø�q˜‘s˜1˜Q™3Ð 3Ò&à˜‘s�
à×/Ñ/°Ó2Ð2ä×"Ñ" 7¨A¨a©CÓ0ˆÙˆˆuØ�I‰I‹KˆØ�1�Q‘3‰<˜3ÒØô !×&Ñ& w°°!±Ó4ˆÙˆˆuØ�k‰k˜!‹n×"Ñ"Ó$ˆØ×Ñ˜3ÔØ×ÑÔØˆr   c                 óJ   — | j                  ||«       | j                  |«       y ©N)r‘   rž   ©r   r–   r•   s      r   r�   zHTMLParser.handle_startendtag  s    € Ø×Ñ˜S %Ô(Ø×Ñ˜3Õr   c                  ó   — y r    © r¡   s      r   r‘   zHTMLParser.handle_starttag  ó   € Ør   c                  ó   — y r    r£   )r   r–   s     r   rž   zHTMLParser.handle_endtag  r¤   r   c                  ó   — y r    r£   ©r   rx   s     r   rn   zHTMLParser.handle_charref  r¤   r   c                  ó   — y r    r£   r§   s     r   rq   zHTMLParser.handle_entityref  r¤   r   c                  ó   — y r    r£   ©r   r,   s     r   r[   zHTMLParser.handle_data#  r¤   r   c                  ó   — y r    r£   rª   s     r   rf   zHTMLParser.handle_comment'  r¤   r   c                  ó   — y r    r£   )r   Údecls     r   ri   zHTMLParser.handle_decl+  r¤   r   c                  ó   — y r    r£   rª   s     r   rj   zHTMLParser.handle_pi/  r¤   r   c                  ó   — y r    r£   rª   s     r   rh   zHTMLParser.unknown_decl2  r¤   r   )T)r   )"Ú__name__Ú
__module__Ú__qualname__Ú__doc__r’   r“   r   r   r.   r1   r3   r4   r?   rA   rD   r+   rd   rb   r{   rc   r`   rŒ   ra   r�   r‘   rž   rn   rq   r[   rf   ri   rj   rh   Ú__classcell__)r   s   @r   r   r   Z   s¯   ø„ ñð0 YÐØ3Ðà+/¸5ö ôò:ò<ð €Oò$ð 16ô 
Bòó
#ò G#òX/óDó	ò	ò.òdòò< ò
òòòòòòòör   )r³   r:   Ú_markupbaseÚhtmlr   Ú__all__r;   r   rr   rp   rl   r^   re   r…   r   r€   r�   ÚVERBOSErŽ   rœ   Úlocatestarttagend_tolerantÚ	endendtagÚ
endtagfindÚ
ParserBaser   r£   r   r   ú<module>r½      s[  ðÙ "ó 
Û å ð ˆ.€ð  �R—Z‘Z Ó'Ð ØˆR�Z‰Z˜Ó%€
àˆB�J‰JÐ>Ó?€	Ø
ˆ"�*‰*Ð@Ó
A€àˆr�z‰z˜+Ó&€ØˆR�Z‰Z˜Ó%€
Ø
ˆ"�*‰*�S‹/€Øˆr�z‰z˜(Ó#€Ø�R—Z‘Z Ó'Ð ð �2—:‘:ÐQÓRÐ Ø�B—J‘Jð  ð ‡Z�ZóÐ ð ˆr�z‰zð ð ‡Z�Zó€ð  (˜RŸZ™Zð )ð ‡Z�ZóÐ ð ˆB�J‰J�s‹O€	ØˆR�Z‰ZÐ>Ó?€
ôY�×'Ñ'õ Yr   