o
    EXîh!P  ã                   @   sÜ   	 d dl Z d dlZd dlmZ dgZe  d¡Ze  d¡Ze  d¡Ze  d¡Z	e  d¡Z
e  d	¡Ze  d
¡Ze  d¡Ze  d¡Ze  d¡Ze  de j¡Ze  de j¡Ze  de j¡Ze  d
¡Ze  d¡ZG dd„ dejƒZdS )é    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                   @   sü   e Zd Z	 dZdZddœdd„Zdd„ Zd	d
„ Zdd„ ZdZ	dd„ Z
ddœdd„Zdd„ Zd=dd„Zdd„ Zdd„ Zd=dd„Zd>dd „Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ ZdS )?r   )ZscriptÚstyle)ZtextareaÚtitleT)Úconvert_charrefsc                C   s   	 || _ |  ¡  d S ©N)r   Úreset)Úselfr   © r   ú5/opt/python-3.10.19/usr/lib/python3.10/html/parser.pyÚ__init__s   s   zHTMLParser.__init__c                 C   s6   	 d| _ d| _t| _d | _d| _d| _tj 	| ¡ d S )NÚ z???T)
ÚrawdataÚlasttagÚinteresting_normalÚinterestingÚ
cdata_elemÚ_support_cdataÚ
_escapableÚ_markupbaseÚ
ParserBaser	   ©r
   r   r   r   r	   |   s   zHTMLParser.resetc                 C   s   	 | j | | _ |  d¡ d S )Nr   )r   Úgoahead©r
   Údatar   r   r   Úfeed†   s   zHTMLParser.feedc                 C   s   	 |   d¡ d S )Né   )r   r   r   r   r   Úclose   s   zHTMLParser.closeNc                 C   s   	 | j S r   )Ú_HTMLParser__starttag_textr   r   r   r   Úget_starttag_text•   s   zHTMLParser.get_starttag_textF©Ú	escapablec                C   sZ   |  ¡ | _|| _|r| jst d| j tjtjB ¡| _d S t d| j tjtjB ¡| _d S )Nz&|</%s(?=[\t\n\r\f />])z</%s(?=[\t\n\r\f />]))	Úlowerr   r   r   ÚreÚcompileÚ
IGNORECASEÚASCIIr   )r
   Úelemr"   r   r   r   Úset_cdata_mode™   s   



ÿ

ÿzHTMLParser.set_cdata_modec                 C   s   t | _d | _d| _d S )NT)r   r   r   r   r   r   r   r   Úclear_cdata_mode£   s   
zHTMLParser.clear_cdata_modec                 C   s   	 || _ d S r   )r   )r
   Úflagr   r   r   Ú_set_support_cdata¨   s   

zHTMLParser._set_support_cdatac                 C   s  | j }d}t|ƒ}||k rU| jr;| js;| d|¡}|dk r:| dt||d ƒ¡}|dkr8t d¡ 	||¡s8n|}n| j
 	||¡}|rI| ¡ }n| jrNn|}||k ro| jrf| jrf|  t|||… ƒ¡ n	|  |||… ¡ |  ||¡}||kr{nÚ|j}|d|ƒrt ||¡r|  |¡}	n@|d|ƒr›|  |¡}	n5|d|ƒr¦|  |¡}	n*|d|ƒr±|  |¡}	n|d	|ƒr¼|  |¡}	n|d
 |k sÄ|rÎ|  d¡ |d
 }	nn…|	dk r‰|sÙn|t ||¡ràn§|d|ƒr|d |krò|  d¡ n•t ||¡rùnŽ|  ||d d … ¡ n‚|d|ƒr0|}dD ]}
