o
    g}”eÂÉ ã                   @   s  d dl mZmZmZ d dlmZmZ d dlZddlm	Z	 ddlm
Z
 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  d dd„Z!d!dd„Z"dd„ Z#G dd„ de$ƒZ%ej&dd„ ƒZ'dd„ Z(		d"dd„Z)G dd„ de*ƒZ+dS )#é    )Úabsolute_importÚdivisionÚunicode_literals)Úwith_metaclassÚviewkeysNé   )Ú_inputstream)Ú
_tokenizer)Útreebuilders)ÚMarker)Ú_utils)ÚspaceCharactersÚasciiUpper2LowerÚspecialElementsÚheadingElementsÚcdataElementsÚrcdataElementsÚ
tokenTypesÚtagTokenTypesÚ
namespacesÚhtmlIntegrationPointElementsÚ"mathmlTextIntegrationPointElementsÚadjustForeignAttributesÚadjustMathMLAttributesÚadjustSVGAttributesÚEÚ_ReparseExceptionÚetreeTc                 K   s(   t  |¡}t||d�}|j| fi |¤ŽS )aò  Parse an HTML document as a string or file-like object into a tree

    :arg doc: the document to parse as a string or file-like object

    :arg treebuilder: the treebuilder to use when parsing

    :arg namespaceHTMLElements: whether or not to namespace HTML elements

    :returns: parsed tree

    Example:

    >>> from html5lib.html5parser import parse
    >>> parse('<html><body><p>This is a doc</p></body></html>')
    <Element u'{http://www.w3.org/1999/xhtml}html' at 0x7feac4909db0>

    ©ÚnamespaceHTMLElements)r
   ÚgetTreeBuilderÚ
HTMLParserÚparse)ÚdocÚtreebuilderr   ÚkwargsÚtbÚp© r(   úi/Users/abhinavbhinder/Documents/map/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/html5parser.pyr"      s   
r"   Údivc                 K   s,   t  |¡}t||d�}|j| fd|i|¤ŽS )a#  Parse an HTML fragment as a string or file-like object into a tree

    :arg doc: the fragment to parse as a string or file-like object

    :arg container: the container context to parse the fragment in

    :arg treebuilder: the treebuilder to use when parsing

    :arg namespaceHTMLElements: whether or not to namespace HTML elements

    :returns: parsed tree

    Example:

    >>> from html5lib.html5libparser import parseFragment
    >>> parseFragment('<b>this is a fragment</b>')
    <Element u'DOCUMENT_FRAGMENT' at 0x7feac484b090>

    r   Ú	container)r
   r    r!   ÚparseFragment)r#   r+   r$   r   r%   r&   r'   r(   r(   r)   r,   1   s   
r,   c                    s   G ‡ fdd„dt ƒ}|S )Nc                       s   e Zd Z‡ fdd„ZdS )z-method_decorator_metaclass.<locals>.Decoratedc                    s>   |  ¡ D ]\}}t|tjƒrˆ |ƒ}|||< qt | |||¡S ©N)ÚitemsÚ
isinstanceÚtypesÚFunctionTypeÚtypeÚ__new__)ÚmetaÚ	classnameÚbasesZ	classDictZattributeNameZ	attribute©Úfunctionr(   r)   r3   L   s
   
z5method_decorator_metaclass.<locals>.Decorated.__new__N)Ú__name__Ú
__module__Ú__qualname__r3   r(   r7   r(   r)   Ú	DecoratedK   s    r<   )r2   )r8   r<   r(   r7   r)   Úmethod_decorator_metaclassJ   s   r=   c                   @   sš   e Zd ZdZd'dd„Zd(dd	„Zd
d„ Zedd„ ƒZdd„ Z	dd„ Z
dd„ Zdd„ Z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S )*r!   z]HTML parser

    Generates a tree structure from a stream of (possibly malformed) HTML.

    NFTc                    sH   |ˆ _ |du rt d¡}||ƒˆ _g ˆ _‡ fdd„t|ƒ ¡ D ƒˆ _dS )aÑ  
        :arg tree: a treebuilder class controlling the type of tree that will be
            returned. Built in treebuilders can be accessed through
            html5lib.treebuilders.getTreeBuilder(treeType)

        :arg strict: raise an exception when a parse error is encountered

        :arg namespaceHTMLElements: whether or not to namespace HTML elements

        :arg debug: whether or not to enable debug mode which logs things

        Example:

        >>> from html5lib.html5parser import HTMLParser
        >>> parser = HTMLParser()                     # generates parser with etree builder
        >>> parser = HTMLParser('lxml', strict=True)  # generates parser with lxml builder which is strict

        Nr   c                    s   i | ]\}}||ˆ ˆ j ƒ“qS r(   )Útree)Ú.0ÚnameÚcls©Úselfr(   r)   Ú
<dictcomp>y   s    z'HTMLParser.__init__.<locals>.<dictcomp>)Ústrictr
   r    r>   ÚerrorsÚ	getPhasesr.   Úphases)rC   r>   rE   r   Údebugr(   rB   r)   Ú__init__]   s   



ÿzHTMLParser.__init__r*   c                 K   sf   || _ || _|| _tj|fd| i|¤Ž| _|  ¡  z|  ¡  W d S  ty2   |  ¡  |  ¡  Y d S w )NÚparser)	ÚinnerHTMLModer+   Ú	scriptingr	   ZHTMLTokenizerÚ	tokenizerÚresetÚmainLoopr   )rC   ÚstreamÚ	innerHTMLr+   rM   r%   r(   r(   r)   Ú_parse|   s   þzHTMLParser._parsec                 C   sÆ   | j  ¡  d| _g | _g | _d| _| jrO| j ¡ | _	| j	t
v r&| jj| j_n| j	tv r2| jj| j_n| j	dkr>| jj| j_n	 | jd | _| j ¡  |  ¡  n	d| _	| jd | _d | _d | _d| _d S )NFz	no quirksÚ	plaintextÚ
beforeHtmlÚinitialT)r>   rO   ÚfirstStartTagrF   ÚlogÚ
compatModerL   r+   ÚlowerrR   r   rN   ÚrcdataStateÚstater   ÚrawtextStateÚplaintextStaterH   ÚphaseÚinsertHtmlElementÚresetInsertionModeZ	lastPhaseZbeforeRCDataPhaseÚ
framesetOKrB   r(   r(   r)   rO   Š   s,   






zHTMLParser.resetc                 C   s   t | dƒsdS | jjjd jS )z‡Name of the character encoding that was used to decode the input stream, or
        :obj:`None` if that is not determined yet

        rN   Nr   )ÚhasattrrN   rQ   ÚcharEncodingr@   rB   r(   r(   r)   ÚdocumentEncoding¬   s   
zHTMLParser.documentEncodingc                 C   sF   |j dkr|jtd krd|jv o|jd  t¡dv S |j|j ftv S )Núannotation-xmlÚmathmlÚencoding)z	text/htmlzapplication/xhtml+xml)r@   Ú	namespacer   Ú
attributesÚ	translater   r   ©rC   Úelementr(   r(   r)   ÚisHTMLIntegrationPoint¶   s   
ÿ

ÿþÿz!HTMLParser.isHTMLIntegrationPointc                 C   s   |j |jftv S r-   )ri   r@   r   rl   r(   r(   r)   ÚisMathMLTextIntegrationPointÀ   ó   z'HTMLParser.isMathMLTextIntegrationPointc                 C   sR  t d }t d }t d }t d }t d }t d }t d }| jD ]å}d }	|}
|
d urë|
}	| jjr5| jjd nd }|r<|jnd }|rC|jnd }|
d	 }||kr\|  |
d
 |
 di ¡¡ d }
n‹t| jjƒdks£|| jj	ks£|  
|¡rƒ||kr}|d tddgƒvs£|||fv s£|td kr—|dkr—||kr—|d dks£|  |¡r§||||fv r§| j}n| jd }||kr¶| |
¡}
n1||krÀ| |
¡}
n'||krÊ| |
¡}
n||krÔ| |
¡}
n||krÞ| |
¡}
n	||krç| |
¡}
|
d us)||k�r|	d �r|	d �s|  dd|	d i¡ qd}g }|�r'| | j¡ | j ¡ }|�r"| j|v�s"J ‚|�sd S d S )NÚ
CharactersZSpaceCharactersÚStartTagÚEndTagÚCommentZDoctypeÚ
ParseErroréÿÿÿÿr2   ÚdataÚdatavarsr   r@   ZmglyphZ
malignmarkrg   rf   ÚsvgÚinForeignContentÚselfClosingÚselfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)r   rN   r>   ÚopenElementsri   r@   Ú
parseErrorÚgetÚlenÚdefaultNamespacero   Ú	frozensetr   rn   r_   rH   ÚprocessCharactersÚprocessSpaceCharactersÚprocessStartTagÚprocessEndTagÚprocessCommentÚprocessDoctypeÚappendÚ
processEOF)rC   ZCharactersTokenZSpaceCharactersTokenZStartTagTokenZEndTagTokenZCommentTokenZDoctypeTokenZParseErrorTokenÚtokenZ
prev_tokenÚ	new_tokenÚcurrentNodeZcurrentNodeNamespaceZcurrentNodeNamer2   r_   Z	reprocessrH   r(   r(   r)   rP   Ã   s�   

ÿþýü
û
úùø
	÷
öõ

Ù)ÿ
ÿ€
üzHTMLParser.mainLoopc                 O   s&   | j |ddg|¢R i |¤Ž | j ¡ S )aî  Parse a HTML document into a well-formed tree

        :arg stream: a file-like object or string containing the HTML to be parsed

            The optional encoding parameter must be a string that indicates
            the encoding.  If specified, that encoding will be used,
            regardless of any BOM or later declaration (such as in a meta
            element).

        :arg scripting: treat noscript elements as if JavaScript was turned on

        :returns: parsed tree

        Example:

        >>> from html5lib.html5parser import HTMLParser
        >>> parser = HTMLParser()
        >>> parser.parse('<html><body><p>This is a doc</p></body></html>')
        <Element u'{http://www.w3.org/1999/xhtml}html' at 0x7feac4909db0>

        FN)rS   r>   ZgetDocument©rC   rQ   Úargsr%   r(   r(   r)   r"     s   
zHTMLParser.parsec                 O   s$   | j |dg|¢R i |¤Ž | j ¡ S )aZ  Parse a HTML fragment into a well-formed tree fragment

        :arg container: name of the element we're setting the innerHTML
            property if set to None, default to 'div'

        :arg stream: a file-like object or string containing the HTML to be parsed

            The optional encoding parameter must be a string that indicates
            the encoding.  If specified, that encoding will be used,
            regardless of any BOM or later declaration (such as in a meta
            element)

        :arg scripting: treat noscript elements as if JavaScript was turned on

        :returns: parsed tree

        Example:

        >>> from html5lib.html5libparser import HTMLParser
        >>> parser = HTMLParser()
        >>> parser.parseFragment('<b>this is a fragment</b>')
        <Element u'DOCUMENT_FRAGMENT' at 0x7feac484b090>

        T)rS   r>   ZgetFragmentrŽ   r(   r(   r)   r,     s   
zHTMLParser.parseFragmentúXXX-undefined-errorc                 C   s@   |d u ri }| j  | jj ¡ ||f¡ | jrtt| | ƒ‚d S r-   )rF   r‰   rN   rQ   ÚpositionrE   ru   r   )rC   Ú	errorcoderx   r(   r(   r)   r~   ;  s   ÿzHTMLParser.parseErrorc                 C   ó   t |tƒ d S r-   )Úadjust_attributesr   ©rC   r‹   r(   r(   r)   r   C  ó   z!HTMLParser.adjustMathMLAttributesc                 C   r“   r-   )r”   r   r•   r(   r(   r)   r   F  r–   zHTMLParser.adjustSVGAttributesc                 C   r“   r-   )r”   ÚadjustForeignAttributesMapr•   r(   r(   r)   r   I  r–   z"HTMLParser.adjustForeignAttributesc                 C   s   | j  ¡  d S r-   )rK   r_   r•   r(   r(   r)   ÚreparseTokenNormalL  s   zHTMLParser.reparseTokenNormalc                 C   sÈ   d}ddddddddddd	d	d
ddœ}| j jd d d… D ]B}|j}d }|| j jd kr5| js0J ‚d}| j}|dv r>| js>J ‚|sH|j| j jkrHq||v rU| j||  } n
|r^| jd	 } nq|| _d S )NFÚinSelectÚinCellÚinRowÚinTableBodyÚ	inCaptionÚinColumnGroupÚinTableÚinBodyÚ
inFramesetÚ
beforeHead)ÚselectÚtdÚthÚtrÚtbodyÚtheadÚtfootÚcaptionÚcolgroupÚtableÚheadÚbodyÚframesetÚhtmlrv   r   T)r£   r«   r­   r°   )r>   r}   r@   rR   ri   r�   rH   r_   )rC   ÚlastZnewModesÚnodeZnodeNameZ	new_phaser(   r(   r)   ra   P  sF   ò


þ
zHTMLParser.resetInsertionModec                 C   sR   |dv sJ ‚| j  |¡ |dkr| jj| j_n| jj| j_| j| _| jd | _d S )N)ÚRAWTEXTÚRCDATAr³   Útext)	r>   ÚinsertElementrN   r]   r\   r[   r_   ÚoriginalPhaserH   )rC   r‹   ZcontentTyper(   r(   r)   ÚparseRCDataRawtext|  s   zHTMLParser.parseRCDataRawtext)NFTF)Fr*   F)r�   N)r9   r:   r;   Ú__doc__rJ   rS   rO   Úpropertyre   rn   ro   rP   r"   r,   r~   r   r   r   r˜   ra   r¸   r(   r(   r(   r)   r!   V   s&    

"
	
