a XC?h�C�@s�ddlZddlZddlmZdgZe�d�Ze�d�Ze�d�Ze�d�Z e�d�Z e�d �Z e�d �Z e�d �Z e�d �Ze�d ej�Ze�d �Ze�d�ZGdd�dej�ZdS)�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--\s*>z+([a-zA-Z][^\t\n\r\f />\x00]*)(?:\s|/(?!>))*z]((?<=[\'"\s/])[^\s/>][^\s/=>]*)(\s*=+\s*(\'[^\']*\'|"[^"]*"|(?![\'"])[^>\s]*))?(?:\s|/(?!>))*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#c@s�eZdZdZdd�dd�Zdd�Zdd �Zd d �Zd Zd d�Z dd�Z dd�Z dd�Z dd�Z d6dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd S)7r)ZscriptZstyleT)�convert_charrefscCs||_|��dS�N)r�reset)�selfr�r �0/opt/alt/python39/lib64/python3.9/html/parser.py�__init__VszHTMLParser.__init__cCs(d|_d|_t|_d|_tj�|�dS)N�z???)�rawdata�lasttag�interesting_normal� interesting� cdata_elem� _markupbase� ParserBaser�rr r r r_s zHTMLParser.resetcCs|j||_|�d�dS)Nr)r �goahead�r�datar r r �feedgs zHTMLParser.feedcCs|�d�dS)N�)rrr r r �closepszHTMLParser.closeNcCs|jSr)�_HTMLParser__starttag_textrr r r �get_starttag_textvszHTMLParser.get_starttag_textcCs$|��|_t�d|jtj�|_dS)Nz )�lowerr�re�compile�Ir)r�elemr r r �set_cdata_modezs zHTMLParser.set_cdata_modecCst|_d|_dSr)rrrrr r r �clear_cdata_mode~szHTMLParser.clear_cdata_modec CsJ|j}d}t|�}||k�r�|jrv|jsv|�d|�}|dkr�|�dt||d��}|dkrpt�d�� ||�sp�q�|}n*|j � ||�}|r�|� �}n|jr��q�|}||kr�|jr�|js�|� t |||���n|� |||��|�||�}||kr��q�|j}|d|��rJt�||��r"|�|�} n�|d|��r:|�|�} nn|d|��rR|�|�} nV|d|��rj|�|�} n>|d |��r�|�|�} n&|d |k�r�|� d�|d } n�q�| dk�r<|�s��q�|�d |d �} | dk�r�|�d|d �} | dk�r|d } n| d 7} |j�r*|j�s*|� t ||| ���n|� ||| ��|�|| �}q|d |��r�t�||�}|�r�|��d d�} |�| �|��} |d| d ��s�| d } |�|| �}qn� rR)r�check_for_whole_start_tagr �tagfind_tolerantr4r=r;rr�attrfind_tolerantr�append�stripZgetpos�countr+r-r1�endswith�handle_startendtag�handle_starttag�CDATA_CONTENT_ELEMENTSr")rrA�endposr �attrsr4rD�tag�m�attrname�restZ attrvaluer=�lineno�offsetr r r r5,sX   & � �       �    zHTMLParser.parse_starttagcCs�|j}t�||�}|r�|��}|||d�}|dkr>|dS|dkr~|�d|�rZ|dS|�d|�rjdS||krv|S|dS|dkr�dS|dvr�dS||kr�|S|dStd ��dS) Nrr�/rRr(r)r z6abcdefghijklmnopqrstuvwxyz=/ABCDEFGHIJKLMNOPQRSTUVWXYZzwe should not get here!)r �locatestarttagend_tolerantr4r=r2�AssertionError)rrAr rarC�nextr r r rT_s.   z$HTMLParser.check_for_whole_start_tagcCs|j}t�||d�}|sdS|��}t�||�}|s�|jdurV|�|||��|St�||d�}|s�|||d�dkr�|dS|� |�S|� d�� �}|� d|���}|� |�|dS|� d�� �}|jdur�||jkr�|�|||��|S|� |�|��|S)Nrr)r(rGzr)r � endendtagr/r=� endtagfindr4rr1rUrJr;rr,� handle_endtagr#)rrAr r4rKZ namematchZtagnamer!r r r r6�s6       zHTMLParser.parse_endtagcCs|�||�|�|�dSr)r\rl�rr`r_r r r r[�s zHTMLParser.handle_startendtagcCsdSrr rmr r r r\�szHTMLParser.handle_starttagcCsdSrr )rr`r r r rl�szHTMLParser.handle_endtagcCsdSrr �rrEr r r r<�szHTMLParser.handle_charrefcCsdSrr rnr r r r?�szHTMLParser.handle_entityrefcCsdSrr rr r r r1�szHTMLParser.handle_datacCsdSrr rr r r rL�szHTMLParser.handle_commentcCsdSrr )rZdeclr r r rI�szHTMLParser.handle_declcCsdSrr rr r r rO�szHTMLParser.handle_picCsdSrr rr r r � unknown_decl�szHTMLParser.unknown_decl)r)�__name__� __module__� __qualname__r]r rrrrrr"r#rr9rJr8r5rTr6r[r\rlr<r?r1rLrIrOror r r r r>s4  z  3"()rrZhtmlr�__all__rrr@r>r:r3rNZ commentcloserUrV�VERBOSErgrjrkrrr r r r � s(         ��