HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //snap/core20/current/lib/python3.8/html/__pycache__/parser.cpython-38.pyc
U

>�hI�@s�dZddlZddlZddlZddlmZdgZe�d�Ze�d�Z	e�d�Z
e�d�Ze�d	�Ze�d
�Z
e�d�Ze�d�Ze�d
�Ze�d�Ze�dej�Ze�d�Ze�d�ZGdd�dej�ZdS)zA 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--\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#</\s*([a-zA-Z][-.a-zA-Z0-9:_]*)\s*>c@s�eZdZdZdZdd�dd�Zdd�Zd	d
�Zdd�Zd
Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zd9dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd
S):raEFind 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.
    )ZscriptZstyleT)�convert_charrefscCs||_|��dS)z�Initialize and reset this instance.

        If convert_charrefs is True (the default), all character references
        are automatically converted to the corresponding Unicode characters.
        N)r�reset)�selfr�r�!/usr/lib/python3.8/html/parser.py�__init__XszHTMLParser.__init__cCs(d|_d|_t|_d|_tj�|�dS)z1Reset this instance.  Loses all unprocessed data.�z???N)�rawdata�lasttag�interesting_normal�interesting�
cdata_elem�_markupbase�
ParserBaser�rrrr	ras
zHTMLParser.resetcCs|j||_|�d�dS)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').
        rN)r�goahead�r�datarrr	�feediszHTMLParser.feedcCs|�d�dS)zHandle any buffered data.�N)rrrrr	�closerszHTMLParser.closeNcCs|jS)z)Return full source of start tag: '<...>'.)�_HTMLParser__starttag_textrrrr	�get_starttag_textxszHTMLParser.get_starttag_textcCs$|��|_t�d|jtj�|_dS)Nz</\s*%s\s*>)�lowerr�re�compile�Ir)r�elemrrr	�set_cdata_mode|s
zHTMLParser.set_cdata_modecCst|_d|_dS�N)rrrrrrr	�clear_cdata_mode�szHTMLParser.clear_cdata_modecCs@|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|��r2t�||��r"|�|�}	n�|d|��r:|�|�}	nt|d|��rR|�|�}	n\|d|��rj|�|�}	nD|d	|��r�|�|�}	n,|d
|k�s�|�r�|�d�|d
}	n�q�|	dk�r$|�sq�t�||��rԐnL|d|��r"|d|k�r�|�d�n&t�||��r
n|�||dd��n�|d|��rz|}dD]*}
|�|
|d
��r6|t|
�8}�qb�q6|�||d
|��n�|d|��r�|�||dd��n�|||d���dk�r�|�||dd��nP|d	|��r�|�||dd��n,|d|��r|�||dd��ntd��|}	|�||	�}q|d|��r�t�||�}|�r�|� �dd�}|�!|�|�"�}	|d|	d
��s�|	d
}	|�||	�}qn<d||d�k�r�|�|||d��|�||d�}�q�q|d|��r�t#�||�}|�r8|� d
�}|�$|�|�"�}	|d|	d
��s*|	d
}	|�||	�}qt%�||�}|�r�|�r�|� �||d�k�r�|�"�}	|	|k�r||}	|�||d
�}�q�n.|d
|k�r�|�d�|�||d
�}n�q�qdstd��q|�r.||k�r.|j�s.|j�r|j�s|�t
|||���n|�|||��|�||�}||d�|_dS)Nr�<�&�"z[\s;]�</�<!--�<?�<!r�)z--!z--�-�z	<![CDATA[��	�	<!doctype�we should not get here!z&#����;zinteresting.search() lied)&r�lenrr�find�rfind�maxrr�searchr�start�handle_datarZ	updatepos�
startswith�starttagopen�match�parse_starttag�parse_endtag�
parse_comment�parse_pi�parse_html_declaration�
endtagopen�handle_comment�endswith�unknown_declr�handle_decl�	handle_pi�AssertionError�charref�group�handle_charref�end�	entityref�handle_entityref�
incomplete)rrMr�i�n�jZampposr=r;�k�suffix�namerrr	r�s�
�









zHTMLParser.goaheadcCs�|j}|||d�dks"td��|||d�dkr@|�|�S|||d�dkr^|�|�S|||d���d	kr�|�d
|d�}|dkr�dS|�||d|��|dS|�|�SdS)
Nr+r*z+unexpected call to parse_html_declaration()r-r(r.z<![r/r0rr2r)rrIr@Zparse_marked_sectionrr5rG�parse_bogus_comment)rrQr�gtposrrr	rBs