C
,r!   c                    sH  dd„ }dd„ }G dd„ dt || |ƒƒƒ‰G dd„ dˆƒ}G d	d
„ d
ˆƒ}G dd„ dˆƒ}G dd„ dˆƒ}G dd„ dˆƒ}G dd„ dˆƒ}G ‡ ‡fdd„dˆƒ‰ G dd„ dˆƒ}	G ‡fdd„dˆƒ}
G ‡fdd„dˆƒ‰G ‡fdd„dˆƒ}G ‡fdd„dˆƒ}G ‡fdd „d ˆƒ}G ‡fd!d"„d"ˆƒ}G ‡fd#d$„d$ˆƒ}G ‡fd%d&„d&ˆƒ}G d'd(„ d(ˆƒ}G ‡fd)d*„d*ˆƒ}G d+d,„ d,ˆƒ}G ‡fd-d.„d.ˆƒ}G ‡fd/d0„d0ˆƒ}G d1d2„ d2ˆƒ}G d3d4„ d4ˆƒ}i d5|“d6|“d7|“d8|“d9|“d:|“d;ˆ “d<|	“d=|
“d>ˆ“d?|“d@|“dA|“dB|“dC|“dD|“dE|“||||||dFœ¥S )GNc                    s$   dd„ t  ¡ D ƒ‰‡ ‡fdd„}|S )z4Logger that records which phase processes each tokenc                 S   s   i | ]\}}||“qS r(   r(   )r?   ÚkeyÚvaluer(   r(   r)   rD   �  s    z*getPhases.<locals>.log.<locals>.<dictcomp>c                    s¢   ˆ j  d¡rFt|ƒdkrF|d }dˆ|d  i}|d tv r$|d |d< | jj | jjjj | jj	j
j | j
j ˆ j |f¡ ˆ | g|¢R i |¤ŽS ˆ | g|¢R i |¤ŽS )NÚprocessr   r2   r@   )r9   Ú
startswithr€   r   rK   rX   r‰   rN   r\   r_   Ú	__class__)rC   r�   r%   r‹   Úinfo©r8   Z
type_namesr(   r)   Úwrapped’  s   
üz'getPhases.<locals>.log.<locals>.wrapped)r   r.   )r8   rÂ   r(   rÁ   r)   rX   Ž  s   zgetPhases.<locals>.logc                 S   s   | rt |ƒS tS r-   )r=   r2   )Zuse_metaclassZmetaclass_funcr(   r(   r)   ÚgetMetaclass£  s   zgetPhases.<locals>.getMetaclassc                   @   s\   e Zd ZdZdZ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d„ ZdS )zgetPhases.<locals>.PhasezNBase class for helper object that implements each phase of processing
        )rK   r>   Z__startTagCacheZ__endTagCachec                 S   s   || _ || _i | _i | _d S r-   )rK   r>   Ú_Phase__startTagCacheÚ_Phase__endTagCache)rC   rK   r>   r(   r(   r)   rJ   ¯  s   
z!getPhases.<locals>.Phase.__init__c                 S   s   t ‚r-   )ÚNotImplementedErrorrB   r(   r(   r)   rŠ   µ  ó   z#getPhases.<locals>.Phase.processEOFc                 S   ó   | j  || j jd ¡ d S )Nrv   ©r>   ÚinsertCommentr}   r•   r(   r(   r)   r‡   ¸  ó   z'getPhases.<locals>.Phase.processCommentc                 S   ó   | j  d¡ d S )Nzunexpected-doctype©rK   r~   r•   r(   r(   r)   rˆ   ½  rp   z'getPhases.<locals>.Phase.processDoctypec                 S   ó   | j  |d ¡ d S ©Nrw   ©r>   Ú
insertTextr•   r(   r(   r)   rƒ   À  ó   z*getPhases.<locals>.Phase.processCharactersc                 S   rÎ   rÏ   rÐ   r•   r(   r(   r)   r„   Ã  rÒ   z/getPhases.<locals>.Phase.processSpaceCharactersc                 S   ó†   |d }|| j v r| j | }||ƒS | j|  }| j |< t| j ƒt| jƒd kr?| j  tt| j ƒƒ¡ t| j ƒt| jƒd ks(||ƒS ©Nr@   gš™™™™™ñ?)rÄ   ÚstartTagHandlerr€   ÚpopÚnextÚiter©rC   r‹   r@   Úfuncr(   r(   r)   r…   Æ  ó   

ûþz(getPhases.<locals>.Phase.processStartTagc                 S   sf   | j js|d dkr| j  d¡ |d  ¡ D ]\}}|| jjd jvr,|| jjd j|< qd| j _d S )Nr@   r°   znon-html-rootrw   r   F)rK   rW   r~   r.   r>   r}   rj   ©rC   r‹   Úattrr¼   r(   r(   r)   ÚstartTagHtml×  s   €z%getPhases.<locals>.Phase.startTagHtmlc                 S   rÓ   rÔ   )rÅ   ÚendTagHandlerr€   rÖ   r×   rØ   rÙ   r(   r(   r)   r†   á  rÛ   z&getPhases.<locals>.Phase.processEndTagN)r9   r:   r;   r¹   Ú	__slots__rJ   rŠ   r‡   rˆ   rƒ   r„   r…   rÞ   r†   r(   r(   r(   r)   ÚPhaseª  s    
rá   c                   @   sR   e Zd Zeƒ Z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S )zgetPhases.<locals>.InitialPhasec                 S   ó   d S r-   r(   r•   r(   r(   r)   r„   õ  rÇ   z6getPhases.<locals>.InitialPhase.processSpaceCharactersc                 S   ó   | j  || j j¡ d S r-   ©r>   rÊ   Údocumentr•   r(   r(   r)   r‡   ø  ó   z.getPhases.<locals>.InitialPhase.processCommentc                 S   sü   |d }|d }|d }|d }|dks |d us |d ur&|dkr&| j  d¡ |d u r,d}| j |¡ |dkr;| t¡}|r]|d dks]| d	¡s]|d
v s]| d¡rU|d u s]|rb| ¡ dkrbd| j _n| d¡sp| d¡rt|d urtd| j _| j j	d | j _
d S )Nr@   ÚpublicIdÚsystemIdÚcorrectr°   zabout:legacy-compatzunknown-doctypeÚ )7z*+//silmaril//dtd html pro v0r11 19970101//z4-//advasoft ltd//dtd html 3.0 aswedit + extensions//z*-//as//dtd html 3.0 aswedit + extensions//z-//ietf//dtd html 2.0 level 1//z-//ietf//dtd html 2.0 level 2//z&-//ietf//dtd html 2.0 strict level 1//z&-//ietf//dtd html 2.0 strict level 2//z-//ietf//dtd html 2.0 strict//z-//ietf//dtd html 2.0//z-//ietf//dtd html 2.1e//z-//ietf//dtd html 3.0//z-//ietf//dtd html 3.2 final//z-//ietf//dtd html 3.2//z-//ietf//dtd html 3//z-//ietf//dtd html level 0//z-//ietf//dtd html level 1//z-//ietf//dtd html level 2//z-//ietf//dtd html level 3//z"-//ietf//dtd html strict level 0//z"-//ietf//dtd html strict level 1//z"-//ietf//dtd html strict level 2//z"-//ietf//dtd html strict level 3//z-//ietf//dtd html strict//z-//ietf//dtd html//z(-//metrius//dtd metrius presentational//z5-//microsoft//dtd internet explorer 2.0 html strict//z.-//microsoft//dtd internet explorer 2.0 html//z0-//microsoft//dtd internet explorer 2.0 tables//z5-//microsoft//dtd internet explorer 3.0 html strict//z.-//microsoft//dtd internet explorer 3.0 html//z0-//microsoft//dtd internet explorer 3.0 tables//z#-//netscape comm. corp.//dtd html//z*-//netscape comm. corp.//dtd strict html//z*-//o'reilly and associates//dtd html 2.0//z3-//o'reilly and associates//dtd html extended 1.0//z;-//o'reilly and associates//dtd html extended relaxed 1.0//zN-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//zE-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//z$-//spyglass//dtd html 2.0 extended//z+-//sq//dtd html 2.0 hotmetal + extensions//z--//sun microsystems corp.//dtd hotjava html//z4-//sun microsystems corp.//dtd hotjava strict html//z-//w3c//dtd html 3 1995-03-24//z-//w3c//dtd html 3.2 draft//z-//w3c//dtd html 3.2 final//z-//w3c//dtd html 3.2//z-//w3c//dtd html 3.2s draft//z-//w3c//dtd html 4.0 frameset//z#-//w3c//dtd html 4.0 transitional//z(-//w3c//dtd html experimental 19960712//z&-//w3c//dtd html experimental 970421//z-//w3c//dtd w3 html//z-//w3o//dtd w3 html 3.0//z#-//webtechs//dtd mozilla html 2.0//z-//webtechs//dtd mozilla html//)z$-//w3o//dtd w3 html strict 3.0//en//z"-/w3c/dtd html 4.0 transitional/enr°   )z -//w3c//dtd html 4.01 frameset//z$-//w3c//dtd html 4.01 transitional//z:http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtdÚquirks)z -//w3c//dtd xhtml 1.0 frameset//z$-//w3c//dtd xhtml 1.0 transitional//zlimited quirksrU   )rK   r~   r>   ZinsertDoctyperk   r   r¾   rZ   rY   rH   r_   )rC   r‹   r@   rç   rè   ré   r(   r(   r)   rˆ   û  sX   ÿÿ
ÿÿ9Ç<ÿÄ?Á@À
@À
Aÿÿýúz.getPhases.<locals>.InitialPhase.processDoctypec                 S   s   d| j _| j jd | j _d S )Nrë   rU   )rK   rY   rH   r_   rB   r(   r(   r)   ÚanythingElseZ  s   z,getPhases.<locals>.InitialPhase.anythingElsec                 S   ó   | j  d¡ |  ¡  |S )Nzexpected-doctype-but-got-chars©rK   r~   rì   r•   r(   r(   r)   rƒ   ^  ó   z1getPhases.<locals>.InitialPhase.processCharactersc                 S   ó"   | j  dd|d i¡ |  ¡  |S )Nz"expected-doctype-but-got-start-tagr@   rî   r•   r(   r(   r)   r…   c  ó
   
ÿz/getPhases.<locals>.InitialPhase.processStartTagc                 S   rð   )Nz expected-doctype-but-got-end-tagr@   rî   r•   r(   r(   r)   r†   i  rñ   z-getPhases.<locals>.InitialPhase.processEndTagc                 S   ó   | j  d¡ |  ¡  dS )Nzexpected-doctype-but-got-eofTrî   rB   r(   r(   r)   rŠ   o  rï   z*getPhases.<locals>.InitialPhase.processEOFN)r9   r:   r;   Útuplerà   r„   r‡   rˆ   rì   rƒ   r…   r†   rŠ   r(   r(   r(   r)   ÚInitialPhaseò  s    _rô   c                   @   sJ   e Zd Zeƒ Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ ZdS )z"getPhases.<locals>.BeforeHtmlPhasec                 S   s&   | j  tddƒ¡ | jjd | j_d S )Nr°   rr   r¢   )r>   Z
insertRootÚimpliedTagTokenrK   rH   r_   rB   r(   r(   r)   r`   x  s   z4getPhases.<locals>.BeforeHtmlPhase.insertHtmlElementc                 S   ó   |   ¡  dS ©NT©r`   rB   r(   r(   r)   rŠ   }  ó   z-getPhases.<locals>.BeforeHtmlPhase.processEOFc                 S   rã   r-   rä   r•   r(   r(   r)   r‡   �  ræ   z1getPhases.<locals>.BeforeHtmlPhase.processCommentc                 S   râ   r-   r(   r•   r(   r(   r)   r„   „  rÇ   z9getPhases.<locals>.BeforeHtmlPhase.processSpaceCharactersc                 S   ó   |   ¡  |S r-   rø   r•   r(   r(   r)   rƒ   ‡  rù   z4getPhases.<locals>.BeforeHtmlPhase.processCharactersc                 S   s    |d dkr
d| j _|  ¡  |S )Nr@   r°   T)rK   rW   r`   r•   r(   r(   r)   r…   ‹  s   z2getPhases.<locals>.BeforeHtmlPhase.processStartTagc                 S   s2   |d dvr| j  dd|d i¡ d S |  ¡  |S )Nr@   ©r­   r®   r°   Úbrzunexpected-end-tag-before-html)rK   r~   r`   r•   r(   r(   r)   r†   ‘  s   
ÿz0getPhases.<locals>.BeforeHtmlPhase.processEndTagN)r9   r:   r;   ró   rà   r`   rŠ   r‡   r„   rƒ   r…   r†   r(   r(   r(   r)   ÚBeforeHtmlPhaset  s    rý   c                   @   s„   e Zd Zeƒ Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Ze defde	fg¡Ze
e_e defg¡Zee_dS )z"getPhases.<locals>.BeforeHeadPhasec                 S   s   |   tddƒ¡ dS )Nr­   rr   T©ÚstartTagHeadrõ   rB   r(   r(   r)   rŠ   œ  ó   z-getPhases.<locals>.BeforeHeadPhase.processEOFc                 S   râ   r-   r(   r•   r(   r(   r)   r„      rÇ   z9getPhases.<locals>.BeforeHeadPhase.processSpaceCharactersc                 S   ó   |   tddƒ¡ |S ©Nr­   rr   rþ   r•   r(   r(   r)   rƒ   £  r   z4getPhases.<locals>.BeforeHeadPhase.processCharactersc                 S   ó   | j jd  |¡S ©Nr    ©rK   rH   r…   r•   r(   r(   r)   rÞ   §  ó   z/getPhases.<locals>.BeforeHeadPhase.startTagHtmlc                 S   s0   | j  |¡ | j jd | j _| jjd | j_d S )Nrv   ÚinHead)r>   r¶   r}   ÚheadPointerrK   rH   r_   r•   r(   r(   r)   rÿ   ª  s   z/getPhases.<locals>.BeforeHeadPhase.startTagHeadc                 S   r  r  rþ   r•   r(   r(   r)   ÚstartTagOther¯  r   z0getPhases.<locals>.BeforeHeadPhase.startTagOtherc                 S   r  r  rþ   r•   r(   r(   r)   ÚendTagImplyHead³  r   z2getPhases.<locals>.BeforeHeadPhase.endTagImplyHeadc                 S   ó   | j  dd|d i¡ d S )Nzend-tag-after-implied-rootr@   rÍ   r•   r(   r(   r)   ÚendTagOther·  ó   
ÿz.getPhases.<locals>.BeforeHeadPhase.endTagOtherr°   r­   rû   N)r9   r:   r;   ró   rà   rŠ   r„   rƒ   rÞ   rÿ   r	  r
  r  r   ÚMethodDispatcherrÕ   Údefaultrß   r(   r(   r(   r)   ÚBeforeHeadPhase™  s&    þÿ
r  c                   @   sæ   e Zd Zeƒ Z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d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Ze defd efd!efd"efd#efd$e	fd%e
fd&efg¡Zee_e d&efd'efg¡Zee_d(S ))zgetPhases.<locals>.InHeadPhasec                 S   rö   r÷   ©rì   rB   r(   r(   r)   rŠ   Ê  rù   z)getPhases.<locals>.InHeadPhase.processEOFc                 S   rú   r-   r  r•   r(   r(   r)   rƒ   Î  rù   z0getPhases.<locals>.InHeadPhase.processCharactersc                 S   r  r  r  r•   r(   r(   r)   rÞ   Ò  r  z+getPhases.<locals>.InHeadPhase.startTagHtmlc                 S   rÌ   )Nz!two-heads-are-not-better-than-onerÍ   r•   r(   r(   r)   rÿ   Õ  rp   z+getPhases.<locals>.InHeadPhase.startTagHeadc                 S   ó$   | j  |¡ | j j ¡  d|d< d S ©NTr|   ©r>   r¶   r}   rÖ   r•   r(   r(   r)   ÚstartTagBaseLinkCommandØ  ó   z6getPhases.<locals>.InHeadPhase.startTagBaseLinkCommandc                 S   sÆ   | j  |¡ | j j ¡  d|d< |d }| jjjjd dkr[d|v r.| jjj |d ¡ d S d|v r]d|v r_|d  	¡ d	krat
 |d  d
¡¡}t
 |¡}| ¡ }| jjj |¡ d S d S d S d S d S )NTr|   rw   r   Z	tentativeÚcharsetÚcontentz
http-equivzcontent-typezutf-8)r>   r¶   r}   rÖ   rK   rN   rQ   rd   ZchangeEncodingrZ   r   ZEncodingBytesÚencodeZContentAttrParserr"   )rC   r‹   rj   rw   rK   Úcodecr(   r(   r)   ÚstartTagMetaÝ  s$   ÿþ
óz+getPhases.<locals>.InHeadPhase.startTagMetac                 S   ó   | j  |d¡ d S )Nr´   ©rK   r¸   r•   r(   r(   r)   ÚstartTagTitleò  r  z,getPhases.<locals>.InHeadPhase.startTagTitlec                 S   r  )Nr³   r  r•   r(   r(   r)   ÚstartTagNoFramesStyleõ  ó   z4getPhases.<locals>.InHeadPhase.startTagNoFramesStylec                 S   s:   | j jr| j  |d¡ d S | j |¡ | j jd | j _d S )Nr³   ÚinHeadNoscript)rK   rM   r¸   r>   r¶   rH   r_   r•   r(   r(   r)   ÚstartTagNoscriptù  s   z/getPhases.<locals>.InHeadPhase.startTagNoscriptc                 S   s<   | j  |¡ | jjj| jj_| jj| j_| jjd | j_d S )Nrµ   )	r>   r¶   rK   rN   ZscriptDataStater\   r_   r·   rH   r•   r(   r(   r)   ÚstartTagScript   s   z-getPhases.<locals>.InHeadPhase.startTagScriptc                 S   rú   r-   r  r•   r(   r(   r)   r	    rù   z,getPhases.<locals>.InHeadPhase.startTagOtherc                 S   ó:   | j jj ¡ }|jdksJ d|j ƒ‚| j jd | j _d S )Nr­   zExpected head got %sÚ	afterHead©rK   r>   r}   rÖ   r@   rH   r_   ©rC   r‹   r²   r(   r(   r)   Ú
endTagHead
  ó   z)getPhases.<locals>.InHeadPhase.endTagHeadc                 S   rú   r-   r  r•   r(   r(   r)   ÚendTagHtmlBodyBr  rù   z/getPhases.<locals>.InHeadPhase.endTagHtmlBodyBrc                 S   r  ©Núunexpected-end-tagr@   rÍ   r•   r(   r(   r)   r    ó   z*getPhases.<locals>.InHeadPhase.endTagOtherc                 S   ó   |   tdƒ¡ d S )Nr­   )r(  rõ   rB   r(   r(   r)   rì     r  z+getPhases.<locals>.InHeadPhase.anythingElser°   Útitle)ÚnoframesÚstyleÚnoscriptÚscript)ÚbaseÚbasefontÚbgsoundÚcommandÚlinkr4   r­   )rü   r°   r®   N)r9   r:   r;   ró   rà   rŠ   rƒ   rÞ   rÿ   r  r  r  r  r"  r#  r	  r(  r*  r  rì   r   r  rÕ   r  rß   r(   r(   r(   r)   ÚInHeadPhaseÆ  sF    ÿ÷þ
r9  c                   @   s°   e Zd Zeƒ Z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d„ Zdd„ Zdd„ Zdd„ Ze de	fde
fdefg¡Zee_e defdefg¡Zee_dS )z&getPhases.<locals>.InHeadNoscriptPhasec                 S   rò   )Nzeof-in-head-noscriptTrî   rB   r(   r(   r)   rŠ   /  rï   z1getPhases.<locals>.InHeadNoscriptPhase.processEOFc                 S   r  ©Nr  )rK   rH   r‡   r•   r(   r(   r)   r‡   4  r  z5getPhases.<locals>.InHeadNoscriptPhase.processCommentc                 S   rí   )Nzchar-in-head-noscriptrî   r•   r(   r(   r)   rƒ   7  rï   z8getPhases.<locals>.InHeadNoscriptPhase.processCharactersc                 S   r  r:  ©rK   rH   r„   r•   r(   r(   r)   r„   <  r  z=getPhases.<locals>.InHeadNoscriptPhase.processSpaceCharactersc                 S   r  r  r  r•   r(   r(   r)   rÞ   ?  r  z3getPhases.<locals>.InHeadNoscriptPhase.startTagHtmlc                 S   r  r:  r  r•   r(   r(   r)   r  B  r  z>getPhases.<locals>.InHeadNoscriptPhase.startTagBaseLinkCommandc                 S   r  ©Núunexpected-start-tagr@   rÍ   r•   r(   r(   r)   ÚstartTagHeadNoscriptE  r-  z;getPhases.<locals>.InHeadNoscriptPhase.startTagHeadNoscriptc                 S   rð   ©Nzunexpected-inhead-noscript-tagr@   rî   r•   r(   r(   r)   r	  H  ó   z4getPhases.<locals>.InHeadNoscriptPhase.startTagOtherc                 S   r$  )Nr2  zExpected noscript got %sr  r&  r'  r(   r(   r)   ÚendTagNoscriptM  r)  z5getPhases.<locals>.InHeadNoscriptPhase.endTagNoscriptc                 S   rð   r?  rî   r•   r(   r(   r)   ÚendTagBrR  r@  z/getPhases.<locals>.InHeadNoscriptPhase.endTagBrc                 S   r  r+  rÍ   r•   r(   r(   r)   r  W  r-  z2getPhases.<locals>.InHeadNoscriptPhase.endTagOtherc                 S   r.  )Nr2  )rA  rõ   rB   r(   r(   r)   rì   Z  r   z3getPhases.<locals>.InHeadNoscriptPhase.anythingElser°   )r5  r6  r8  r4   r0  r1  )r­   r2  r2  rü   N)r9   r:   r;   ró   rà   rŠ   r‡   rƒ   r„   rÞ   r  r>  r	  rA  rB  r  rì   r   r  rÕ   r  rß   r(   r(   r(   r)   ÚInHeadNoscriptPhase,  s2    ýþ
rC  c                   @   s®   e Zd Zeƒ Z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d„ Zdd„ Zdd„ Ze defdefde	fde
fdefg¡Zee_e defg¡Zee_dS )z!getPhases.<locals>.AfterHeadPhasec                 S   rö   r÷   r  rB   r(   r(   r)   rŠ   n  rù   z,getPhases.<locals>.AfterHeadPhase.processEOFc                 S   rú   r-   r  r•   r(   r(   r)   rƒ   r  rù   z3getPhases.<locals>.AfterHeadPhase.processCharactersc                 S   r  r  r  r•   r(   r(   r)   rÞ   v  r  z.getPhases.<locals>.AfterHeadPhase.startTagHtmlc                 S   s(   d| j _| j |¡ | j jd | j _d S )NFr    )rK   rb   r>   r¶   rH   r_   r•   r(   r(   r)   ÚstartTagBodyy  ó   z.getPhases.<locals>.AfterHeadPhase.startTagBodyc                 S   s    | j  |¡ | jjd | j_d S )Nr¡   )r>   r¶   rK   rH   r_   r•   r(   r(   r)   ÚstartTagFrameset~  s   z2getPhases.<locals>.AfterHeadPhase.startTagFramesetc                 S   st   | j  dd|d i¡ | jj | jj¡ | j jd  |¡ | jjd d d… D ]}|jdkr7| jj 	|¡  d S q&d S )Nz#unexpected-start-tag-out-of-my-headr@   r  rv   r­   )
rK   r~   r>   r}   r‰   r  rH   r…   r@   Úremover'  r(   r(   r)   ÚstartTagFromHead‚  s   
ÿ
þÿz2getPhases.<locals>.AfterHeadPhase.startTagFromHeadc                 S   r  r<  rÍ   r•   r(   r(   r)   rÿ   Œ  r-  z.getPhases.<locals>.AfterHeadPhase.startTagHeadc                 S   rú   r-   r  r•   r(   r(   r)   r	  �  rù   z/getPhases.<locals>.AfterHeadPhase.startTagOtherc                 S   rú   r-   r  r•   r(   r(   r)   r*  “  rù   z2getPhases.<locals>.AfterHeadPhase.endTagHtmlBodyBrc                 S   r  r+  rÍ   r•   r(   r(   r)   r  —  r-  z-getPhases.<locals>.AfterHeadPhase.endTagOtherc                 S   s.   | j  tddƒ¡ | jjd | j_d| j_d S )Nr®   rr   r    T)r>   r¶   rõ   rK   rH   r_   rb   rB   r(   r(   r)   rì   š  s   z.getPhases.<locals>.AfterHeadPhase.anythingElser°   r®   r¯   )	r4  r5  r6  r8  r4   r0  r3  r1  r/  r­   )r®   r°   rü   N)r9   r:   r;   ró   rà   rŠ   rƒ   rÞ   rD  rF  rH  rÿ   r	  r*  r  rì   r   r  rÕ   r  rß   r(   r(   r(   r)   ÚAfterHeadPhasek  s6    
þù	ÿ
rI  c                       s  e Zd ZdZ‡‡ f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d„ Z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$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Z d<d=„ Z!d>d?„ Z"d@dA„ Z#dBdC„ Z$dDdE„ Z%dFdG„ Z&dHdI„ Z'dJdK„ Z(dLdM„ Z)dNdO„ Z*dPdQ„ Z+dRdS„ Z,dTdU„ Z-dVdW„ Z.dXdY„ Z/dZd[„ Z0d\d]„ Z1d^d_„ Z2d`da„ Z3dbdc„ Z4ddde„ Z5dfdg„ Z6e7 8g dh”j9f‘dief‘djef‘dkef‘dlef‘e:ef‘dmef‘dnef‘doef‘dpef‘dqef‘dref‘dsef‘dtef‘duef‘dvef‘dwef‘dxef‘dyef‘dzef‘d{ef‘d|ef‘d}e f‘d~e!f‘de"f‘d€e#f‘d�e$f‘d‚e&f‘dƒe'f‘d„e%f‘d…e(f‘d†e)f‘d‡e*f‘¡Z;e+e;_<e7 8dje-fdhe.fdˆe/fdne0fd‰e,fdŠe1fe:e2fd‹e3fdue4fdŒe5fg
¡Z=e6e=_<‡  Z>S )�zgetPhases.<locals>.InBodyPhase)r„   c                    s"   t ˆ | ƒj|i |¤Ž | j| _d S r-   )ÚsuperrJ   ÚprocessSpaceCharactersNonPrer„   ©rC   r�   r%   )ÚInBodyPhaser¿   r(   r)   rJ   ²  s   z'getPhases.<locals>.InBodyPhase.__init__c                 S   s$   |j |j ko|j|jko|j|jkS r-   )r@   ri   rj   )rC   Znode1Znode2r(   r(   r)   ÚisMatchingFormattingElement·  s
   
ÿ
þz:getPhases.<locals>.InBodyPhase.isMatchingFormattingElementc                 S   s–   | j  |¡ | j jd }g }| j jd d d… D ]}|tu r n|  ||¡r*| |¡ qt|ƒdks3J ‚t|ƒdkrB| j j |d ¡ | j j |¡ d S )Nrv   é   )	r>   r¶   r}   ÚactiveFormattingElementsr   rN  r‰   r€   rG  )rC   r‹   rm   ZmatchingElementsr²   r(   r(   r)   ÚaddFormattingElement½  s   
€z3getPhases.<locals>.InBodyPhase.addFormattingElementc                 S   s@   t dƒ}| jjd d d… D ]}|j|vr| j d¡  d S qd S )N)ÚddÚdtÚlir'   r§   r¤   r©   r¥   r¨   r¦   r®   r°   rv   z expected-closing-tag-but-got-eof)r‚   r>   r}   r@   rK   r~   )rC   Zallowed_elementsr²   r(   r(   r)   rŠ   Î  s   
þÿz)getPhases.<locals>.InBodyPhase.processEOFc                 S   sj   |d }| j | _| d¡r$| jjd jdv r$| jjd  ¡ s$|dd … }|r3| j ¡  | j |¡ d S d S )Nrw   Ú
rv   )ÚpreÚlistingÚtextarear   )	rK  r„   r¾   r>   r}   r@   Z
hasContentÚ#reconstructActiveFormattingElementsrÑ   )rC   r‹   rw   r(   r(   r)   Ú!processSpaceCharactersDropNewlineØ  s   
ÿþ
þz@getPhases.<locals>.InBodyPhase.processSpaceCharactersDropNewlinec                 S   s\   |d dkrd S | j  ¡  | j  |d ¡ | jjr*tdd„ |d D ƒƒr,d| j_d S d S d S )Nrw   ú c                 S   ó   g | ]}|t v‘qS r(   ©r   ©r?   Úcharr(   r(   r)   Ú
<listcomp>í  s    ÿzDgetPhases.<locals>.InBodyPhase.processCharacters.<locals>.<listcomp>F)r>   rY  rÑ   rK   rb   Úanyr•   r(   r(   r)   rƒ   å  s   
ÿÿýz0getPhases.<locals>.InBodyPhase.processCharactersc                 S   s   | j  ¡  | j  |d ¡ d S rÏ   )r>   rY  rÑ   r•   r(   r(   r)   rK  ñ  s   
z;getPhases.<locals>.InBodyPhase.processSpaceCharactersNonPrec                 S   r  r:  r  r•   r(   r(   r)   ÚstartTagProcessInHeadõ  r  z4getPhases.<locals>.InBodyPhase.startTagProcessInHeadc                 S   sŠ   | j  dddi¡ t| jjƒdks| jjd jdkr"| j js J ‚d S d| j _|d  ¡ D ]\}}|| jjd j	vrB|| jjd j	|< q,d S )Nr=  r@   r®   r   Frw   )
rK   r~   r€   r>   r}   r@   rR   rb   r.   rj   rÜ   r(   r(   r)   rD  ø  s   ÿ€þz+getPhases.<locals>.InBodyPhase.startTagBodyc                 S   sÊ   | j  dddi¡ t| jjƒdks| jjd jdkr"| j js J ‚d S | j js(d S | jjd jr=| jjd j 	| jjd ¡ | jjd jdkrU| jj 
¡  | jjd jdksF| j |¡ | j jd | j _d S )	Nr=  r@   r¯   r   r®   rv   r°   r¡   )rK   r~   r€   r>   r}   r@   rR   rb   ÚparentÚremoveChildrÖ   r¶   rH   r_   r•   r(   r(   r)   rF    s   "ÿz/getPhases.<locals>.InBodyPhase.startTagFramesetc                 S   s.   | j jddd�r|  tdƒ¡ | j  |¡ d S ©Nr'   Úbutton©Úvariant)r>   ÚelementInScopeÚendTagPrõ   r¶   r•   r(   r(   r)   ÚstartTagCloseP  s   z-getPhases.<locals>.InBodyPhase.startTagClosePc                 S   s>   | j jddd�r|  tdƒ¡ | j  |¡ d| j_| j| _d S )Nr'   rf  rg  F)	r>   ri  rj  rõ   r¶   rK   rb   rZ  r„   r•   r(   r(   r)   ÚstartTagPreListing  s
   z1getPhases.<locals>.InBodyPhase.startTagPreListingc                 S   s\   | j jr| j dddi¡ d S | j jddd�r|  tdƒ¡ | j  |¡ | j jd | j _d S )Nr=  r@   Úformr'   rf  rg  rv   )	r>   ÚformPointerrK   r~   ri  rj  rõ   r¶   r}   r•   r(   r(   r)   ÚstartTagForm  s   z+getPhases.<locals>.InBodyPhase.startTagFormc                 S   s¬   d| j _dgddgddgdœ}||d  }t| jjƒD ] }|j|v r/| j j t|jdƒ¡  n|j	t