| |
|d ¡r"|t|
ƒ8 } nq|  ||d |… ¡ nW|d|ƒrF| jrF|  ||d d … ¡ nA|||d …  ¡ dkr_|  ||d d … ¡ n(|d	|ƒrq|  ||d d … ¡ n|d|ƒrƒ|  ||d d … ¡ nt dƒ‚|}	|  ||	¡}nÁ|d|ƒràt! ||¡}|rÃ| "¡ dd… }|  #|¡ | $¡ }	|d|	d
 ƒs¼|	d
 }	|  ||	¡}q	d||d … v rß|  |||d … ¡ |  ||d ¡}nu|d|ƒrQt% ||¡}|r| "d
¡}|  &|¡ | $¡ }	|d|	d
 ƒs	|	d
 }	|  ||	¡}q	t' ||¡}|r;|r:| "¡ ||d … kr:| $¡ }	|	|kr2|}	|  ||d
 ¡}n|d
 |k rP|  d¡ |  ||d
 ¡}nn||k s|r€||k r€| jrq| jrq|  t|||… ƒ¡ n	|  |||… ¡ |  ||¡}||d … | _ d S )Nr   ú<ú&é"   z[\t\n\r\f ;]z</ú<!--z<?z<!r   é   )z--!z--ú-é   ú	<![CDATA[é   é	   ú	<!doctypezwe should not get here!z&#éÿÿÿÿú;)(r   Úlenr   r   ÚfindÚrfindÚmaxr$   r%   Úsearchr   Ústartr   Úhandle_datar   Z	updateposÚ
startswithÚstarttagopenÚmatchÚparse_starttagÚparse_endtagÚparse_commentÚparse_piÚparse_html_declarationÚ
endtagopenÚhandle_commentÚendswithr   Úunknown_declr#   Úhandle_declÚ	handle_piÚAssertionErrorÚcharrefÚgroupÚhandle_charrefÚendÚ	entityrefÚhandle_entityrefÚ
incomplete)r
   rS   r   ÚiÚnÚjZampposrC   rA   ÚkÚsuffixÚnamer   r   r   r   ¸   sæ   
ÿ€







þ




‡}zHTMLParser.goaheadc                 C   sT  | j }|||d … dkr|  |¡S |||d … dkr<| jr<| d|d ¡}|dk r-dS |  ||d |… ¡ |d S |||d …  ¡ d	kre| d
|d ¡}|dkrVdS |  ||d |… ¡ |d S |||d … dkr¥| d
|d ¡}|dk r}dS ||d  dkr–|  ||d |d … ¡ |d S |  ||d |… ¡ |d S |  |¡S )Nr3   r0   r6   r4   z]]>r   r8   r5   r7   r   r1   r   z<![ú])	r   rF   r   r;   rL   r#   rM   rJ   Úparse_bogus_comment)r
   rW   r   rY   Zgtposr   r   r   rH   D  s2   