z!HTMLParser.parse_html_declarationrcCs`|j}|||d�dks"td��|�d|d�}|dkr>dS|rX|�||d|��|dS)Nr+)r*r'z"unexpected call to parse_comment()rr2r)rrIr5rD)rrQZreportr�posrrr	rW(szHTMLParser.parse_bogus_commentcCsd|j}|||d�dks"td��t�||d�}|s:dS|��}|�||d|��|��}|S)Nr+r)zunexpected call to parse_pi()r2)rrI�picloser8r9rHrM)rrQrr=rSrrr	rA4szHTMLParser.parse_picCs�d|_|�|�}|dkr|S|j}|||�|_g}t�||d�}|sPtd��|��}|�d���|_	}||k�r.t
�||�}|s��q.|�ddd�\}	}
}|
s�d}n\|dd�dkr�|dd�ks�n|dd�dkr�|dd�k�rnn|dd�}|�rt|�}|�|	��|f�|��}ql|||��
�}|d	k�r�|��\}
}d
|jk�r�|
|j�d
�}
t|j�|j�d
�}n|t|j�}|�|||��|S|�d��r�|�||�n"|�||�||jk�r�|�|�|S)Nrrz#unexpected call to parse_starttag()r+r.�'r2�")r�/>�
r])r�check_for_whole_start_tagr�tagfind_tolerantr=rIrMrKrr
�attrfind_tolerantr�append�stripZgetpos�countr4r6r:rE�handle_startendtag�handle_starttag�CDATA_CONTENT_ELEMENTSr!)rrQ�endposr�attrsr=rT�tag�m�attrname�restZ	attrvaluerM�lineno�offsetrrr	r>@s\

&
�
�


�
zHTMLParser.parse_starttagcCs�|j}t�||�}|r�|��}|||d�}|dkr>|dS|dkr~|�d|�rZ|dS|�d|�rjdS||krv|S|dS|dkr�dS|dkr�dS||kr�|S|dStd	��dS)
Nrr�/r]r+r2rz6abcdefghijklmnopqrstuvwxyz=/ABCDEFGHIJKLMNOPQRSTUVWXYZr1)r�locatestarttagend_tolerantr=rMr;rI)rrQrrkrS�nextrrr	r_ss.z$HTMLParser.check_for_whole_start_tagcCs.|j}|||d�dks"td��t�||d�}|s:dS|��}t�||�}|s�|jdk	rr|�|||��|St	�||d�}|s�|||d�dkr�|dS|�
|�S|�d���}|�
d|���}|�|�|dS|�d���}|jdk	�r||jk�r|�|||��|S|�|�|��|S)	Nr+r'zunexpected call to parse_endtagrr2r.z</>r)rrI�	endendtagr8rM�
endtagfindr=rr:r`rWrKrr5�
handle_endtagr#)rrQrr=rXZ	namematchZtagnamer rrr	r?�s8



zHTMLParser.parse_endtagcCs|�||�|�|�dSr")rfru�rrjrirrr	re�szHTMLParser.handle_startendtagcCsdSr"rrvrrr	rf�szHTMLParser.handle_starttagcCsdSr"r)rrjrrr	ru�szHTMLParser.handle_endtagcCsdSr"r�rrVrrr	rL�szHTMLParser.handle_charrefcCsdSr"rrwrrr	rO�szHTMLParser.handle_entityrefcCsdSr"rrrrr	r:�szHTMLParser.handle_datacCsdSr"rrrrr	rD�szHTMLParser.handle_commentcCsdSr"r)rZdeclrrr	rG�szHTMLParser.handle_declcCsdSr"rrrrr	rH�szHTMLParser.handle_picCsdSr"rrrrr	rF�szHTMLParser.unknown_declcCstjdtdd�t|�S)NzZThe unescape method is deprecated and will be removed in 3.5, use html.unescape() instead.r+)�
stacklevel)�warnings�warn�DeprecationWarningr)r�srrr	r�s
�zHTMLParser.unescape)r)�__name__�
__module__�__qualname__�__doc__rgr
rrrrrr!r#rrBrWrAr>r_r?rerfrurLrOr:rDrGrHrFrrrrr	r@s:		

3"()r�rryrZhtmlr�__all__rrrPrNrJr<rCrZZcommentcloser`ra�VERBOSErqrsrtrrrrrr	�<module>s.









��