v r;|jdvr; nq| jjd	d
d�rN| j j td	dƒ¡ | j |¡ d S )NFrT  rS  rR  )rT  rS  rR  r@   rs   )Úaddressr*   r'   r'   rf  rg  )rK   rb   Úreversedr>   r}   r@   r_   r†   rõ   Ú	nameTupler   ri  r¶   )rC   r‹   ZstopNamesMapZ	stopNamesr²   r(   r(   r)   ÚstartTagListItem&  s,   þ

ÿ
ÿ€ÿz/getPhases.<locals>.InBodyPhase.startTagListItemc                 S   s>   | j jddd�r|  tdƒ¡ | j  |¡ | jjj| jj_d S re  )	r>   ri  rj  rõ   r¶   rK   rN   r^   r\   r•   r(   r(   r)   ÚstartTagPlaintext<  s   z0getPhases.<locals>.InBodyPhase.startTagPlaintextc                 S   sb   | j jddd�r|  tdƒ¡ | j jd jtv r)| j dd|d i¡ | j j 	¡  | j  
|¡ d S )Nr'   rf  rg  rv   r=  r@   )r>   ri  rj  rõ   r}   r@   r   rK   r~   rÖ   r¶   r•   r(   r(   r)   ÚstartTagHeadingB  s   z.getPhases.<locals>.InBodyPhase.startTagHeadingc                 S   s~   | j  d¡}|r3| j ddddœ¡ |  tdƒ¡ || j jv r&| j j |¡ || j jv r3| j j |¡ | j  	¡  |  
|¡ d S )NÚaú$unexpected-start-tag-implies-end-tag©Z	startNameZendName)r>   Ú!elementInActiveFormattingElementsrK   r~   ÚendTagFormattingrõ   r}   rG  rP  rY  rQ  )rC   r‹   ZafeAElementr(   r(   r)   Ú	startTagAJ  s   ÿ
z(getPhases.<locals>.InBodyPhase.startTagAc                 S   s   | j  ¡  |  |¡ d S r-   )r>   rY  rQ  r•   r(   r(   r)   ÚstartTagFormattingW  s   
z1getPhases.<locals>.InBodyPhase.startTagFormattingc                 S   sP   | j  ¡  | j  d¡r!| j ddddœ¡ |  tdƒ¡ | j  ¡  |  |¡ d S )NÚnobrrw  rx  )r>   rY  ri  rK   r~   r†   rõ   rQ  r•   r(   r(   r)   ÚstartTagNobr[  s   
ÿ
z+getPhases.<locals>.InBodyPhase.startTagNobrc                 S   sT   | j  d¡r| j ddddœ¡ |  tdƒ¡ |S | j  ¡  | j  |¡ d| j_d S )Nrf  rw  rx  F)	r>   ri  rK   r~   r†   rõ   rY  r¶   rb   r•   r(   r(   r)   ÚstartTagButtone  s   ÿ
z-getPhases.<locals>.InBodyPhase.startTagButtonc                 S   s0   | j  ¡  | j  |¡ | j j t¡ d| j_d S ©NF)r>   rY  r¶   rP  r‰   r   rK   rb   r•   r(   r(   r)   ÚstartTagAppletMarqueeObjectp  s   
z:getPhases.<locals>.InBodyPhase.startTagAppletMarqueeObjectc                 S   sB   | j jddd�r|  tdƒ¡ | j  ¡  d| j_| j |d¡ d S )Nr'   rf  rg  Fr³   )r>   ri  rj  rõ   rY  rK   rb   r¸   r•   r(   r(   r)   ÚstartTagXmpv  s
   