ÿ
z!HTMLParser.parse_html_declarationc                 C   s\   | j }t ||d ¡}|st ||d ¡}|sdS |r*| ¡ }|  ||d |… ¡ | ¡ S )Nr3   r8   )r   Úcommentcloser>   ÚcommentabruptcloserC   r?   rJ   rS   )r
   rW   Úreportr   rC   rY   r   r   r   rF   f  s   zHTMLParser.parse_commentr   c                 C   sD   | j }| d|d ¡}|dkrdS |r|  ||d |… ¡ |d S )Nr   r1   r8   r   )r   r;   rJ   )r
   rW   ra   r   Úposr   r   r   r^   u  s   zHTMLParser.parse_bogus_commentc                 C   sH   | j }t ||d ¡}|sdS | ¡ }|  ||d |… ¡ | ¡ }|S )Nr1   r8   )r   Úpicloser>   r?   rN   rS   ©r
   rW   r   rC   rY   r   r   r   rG     s   zHTMLParser.parse_pic                 C   sô  d | _ |  |¡}|dk r|S | j}|||… | _ g }t ||d ¡}| ¡ }| d¡ ¡  | _}||k rt	 ||¡}|s=nS| ddd¡\}	}
}|
sLd }n-|d d… d  kr^|dd … kssn |d d… d  krq|dd … kryn n|dd… }|rt
|ƒ}| |	 ¡ |f¡ | ¡ }||k s4|||…  ¡ }|dvrÍ|  ¡ \}}d	| j v r»|| j  d	¡ }t| j ƒ| j  d	¡ }n|t| j ƒ }|  |||… ¡ |S | d
¡rÚ|  ||¡ |S |  ||¡ || jv rì|  |¡ |S || jv rø| j|dd |S )Nr   r   r1   r5   ú'r8   ú")r   ú/>Ú
rg   Tr!   )r   Úcheck_for_whole_start_tagr   Útagfind_tolerantrC   rS   rQ   r#   r   Úattrfind_tolerantr   ÚappendÚstripZgetposÚcountr:   r<   r@   rK   Úhandle_startendtagÚhandle_starttagÚCDATA_CONTENT_ELEMENTSr)   ÚRCDATA_CONTENT_ELEMENTS)r
   rW   Úendposr   ÚattrsrC   rZ   ÚtagÚmÚattrnameÚrestZ	attrvaluerS   ÚlinenoÚoffsetr   r   r   rD     s\   
&(ó

ÿ
û


þzHTMLParser.parse_starttagc                 C   s6   | j }t ||d ¡}| ¡ }||d  dkrdS |S )Nr   r   r8   )r   ÚlocatetagendrC   rS   rd   r   r   r   ri   Ä  s   z$HTMLParser.check_for_whole_start_tagc                 C   s´   | j }| d|d ¡dk rdS t ||¡s*||d |d … dkr%|d S |  |¡S t ||d ¡}| ¡ }||d  dkr@dS t ||d ¡}| d¡ 	¡ }|  
|¡ |  ¡  |S )Nr   r1   r   r8   r5   r   )r   r;   rI   rC   r^   r{   rS   rj   rQ   r#   Úhandle_endtagr*   )r
   rW   r   rC   rY   ru   r   r   r   rE   Î  s    

zHTMLParser.parse_endtagc                 C   s   |   ||¡ |  |¡ d S r   )rp   r|   ©r
   ru   rt   r   r   r   ro   ì  s   zHTMLParser.handle_startendtagc                 C   ó   d S r   r   r}   r   r   r   rp   ñ  ó   zHTMLParser.handle_starttagc                 C   r~   r   r   )r
   ru   r   r   r   r|   õ  r   zHTMLParser.handle_endtagc                 C   r~   r   r   ©r
   r\   r   r   r   rR   ù  r   zHTMLParser.handle_charrefc                 C   r~   r   r   r€   r   r   r   rU   ý  r   zHTMLParser.handle_entityrefc                 C   r~   r   r   r   r   r   r   r@     r   zHTMLParser.handle_datac                 C   r~   r   r   r   r   r   r   rJ     r   zHTMLParser.handle_commentc                 C   r~   r   r   )r
   Zdeclr   r   r   rM   	  r   zHTMLParser.handle_declc                 C   r~   r   r   r   r   r   r   rN     r   zHTMLParser.handle_pic                 C   r~   r   r   r   r   r   r   rL     r   zHTMLParser.unknown_decl)T)r   ) Ú__name__Ú
__module__Ú__qualname__rq   rr   r   r	   r   r   r   r    r)   r*   r,   r   rH   rF   r^   rG   rD   ri   rE   ro   rp   r|   rR   rU   r@   rJ   rM   rN   rL   r   r   r   r   r   Z   s@    	
	

 
"
7
)r$   r   Zhtmlr   Ú__all__r%   r   rV   rT   rP   rB   rI   rc   r_   r`   rj   ÚVERBOSErk   r{   Zlocatestarttagend_tolerantZ	endendtagZ
endtagfindr   r   r   r   r   r   Ú<module>   s6    











õóò