z*getPhases.<locals>.InBodyPhase.startTagXmpc                 S   sR   | j jdkr| jjddd�r|  tdƒ¡ | j |¡ d| j _| j jd | j _	d S )Nrë   r'   rf  rg  FrŸ   )
rK   rY   r>   ri  r†   rõ   r¶   rb   rH   r_   r•   r(   r(   r)   ÚstartTagTable}  s   z,getPhases.<locals>.InBodyPhase.startTagTablec                 S   s6   | j  ¡  | j  |¡ | j j ¡  d|d< d| j_d S )NTr|   F)r>   rY  r¶   r}   rÖ   rK   rb   r•   r(   r(   r)   ÚstartTagVoidFormatting…  s
   
z5getPhases.<locals>.InBodyPhase.startTagVoidFormattingc                 S   sH   | j j}|  |¡ d|d v r |d d  t¡dkr"|| j _d S d S d S )Nr2   rw   Úhidden)rK   rb   r„  rk   r   )rC   r‹   rb   r(   r(   r)   ÚstartTagInputŒ  s   
ÿýz,getPhases.<locals>.InBodyPhase.startTagInputc                 S   r  r  r  r•   r(   r(   r)   ÚstartTagParamSource”  r  z2getPhases.<locals>.InBodyPhase.startTagParamSourcec                 S   sJ   | j jddd�r|  tdƒ¡ | j  |¡ | j j ¡  d|d< d| j_d S )Nr'   rf  rg  Tr|   F)	r>   ri  rj  rõ   r¶   r}   rÖ   rK   rb   r•   r(   r(   r)   Ú
startTagHr™  s   z)getPhases.<locals>.InBodyPhase.startTagHrc                 S   s6   | j  ddddœ¡ |  tdd|d |d d�¡ d S )	Nzunexpected-start-tag-treated-asÚimageÚimg©ZoriginalNameZnewNamerr   rw   r{   ©rj   r{   )rK   r~   r…   rõ   r•   r(   r(   r)   ÚstartTagImage¡  s   ÿ
þz,getPhases.<locals>.InBodyPhase.startTagImagec                 S   s  | j  dddi¡ | jjrd S i }d|d v r|d d |d< |  tdd|d�¡ |  td	dƒ¡ |  td
dƒ¡ d|d v rF|d d }nd}|  td |dœ¡ |d  ¡ }d|v r_|d= d|v rf|d= d|d< |  tdd||d d�¡ |  	td
ƒ¡ |  td	dƒ¡ |  	tdƒ¡ d S )Nzdeprecated-tagr@   ÚisindexÚactionrw   rm  rr   )rj   ÚhrÚlabelÚpromptz3This is a searchable index. Enter search keywords: rq   ©r2   rw   Úinputr{   rŒ  )
rK   r~   r>   rn  r…   rõ   rƒ   r   Úcopyr†   )rC   r‹   Z
form_attrsr’  rj   r(   r(   r)   ÚstartTagIsIndex©  s<   
ÿÿ
þz.getPhases.<locals>.InBodyPhase.startTagIsIndexc                 S   s0   | j  |¡ | jjj| jj_| j| _d| j_d S r€  )	r>   r¶   rK   rN   r[   r\   rZ  r„   rb   r•   r(   r(   r)   ÚstartTagTextareaÈ  s   z/getPhases.<locals>.InBodyPhase.startTagTextareac                 S   s   d| j _|  |¡ d S r€  )rK   rb   ÚstartTagRawtextr•   r(   r(   r)   ÚstartTagIFrameÎ  s   z-getPhases.<locals>.InBodyPhase.startTagIFramec                 S   s$   | j jr|  |¡ d S |  |¡ d S r-   )rK   rM   r˜  r	  r•   r(   r(   r)   r"  Ò  s   z/getPhases.<locals>.InBodyPhase.startTagNoscriptc                 S   s   | j  |d¡ dS )z8iframe, noembed noframes, noscript(if scripting enabled)r³   Nr  r•   r(   r(   r)   r˜  Ø  r   z.getPhases.<locals>.InBodyPhase.startTagRawtextc                 S   s@   | j jd jdkr| jj tdƒ¡ | j  ¡  | jj  |¡ d S ©Nrv   Úoption)	r>   r}   r@   rK   r_   r†   rõ   rY  r¶   r•   r(   r(   r)   ÚstartTagOptÜ  s   
z*getPhases.<locals>.InBodyPhase.startTagOptc                 S   sŽ   | j  ¡  | j  |¡ d| j_| jj| jjd | jjd | jjd | jjd | jjd | jjd fv r=| jjd | j_d S | jjd	 | j_d S )
NFrŸ   r�   rž   rœ   r›   rš   ÚinSelectInTabler™   )r>   rY  r¶   rK   rb   r_   rH   r•   r(   r(   r)   ÚstartTagSelectâ  s   





ûz-getPhases.<locals>.InBodyPhase.startTagSelectc                 S   sB   | j  d¡r| j  ¡  | j jd jdkr| j ¡  | j  |¡ d S )NÚrubyrv   )r>   ri  ÚgenerateImpliedEndTagsr}   r@   rK   r~   r¶   r•   r(   r(   r)   ÚstartTagRpRtð  s
   

z+getPhases.<locals>.InBodyPhase.startTagRpRtc                 S   ó^   | j  ¡  | j |¡ | j |¡ td |d< | j  |¡ |d r-| j j ¡  d|d< d S d S )Nrg   ri   r{   Tr|   )	r>   rY  rK   r   r   r   r¶   r}   rÖ   r•   r(   r(   r)   ÚstartTagMath÷  ó   
þz+getPhases.<locals>.InBodyPhase.startTagMathc                 S   r¢  )Nry   ri   r{   Tr|   )	r>   rY  rK   r   r   r   r¶   r}   rÖ   r•   r(   r(   r)   ÚstartTagSvg  r¤  z*getPhases.<locals>.InBodyPhase.startTagSvgc                 S   s   | j  dd|d i¡ dS )a5   Elements that should be children of other elements that have a
            different insertion mode; here they are ignored
            "caption", "col", "colgroup", "frame", "frameset", "head",
            "option", "optgroup", "tbody", "td", "tfoot", "th", "thead",
            "tr", "noscript"
            zunexpected-start-tag-ignoredr@   NrÍ   r•   r(   r(   r)   ÚstartTagMisplaced  s   z0getPhases.<locals>.InBodyPhase.startTagMisplacedc                 S   s   | j  ¡  | j  |¡ d S r-   )r>   rY  r¶   r•   r(   r(   r)   r	    s   
z,getPhases.<locals>.InBodyPhase.startTagOtherc                 S   sª   | j jddd�s#|  tddƒ¡ | j dddi¡ |  tddƒ¡ d S | j  d¡ | j jd j	dkr;| j dddi¡ | j j 
¡ }|j	dkrS| j j 
¡ }|j	dksFd S d S )	Nr'   rf  rg  rr   r,  r@   rs   rv   )r>   ri  rk  rõ   rK   r~   rj  r   r}   r@   rÖ   r'  r(   r(   r)   rj    s   
ÿz&getPhases.<locals>.InBodyPhase.endTagPc                 S   s~   | j  d¡s| j ¡  d S | j jd jdkr5| j jdd … D ]}|jtdƒvr4| j dd|jdœ¡  nq| jjd | j_d S )Nr®   rv   é   )rR  rS  rT  Úoptgroupr›  r'   ÚrpÚrtr§   r¤   r©   r¥   r¨   r¦   r®   r°   ú$expected-one-end-tag-but-got-another©ZgotNameZexpectedNameÚ	afterBody)	r>   ri  rK   r~   r}   r@   r‚   rH   r_   r'  r(   r(   r)   Ú
endTagBody)  s   

þ÷
z)getPhases.<locals>.InBodyPhase.endTagBodyc                 S   s"   | j  d¡r|  tdƒ¡ |S d S )Nr®   )r>   ri  r®  rõ   r•   r(   r(   r)   Ú
endTagHtml;  s   þz)getPhases.<locals>.InBodyPhase.endTagHtmlc                 S   s¢   |d dkr
| j | _| j |d ¡}|r| j ¡  | jjd j|d kr/| j dd|d i¡ |rM| jj 	¡ }|j|d krO| jj 	¡ }|j|d ks>d S d S d S )Nr@   rV  rv   úend-tag-too-early)
rK  r„   r>   ri  r   r}   r@   rK   r~   rÖ   )rC   r‹   ZinScoper²   r(   r(   r)   ÚendTagBlockA  s   
ÿþz*getPhases.<locals>.InBodyPhase.endTagBlockc                 S   sx   | j j}d | j _|d u s| j  |¡s| j dddi¡ d S | j  ¡  | j jd |kr3| j dddi¡ | j j |¡ d S )Nr,  r@   rm  rv   zend-tag-too-early-ignored)r>   rn  ri  rK   r~   r   r}   rG  r'  r(   r(   r)   Ú
endTagFormO  s   ÿ
ÿz)getPhases.<locals>.InBodyPhase.endTagFormc                 S   s¾   |d dkr	d}nd }| j j|d |d�s"| j dd|d i¡ d S | j j|d d� | j jd j|d krA| j dd|d i¡ | j j ¡ }|j|d kr]| j j ¡ }|j|d ksNd S d S )	Nr@   rT  Úlistrg  r,  ©Zexcluderv   r°  )r>   ri  rK   r~   r   r}   r@   rÖ   )rC   r‹   rh  r²   r(   r(   r)   ÚendTagListItem\  s   
þÿz-getPhases.<locals>.InBodyPhase.endTagListItemc                 S   sœ   t D ]}| j |¡r| j ¡   nq| jjd j|d kr(| j dd|d i¡ t D ]!}| j |¡rK| jj ¡ }|jt vrH| jj ¡ }|jt vs= d S q*d S )Nrv   r@   r°  )	r   r>   ri  r   r}   r@   rK   r~   rÖ   )rC   r‹   Úitemr(   r(   r)   ÚendTagHeadingm  s    
þ

ÿüÿz,getPhases.<locals>.InBodyPhase.endTagHeadingc                 S   s  d}|dk �r†|d7 }| j  |d ¡}|r"|| j jv r)| j  |j¡s)|  |¡ dS || j jvrC| j dd|d i¡ | j j 	|¡ dS | j  |j¡sW| j dd|d i¡ dS || j jd krj| j d	d|d i¡ | j j 
|¡}d}| j j|d… D ]}|jtv r†|} nq{|du r¨| j j ¡ }||krŸ| j j ¡ }||ks•| j j 	|¡ dS | j j|d  }| j j 
|¡}| }	}
d}| j j 
|
¡}|d
k �r(|d7 }|d8 }| j j| }
|
| j jvrå| j j 	|
¡ qÄ|
|krên>|	|kr÷| j j 
|
¡d }|
 ¡ }|| j j| j j 
|
¡< || j j| j j 
|
¡< |}
|	j�r|	j |	¡ |
 |	¡ |
}	|d
k sÉ|	j�r2|	j |	¡ |jtdƒv �rH| j  ¡ \}}| |	|¡ n| |	¡ | ¡ }| |¡ | |¡ | j j 	|¡ | j j ||¡ | j j 	|¡ | j j | j j 
|¡d |¡ |dk sdS dS )z)The much-feared adoption agency algorithmr   é   r   r@   Nzadoption-agency-1.2zadoption-agency-4.4rv   zadoption-agency-1.3rO  ©r¬   r§   r©   r¨   r¦   )r>   ry  r}   ri  r@   r  rK   r~   rP  rG  Úindexrr  r   rÖ   Z	cloneNoderc  rd  ZappendChildr‚   ZgetTableMisnestedNodePositionÚinsertBeforeZreparentChildrenÚinsert)rC   r‹   ZouterLoopCounterZformattingElementZafeIndexZfurthestBlockrm   ZcommonAncestorZbookmarkZlastNoder²   ZinnerLoopCounterrº  Úclonerc  r»  r(   r(   r)   rz  |  s¨   

ÿ
ÿþ

þÿ
ÿÿÿÿ
ä"


ÿ �èz/getPhases.<locals>.InBodyPhase.endTagFormattingc                 S   sœ   | j  |d ¡r| j  ¡  | j jd j|d kr#| j dd|d i¡ | j  |d ¡rL| j j ¡ }|j|d krE| j j ¡ }|j|d ks8| j  ¡  d S d S )Nr@   rv   r°  )	r>   ri  r   r}   r@   rK   r~   rÖ   ÚclearActiveFormattingElements)rC   r‹   rm   r(   r(   r)   ÚendTagAppletMarqueeObject  s   
ÿüz8getPhases.<locals>.InBodyPhase.endTagAppletMarqueeObjectc                 S   s@   | j  ddddœ¡ | j ¡  | j tddƒ¡ | jj ¡  d S )Nzunexpected-end-tag-treated-asrü   z
br elementr‹  rr   )rK   r~   r>   rY  r¶   rõ   r}   rÖ   r•   r(   r(   r)   rB  +  s   ÿ
z'getPhases.<locals>.InBodyPhase.endTagBrc                 S   s¶   | j jd d d… D ]O}|j|d krE| j j|d d� | j jd j|d kr1| j dd|d i¡ | j j ¡ |krB	 | j j ¡ |ks9 d S |jtv rX| j dd|d i¡  d S q	d S )Nrv   r@   r´  r,  )	r>   r}   r@   r   rK   r~   rÖ   rr  r   r'  r(   r(   r)   r  2  s   ÿ
þ÷z*getPhases.<locals>.InBodyPhase.endTagOtherr°   )	r4  r5  r6  r7  r8  r4   r3  r1  r/  r®   r¯   )rp  ÚarticleÚasideÚ
blockquoteÚcenterÚdetailsÚdirr*   ÚdlÚfieldsetÚ
figcaptionÚfigureÚfooterÚheaderÚhgroupÚmainÚmenuÚnavÚolr'   ÚsectionÚsummaryÚul)rV  rW  rm  )rT  rR  rS  rT   rv  )ÚbÚbigÚcodeÚemÚfontÚiÚsÚsmallÚstrikeÚstrongÚttÚur}  rf  )ZappletZmarqueeÚobjectZxmpr¬   )Úarearü   ÚembedrŠ  ÚkeygenZwbr)ÚparamÚsourceZtrackr”  r�  r‰  rŽ  rX  Ziframer2  )Znoembedr0  r£   )r©  rª  )r›  r¨  Úmathry   )rª   Úcolr«   Úframer­   r§   r¤   r©   r¥   r¨   r¦   )rp  rÀ  rÁ  rÂ  rf  rÃ  rÄ  ZdialogrÅ  r*   rÆ  rÇ  rÈ  rÉ  rÊ  rË  rÌ  rW  rÍ  rÎ  rÏ  rÐ  rV  rÑ  rÒ  rÓ  r'   )rR  rS  rT  )rv  rÔ  rÕ  rÖ  r×  rØ  rÙ  r}  rÚ  rÛ  rÜ  rÝ  rÞ  rß  rü   )?r9   r:   r;   rà   rJ   rN  rQ  rŠ   rZ  rƒ   rK  rb  rD  rF  rk  rl  ro  rs  rt  ru  r{  r|  r~  r  r�  r‚  rƒ  r„  r†  r‡  rˆ  r�  r–  r—  r™  r"  r˜  rœ  rž  r¡  r£  r¥  r¦  r	  rj  r®  r¯  r±  r²  rµ  r·  rz  r¿  rB  r  r   r  rÞ   r   rÕ   r  rß   Ú__classcell__r(   )rM  rá   ©r¿   r)   rM  ­  s*   
	
	 $ÿþþûúüùôóòñðïÿîìëêéèÿçåäãâá à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø)þ×-ýÿòrM  c                   @   s`   e Zd Zeƒ Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	e
 g ¡Zee_e
 defg¡Ze	e_dS )zgetPhases.<locals>.TextPhasec                 S   rÎ   rÏ   rÐ   r•   r(   r(   r)   rƒ   „  rÒ   z.getPhases.<locals>.TextPhase.processCharactersc                 S   s8   | j  dd| jjd ji¡ | jj ¡  | j j| j _dS )Nz&expected-named-closing-tag-but-got-eofr@   rv   T)rK   r~   r>   r}   r@   rÖ   r·   r_   rB   r(   r(   r)   rŠ   ‡  s   ÿz'getPhases.<locals>.TextPhase.processEOFc                 S   s   J d|d  ƒ‚)NFz4Tried to process start tag %s in RCDATA/RAWTEXT moder@   r(   r•   r(   r(   r)   r	  Ž  rp   z*getPhases.<locals>.TextPhase.startTagOtherc                 S   s*   | j j ¡ }|jdksJ ‚| jj| j_d S )Nr3  )r>   r}   rÖ   r@   rK   r·   r_   r'  r(   r(   r)   ÚendTagScript‘  s   z)getPhases.<locals>.TextPhase.endTagScriptc                 S   s   | j j ¡  | jj| j_d S r-   )r>   r}   rÖ   rK   r·   r_   r•   r(   r(   r)   r  ˜  ó   z(getPhases.<locals>.TextPhase.endTagOtherr3  N)r9   r:   r;   ró   rà   rƒ   rŠ   r	  rë  r  r   r  rÕ   r  rß   r(   r(   r(   r)   Ú	TextPhase�  s    
ÿ
rí  c                       s  e Zd Zeƒ Z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d„ Z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#d$„ Ze d%” jfd&e
fd'efd(efd)efd*efd+efd,efd-efd.efg
¡Zee_e d+efd/efg¡Zee_d0S )1zgetPhases.<locals>.InTablePhasec                 S   s8   | j jd jdvr| j j ¡  | j jd jdvs	d S d S )Nrv   )r¬   r°   )r>   r}   r@   rÖ   rB   r(   r(   r)   ÚclearStackToTableContext§  s   ýz8getPhases.<locals>.InTablePhase.clearStackToTableContextc                 S   ó2   | j jd jdkr| j d¡ d S | jjsJ ‚d S )Nrv   r°   zeof-in-table©r>   r}   r@   rK   r~   rR   rB   r(   r(   r)   rŠ   °  ó   z*getPhases.<locals>.InTablePhase.processEOFc                 S   ó4   | j j}| j jd | j _|| j j_| j j |¡ d S ©NÚinTableText)rK   r_   rH   r·   r„   ©rC   r‹   r·   r(   r(   r)   r„   ·  ó   
z6getPhases.<locals>.InTablePhase.processSpaceCharactersc                 S   rò  ró  )rK   r_   rH   r·   rƒ   rõ  r(   r(   r)   rƒ   ½  rö  z1getPhases.<locals>.InTablePhase.processCharactersc                 S   s&   d| j _| jjd  |¡ d| j _d S )NTr    F)r>   ÚinsertFromTablerK   rH   rƒ   r•   r(   r(   r)   rÑ   Ã  s   z*getPhases.<locals>.InTablePhase.insertTextc                 S   s6   |   ¡  | jj t¡ | j |¡ | jjd | j_d S )Nr�   )	rî  r>   rP  r‰   r   r¶   rK   rH   r_   r•   r(   r(   r)   ÚstartTagCaptionÊ  s   z/getPhases.<locals>.InTablePhase.startTagCaptionc                 S   ó(   |   ¡  | j |¡ | jjd | j_d S )Nrž   ©rî  r>   r¶   rK   rH   r_   r•   r(   r(   r)   ÚstartTagColgroupÐ  rE  z0getPhases.<locals>.InTablePhase.startTagColgroupc                 S   r  )Nr«   rr   )rû  rõ   r•   r(   r(   r)   ÚstartTagColÕ  r   z+getPhases.<locals>.InTablePhase.startTagColc                 S   rù  ©Nrœ   rú  r•   r(   r(   r)   ÚstartTagRowGroupÙ  rE  z0getPhases.<locals>.InTablePhase.startTagRowGroupc                 S   r  )Nr§   rr   )rþ  rõ   r•   r(   r(   r)   ÚstartTagImplyTbodyÞ  r   z2getPhases.<locals>.InTablePhase.startTagImplyTbodyc                 S   s6   | j  ddddœ¡ | j j tdƒ¡ | j js|S d S )Nrw  r¬   rx  )rK   r~   r_   r†   rõ   rR   r•   r(   r(   r)   rƒ  â  s   ÿÿz-getPhases.<locals>.InTablePhase.startTagTablec                 S   r  r:  r  r•   r(   r(   r)   ÚstartTagStyleScripté  r  z3getPhases.<locals>.InTablePhase.startTagStyleScriptc                 S   sX   d|d v r%|d d   t¡dkr%| j d¡ | j |¡ | jj ¡  d S |  |¡ d S )Nr2   rw   r…  z unexpected-hidden-input-in-table)	rk   r   rK   r~   r>   r¶   r}   rÖ   r	  r•   r(   r(   r)   r†  ì  s   ÿz-getPhases.<locals>.InTablePhase.startTagInputc                 S   sH   | j  d¡ | jjd u r"| j |¡ | jjd | j_| jj ¡  d S d S )Nzunexpected-form-in-tablerv   )rK   r~   r>   rn  r¶   r}   rÖ   r•   r(   r(   r)   ro  ö  s   ýz,getPhases.<locals>.InTablePhase.startTagFormc                 S   ó<   | j  dd|d i¡ d| j_| j jd  |¡ d| j_d S )Nz)unexpected-start-tag-implies-table-voodoor@   Tr    F)rK   r~   r>   r÷  rH   r…   r•   r(   r(   r)   r	  ý  ó   z-getPhases.<locals>.InTablePhase.startTagOtherc                 S   s®   | j jddd�rJ| j  ¡  | j jd jdkr%| j dd| j jd jdœ¡ | j jd jdkr=| j j ¡  | j jd jdks.| j j ¡  | j ¡  d S | jj	sPJ ‚| j ¡  d S )Nr¬   rg  rv   zend-tag-too-early-namedr¬  )
r>   ri  r   r}   r@   rK   r~   rÖ   ra   rR   r•   r(   r(   r)   ÚendTagTable  s   
ÿÿÿz+getPhases.<locals>.InTablePhase.endTagTablec                 S   r  r+  rÍ   r•   r(   r(   r)   ÚendTagIgnore  r-  z,getPhases.<locals>.InTablePhase.endTagIgnorec                 S   r  )Nz'unexpected-end-tag-implies-table-voodoor@   Tr    F)rK   r~   r>   r÷  rH   r†   r•   r(   r(   r)   r    r  z+getPhases.<locals>.InTablePhase.endTagOtherr°   rª   r«   rç  ©r§   r©   r¨   )r¤   r¥   r¦   r¬   )r1  r3  r”  rm  )r®   rª   rç  r«   r°   r§   r¤   r©   r¥   r¨   r¦   N)r9   r:   r;   ró   rà   rî  rŠ   r„   rƒ   rÑ   rø  rû  rü  rþ  rÿ  rƒ  r   r†  ro  r	  r  r  r  r   r  rÞ   rÕ   r  rß   r(   ©rá   r(   r)   ÚInTablePhase¢  sP    	
öÿþ
r  c                       sZ   e Zd ZdZ‡‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Z‡  ZS )z#getPhases.<locals>.InTableTextPhase)r·   ÚcharacterTokensc                    s&   t ˆ | ƒj|i |¤Ž d | _g | _d S r-   )rJ  rJ   r·   r  rL  )ÚInTableTextPhaser¿   r(   r)   rJ   6  s   
z,getPhases.<locals>.InTableTextPhase.__init__c                 S   sd   d  dd„ | jD ƒ¡}tdd„ |D ƒƒr%td |dœ}| jjd  |¡ n|r-| j |¡ g | _d S )Nrê   c                 S   s   g | ]}|d  ‘qS )rw   r(   ©r?   r¶  r(   r(   r)   r`  <  ó    zGgetPhases.<locals>.InTableTextPhase.flushCharacters.<locals>.<listcomp>c                 S   r\  r(   r]  r
  r(   r(   r)   r`  =  r  rq   r“  rŸ   )Újoinr  ra  r   rK   rH   rÑ   r>   )rC   rw   r‹   r(   r(   r)   ÚflushCharacters;  s   
z3getPhases.<locals>.InTableTextPhase.flushCharactersc                 S   ó   |   ¡  | j| j_|S r-   ©r  r·   rK   r_   r•   r(   r(   r)   r‡   D  ó   
z2getPhases.<locals>.InTableTextPhase.processCommentc                 S   s   |   ¡  | j| j_dS r÷   r  rB   r(   r(   r)   rŠ   I  r  z.getPhases.<locals>.InTableTextPhase.processEOFc                 S   s    |d dkrd S | j  |¡ d S ©Nrw   r[  ©r  r‰   r•   r(   r(   r)   rƒ   N  s   z5getPhases.<locals>.InTableTextPhase.processCharactersc                 S   ó   | j  |¡ d S r-   r  r•   r(   r(   r)   r„   S  s   z:getPhases.<locals>.InTableTextPhase.processSpaceCharactersc                 S   r  r-   r  r•   r(   r(   r)   r…   X  r  z3getPhases.<locals>.InTableTextPhase.processStartTagc                 S   r  r-   r  r•   r(   r(   r)   r†   ]  r  z1getPhases.<locals>.InTableTextPhase.processEndTag)r9   r:   r;   rà   rJ   r  r‡   rŠ   rƒ   r„   r…   r†   ré  r(   )r	  rê  r)   r	  3  s    	r	  c                       óš   e Zd Zeƒ Z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d„ Ze d” jfdefg¡Ze	e_e de
fdefdefg¡Zee_dS )z!getPhases.<locals>.InCaptionPhasec                 S   ó   | j jddd� S )Nrª   r¬   rg  ©r>   ri  rB   r(   r(   r)   ÚignoreEndTagCaptionf  r  z5getPhases.<locals>.InCaptionPhase.ignoreEndTagCaptionc                 S   ó   | j jd  ¡  d S r  ©rK   rH   rŠ   rB   r(   r(   r)   rŠ   i  rÒ   z,getPhases.<locals>.InCaptionPhase.processEOFc                 S   r  r  ©rK   rH   rƒ   r•   r(   r(   r)   rƒ   l  r  z3getPhases.<locals>.InCaptionPhase.processCharactersc                 S   ó0   | j  ¡  |  ¡ }| j j tdƒ¡ |s|S d S ©Nrª   ©rK   r~   r  r_   r†   rõ   ©rC   r‹   ÚignoreEndTagr(   r(   r)   ÚstartTagTableElemento  s   
ÿz6getPhases.<locals>.InCaptionPhase.startTagTableElementc                 S   r  r  r  r•   r(   r(   r)   r	  w  r  z/getPhases.<locals>.InCaptionPhase.startTagOtherc                 S   s¶   |   ¡ sN| j ¡  | jjd jdkr!| j dd| jjd jdœ¡ | jjd jdkr9| jj ¡  | jjd jdks*| jj ¡  | j ¡  | jj	d | j_
d S | jjsTJ ‚| j ¡  d S )Nrv   rª   r«  r¬  rŸ   )r  r>   r   r}   r@   rK   r~   rÖ   r¾  rH   r_   rR   r•   r(   r(   r)   ÚendTagCaptionz  s    
ÿÿÿ
z/getPhases.<locals>.InCaptionPhase.endTagCaptionc                 S   r  r  r  r  r(   r(   r)   r  Œ  s   
ÿz-getPhases.<locals>.InCaptionPhase.endTagTablec                 S   r  r+  rÍ   r•   r(   r(   r)   r  “  r-  z.getPhases.<locals>.InCaptionPhase.endTagIgnorec                 S   r  r  ©rK   rH   r†   r•   r(   r(   r)   r  –  r  z-getPhases.<locals>.InCaptionPhase.endTagOtherr°   ©	rª   rç  r«   r§   r¤   r©   r¥   r¨   r¦   rª   r¬   )
r®   rç  r«   r°   r§   r¤   r©   r¥   r¨   r¦   N)r9   r:   r;   ró   rà   r  rŠ   rƒ   r   r	  r!  r  r  r  r   r  rÞ   rÕ   r  rß   r(   r  r(   r)   ÚInCaptionPhaseb  s4    ÿþÿý
r$  c                       sŒ   e Zd Zeƒ Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Ze d” jfdefg¡Ze	e_e de
fdefg¡Zee_dS )z%getPhases.<locals>.InColumnGroupPhasec                 S   s   | j jd jdkS )Nrv   r°   )r>   r}   r@   rB   r(   r(   r)   ÚignoreEndTagColgroup¬  r  z:getPhases.<locals>.InColumnGroupPhase.ignoreEndTagColgroupc                 S   sD   | j jd jdkr| jjsJ ‚d S |  ¡ }|  tdƒ¡ |s dS d S )Nrv   r°   r«   T)r>   r}   r@   rK   rR   r%  ÚendTagColgrouprõ   )rC   r  r(   r(   r)   rŠ   ¯  s   ÿz0getPhases.<locals>.InColumnGroupPhase.processEOFc                 S   ó"   |   ¡ }|  tdƒ¡ |s|S d S ©Nr«   ©r%  r&  rõ   r  r(   r(   r)   rƒ   ¹  ó
   ÿz7getPhases.<locals>.InColumnGroupPhase.processCharactersc                 S   r  r  r  r•   r(   r(   r)   rü  ¿  r  z1getPhases.<locals>.InColumnGroupPhase.startTagColc                 S   r'  r(  r)  r  r(   r(   r)   r	  Ä  r*  z3getPhases.<locals>.InColumnGroupPhase.startTagOtherc                 S   sB   |   ¡ r| jjs
J ‚| j ¡  d S | jj ¡  | jjd | j_d S ©NrŸ   )	r%  rK   rR   r~   r>   r}   rÖ   rH   r_   r•   r(   r(   r)   r&  Ê  s
   z4getPhases.<locals>.InColumnGroupPhase.endTagColgroupc                 S   s   | j  dddi¡ d S )Nz
no-end-tagr@   rç  rÍ   r•   r(   r(   r)   Ú	endTagColÓ  ræ   z/getPhases.<locals>.InColumnGroupPhase.endTagColc                 S   r'  r(  r)  r  r(   r(   r)   r  Ö  r*  z1getPhases.<locals>.InColumnGroupPhase.endTagOtherr°   rç  r«   N)r9   r:   r;   ró   rà   r%  rŠ   rƒ   rü  r	  r&  r,  r  r   r  rÞ   rÕ   r  rß   r(   r  r(   r)   ÚInColumnGroupPhase¨  s(    
	þþ
r-  c                       s¾   e Zd Zeƒ Z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d„ Zdd„ Zdd„ Zdd„ Ze d” jfde	fde
fdefg¡Zee_e defdefdefg¡Zee_d S )!z#getPhases.<locals>.InTableBodyPhasec                 S   sV   | j jd jdvr| j j ¡  | j jd jdvs	| j jd jdkr'| jjs)J ‚d S d S )Nrv   )r§   r©   r¨   r°   r°   )r>   r}   r@   rÖ   rK   rR   rB   r(   r(   r)   ÚclearStackToTableBodyContextí  s   üÿz@getPhases.<locals>.InTableBodyPhase.clearStackToTableBodyContextc                 S   r  r+  r  rB   r(   r(   r)   rŠ   ÷  rÒ   z.getPhases.<locals>.InTableBodyPhase.processEOFc                 S   r  r+  r;  r•   r(   r(   r)   r„   ú  r  z:getPhases.<locals>.InTableBodyPhase.processSpaceCharactersc                 S   r  r+  r  r•   r(   r(   r)   rƒ   ý  r  z5getPhases.<locals>.InTableBodyPhase.processCharactersc                 S   rù  )Nr›   )r.  r>   r¶   rK   rH   r_   r•   r(   r(   r)   Ú
startTagTr   rE  z.getPhases.<locals>.InTableBodyPhase.startTagTrc                 S   s*   | j  dd|d i¡ |  tddƒ¡ |S )Nzunexpected-cell-in-table-bodyr@   r¦   rr   )rK   r~   r/  rõ   r•   r(   r(   r)   ÚstartTagTableCell  ó
   
ÿz5getPhases.<locals>.InTableBodyPhase.startTagTableCellc                 S   ón   | j jddd�s| j jddd�s| j jddd�r*|  ¡  |  t| j jd jƒ¡ |S | jjs0J ‚| j 	¡  d S ©Nr§   r¬   rg  r¨   r©   rv   ©
r>   ri  r.  ÚendTagTableRowGrouprõ   r}   r@   rK   rR   r~   r•   r(   r(   r)   ÚstartTagTableOther  s   ÿþÿz6getPhases.<locals>.InTableBodyPhase.startTagTableOtherc                 S   r  r+  r  r•   r(   r(   r)   r	    r  z1getPhases.<locals>.InTableBodyPhase.startTagOtherc                 S   sV   | j j|d dd�r|  ¡  | j j ¡  | jjd | j_d S | j dd|d i¡ d S )Nr@   r¬   rg  rŸ   ú unexpected-end-tag-in-table-body)	r>   ri  r.  r}   rÖ   rK   rH   r_   r~   r•   r(   r(   r)   r5    s   
ÿz7getPhases.<locals>.InTableBodyPhase.endTagTableRowGroupc                 S   r2  r3  r4  r•   r(   r(   r)   r  %  s   ÿþÿz/getPhases.<locals>.InTableBodyPhase.endTagTablec                 S   r  )Nr7  r@   rÍ   r•   r(   r(   r)   r  2  r  z0getPhases.<locals>.InTableBodyPhase.endTagIgnorec                 S   r  r+  r"  r•   r(   r(   r)   r  6  r  z/getPhases.<locals>.InTableBodyPhase.endTagOtherr°   r¦   ©r¤   r¥   )rª   rç  r«   r§   r©   r¨   r  r¬   )r®   rª   rç  r«   r°   r¤   r¥   r¦   N)r9   r:   r;   ró   rà   r.  rŠ   r„   rƒ   r/  r0  r6  r	  r5  r  r  r  r   r  rÞ   rÕ   r  rß   r(   r  r(   r)   ÚInTableBodyPhaseè  s>    
	ÿüÿý
r9  c                       sÆ   e Zd Zeƒ Z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d„ Zdd„ Zdd„ Zdd„ Zdd„ Ze d” jfde
fdefg¡Zee_e defdefd efd!efg¡Zee_d"S )#zgetPhases.<locals>.InRowPhasec                 S   sT   | j jd jdvr(| j dd| j jd ji¡ | j j ¡  | j jd jdvs	d S d S )Nrv   )r¦   r°   z'unexpected-implied-end-tag-in-table-rowr@   )r>   r}   r@   rK   r~   rÖ   rB   r(   r(   r)   ÚclearStackToTableRowContextO  s   ÿýz9getPhases.<locals>.InRowPhase.clearStackToTableRowContextc                 S   r  )Nr¦   r¬   rg  r  rB   r(   r(   r)   ÚignoreEndTagTrU  r  z,getPhases.<locals>.InRowPhase.ignoreEndTagTrc                 S   r  r+  r  rB   r(   r(   r)   rŠ   Y  rÒ   z(getPhases.<locals>.InRowPhase.processEOFc                 S   r  r+  r;  r•   r(   r(   r)   r„   \  r  z4getPhases.<locals>.InRowPhase.processSpaceCharactersc                 S   r  r+  r  r•   r(   r(   r)   rƒ   _  r  z/getPhases.<locals>.InRowPhase.processCharactersc                 S   s6   |   ¡  | j |¡ | jjd | j_| jj t¡ d S )Nrš   )	r:  r>   r¶   rK   rH   r_   rP  r‰   r   r•   r(   r(   r)   r0  b  s   z/getPhases.<locals>.InRowPhase.startTagTableCellc                 S   r'  ©Nr¦   ©r;  ÚendTagTrrõ   r  r(   r(   r)   r6  h  s
   ÿz0getPhases.<locals>.InRowPhase.startTagTableOtherc                 S   r  r+  r  r•   r(   r(   r)   r	  o  r  z+getPhases.<locals>.InRowPhase.startTagOtherc                 S   sJ   |   ¡ s|  ¡  | jj ¡  | jjd | j_d S | jjsJ ‚| j 	¡  d S rý  )
r;  r:  r>   r}   rÖ   rK   rH   r_   rR   r~   r•   r(   r(   r)   r>  r  s   z&getPhases.<locals>.InRowPhase.endTagTrc                 S   r'  r<  r=  r  r(   r(   r)   r  |  s
   ÿz)getPhases.<locals>.InRowPhase.endTagTablec                 S   s4   | j j|d dd�r|  tdƒ¡ |S | j ¡  d S )Nr@   r¬   rg  r¦   )r>   ri  r>  rõ   rK   r~   r•   r(   r(   r)   r5  „  s   z1getPhases.<locals>.InRowPhase.endTagTableRowGroupc                 S   r  )Nzunexpected-end-tag-in-table-rowr@   rÍ   r•   r(   r(   r)   r  ‹  r  z*getPhases.<locals>.InRowPhase.endTagIgnorec                 S   r  r+  r"  r•   r(   r(   r)   r  �  r  z)getPhases.<locals>.InRowPhase.endTagOtherr°   r8  )rª   rç  r«   r§   r©   r¨   r¦   r¦   r¬   r  )r®   rª   rç  r«   r°   r¤   r¥   N)r9   r:   r;   ró   rà   r:  r;  rŠ   r„   rƒ   r0  r6  r	  r>  r  r5  r  r  r   r  rÞ   rÕ   r  rß   r(   r  r(   r)   Ú
InRowPhaseJ  s@    
ÿýÿü
r?  c                       r  )zgetPhases.<locals>.InCellPhasec                 S   sH   | j jddd�r|  tdƒ¡ d S | j jddd�r"|  tdƒ¡ d S d S ©Nr¤   r¬   rg  r¥   )r>   ri  ÚendTagTableCellrõ   rB   r(   r(   r)   Ú	closeCell¨  s
   ÿz(getPhases.<locals>.InCellPhase.closeCellc                 S   r  r  r  rB   r(   r(   r)   rŠ   ¯  rÒ   z)getPhases.<locals>.InCellPhase.processEOFc                 S   r  r  r  r•   r(   r(   r)   rƒ   ²  r  z0getPhases.<locals>.InCellPhase.processCharactersc                 S   sF   | j jddd�s| j jddd�r|  ¡  |S | jjsJ ‚| j ¡  d S r@  )r>   ri  rB  rK   rR   r~   r•   r(   r(   r)   r6  µ  s   ÿz1getPhases.<locals>.InCellPhase.startTagTableOtherc                 S   r  r  r  r•   r(   r(   r)   r	  ¿  r  z,getPhases.<locals>.InCellPhase.startTagOtherc                 S   s¶   | j j|d dd�rN| j  |d ¡ | j jd j|d kr9| j dd|d i¡ 	 | j j ¡ }|j|d kr7nq)n| j j ¡  | j  ¡  | jj	d | j_
d S | j dd|d i¡ d S )	Nr@   r¬   rg  rv   zunexpected-cell-end-tagTr›   r,  )r>   ri  r   r}   r@   rK   r~   rÖ   r¾  rH   r_   r'  r(   r(   r)   rA  Â  s    
ÿý
z.getPhases.<locals>.InCellPhase.endTagTableCellc                 S   r  r+  rÍ   r•   r(   r(   r)   r  Ó  r-  z+getPhases.<locals>.InCellPhase.endTagIgnorec                 S   s.   | j j|d dd�r|  ¡  |S | j ¡  d S )Nr@   r¬   rg  )r>   ri  rB  rK   r~   r•   r(   r(   r)   ÚendTagImplyÖ  s   z*getPhases.<locals>.InCellPhase.endTagImplyc                 S   r  r  r"  r•   r(   r(   r)   r  Þ  r  z*getPhases.<locals>.InCellPhase.endTagOtherr°   r#  r8  )r®   rª   rç  r«   r°   r¹  N)r9   r:   r;   ró   rà   rB  rŠ   rƒ   r6  r	  rA  r  rC  r  r   r  rÞ   rÕ   r  rß   r(   r  r(   r)   ÚInCellPhase£  s0    
ÿþý
rD  c                	       sÊ   e Zd Zeƒ Z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d„ Zdd„ Zdd„ Zdd„ Ze d” jfdefdefde	fde
fdefg¡Zee_e defdefdefg¡Zee_dS ) z getPhases.<locals>.InSelectPhasec                 S   rï  )Nrv   r°   zeof-in-selectrð  rB   r(   r(   r)   rŠ   ó  rñ  z+getPhases.<locals>.InSelectPhase.processEOFc                 S   s$   |d dkrd S | j  |d ¡ d S r  rÐ   r•   r(   r(   r)   rƒ   ù  s   z2getPhases.<locals>.InSelectPhase.processCharactersc                 S   s.   | j jd jdkr| j j ¡  | j  |¡ d S rš  ©r>   r}   r@   rÖ   r¶   r•   r(   r(   r)   ÚstartTagOptionþ  s   z/getPhases.<locals>.InSelectPhase.startTagOptionc                 S   sL   | j jd jdkr| j j ¡  | j jd jdkr| j j ¡  | j  |¡ d S )Nrv   r›  r¨  rE  r•   r(   r(   r)   ÚstartTagOptgroup	  s
   z1getPhases.<locals>.InSelectPhase.startTagOptgroupc                 S   s   | j  d¡ |  tdƒ¡ d S )Nzunexpected-select-in-selectr£   )rK   r~   ÚendTagSelectrõ   r•   r(   r(   r)   rž  	  s   z/getPhases.<locals>.InSelectPhase.startTagSelectc                 S   s>   | j  d¡ | jjddd�r|  tdƒ¡ |S | j jsJ ‚d S )Nzunexpected-input-in-selectr£   rg  )rK   r~   r>   ri  rH  rõ   rR   r•   r(   r(   r)   r†  	  s
   z.getPhases.<locals>.InSelectPhase.startTagInputc                 S   r  r:  r  r•   r(   r(   r)   r#  	  r  z/getPhases.<locals>.InSelectPhase.startTagScriptc                 S   r  )Nzunexpected-start-tag-in-selectr@   rÍ   r•   r(   r(   r)   r	  	  r  z.getPhases.<locals>.InSelectPhase.startTagOtherc                 S   s8   | j jd jdkr| j j ¡  d S | j dddi¡ d S )Nrv   r›  úunexpected-end-tag-in-selectr@   ©r>   r}   r@   rÖ   rK   r~   r•   r(   r(   r)   ÚendTagOption	  s
   ÿz-getPhases.<locals>.InSelectPhase.endTagOptionc                 S   sh   | j jd jdkr| j jd jdkr| j j ¡  | j jd jdkr)| j j ¡  d S | j dddi¡ d S )Nrv   r›  éþÿÿÿr¨  rI  r@   rJ  r•   r(   r(   r)   ÚendTagOptgroup%	  s   ÿÿz/getPhases.<locals>.InSelectPhase.endTagOptgroupc                 S   sd   | j jddd�r%| j j ¡ }|jdkr| j j ¡ }|jdks| j ¡  d S | jjs+J ‚| j ¡  d S )Nr£   rg  )	r>   ri  r}   rÖ   r@   rK   ra   rR   r~   r'  r(   r(   r)   rH  2	  s   

ÿz-getPhases.<locals>.InSelectPhase.endTagSelectc                 S   r  )NrI  r@   rÍ   r•   r(   r(   r)   r  =	  r  z,getPhases.<locals>.InSelectPhase.endTagOtherr°   r›  r¨  r£   )r”  rã  rX  r3  N)r9   r:   r;   ró   rà   rŠ   rƒ   rF  rG  rž  r†  r#  r	  rK  rM  rH  r  r   r  rÞ   rÕ   r  rß   r(   r  r(   r)   ÚInSelectPhaseï  s:    úý
rN  c                   @   sn   e Zd Zeƒ Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
e defg¡Zee_e de	fg¡Ze
e_dS )z'getPhases.<locals>.InSelectInTablePhasec                 S   r  ©Nr™   r  rB   r(   r(   r)   rŠ   U	  rÒ   z2getPhases.<locals>.InSelectInTablePhase.processEOFc                 S   r  rO  r  r•   r(   r(   r)   rƒ   X	  r  z9getPhases.<locals>.InSelectInTablePhase.processCharactersc                 S   s(   | j  dd|d i¡ |  tdƒ¡ |S )Nz5unexpected-table-element-start-tag-in-select-in-tabler@   r£   )rK   r~   r  rõ   r•   r(   r(   r)   rƒ  [	  s   z5getPhases.<locals>.InSelectInTablePhase.startTagTablec                 S   r  rO  r  r•   r(   r(   r)   r	  `	  r  z5getPhases.<locals>.InSelectInTablePhase.startTagOtherc                 S   s@   | j  dd|d i¡ | jj|d dd�r|  tdƒ¡ |S d S )Nz3unexpected-table-element-end-tag-in-select-in-tabler@   r¬   rg  r£   )rK   r~   r>   ri  r  rõ   r•   r(   r(   r)   r  c	  s
   þz3getPhases.<locals>.InSelectInTablePhase.endTagTablec                 S   r  rO  r"  r•   r(   r(   r)   r  i	  r  z3getPhases.<locals>.InSelectInTablePhase.endTagOther)rª   r¬   r§   r©   r¨   r¦   r¤   r¥   N)r9   r:   r;   ró   rà   rŠ   rƒ   rƒ  r	  r  r  r   r  rÕ   r  rß   r(   r(   r(   r)   ÚInSelectInTablePhaseR	  s(    ÿÿÿÿ
rP  c                       sB   e Zd Zeƒ Zeg d¢ƒZdd„ Z‡ fdd„Zdd„ Z	dd	„ Z
d
S )z(getPhases.<locals>.InForeignContentPhase),rÔ  rÕ  rÂ  r®   rü   rÃ  rÖ  rR  r*   rÆ  rS  r×  râ  Zh1Zh2Zh3Zh4Zh5Zh6r­   r�  rÙ  rŠ  rT  rW  rÎ  r4   r}  rÐ  r'   rV  rŸ  rÚ  rÛ  ÚspanrÝ  rÜ  ÚsubÚsupr¬   rÞ  rß  rÓ  Úvarc                 S   s  i dd“dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd “d!d"“i d#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d8“d9d:“d;d<“d=d>“d?d@“dAdB“dCdD“¥dEdFdGœ¥}|dH |v r||dH  |dH< d S d S )INZaltglyphZaltGlyphZaltglyphdefZaltGlyphDefZaltglyphitemZaltGlyphItemZanimatecolorZanimateColorZanimatemotionZanimateMotionZanimatetransformZanimateTransformZclippathZclipPathZfeblendZfeBlendZfecolormatrixZfeColorMatrixZfecomponenttransferZfeComponentTransferZfecompositeZfeCompositeZfeconvolvematrixZfeConvolveMatrixZfediffuselightingZfeDiffuseLightingZfedisplacementmapZfeDisplacementMapZfedistantlightZfeDistantLightZfefloodZfeFloodZfefuncaZfeFuncAZfefuncbZfeFuncBZfefuncgZfeFuncGZfefuncrZfeFuncRZfegaussianblurZfeGaussianBlurZfeimageZfeImageZfemergeZfeMergeZfemergenodeZfeMergeNodeZfemorphologyZfeMorphologyZfeoffsetZfeOffsetZfepointlightZfePointLightZfespecularlightingZfeSpecularLightingZfespotlightZfeSpotLightZfetileZfeTileZfeturbulenceZfeTurbulenceZforeignobjectZforeignObjectZglyphrefZglyphRefZlineargradientZlinearGradientZradialGradientZtextPath)ZradialgradientZtextpathr@   r(   )rC   r‹   Úreplacementsr(   r(   r)   ÚadjustSVGTagNames„	  s’   ÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâá à!ß"Ý%ÿz:getPhases.<locals>.InForeignContentPhase.adjustSVGTagNamesc                    sL   |d dkrd|d< n| j jrtdd„ |d D ƒƒrd| j _ˆ  | |¡ d S )Nrw   r[  u   ï¿½c                 s   s   � | ]}|t vV  qd S r-   r]  r^  r(   r(   r)   Ú	<genexpr>±	  s   € zMgetPhases.<locals>.InForeignContentPhase.processCharacters.<locals>.<genexpr>F)rK   rb   ra  rƒ   r•   r  r(   r)   rƒ   ­	  s   
ÿz:getPhases.<locals>.InForeignContentPhase.processCharactersc                 S   sf  | j jd }|d | jv s|d dkrpt|d  ¡ ƒh d£@ rp| j dd|d i¡ | j jd j| j jkrn| j 	| j jd ¡sn| j 
| j jd ¡sn| j j ¡  | j jd j| j jkrn| j 	| j jd ¡sn| j 
| j jd ¡rI|S |jtd kr~| j |¡ n|jtd kr�|  |¡ | j |¡ | j |¡ |j|d	< | j  |¡ |d
 r±| j j ¡  d|d< d S d S )Nrv   r@   rØ  rw   >   ÚsizeZfaceÚcolorz*unexpected-html-element-in-foreign-contentrg   ry   ri   r{   Tr|   )r>   r}   ÚbreakoutElementsÚsetÚkeysrK   r~   ri   r�   rn   ro   rÖ   r   r   rV  r   r   r¶   )rC   r‹   r�   r(   r(   r)   r…   µ	  sJ   
ÿþ
ÿÿþýüÿþý

þz8getPhases.<locals>.InForeignContentPhase.processStartTagc                 S   sø   t | jjƒd }| jjd }|j t¡|d kr#| j dd|d i¡ 	 |j t¡|d kr`| jj| jj	d krE| jj 
¡  | jjj| j_| jj ¡ |kr[| jjsSJ ‚| jj ¡ |ksMd }	 |S |d8 }| jj| }|j| jjkrrq#| jj |¡}	 |S )Nr   rv   r@   r,  Trô  )r€   r>   r}   r@   rk   r   rK   r~   r_   rH   r  r·   rÖ   ri   r�   r†   )rC   r‹   Z	nodeIndexr²   rŒ   r(   r(   r)   r†   Ð	  s,   ÿ	øz6getPhases.<locals>.InForeignContentPhase.processEndTagN)r9   r:   r;   ró   rà   r‚   rZ  rV  rƒ   r…   r†   r(   r  r(   r)   ÚInForeignContentPhasex	  s    	)r]  c                   @   sv   e Zd Zeƒ Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Ze defg¡Ze	e_e de
fg¡Zee_dS )z!getPhases.<locals>.AfterBodyPhasec                 S   râ   r-   r(   rB   r(   r(   r)   rŠ   í	  ó   z,getPhases.<locals>.AfterBodyPhase.processEOFc                 S   rÈ   )Nr   rÉ   r•   r(   r(   r)   r‡   ñ	  rË   z0getPhases.<locals>.AfterBodyPhase.processCommentc                 S   ó    | j  d¡ | j jd | j _|S )Nzunexpected-char-after-bodyr    ©rK   r~   rH   r_   r•   r(   r(   r)   rƒ   ö	  ó   z3getPhases.<locals>.AfterBodyPhase.processCharactersc                 S   r  r  r  r•   r(   r(   r)   rÞ   û	  r  z.getPhases.<locals>.AfterBodyPhase.startTagHtmlc                 S   ó*   | j  dd|d i¡ | j jd | j _|S )Nzunexpected-start-tag-after-bodyr@   r    r`  r•   r(   r(   r)   r	  þ	  r1  z/getPhases.<locals>.AfterBodyPhase.startTagOtherc                 S   s,   | j jr| j  d¡ d S | j jd | j _d S )Nz'unexpected-end-tag-after-body-innerhtmlÚafterAfterBody)rK   rR   r~   rH   r_   )rC   r@   r(   r(   r)   r¯  
  s   z,getPhases.<locals>.AfterBodyPhase.endTagHtmlc                 S   rb  )Nzunexpected-end-tag-after-bodyr@   r    r`  r•   r(   r(   r)   r  

  r1  z-getPhases.<locals>.AfterBodyPhase.endTagOtherr°   N)r9   r:   r;   ró   rà   rŠ   r‡   rƒ   rÞ   r	  r¯  r  r   r  rÕ   r  rß   r(   r(   r(   r)   ÚAfterBodyPhaseê	  s    ÿ
rd  c                       s’   e Zd Zeƒ Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Ze d” jfdefdefde	fg¡Ze
e_e defg¡Zee_dS )z"getPhases.<locals>.InFramesetPhasec                 S   rï  )Nrv   r°   zeof-in-framesetrð  rB   r(   r(   r)   rŠ   
  rñ  z-getPhases.<locals>.InFramesetPhase.processEOFc                 S   rÌ   )Nzunexpected-char-in-framesetrÍ   r•   r(   r(   r)   rƒ   "
  rp   z4getPhases.<locals>.InFramesetPhase.processCharactersc                 S   r  r-   )r>   r¶   r•   r(   r(   r)   rF  %
  rp   z3getPhases.<locals>.InFramesetPhase.startTagFramesetc                 S   s   | j  |¡ | j j ¡  d S r-   r  r•   r(   r(   r)   ÚstartTagFrame(
  rì  z0getPhases.<locals>.InFramesetPhase.startTagFramec                 S   r  r  r  r•   r(   r(   r)   ÚstartTagNoframes,
  r  z3getPhases.<locals>.InFramesetPhase.startTagNoframesc                 S   r  )Nz unexpected-start-tag-in-framesetr@   rÍ   r•   r(   r(   r)   r	  /
  r  z0getPhases.<locals>.InFramesetPhase.startTagOtherc                 S   sb   | j jd jdkr| j d¡ n| j j ¡  | jjs-| j jd jdkr/| jjd | j_d S d S d S )Nrv   r°   z)unexpected-frameset-in-frameset-innerhtmlr¯   ÚafterFrameset)	r>   r}   r@   rK   r~   rÖ   rR   rH   r_   r•   r(   r(   r)   ÚendTagFrameset3
  s   ÿüz1getPhases.<locals>.InFramesetPhase.endTagFramesetc                 S   r  )Nzunexpected-end-tag-in-framesetr@   rÍ   r•   r(   r(   r)   r  ?
  r  z.getPhases.<locals>.InFramesetPhase.endTagOtherr°   r¯   rè  r0  N)r9   r:   r;   ró   rà   rŠ   rƒ   rF  re  rf  r	  rh  r  r   r  rÞ   rÕ   r  rß   r(   r  r(   r)   ÚInFramesetPhase
  s*    üÿ
ri  c                       sv   e Zd Zeƒ Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
e d” jfdefg¡Zee_e de	fg¡Ze
e_dS )z%getPhases.<locals>.AfterFramesetPhasec                 S   râ   r-   r(   rB   r(   r(   r)   rŠ   T
  r^  z0getPhases.<locals>.AfterFramesetPhase.processEOFc                 S   rÌ   )Nzunexpected-char-after-framesetrÍ   r•   r(   r(   r)   rƒ   X
  rp   z7getPhases.<locals>.AfterFramesetPhase.processCharactersc                 S   r  r:  r  r•   r(   r(   r)   rf  [
  r  z6getPhases.<locals>.AfterFramesetPhase.startTagNoframesc                 S   r  )Nz#unexpected-start-tag-after-framesetr@   rÍ   r•   r(   r(   r)   r	  ^
  r  z3getPhases.<locals>.AfterFramesetPhase.startTagOtherc                 S   s   | j jd | j _d S )NÚafterAfterFrameset)rK   rH   r_   r•   r(   r(   r)   r¯  b
  rÒ   z0getPhases.<locals>.AfterFramesetPhase.endTagHtmlc                 S   r  )Nz!unexpected-end-tag-after-framesetr@   rÍ   r•   r(   r(   r)   r  e
  r  z1getPhases.<locals>.AfterFramesetPhase.endTagOtherr°   r0  N)r9   r:   r;   ró   rà   rŠ   rƒ   rf  r	  r¯  r  r   r  rÞ   rÕ   r  rß   r(   r  r(   r)   ÚAfterFramesetPhaseP
  s"    þÿ
rk  c                   @   s`   e Zd Zeƒ Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Ze de	fg¡Ze
e_dS )z&getPhases.<locals>.AfterAfterBodyPhasec                 S   râ   r-   r(   rB   r(   r(   r)   rŠ   w
  rÇ   z1getPhases.<locals>.AfterAfterBodyPhase.processEOFc                 S   rã   r-   rä   r•   r(   r(   r)   r‡   z
  ræ   z5getPhases.<locals>.AfterAfterBodyPhase.processCommentc                 S   r  r  r;  r•   r(   r(   r)   r„   }
  r  z=getPhases.<locals>.AfterAfterBodyPhase.processSpaceCharactersc                 S   r_  )Núexpected-eof-but-got-charr    r`  r•   r(   r(   r)   rƒ   €
  ra  z8getPhases.<locals>.AfterAfterBodyPhase.processCharactersc                 S   r  r  r  r•   r(   r(   r)   rÞ   …
  r  z3getPhases.<locals>.AfterAfterBodyPhase.startTagHtmlc                 S   rb  )Núexpected-eof-but-got-start-tagr@   r    r`  r•   r(   r(   r)   r	  ˆ
  r1  z4getPhases.<locals>.AfterAfterBodyPhase.startTagOtherc                 S   rb  )Núexpected-eof-but-got-end-tagr@   r    r`  r•   r(   r(   r)   r†   Ž
  r1  z4getPhases.<locals>.AfterAfterBodyPhase.processEndTagr°   N)r9   r:   r;   ró   rà   rŠ   r‡   r„   rƒ   rÞ   r	  r†   r   r  rÕ   r  r(   r(   r(   r)   ÚAfterAfterBodyPhaset
  s    ÿ
ro  c                   @   sn   e Zd Zeƒ Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Ze de	fde
fg¡Zee_dS )z*getPhases.<locals>.AfterAfterFramesetPhasec                 S   râ   r-   r(   rB   r(   r(   r)   rŠ   œ
  rÇ   z5getPhases.<locals>.AfterAfterFramesetPhase.processEOFc                 S   rã   r-   rä   r•   r(   r(   r)   r‡   Ÿ
  ræ   z9getPhases.<locals>.AfterAfterFramesetPhase.processCommentc                 S   r  r  r;  r•   r(   r(   r)   r„   ¢
  r  zAgetPhases.<locals>.AfterAfterFramesetPhase.processSpaceCharactersc                 S   rÌ   )Nrl  rÍ   r•   r(   r(   r)   rƒ   ¥
  rp   z<getPhases.<locals>.AfterAfterFramesetPhase.processCharactersc                 S   r  r  r  r•   r(   r(   r)   rÞ   ¨
  r  z7getPhases.<locals>.AfterAfterFramesetPhase.startTagHtmlc                 S   r  r:  r  r•   r(   r(   r)   ÚstartTagNoFrames«
  r  z;getPhases.<locals>.AfterAfterFramesetPhase.startTagNoFramesc                 S   r  )Nrm  r@   rÍ   r•   r(   r(   r)   r	  ®
  r  z8getPhases.<locals>.AfterAfterFramesetPhase.startTagOtherc                 S   r  )Nrn  r@   rÍ   r•   r(   r(   r)   r†   ²
  r  z8getPhases.<locals>.AfterAfterFramesetPhase.processEndTagr°   r0  N)r9   r:   r;   ró   rà   rŠ   r‡   r„   rƒ   rÞ   rp  r	  r†   r   r  rÕ   r  r(   r(   r(   r)   ÚAfterAfterFramesetPhase™
  s    þ
rq  rV   rU   r¢   r  r!  r%  r    rµ   rŸ   rô  r�   rž   rœ   r›   rš   r™   r�  )rz   r­  r¡   rg  rc  rj  )r   )rI   rX   rÃ   rô   rý   r  r9  rC  rI  rí  r  r$  r-  r9  r?  rD  rN  rP  r]  rd  ri  rk  ro  rq  r(   )rM  r	  rá   r)   rG   Œ  s–   H %-f?B     Y! /F@bYLc&r.8$%%ÿþýüûúùø	÷
öõôóòñðïérG   c                    sJ   t | d ƒt ˆ ƒ@ }|r#t| d ƒ‡ fdd„| d  ¡ D ƒƒ| d< d S d S )Nrw   c                 3   s$   � | ]\}}ˆ   ||¡|fV  qd S r-   )r   )r?   ÚkÚv©rU  r(   r)   rW  Ý
  s   € ÿz$adjust_attributes.<locals>.<genexpr>)r   r2   r.   )r‹   rU  Zneeds_adjustmentr(   rt  r)   r”   Ú
  s   
ÿÿr”   rs   Fc                 C   s   |d u ri }t | | ||dœS )N)r2   r@   rw   r{   )r   )r@   r2   rj   r{   r(   r(   r)   rõ   á
  s
   
ÿrõ   c                   @   s   e Zd ZdZdS )ru   zError in parsed documentN)r9   r:   r;   r¹   r(   r(   r(   r)   ru   é
  s    ru   )r   T)r*   r   T)rs   NF),Ú
__future__r   r   r   Zpip._vendor.sixr   r   r0   rê   r   r	   r
   Ztreebuilders.baser   r   Ú	constantsr   r   r   r   r   r   r   r   r   r   r   r   r—   r   r   r   r   r"   r,   r=   rà  r!   ÚmemoizerG   r”   rõ   Ú	Exceptionru   r(   r(   r(   r)   Ú<module>   sP    H

  8
                  _
ÿ