a
    ýÓEbÂÉ ã                   @   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(   ú`/home/ja/django-apps/lartica_env/lib/python3.9/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attributeNameÚ	attribute©Úfunctionr(   r)   r3   L   s
    
z5method_decorator_metaclass.<locals>.Decorated.__new__N)Ú__name__Ú
__module__Ú__qualname__r3   r(   r8   r(   r)   Ú	DecoratedK   s   r=   )r2   )r9   r=   r(   r8   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   ó    z'HTMLParser.__init__.<locals>.<dictcomp>)Ústrictr
   r    r?   ÚerrorsÚ	getPhasesr.   Úphases)rD   r?   rG   r   Údebugr(   rC   r)   Ú__init__]   s    



ÿzHTMLParser.__init__r*   c                 K   sf   || _ || _|| _tj|fd| i|¤Ž| _|  ¡  z|  ¡  W n" ty`   |  ¡  |  ¡  Y n0 d S )NÚparser)	ÚinnerHTMLModer+   Ú	scriptingr	   ZHTMLTokenizerÚ	tokenizerÚresetÚmainLoopr   )rD   ÚstreamÚ	innerHTMLr+   rO   r%   r(   r(   r)   Ú_parse|   s    zHTMLParser._parsec                 C   sÄ   | j  ¡  d| _g | _g | _d| _| jrœ| j ¡ | _	| j	t
v rL| jj| j_n0| j	tv rd| 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?   rQ   ÚfirstStartTagrH   ÚlogÚ
compatModerN   r+   ÚlowerrT   r   rP   ÚrcdataStateÚstater   ÚrawtextStateÚplaintextStaterJ   ÚphaseÚinsertHtmlElementÚresetInsertionModeZ	lastPhaseZbeforeRCDataPhaseÚ
framesetOKrC   r(   r(   r)   rQ   Š   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

        rP   Nr   )ÚhasattrrP   rS   ÚcharEncodingrA   rC   r(   r(   r)   ÚdocumentEncoding¬   s    
zHTMLParser.documentEncodingc                 C   sJ   |j dkr6|jtd kr6d|jv o4|jd  t¡dv S |j|j ftv S d S )Núannotation-xmlÚmathmlÚencoding)z	text/htmlzapplication/xhtml+xml)rA   Ú	namespacer   Ú
attributesÚ	translater   r   ©rD   Úelementr(   r(   r)   ÚisHTMLIntegrationPoint¶   s    
ÿ

ÿþÿz!HTMLParser.isHTMLIntegrationPointc                 C   s   |j |jftv S r-   )rk   rA   r   rn   r(   r(   r)   ÚisMathMLTextIntegrationPointÀ   s    z'HTMLParser.isMathMLTextIntegrationPointc                 C   sf  t d }t d }t d }t d }t d }t d }t d }| jD �]â}d }	|}
|
d u�rö|
}	| jjrn| jjd nd }|r||jnd }|rŠ|jnd }|
d	 }||kr¼|  |
d
 |
 di ¡¡ d }
qLt| jjƒdk�sb|| jj	k�sb|  
|¡�r||k�r|d tddgƒv�sb|||fv �sb|td k�rF|dk�rF||k�rF|d dk�sb|  |¡�rj||||fv �rj| j}n
| jd }||k�rŠ| |
¡}
qL||k�r | |
¡}
qL||k�r¶| |
¡}
qL||k�rÌ| |
¡}
qL||k�râ| |
¡}
qL||krL| |
¡}
qL||kr>|	d r>|	d s>|  dd|	d i¡ q>d}g }|�rb| | j¡ | j ¡ }|�r,| j|v�s,J ‚�q,d S )NÚ
CharactersZSpaceCharactersÚStartTagÚEndTagÚCommentZDoctypeÚ
ParseErroréÿÿÿÿr2   ÚdataÚdatavarsr   rA   ZmglyphZ
malignmarkri   rh   ÚsvgÚinForeignContentÚselfClosingÚselfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)r   rP   r?   ÚopenElementsrk   rA   Ú
parseErrorÚgetÚlenÚdefaultNamespacerq   Ú	frozensetr   rp   ra   rJ   ÚprocessCharactersÚprocessSpaceCharactersÚprocessStartTagÚprocessEndTagÚprocessCommentÚprocessDoctypeÚappendÚ
processEOF)rD   ZCharactersTokenZSpaceCharactersTokenZStartTagTokenZEndTagTokenZCommentTokenZDoctypeTokenZParseErrorTokenÚtokenZ
prev_tokenÚ	new_tokenÚcurrentNodeZcurrentNodeNamespaceZcurrentNodeNamer2   ra   Z	reprocessrJ   r(   r(   r)   rR   Ã   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)rU   r?   ZgetDocument©rD   rS   Ú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)rU   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-   )rH   rŠ   rP   rS   ÚpositionrG   rv   r   )rD   Ú	errorcodery   r(   r(   r)   r   ;  s
    zHTMLParser.parseErrorc                 C   s   t |tƒ d S r-   )Úadjust_attributesr   ©rD   rŒ   r(   r(   r)   r   C  s    z!HTMLParser.adjustMathMLAttributesc                 C   s   t |tƒ d S r-   )r”   r   r•   r(   r(   r)   r   F  s    zHTMLParser.adjustSVGAttributesc                 C   s   t |tƒ d S r-   )r”   ÚadjustForeignAttributesMapr•   r(   r(   r)   r   I  s    z"HTMLParser.adjustForeignAttributesc                 C   s   | j  ¡  d S r-   )rM   ra   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 ]†}|j}d }|| j jd krj| js`J ‚d}| j}|dv r|| js|J ‚|s�|j| j jkr�q8||v r¬| j||  } qÀq8|r8| jd	 } qÀq8|| _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Úhtmlrw   r   T)r¢   rª   r¬   r¯   )r?   r~   rA   rT   rk   r‚   rJ   ra   )rD   ÚlastZnewModesÚnodeZnodeNameZ	new_phaser(   r(   r)   rc   P  sD    ò


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?   ÚinsertElementrP   r_   r^   r]   ra   ÚoriginalPhaserJ   )rD   rŒ   ZcontentTyper(   r(   r)   ÚparseRCDataRawtext|  s    zHTMLParser.parseRCDataRawtext)NFTF)Fr*   F)r‘   N)r:   r;   r<   Ú__doc__rL   rU   rQ   Úpropertyrg   rp   rq   rR   r"   r,   r   r   r   r   r—   rc   r·   r(   r(   r(   r)   r!   V   s$   

"
	
C
,r!   c                    s   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ˆƒ}||||||ˆ |	|
ˆ|||||||||||||d5œS )6Nc                    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)   rE   �  rF   z*getPhases.<locals>.log.<locals>.<dictcomp>c                    s¦   ˆ j  d¡rŒt|ƒdkrŒ|d }dˆ|d  i}|d tv rH|d |d< | jj | jjjj | jj	j
j | j
j ˆ j |f¡ ˆ | g|¢R i |¤ŽS ˆ | g|¢R i |¤ŽS d S )NÚprocessr   r2   rA   )r:   Ú
startswithr�   r   rM   rZ   rŠ   rP   r^   ra   Ú	__class__)rD   r�   r%   rŒ   Úinfo©r9   Z
type_namesr(   r)   Úwrapped’  s    
üz'getPhases.<locals>.log.<locals>.wrapped)r   r.   )r9   rÁ   r(   rÀ   r)   rZ   Ž  s    zgetPhases.<locals>.logc                 S   s   | rt |ƒS tS d 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
        )rM   r?   Z__startTagCacheZ__endTagCachec                 S   s   || _ || _i | _i | _d S r-   )rM   r?   Ú_Phase__startTagCacheÚ_Phase__endTagCache)rD   rM   r?   r(   r(   r)   rL   ¯  s    z!getPhases.<locals>.Phase.__init__c                 S   s   t ‚d S r-   )ÚNotImplementedErrorrC   r(   r(   r)   r‹   µ  s    z#getPhases.<locals>.Phase.processEOFc                 S   s   | j  || j jd ¡ d S )Nrw   ©r?   ÚinsertCommentr~   r•   r(   r(   r)   rˆ   ¸  s    z'getPhases.<locals>.Phase.processCommentc                 S   s   | j  d¡ d S )Nzunexpected-doctype©rM   r   r•   r(   r(   r)   r‰   ½  s    z'getPhases.<locals>.Phase.processDoctypec                 S   s   | j  |d ¡ d S ©Nrx   ©r?   Ú
insertTextr•   r(   r(   r)   r„   À  s    z*getPhases.<locals>.Phase.processCharactersc                 S   s   | j  |d ¡ d S rÉ   rÊ   r•   r(   r(   r)   r…   Ã  s    z/getPhases.<locals>.Phase.processSpaceCharactersc                 S   sj   |d }|| j v r| j | }nD| j|  }| j |< t| j ƒt| jƒd krb| j  tt| j ƒƒ¡ q2||ƒS ©NrA   gš™™™™™ñ?)rÃ   ÚstartTagHandlerr�   ÚpopÚnextÚiter©rD   rŒ   rA   Úfuncr(   r(   r)   r†   Æ  s    
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 )NrA   r¯   znon-html-rootrx   r   F)rM   rY   r   r.   r?   r~   rl   ©rD   rŒ   Úattrr»   r(   r(   r)   ÚstartTagHtml×  s    z%getPhases.<locals>.Phase.startTagHtmlc                 S   sj   |d }|| j v r| j | }nD| j|  }| j |< t| j ƒt| jƒd krb| j  tt| j ƒƒ¡ q2||ƒS rÌ   )rÄ   ÚendTagHandlerr�   rÎ   rÏ   rÐ   rÑ   r(   r(   r)   r‡   á  s    
z&getPhases.<locals>.Phase.processEndTagN)r:   r;   r<   r¸   Ú	__slots__rL   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   s   d S r-   r(   r•   r(   r(   r)   r…   õ  s    z6getPhases.<locals>.InitialPhase.processSpaceCharactersc                 S   s   | j  || j j¡ d S r-   ©r?   rÇ   Údocumentr•   r(   r(   r)   rˆ   ø  s    z.getPhases.<locals>.InitialPhase.processCommentc                 S   sü   |d }|d }|d }|d }|dks@|d us@|d urL|dkrL| j  d¡ |d u rXd}| j |¡ |dkrv| t¡}|rº|d dksº| d	¡sº|d
v sº| d¡rª|d u sº|rÄ| ¡ dkrÄd| j _n$| d¡sà| d¡rè|d urèd| j _| j j	d | j _
d S )NrA   Ú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 quirksrW   )rM   r   r?   ZinsertDoctyperm   r   r½   r\   r[   rJ   ra   )rD   rŒ   rA   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ß   rW   )rM   r[   rJ   ra   rC   r(   r(   r)   ÚanythingElseZ  s    z,getPhases.<locals>.InitialPhase.anythingElsec                 S   s   | j  d¡ |  ¡  |S )Nzexpected-doctype-but-got-chars©rM   r   rà   r•   r(   r(   r)   r„   ^  s    z1getPhases.<locals>.InitialPhase.processCharactersc                 S   s"   | j  dd|d i¡ |  ¡  |S )Nz"expected-doctype-but-got-start-tagrA   rá   r•   r(   r(   r)   r†   c  s
    
ÿz/getPhases.<locals>.InitialPhase.processStartTagc                 S   s"   | j  dd|d i¡ |  ¡  |S )Nz expected-doctype-but-got-end-tagrA   rá   r•   r(   r(   r)   r‡   i  s
    
ÿz-getPhases.<locals>.InitialPhase.processEndTagc                 S   s   | j  d¡ |  ¡  dS )Nzexpected-doctype-but-got-eofTrá   rC   r(   r(   r)   r‹   o  s    z*getPhases.<locals>.InitialPhase.processEOFN)r:   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¯   rs   r¡   )r?   Z
insertRootÚimpliedTagTokenrM   rJ   ra   rC   r(   r(   r)   rb   x  s    z4getPhases.<locals>.BeforeHtmlPhase.insertHtmlElementc                 S   s   |   ¡  dS ©NT©rb   rC   r(   r(   r)   r‹   }  s    z-getPhases.<locals>.BeforeHtmlPhase.processEOFc                 S   s   | j  || j j¡ d S r-   rÙ   r•   r(   r(   r)   rˆ   �  s    z1getPhases.<locals>.BeforeHtmlPhase.processCommentc                 S   s   d S r-   r(   r•   r(   r(   r)   r…   „  s    z9getPhases.<locals>.BeforeHtmlPhase.processSpaceCharactersc                 S   s   |   ¡  |S r-   ræ   r•   r(   r(   r)   r„   ‡  s    z4getPhases.<locals>.BeforeHtmlPhase.processCharactersc                 S   s    |d dkrd| j _|  ¡  |S )NrA   r¯   T)rM   rY   rb   r•   r(   r(   r)   r†   ‹  s    z2getPhases.<locals>.BeforeHtmlPhase.processStartTagc                 S   s4   |d dvr$| j  dd|d i¡ n|  ¡  |S d S )NrA   ©r¬   r­   r¯   Úbrzunexpected-end-tag-before-html)rM   r   rb   r•   r(   r(   r)   r‡   ‘  s    
ÿz0getPhases.<locals>.BeforeHtmlPhase.processEndTagN)r:   r;   r<   râ   r×   rb   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¬   rs   T©ÚstartTagHeadrä   rC   r(   r(   r)   r‹   œ  s    z-getPhases.<locals>.BeforeHeadPhase.processEOFc                 S   s   d S r-   r(   r•   r(   r(   r)   r…      s    z9getPhases.<locals>.BeforeHeadPhase.processSpaceCharactersc                 S   s   |   tddƒ¡ |S ©Nr¬   rs   rê   r•   r(   r(   r)   r„   £  s    z4getPhases.<locals>.BeforeHeadPhase.processCharactersc                 S   s   | j jd  |¡S ©NrŸ   ©rM   rJ   r†   r•   r(   r(   r)   rÕ   §  s    z/getPhases.<locals>.BeforeHeadPhase.startTagHtmlc                 S   s0   | j  |¡ | j jd | j _| jjd | j_d S )Nrw   ÚinHead)r?   rµ   r~   ÚheadPointerrM   rJ   ra   r•   r(   r(   r)   rë   ª  s    z/getPhases.<locals>.BeforeHeadPhase.startTagHeadc                 S   s   |   tddƒ¡ |S rì   rê   r•   r(   r(   r)   ÚstartTagOther¯  s    z0getPhases.<locals>.BeforeHeadPhase.startTagOtherc                 S   s   |   tddƒ¡ |S rì   rê   r•   r(   r(   r)   ÚendTagImplyHead³  s    z2getPhases.<locals>.BeforeHeadPhase.endTagImplyHeadc                 S   s   | j  dd|d i¡ d S )Nzend-tag-after-implied-rootrA   rÈ   r•   r(   r(   r)   ÚendTagOther·  s    
ÿz.getPhases.<locals>.BeforeHeadPhase.endTagOtherr¯   r¬   rç   N)r:   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   s   |   ¡  dS rå   ©rà   rC   r(   r(   r)   r‹   Ê  s    z)getPhases.<locals>.InHeadPhase.processEOFc                 S   s   |   ¡  |S r-   r÷   r•   r(   r(   r)   r„   Î  s    z0getPhases.<locals>.InHeadPhase.processCharactersc                 S   s   | j jd  |¡S rí   rî   r•   r(   r(   r)   rÕ   Ò  s    z+getPhases.<locals>.InHeadPhase.startTagHtmlc                 S   s   | j  d¡ d S )Nz!two-heads-are-not-better-than-onerÈ   r•   r(   r(   r)   rë   Õ  s    z+getPhases.<locals>.InHeadPhase.startTagHeadc                 S   s$   | j  |¡ | j j ¡  d|d< d S ©NTr}   ©r?   rµ   r~   rÎ   r•   r(   r(   r)   ÚstartTagBaseLinkCommandØ  s    z6getPhases.<locals>.InHeadPhase.startTagBaseLinkCommandc                 S   s´   | j  |¡ | j j ¡  d|d< |d }| jjjjd dkr°d|v rZ| jjj |d ¡ nVd|v r°d|v r°|d  	¡ d	kr°t
 |d  d
¡¡}t
 |¡}| ¡ }| jjj |¡ d S )NTr}   rx   r   Z	tentativeÚcharsetÚcontentz
http-equivzcontent-typezutf-8)r?   rµ   r~   rÎ   rM   rP   rS   rf   ZchangeEncodingr\   r   ZEncodingBytesÚencodeZContentAttrParserr"   )rD   rŒ   rl   rx   rM   Úcodecr(   r(   r)   ÚstartTagMetaÝ  s     ÿþ
z+getPhases.<locals>.InHeadPhase.startTagMetac                 S   s   | j  |d¡ d S )Nr³   ©rM   r·   r•   r(   r(   r)   ÚstartTagTitleò  s    z,getPhases.<locals>.InHeadPhase.startTagTitlec                 S   s   | j  |d¡ d S )Nr²   r   r•   r(   r(   r)   ÚstartTagNoFramesStyleõ  s    z4getPhases.<locals>.InHeadPhase.startTagNoFramesStylec                 S   s8   | j jr| j  |d¡ n| j |¡ | j jd | j _d S )Nr²   ÚinHeadNoscript)rM   rO   r·   r?   rµ   rJ   ra   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µ   rM   rP   ZscriptDataStater^   ra   r¶   rJ   r•   r(   r(   r)   ÚstartTagScript   s    z-getPhases.<locals>.InHeadPhase.startTagScriptc                 S   s   |   ¡  |S r-   r÷   r•   r(   r(   r)   rñ     s    z,getPhases.<locals>.InHeadPhase.startTagOtherc                 S   s:   | j jj ¡ }|jdks&J d|j ƒ‚| j jd | j _d S )Nr¬   zExpected head got %sÚ	afterHead©rM   r?   r~   rÎ   rA   rJ   ra   ©rD   rŒ   r±   r(   r(   r)   Ú
endTagHead
  s    z)getPhases.<locals>.InHeadPhase.endTagHeadc                 S   s   |   ¡  |S r-   r÷   r•   r(   r(   r)   ÚendTagHtmlBodyBr  s    z/getPhases.<locals>.InHeadPhase.endTagHtmlBodyBrc                 S   s   | j  dd|d i¡ d S ©Núunexpected-end-tagrA   rÈ   r•   r(   r(   r)   ró     s    z*getPhases.<locals>.InHeadPhase.endTagOtherc                 S   s   |   tdƒ¡ d S )Nr¬   )r	  rä   rC   r(   r(   r)   rà     s    z+getPhases.<locals>.InHeadPhase.anythingElser¯   Útitle)ÚnoframesÚstyleÚnoscriptÚscript)ÚbaseÚbasefontÚbgsoundÚcommandÚlinkr4   r¬   )rè   r¯   r­   N)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(   r)   ÚInHeadPhaseÆ  sD   ÿ÷þ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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   s   | j  d¡ |  ¡  dS )Nzeof-in-head-noscriptTrá   rC   r(   r(   r)   r‹   /  s    z1getPhases.<locals>.InHeadNoscriptPhase.processEOFc                 S   s   | j jd  |¡S ©Nrï   )rM   rJ   rˆ   r•   r(   r(   r)   rˆ   4  s    z5getPhases.<locals>.InHeadNoscriptPhase.processCommentc                 S   s   | j  d¡ |  ¡  |S )Nzchar-in-head-noscriptrá   r•   r(   r(   r)   r„   7  s    z8getPhases.<locals>.InHeadNoscriptPhase.processCharactersc                 S   s   | j jd  |¡S r  ©rM   rJ   r…   r•   r(   r(   r)   r…   <  s    z=getPhases.<locals>.InHeadNoscriptPhase.processSpaceCharactersc                 S   s   | j jd  |¡S rí   rî   r•   r(   r(   r)   rÕ   ?  s    z3getPhases.<locals>.InHeadNoscriptPhase.startTagHtmlc                 S   s   | j jd  |¡S r  rî   r•   r(   r(   r)   rú   B  s    z>getPhases.<locals>.InHeadNoscriptPhase.startTagBaseLinkCommandc                 S   s   | j  dd|d i¡ d S ©Núunexpected-start-tagrA   rÈ   r•   r(   r(   r)   ÚstartTagHeadNoscriptE  s    z;getPhases.<locals>.InHeadNoscriptPhase.startTagHeadNoscriptc                 S   s"   | j  dd|d i¡ |  ¡  |S ©Nzunexpected-inhead-noscript-tagrA   rá   r•   r(   r(   r)   rñ   H  s    z4getPhases.<locals>.InHeadNoscriptPhase.startTagOtherc                 S   s:   | j jj ¡ }|jdks&J d|j ƒ‚| j jd | j _d S )Nr  zExpected noscript got %srï   r  r  r(   r(   r)   ÚendTagNoscriptM  s    z5getPhases.<locals>.InHeadNoscriptPhase.endTagNoscriptc                 S   s"   | j  dd|d i¡ |  ¡  |S r  rá   r•   r(   r(   r)   ÚendTagBrR  s    z/getPhases.<locals>.InHeadNoscriptPhase.endTagBrc                 S   s   | j  dd|d i¡ d S r  rÈ   r•   r(   r(   r)   ró   W  s    z2getPhases.<locals>.InHeadNoscriptPhase.endTagOtherc                 S   s   |   tdƒ¡ d S )Nr  )r  rä   rC   r(   r(   r)   rà   Z  s    z3getPhases.<locals>.InHeadNoscriptPhase.anythingElser¯   )r  r  r  r4   r  r  )r¬   r  r  rè   N)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)   ÚInHeadNoscriptPhase,  s0   ýþ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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   s   |   ¡  dS rå   r÷   rC   r(   r(   r)   r‹   n  s    z,getPhases.<locals>.AfterHeadPhase.processEOFc                 S   s   |   ¡  |S r-   r÷   r•   r(   r(   r)   r„   r  s    z3getPhases.<locals>.AfterHeadPhase.processCharactersc                 S   s   | j jd  |¡S rí   rî   r•   r(   r(   r)   rÕ   v  s    z.getPhases.<locals>.AfterHeadPhase.startTagHtmlc                 S   s(   d| j _| j |¡ | j jd | j _d S )NFrŸ   )rM   rd   r?   rµ   rJ   ra   r•   r(   r(   r)   ÚstartTagBodyy  s    z.getPhases.<locals>.AfterHeadPhase.startTagBodyc                 S   s    | j  |¡ | jjd | j_d S )Nr    )r?   rµ   rM   rJ   ra   r•   r(   r(   r)   ÚstartTagFrameset~  s    z2getPhases.<locals>.AfterHeadPhase.startTagFramesetc                 S   sr   | j  dd|d i¡ | jj | jj¡ | j jd  |¡ | jjd d d… D ] }|jdkrL| jj 	|¡  qnqLd S )Nz#unexpected-start-tag-out-of-my-headrA   rï   rw   r¬   )
rM   r   r?   r~   rŠ   rð   rJ   r†   rA   Úremover  r(   r(   r)   ÚstartTagFromHead‚  s    
ÿ
z2getPhases.<locals>.AfterHeadPhase.startTagFromHeadc                 S   s   | j  dd|d i¡ d S r  rÈ   r•   r(   r(   r)   rë   Œ  s    z.getPhases.<locals>.AfterHeadPhase.startTagHeadc                 S   s   |   ¡  |S r-   r÷   r•   r(   r(   r)   rñ   �  s    z/getPhases.<locals>.AfterHeadPhase.startTagOtherc                 S   s   |   ¡  |S r-   r÷   r•   r(   r(   r)   r
  “  s    z2getPhases.<locals>.AfterHeadPhase.endTagHtmlBodyBrc                 S   s   | j  dd|d i¡ d S r  rÈ   r•   r(   r(   r)   ró   —  s    z-getPhases.<locals>.AfterHeadPhase.endTagOtherc                 S   s.   | j  tddƒ¡ | jjd | j_d| j_d S )Nr­   rs   rŸ   T)r?   rµ   rä   rM   rJ   ra   rd   rC   r(   r(   r)   rà   š  s    z.getPhases.<locals>.AfterHeadPhase.anythingElser¯   r­   r®   )	r  r  r  r  r4   r  r  r  r  r¬   )r­   r¯   rè   N)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)   ÚAfterHeadPhasek  s4   
þù	ÿr%  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 8dh”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g!¡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-   )ÚsuperrL   ÚprocessSpaceCharactersNonPrer…   ©rD   r�   r%   )ÚInBodyPhaser¾   r(   r)   rL   ²  s    z'getPhases.<locals>.InBodyPhase.__init__c                 S   s$   |j |j ko"|j|jko"|j|jkS r-   )rA   rk   rl   )rD   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@ qXq.|  ||¡r.| |¡ q.t|ƒdkshJ ‚t|ƒdkr†| j j |d ¡ | j j |¡ d S )Nrw   é   )	r?   rµ   r~   ÚactiveFormattingElementsr   r*  rŠ   r�   r#  )rD   rŒ   ro   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¡  q:qd S )N)ÚddÚdtÚlir'   r¦   r£   r¨   r¤   r§   r¥   r­   r¯   rw   z expected-closing-tag-but-got-eof)rƒ   r?   r~   rA   rM   r   )rD   Zallowed_elementsr±   r(   r(   r)   r‹   Î  s
    
z)getPhases.<locals>.InBodyPhase.processEOFc                 S   sf   |d }| j | _| d¡rH| jjd jdv rH| jjd  ¡ sH|dd … }|rb| j ¡  | j |¡ d S )Nrx   Ú
rw   )ÚpreÚlistingÚtextarear   )	r'  r…   r½   r?   r~   rA   Z
hasContentÚ#reconstructActiveFormattingElementsrË   )rD   rŒ   rx   r(   r(   r)   Ú!processSpaceCharactersDropNewlineØ  s    
ÿþ
z@getPhases.<locals>.InBodyPhase.processSpaceCharactersDropNewlinec                 S   sT   |d dkrd S | j  ¡  | j  |d ¡ | jjrPtdd„ |d D ƒƒrPd| j_d S )Nrx   ú c                 S   s   g | ]}|t v‘qS r(   ©r   ©r@   Úcharr(   r(   r)   Ú
<listcomp>í  s   ÿzDgetPhases.<locals>.InBodyPhase.processCharacters.<locals>.<listcomp>F)r?   r5  rË   rM   rd   Úanyr•   r(   r(   r)   r„   å  s    
ÿÿz0getPhases.<locals>.InBodyPhase.processCharactersc                 S   s   | j  ¡  | j  |d ¡ d S rÉ   )r?   r5  rË   r•   r(   r(   r)   r'  ñ  s    
z;getPhases.<locals>.InBodyPhase.processSpaceCharactersNonPrec                 S   s   | j jd  |¡S r  rî   r•   r(   r(   r)   ÚstartTagProcessInHeadõ  s    z4getPhases.<locals>.InBodyPhase.startTagProcessInHeadc                 S   sˆ   | j  dddi¡ t| jjƒdks4| jjd jdkrB| j js„J ‚nBd| j _|d  ¡ D ],\}}|| jjd j	vrV|| jjd j	|< qVd S )Nr  rA   r­   r   Frx   )
rM   r   r�   r?   r~   rA   rT   rd   r.   rl   rÓ   r(   r(   r)   r!  ø  s    ÿz+getPhases.<locals>.InBodyPhase.startTagBodyc                 S   s¶   | j  dddi¡ t| jjƒdks4| jjd jdkrB| j js²J ‚np| j jsLnf| jjd jrv| jjd j 	| jjd ¡ | jjd jdkr–| jj 
¡  qv| j |¡ | j jd | j _d S )	Nr  rA   r®   r   r­   rw   r¯   r    )rM   r   r�   r?   r~   rA   rT   rd   ÚparentÚremoveChildrÎ   rµ   rJ   ra   r•   r(   r(   r)   r"    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'   rA  rB  F)	r?   rD  rE  rä   rµ   rM   rd   r6  r…   r•   r(   r(   r)   ÚstartTagPreListing  s
    z1getPhases.<locals>.InBodyPhase.startTagPreListingc                 S   sZ   | j jr| j dddi¡ n:| j jddd�r:|  tdƒ¡ | j  |¡ | j jd | j _d S )Nr  rA   Úformr'   rA  rB  rw   )	r?   ÚformPointerrM   r   rD  rE  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ƒ¡  qx|j	t
v r6|jdvr6 qxq6| jjd	d
d�rœ| j j td	dƒ¡ | j |¡ d S )NFr0  r/  r.  )r0  r/  r.  rA   rt   )Úaddressr*   r'   r'   rA  rB  )rM   rd   Úreversedr?   r~   rA   ra   r‡   rä   Ú	nameTupler   rD  rµ   )rD   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 r@  )	r?   rD  rE  rä   rµ   rM   rP   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 rR| j dd|d i¡ | j j 	¡  | j  
|¡ d S )Nr'   rA  rB  rw   r  rA   )r?   rD  rE  rä   r~   rA   r   rM   r   rÎ   rµ   r•   r(   r(   r)   ÚstartTagHeadingB  s    z.getPhases.<locals>.InBodyPhase.startTagHeadingc                 S   s~   | j  d¡}|rf| j ddddœ¡ |  tdƒ¡ || j jv rL| j j |¡ || j jv rf| j j |¡ | j  	¡  |  
|¡ d S )NÚaú$unexpected-start-tag-implies-end-tag©Z	startNameZendName)r?   Ú!elementInActiveFormattingElementsrM   r   ÚendTagFormattingrä   r~   r#  r,  r5  r-  )rD   rŒ   ZafeAElementr(   r(   r)   Ú	startTagAJ  s    ÿ
z(getPhases.<locals>.InBodyPhase.startTagAc                 S   s   | j  ¡  |  |¡ d S r-   )r?   r5  r-  r•   r(   r(   r)   ÚstartTagFormattingW  s    
z1getPhases.<locals>.InBodyPhase.startTagFormattingc                 S   sP   | j  ¡  | j  d¡rB| j ddddœ¡ |  tdƒ¡ | j  ¡  |  |¡ d S )NÚnobrrR  rS  )r?   r5  rD  rM   r   r‡   rä   r-  r•   r(   r(   r)   ÚstartTagNobr[  s    
ÿ
z+getPhases.<locals>.InBodyPhase.startTagNobrc                 S   sT   | j  d¡r2| j ddddœ¡ |  tdƒ¡ |S | j  ¡  | j  |¡ d| j_d S )NrA  rR  rS  F)	r?   rD  rM   r   r‡   rä   r5  rµ   rd   r•   r(   r(   r)   ÚstartTagButtone  s    ÿ
z-getPhases.<locals>.InBodyPhase.startTagButtonc                 S   s0   | j  ¡  | j  |¡ | j j t¡ d| j_d S ©NF)r?   r5  rµ   r,  rŠ   r   rM   rd   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'   rA  rB  Fr²   )r?   rD  rE  rä   r5  rM   rd   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'   rA  rB  Frž   )
rM   r[   r?   rD  r‡   rä   rµ   rd   rJ   ra   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?   r5  rµ   r~   rÎ   rM   rd   r•   r(   r(   r)   ÚstartTagVoidFormatting…  s
    
z5getPhases.<locals>.InBodyPhase.startTagVoidFormattingc                 S   s@   | j j}|  |¡ d|d v r<|d d  t¡dkr<|| j _d S )Nr2   rx   Úhidden)rM   rd   r_  rm   r   )rD   rŒ   rd   r(   r(   r)   ÚstartTagInputŒ  s    
ÿz,getPhases.<locals>.InBodyPhase.startTagInputc                 S   s$   | j  |¡ | j j ¡  d|d< d S rø   rù   r•   r(   r(   r)   ÚstartTagParamSource”  s    z2getPhases.<locals>.InBodyPhase.startTagParamSourcec                 S   sJ   | j jddd�r|  tdƒ¡ | j  |¡ | j j ¡  d|d< d| j_d S )Nr'   rA  rB  Tr}   F)	r?   rD  rE  rä   rµ   r~   rÎ   rM   rd   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newNamers   rx   r|   ©rl   r|   )rM   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 rŒ|d d }nd}|  td |dœ¡ |d  ¡ }d|v r¾|d= d|v rÌ|d= d|d< |  tdd||d d�¡ |  	td
ƒ¡ |  td	dƒ¡ |  	tdƒ¡ d S )Nzdeprecated-tagrA   ÚisindexÚactionrx   rH  rs   )rl   ÚhrÚlabelÚpromptz3This is a searchable index. Enter search keywords: rr   ©r2   rx   Úinputr|   rg  )
rM   r   r?   rI  r†   rä   r„   r   Úcopyr‡   )rD   rŒ   Z
form_attrsrm  rl   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µ   rM   rP   r]   r^   r6  r…   rd   r•   r(   r(   r)   ÚstartTagTextareaÈ  s    z/getPhases.<locals>.InBodyPhase.startTagTextareac                 S   s   d| j _|  |¡ d S r[  )rM   rd   ÚstartTagRawtextr•   r(   r(   r)   ÚstartTagIFrameÎ  s    z-getPhases.<locals>.InBodyPhase.startTagIFramec                 S   s"   | j jr|  |¡ n
|  |¡ d S r-   )rM   rO   rs  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)   rs  Ø  s    z.getPhases.<locals>.InBodyPhase.startTagRawtextc                 S   s@   | j jd jdkr$| jj tdƒ¡ | j  ¡  | jj  |¡ d S ©Nrw   Úoption)	r?   r~   rA   rM   ra   r‡   rä   r5  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 rx| jjd | j_n| jjd	 | j_d S )
NFrž   rœ   r�   r›   rš   r™   ÚinSelectInTabler˜   )r?   r5  rµ   rM   rd   ra   rJ   r•   r(   r(   r)   ÚstartTagSelectâ  s    





ûz-getPhases.<locals>.InBodyPhase.startTagSelectc                 S   sB   | j  d¡r2| j  ¡  | j jd jdkr2| j ¡  | j  |¡ d S )NÚrubyrw   )r?   rD  ÚgenerateImpliedEndTagsr~   rA   rM   r   rµ   r•   r(   r(   r)   ÚstartTagRpRtð  s
    

z+getPhases.<locals>.InBodyPhase.startTagRpRtc                 S   sZ   | j  ¡  | j |¡ | j |¡ td |d< | j  |¡ |d rV| j j ¡  d|d< d S )Nri   rk   r|   Tr}   )	r?   r5  rM   r   r   r   rµ   r~   rÎ   r•   r(   r(   r)   ÚstartTagMath÷  s    
z+getPhases.<locals>.InBodyPhase.startTagMathc                 S   sZ   | j  ¡  | j |¡ | j |¡ td |d< | j  |¡ |d rV| j j ¡  d|d< d S )Nrz   rk   r|   Tr}   )	r?   r5  rM   r   r   r   rµ   r~   rÎ   r•   r(   r(   r)   ÚstartTagSvg  s    
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-ignoredrA   NrÈ   r•   r(   r(   r)   ÚstartTagMisplaced  s    z0getPhases.<locals>.InBodyPhase.startTagMisplacedc                 S   s   | j  ¡  | j  |¡ d S r-   )r?   r5  rµ   r•   r(   r(   r)   rñ     s    
z,getPhases.<locals>.InBodyPhase.startTagOtherc                 S   sœ   | j jddd�sD|  tddƒ¡ | j dddi¡ |  tddƒ¡ nT| j  d¡ | j jd j	dkrt| j dddi¡ | j j 
¡ }|j	dkr˜| j j 
¡ }q€d S )	Nr'   rA  rB  rs   r  rA   rt   rw   )r?   rD  rF  rä   rM   r   rE  r{  r~   rA   rÎ   r  r(   r(   r)   rE    s    
z&getPhases.<locals>.InBodyPhase.endTagPc                 S   s~   | j  d¡s| j ¡  d S | j jd jdkrj| j jdd … D ],}|jtdƒvr<| j dd|jdœ¡  qjq<| jjd | j_d S )Nr­   rw   é   )r.  r/  r0  Úoptgrouprv  r'   ÚrpÚrtr¦   r£   r¨   r¤   r§   r¥   r­   r¯   ú$expected-one-end-tag-but-got-another©ZgotNameZexpectedNameÚ	afterBody)	r?   rD  rM   r   r~   rA   rƒ   rJ   ra   r  r(   r(   r)   Ú
endTagBody)  s    

þz)getPhases.<locals>.InBodyPhase.endTagBodyc                 S   s"   | j  d¡r|  tdƒ¡ |S d S )Nr­   )r?   rD  r‡  rä   r•   r(   r(   r)   Ú
endTagHtml;  s    z)getPhases.<locals>.InBodyPhase.endTagHtmlc                 S   sŽ   |d dkr| j | _| j |d ¡}|r2| j ¡  | jjd j|d kr^| j dd|d i¡ |rŠ| jj 	¡ }|j|d krŠ| jj 	¡ }qnd S )NrA   r2  rw   úend-tag-too-early)
r'  r…   r?   rD  r{  r~   rA   rM   r   rÎ   )rD   rŒ   ZinScoper±   r(   r(   r)   ÚendTagBlockA  s    
z*getPhases.<locals>.InBodyPhase.endTagBlockc                 S   sv   | j j}d | j _|d u s$| j  |¡s8| j dddi¡ n:| j  ¡  | j jd |krd| j dddi¡ | j j |¡ d S )Nr  rA   rH  rw   zend-tag-too-early-ignored)r?   rI  rD  rM   r   r{  r~   r#  r  r(   r(   r)   Ú
endTagFormO  s    ÿ
ÿz)getPhases.<locals>.InBodyPhase.endTagFormc                 S   s¬   |d dkrd}nd }| j j|d |d�sB| j dd|d i¡ nf| j j|d d� | j jd j|d kr€| j dd|d i¡ | j j ¡ }|j|d kr¨| j j ¡ }qŒd S )	NrA   r0  ÚlistrB  r  ©Úexcluderw   r‰  )r?   rD  rM   r   r{  r~   rA   rÎ   )rD   rŒ   rC  r±   r(   r(   r)   ÚendTagListItem\  s    
þz-getPhases.<locals>.InBodyPhase.endTagListItemc                 S   s’   t D ]}| j |¡r| j ¡   q$q| jjd j|d krP| j dd|d i¡ t D ]8}| j |¡rT| jj ¡ }|jt vrˆ| jj ¡ }qp qŽqTd S )Nrw   rA   r‰  )	r   r?   rD  r{  r~   rA   rM   r   rÎ   )rD   rŒ   Úitemr(   r(   r)   ÚendTagHeadingm  s    

z,getPhases.<locals>.InBodyPhase.endTagHeadingc                 S   s  d}|dk �r
|d7 }| j  |d ¡}|rD|| j jv rR| j  |j¡sR|  |¡ dS || j jvr†| j dd|d i¡ | j j 	|¡ dS | j  |j¡s®| j dd|d i¡ dS || j jd krÔ| j d	d|d i¡ | j j 
|¡}d}| j j|d… D ]}|jtv rö|} �qqö|du �rR| j j ¡ }||k�r@| j j ¡ }�q&| j j 	|¡ dS | j j|d  }| j j 
|¡}| }	}
d}| j j 
|
¡}|d
k �rX|d7 }|d8 }| j j| }
|
| j jv�rÐ| j j 	|
¡ �qŠ|
|k�rÞ�qX|	|k�rú| j j 
|
¡d }|
 ¡ }|| j j| j j 
|
¡< || j j| j j 
|
¡< |}
|	j�rF|	j |	¡ |
 |	¡ |
}	�qŠ|	j�rl|	j |	¡ |jtdƒv �r˜| j  ¡ \}}| |	|¡ n
| |	¡ | ¡ }| |¡ | |¡ | j j 	|¡ | j j ||¡ | j j 	|¡ | j j | j j 
|¡d |¡ qdS )z)The much-feared adoption agency algorithmr   é   r   rA   Nzadoption-agency-1.2zadoption-agency-4.4rw   zadoption-agency-1.3r+  ©r«   r¦   r¨   r§   r¥   )r?   rT  r~   rD  rA   ró   rM   r   r,  r#  ÚindexrM  r   rÎ   Z	cloneNoder>  r?  ZappendChildrƒ   ZgetTableMisnestedNodePositionÚinsertBeforeZreparentChildrenÚinsert)rD   rŒ   ZouterLoopCounterZformattingElementZafeIndexZfurthestBlockro   ZcommonAncestorÚbookmarkZlastNoder±   ZinnerLoopCounterr”  Úcloner>  r•  r(   r(   r)   rU  |  sž    

ÿ
ÿþ







ÿÿÿÿ



ÿz/getPhases.<locals>.InBodyPhase.endTagFormattingc                 S   sŒ   | j  |d ¡r| j  ¡  | j jd j|d krF| j dd|d i¡ | j  |d ¡rˆ| j j ¡ }|j|d kr~| j j ¡ }qb| j  ¡  d S )NrA   rw   r‰  )	r?   rD  r{  r~   rA   rM   r   rÎ   ÚclearActiveFormattingElements)rD   rŒ   ro   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 elementrf  rs   )rM   r   r?   r5  rµ   rä   r~   rÎ   r•   r(   r(   r)   r  +  s    ÿ
z'getPhases.<locals>.InBodyPhase.endTagBrc                 S   s¤   | j jd d d… D ]Œ}|j|d krz| j j|d d� | j jd j|d krb| j dd|d i¡ | j j ¡ |krtqb q q|jtv r| j dd|d i¡  q qd S )Nrw   rA   r�  r  )	r?   r~   rA   r{  rM   r   rÎ   rM  r   r  r(   r(   r)   ró   2  s    
z*getPhases.<locals>.InBodyPhase.endTagOtherr¯   )	r  r  r  r  r  r4   r  r  r  r­   r®   )rK  ÚarticleÚasideÚ
blockquoteÚcenterÚdetailsÚdirr*   ÚdlÚfieldsetÚ
figcaptionÚfigureÚfooterÚheaderÚhgroupÚmainÚmenuÚnavÚolr'   ÚsectionÚsummaryÚul)r2  r3  rH  )r0  r.  r/  rV   rQ  )ÚbÚbigÚcodeÚemÚfontÚiÚsÚsmallÚstrikeÚstrongÚttÚurX  rA  )ZappletZmarqueeÚobjectZxmpr«   )Úarearè   Úembedre  ÚkeygenZwbr)ÚparamÚsourceÚtrackro  rk  rd  ri  r4  Ziframer  )Znoembedr  r¢   )r‚  rƒ  )rv  r�  Úmathrz   )r©   Úcolrª   Úframer¬   r¦   r£   r¨   r¤   r§   r¥   )rK  r›  rœ  r�  rA  rž  rŸ  Zdialogr   r*   r¡  r¢  r£  r¤  r¥  r¦  r§  r3  r¨  r©  rª  r«  r2  r¬  r­  r®  r'   )r.  r/  r0  )rQ  r¯  r°  r±  r²  r³  r´  rX  rµ  r¶  r·  r¸  r¹  rº  rè   )?r:   r;   r<   r×   rL   r*  r-  r‹   r6  r„   r'  r=  r!  r"  rF  rG  rJ  rN  rO  rP  rV  rW  rY  rZ  r\  r]  r^  r_  ra  rb  rc  rh  rq  rr  rt  r  rs  rw  ry  r|  r}  r~  r  rñ   rE  r‡  rˆ  rŠ  r‹  r�  r‘  rU  rš  r  ró   r   rô   rÕ   r   rÍ   rõ   rÖ   Ú__classcell__r(   )r)  rØ   ©r¾   r)   r)  ­  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	e
 g ¡Zee_e
 defg¡Ze	e_dS )zgetPhases.<locals>.TextPhasec                 S   s   | j  |d ¡ d S rÉ   rÊ   r•   r(   r(   r)   r„   „  s    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-eofrA   rw   T)rM   r   r?   r~   rA   rÎ   r¶   ra   rC   r(   r(   r)   r‹   ‡  s    ÿz'getPhases.<locals>.TextPhase.processEOFc                 S   s   dsJ d|d  ƒ‚d S )NFz4Tried to process start tag %s in RCDATA/RAWTEXT moderA   r(   r•   r(   r(   r)   rñ   Ž  s    z*getPhases.<locals>.TextPhase.startTagOtherc                 S   s*   | j j ¡ }|jdksJ ‚| jj| j_d S )Nr  )r?   r~   rÎ   rA   rM   r¶   ra   r  r(   r(   r)   ÚendTagScript‘  s    z)getPhases.<locals>.TextPhase.endTagScriptc                 S   s   | j j ¡  | jj| j_d S r-   )r?   r~   rÎ   rM   r¶   ra   r•   r(   r(   r)   ró   ˜  s    z(getPhases.<locals>.TextPhase.endTagOtherr  N)r:   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   s$   | j jd jdvr | j j ¡  q d S )Nrw   )r«   r¯   )r?   r~   rA   rÎ   rC   r(   r(   r)   ÚclearStackToTableContext§  s    z8getPhases.<locals>.InTablePhase.clearStackToTableContextc                 S   s0   | j jd jdkr | j d¡ n| jjs,J ‚d S )Nrw   r¯   zeof-in-table©r?   r~   rA   rM   r   rT   rC   r(   r(   r)   r‹   °  s    z*getPhases.<locals>.InTablePhase.processEOFc                 S   s4   | j j}| j jd | j _|| j j_| j j |¡ d S ©NÚinTableText)rM   ra   rJ   r¶   r…   ©rD   rŒ   r¶   r(   r(   r)   r…   ·  s    
z6getPhases.<locals>.InTablePhase.processSpaceCharactersc                 S   s4   | j j}| j jd | j _|| j j_| j j |¡ d S rË  )rM   ra   rJ   r¶   r„   rÍ  r(   r(   r)   r„   ½  s    
z1getPhases.<locals>.InTablePhase.processCharactersc                 S   s&   d| j _| jjd  |¡ d| j _d S )NTrŸ   F)r?   ÚinsertFromTablerM   rJ   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?   r,  rŠ   r   rµ   rM   rJ   ra   r•   r(   r(   r)   ÚstartTagCaptionÊ  s    z/getPhases.<locals>.InTablePhase.startTagCaptionc                 S   s(   |   ¡  | j |¡ | jjd | j_d S )Nr�   ©rÉ  r?   rµ   rM   rJ   ra   r•   r(   r(   r)   ÚstartTagColgroupÐ  s    z0getPhases.<locals>.InTablePhase.startTagColgroupc                 S   s   |   tddƒ¡ |S )Nrª   rs   )rÑ  rä   r•   r(   r(   r)   ÚstartTagColÕ  s    z+getPhases.<locals>.InTablePhase.startTagColc                 S   s(   |   ¡  | j |¡ | jjd | j_d S ©Nr›   rÐ  r•   r(   r(   r)   ÚstartTagRowGroupÙ  s    z0getPhases.<locals>.InTablePhase.startTagRowGroupc                 S   s   |   tddƒ¡ |S )Nr¦   rs   )rÔ  rä   r•   r(   r(   r)   ÚstartTagImplyTbodyÞ  s    z2getPhases.<locals>.InTablePhase.startTagImplyTbodyc                 S   s6   | j  ddddœ¡ | j j tdƒ¡ | j js2|S d S )NrR  r«   rS  )rM   r   ra   r‡   rä   rT   r•   r(   r(   r)   r^  â  s    ÿz-getPhases.<locals>.InTablePhase.startTagTablec                 S   s   | j jd  |¡S r  rî   r•   r(   r(   r)   ÚstartTagStyleScripté  s    z3getPhases.<locals>.InTablePhase.startTagStyleScriptc                 S   sV   d|d v rH|d d   t¡dkrH| j d¡ | j |¡ | jj ¡  n
|  |¡ d S )Nr2   rx   r`  z unexpected-hidden-input-in-table)	rm   r   rM   r   r?   rµ   r~   rÎ   rñ   r•   r(   r(   r)   ra  ì  s    ÿz-getPhases.<locals>.InTablePhase.startTagInputc                 S   sD   | j  d¡ | jjd u r@| j |¡ | jjd | j_| jj ¡  d S )Nzunexpected-form-in-tablerw   )rM   r   r?   rI  rµ   r~   rÎ   r•   r(   r(   r)   rJ  ö  s
    z,getPhases.<locals>.InTablePhase.startTagFormc                 S   s<   | j  dd|d i¡ d| j_| j jd  |¡ d| j_d S )Nz)unexpected-start-tag-implies-table-voodoorA   TrŸ   F)rM   r   r?   rÎ  rJ   r†   r•   r(   r(   r)   rñ   ý  s    z-getPhases.<locals>.InTablePhase.startTagOtherc                 S   sœ   | j jddd�r‚| j  ¡  | j jd jdkrJ| j dd| j jd jdœ¡ | j jd jdkrj| j j ¡  qJ| j j ¡  | j ¡  n| jj	sŽJ ‚| j ¡  d S )Nr«   rB  rw   zend-tag-too-early-namedr…  )
r?   rD  r{  r~   rA   rM   r   rÎ   rc   rT   r•   r(   r(   r)   ÚendTagTable  s    
ÿÿz+getPhases.<locals>.InTablePhase.endTagTablec                 S   s   | j  dd|d i¡ d S r  rÈ   r•   r(   r(   r)   ÚendTagIgnore  s    z,getPhases.<locals>.InTablePhase.endTagIgnorec                 S   s<   | j  dd|d i¡ d| j_| j jd  |¡ d| j_d S )Nz'unexpected-end-tag-implies-table-voodoorA   TrŸ   F)rM   r   r?   rÎ  rJ   r‡   r•   r(   r(   r)   ró     s    z+getPhases.<locals>.InTablePhase.endTagOtherr¯   r©   rª   rÃ  ©r¦   r¨   r§   )r£   r¤   r¥   r«   )r  r  ro  rH  )r­   r©   rÃ  rª   r¯   r¦   r£   r¨   r¤   r§   r¥   N)r:   r;   r<   râ   r×   rÉ  r‹   r…   r„   rË   rÏ  rÑ  rÒ  rÔ  rÕ  r^  rÖ  ra  rJ  rñ   r×  rØ  ró   r   rô   rÕ   rÍ   rõ   rÖ   r(   ©rØ   r(   r)   ÚInTablePhase¢  sN   	
öÿþ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-   )r&  rL   r¶   rÜ  r(  )ÚInTableTextPhaser¾   r(   r)   rL   6  s    z,getPhases.<locals>.InTableTextPhase.__init__c                 S   sd   d  dd„ | jD ƒ¡}tdd„ |D ƒƒrJtd |dœ}| jjd  |¡ n|rZ| j |¡ g | _d S )NrÞ   c                 S   s   g | ]}|d  ‘qS )rx   r(   ©r@   r�  r(   r(   r)   r;  <  rF   zGgetPhases.<locals>.InTableTextPhase.flushCharacters.<locals>.<listcomp>c                 S   s   g | ]}|t v‘qS r(   r8  rÞ  r(   r(   r)   r;  =  rF   rr   rn  rž   )ÚjoinrÜ  r<  r   rM   rJ   rË   r?   )rD   rx   rŒ   r(   r(   r)   ÚflushCharacters;  s    z3getPhases.<locals>.InTableTextPhase.flushCharactersc                 S   s   |   ¡  | j| j_|S r-   ©rà  r¶   rM   ra   r•   r(   r(   r)   rˆ   D  s    
z2getPhases.<locals>.InTableTextPhase.processCommentc                 S   s   |   ¡  | j| j_dS rå   rá  rC   r(   r(   r)   r‹   I  s    
z.getPhases.<locals>.InTableTextPhase.processEOFc                 S   s    |d dkrd S | j  |¡ d S ©Nrx   r7  ©rÜ  rŠ   r•   r(   r(   r)   r„   N  s    z5getPhases.<locals>.InTableTextPhase.processCharactersc                 S   s   | j  |¡ d S r-   rã  r•   r(   r(   r)   r…   S  s    z:getPhases.<locals>.InTableTextPhase.processSpaceCharactersc                 S   s   |   ¡  | j| j_|S r-   rá  r•   r(   r(   r)   r†   X  s    
z3getPhases.<locals>.InTableTextPhase.processStartTagc                 S   s   |   ¡  | j| j_|S r-   rá  r•   r(   r(   r)   r‡   ]  s    
z1getPhases.<locals>.InTableTextPhase.processEndTag)r:   r;   r<   r×   rL   rà  rˆ   r‹   r„   r…   r†   r‡   rÅ  r(   )rÝ  rÆ  r)   rÝ  3  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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   s   | j jddd� S )Nr©   r«   rB  ©r?   rD  rC   r(   r(   r)   ÚignoreEndTagCaptionf  s    z5getPhases.<locals>.InCaptionPhase.ignoreEndTagCaptionc                 S   s   | j jd  ¡  d S rí   ©rM   rJ   r‹   rC   r(   r(   r)   r‹   i  s    z,getPhases.<locals>.InCaptionPhase.processEOFc                 S   s   | j jd  |¡S rí   ©rM   rJ   r„   r•   r(   r(   r)   r„   l  s    z3getPhases.<locals>.InCaptionPhase.processCharactersc                 S   s0   | j  ¡  |  ¡ }| j j tdƒ¡ |s,|S d S ©Nr©   ©rM   r   rå  ra   r‡   rä   ©rD   rŒ   ÚignoreEndTagr(   r(   r)   ÚstartTagTableElemento  s
    
z6getPhases.<locals>.InCaptionPhase.startTagTableElementc                 S   s   | j jd  |¡S rí   rî   r•   r(   r(   r)   rñ   w  s    z/getPhases.<locals>.InCaptionPhase.startTagOtherc                 S   s¤   |   ¡ sŠ| j ¡  | jjd jdkrB| j dd| jjd jdœ¡ | jjd jdkrb| jj ¡  qB| jj ¡  | j ¡  | jj	d | j_
n| jjs–J ‚| j ¡  d S )Nrw   r©   r„  r…  rž   )rå  r?   r{  r~   rA   rM   r   rÎ   r™  rJ   ra   rT   r•   r(   r(   r)   ÚendTagCaptionz  s    
ÿÿ
z/getPhases.<locals>.InCaptionPhase.endTagCaptionc                 S   s0   | j  ¡  |  ¡ }| j j tdƒ¡ |s,|S d S rè  ré  rê  r(   r(   r)   r×  Œ  s
    
z-getPhases.<locals>.InCaptionPhase.endTagTablec                 S   s   | j  dd|d i¡ d S r  rÈ   r•   r(   r(   r)   rØ  “  s    z.getPhases.<locals>.InCaptionPhase.endTagIgnorec                 S   s   | j jd  |¡S rí   ©rM   rJ   r‡   r•   r(   r(   r)   ró   –  s    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)r:   r;   r<   râ   r×   rå  r‹   r„   rì  rñ   rí  r×  rØ  ró   r   rô   rÕ   rÍ   rõ   rÖ   r(   rÚ  r(   r)   ÚInCaptionPhaseb  s2   ÿþÿý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 )Nrw   r¯   )r?   r~   rA   rC   r(   r(   r)   ÚignoreEndTagColgroup¬  s    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 )Nrw   r¯   rª   T)r?   r~   rA   rM   rT   rñ  ÚendTagColgrouprä   )rD   rë  r(   r(   r)   r‹   ¯  s    z0getPhases.<locals>.InColumnGroupPhase.processEOFc                 S   s"   |   ¡ }|  tdƒ¡ |s|S d S ©Nrª   ©rñ  rò  rä   rê  r(   r(   r)   r„   ¹  s    z7getPhases.<locals>.InColumnGroupPhase.processCharactersc                 S   s$   | j  |¡ | j j ¡  d|d< d S rø   rù   r•   r(   r(   r)   rÒ  ¿  s    z1getPhases.<locals>.InColumnGroupPhase.startTagColc                 S   s"   |   ¡ }|  tdƒ¡ |s|S d S ró  rô  rê  r(   r(   r)   rñ   Ä  s    z3getPhases.<locals>.InColumnGroupPhase.startTagOtherc                 S   s@   |   ¡ r | jjsJ ‚| j ¡  n| jj ¡  | jjd | j_d S ©Nrž   )	rñ  rM   rT   r   r?   r~   rÎ   rJ   ra   r•   r(   r(   r)   rò  Ê  s
    z4getPhases.<locals>.InColumnGroupPhase.endTagColgroupc                 S   s   | j  dddi¡ d S )Nz
no-end-tagrA   rÃ  rÈ   r•   r(   r(   r)   Ú	endTagColÓ  s    z/getPhases.<locals>.InColumnGroupPhase.endTagColc                 S   s"   |   ¡ }|  tdƒ¡ |s|S d S ró  rô  rê  r(   r(   r)   ró   Ö  s    z1getPhases.<locals>.InColumnGroupPhase.endTagOtherr¯   rÃ  rª   N)r:   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   sB   | j jd jdvr | j j ¡  q | j jd jdkr>| jjs>J ‚d S )Nrw   )r¦   r¨   r§   r¯   r¯   )r?   r~   rA   rÎ   rM   rT   rC   r(   r(   r)   ÚclearStackToTableBodyContextí  s    z@getPhases.<locals>.InTableBodyPhase.clearStackToTableBodyContextc                 S   s   | j jd  ¡  d S rõ  ræ  rC   r(   r(   r)   r‹   ÷  s    z.getPhases.<locals>.InTableBodyPhase.processEOFc                 S   s   | j jd  |¡S rõ  r  r•   r(   r(   r)   r…   ú  s    z:getPhases.<locals>.InTableBodyPhase.processSpaceCharactersc                 S   s   | j jd  |¡S rõ  rç  r•   r(   r(   r)   r„   ý  s    z5getPhases.<locals>.InTableBodyPhase.processCharactersc                 S   s(   |   ¡  | j |¡ | jjd | j_d S )Nrš   )rø  r?   rµ   rM   rJ   ra   r•   r(   r(   r)   Ú
startTagTr   s    z.getPhases.<locals>.InTableBodyPhase.startTagTrc                 S   s*   | j  dd|d i¡ |  tddƒ¡ |S )Nzunexpected-cell-in-table-bodyrA   r¥   rs   )rM   r   rù  rä   r•   r(   r(   r)   ÚstartTagTableCell  s
    
ÿz5getPhases.<locals>.InTableBodyPhase.startTagTableCellc                 S   sn   | j jddd�s0| j jddd�s0| j jddd�rT|  ¡  |  t| j jd jƒ¡ |S | jjs`J ‚| j 	¡  d S ©Nr¦   r«   rB  r§   r¨   rw   ©
r?   rD  rø  ÚendTagTableRowGrouprä   r~   rA   rM   rT   r   r•   r(   r(   r)   ÚstartTagTableOther  s    ÿþÿz6getPhases.<locals>.InTableBodyPhase.startTagTableOtherc                 S   s   | j jd  |¡S rõ  rî   r•   r(   r(   r)   rñ     s    z1getPhases.<locals>.InTableBodyPhase.startTagOtherc                 S   sT   | j j|d dd�r:|  ¡  | j j ¡  | jjd | j_n| j dd|d i¡ d S )NrA   r«   rB  rž   ú unexpected-end-tag-in-table-body)	r?   rD  rø  r~   rÎ   rM   rJ   ra   r   r•   r(   r(   r)   rý    s    
ÿz7getPhases.<locals>.InTableBodyPhase.endTagTableRowGroupc                 S   sn   | j jddd�s0| j jddd�s0| j jddd�rT|  ¡  |  t| j jd jƒ¡ |S | jjs`J ‚| j 	¡  d S rû  rü  r•   r(   r(   r)   r×  %  s    ÿþÿz/getPhases.<locals>.InTableBodyPhase.endTagTablec                 S   s   | j  dd|d i¡ d S )Nrÿ  rA   rÈ   r•   r(   r(   r)   rØ  2  s    
ÿz0getPhases.<locals>.InTableBodyPhase.endTagIgnorec                 S   s   | j jd  |¡S rõ  rî  r•   r(   r(   r)   ró   6  s    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)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)   ÚInTableBodyPhaseè  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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   s@   | j jd jdvr<| j dd| j jd ji¡ | j j ¡  q d S )Nrw   )r¥   r¯   z'unexpected-implied-end-tag-in-table-rowrA   )r?   r~   rA   rM   r   rÎ   rC   r(   r(   r)   ÚclearStackToTableRowContextO  s
    ÿz9getPhases.<locals>.InRowPhase.clearStackToTableRowContextc                 S   s   | j jddd� S )Nr¥   r«   rB  rä  rC   r(   r(   r)   ÚignoreEndTagTrU  s    z,getPhases.<locals>.InRowPhase.ignoreEndTagTrc                 S   s   | j jd  ¡  d S rõ  ræ  rC   r(   r(   r)   r‹   Y  s    z(getPhases.<locals>.InRowPhase.processEOFc                 S   s   | j jd  |¡S rõ  r  r•   r(   r(   r)   r…   \  s    z4getPhases.<locals>.InRowPhase.processSpaceCharactersc                 S   s   | j jd  |¡S rõ  rç  r•   r(   r(   r)   r„   _  s    z/getPhases.<locals>.InRowPhase.processCharactersc                 S   s6   |   ¡  | j |¡ | jjd | j_| jj t¡ d S )Nr™   )	r  r?   rµ   rM   rJ   ra   r,  rŠ   r   r•   r(   r(   r)   rú  b  s    z/getPhases.<locals>.InRowPhase.startTagTableCellc                 S   s"   |   ¡ }|  tdƒ¡ |s|S d S ©Nr¥   ©r  ÚendTagTrrä   rê  r(   r(   r)   rþ  h  s    z0getPhases.<locals>.InRowPhase.startTagTableOtherc                 S   s   | j jd  |¡S rõ  rî   r•   r(   r(   r)   rñ   o  s    z+getPhases.<locals>.InRowPhase.startTagOtherc                 S   sH   |   ¡ s.|  ¡  | jj ¡  | jjd | j_n| jjs:J ‚| j 	¡  d S rÓ  )
r  r  r?   r~   rÎ   rM   rJ   ra   rT   r   r•   r(   r(   r)   r  r  s    z&getPhases.<locals>.InRowPhase.endTagTrc                 S   s"   |   ¡ }|  tdƒ¡ |s|S d S 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 )NrA   r«   rB  r¥   )r?   rD  r  rä   rM   r   r•   r(   r(   r)   rý  „  s    z1getPhases.<locals>.InRowPhase.endTagTableRowGroupc                 S   s   | j  dd|d i¡ d S )Nzunexpected-end-tag-in-table-rowrA   rÈ   r•   r(   r(   r)   rØ  ‹  s    
ÿz*getPhases.<locals>.InRowPhase.endTagIgnorec                 S   s   | j jd  |¡S rõ  rî  r•   r(   r(   r)   ró   �  s    z)getPhases.<locals>.InRowPhase.endTagOtherr¯   r   )r©   rÃ  rª   r¦   r¨   r§   r¥   r¥   r«   rÙ  )r­   r©   rÃ  rª   r¯   r£   r¤   N)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)   Ú
InRowPhaseJ  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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>.InCellPhasec                 S   sB   | j jddd�r |  tdƒ¡ n| j jddd�r>|  tdƒ¡ d S ©Nr£   r«   rB  r¤   )r?   rD  ÚendTagTableCellrä   rC   r(   r(   r)   Ú	closeCell¨  s    z(getPhases.<locals>.InCellPhase.closeCellc                 S   s   | j jd  ¡  d S rí   ræ  rC   r(   r(   r)   r‹   ¯  s    z)getPhases.<locals>.InCellPhase.processEOFc                 S   s   | j jd  |¡S rí   rç  r•   r(   r(   r)   r„   ²  s    z0getPhases.<locals>.InCellPhase.processCharactersc                 S   sF   | j jddd�s | j jddd�r,|  ¡  |S | jjs8J ‚| j ¡  d S r  )r?   rD  r
  rM   rT   r   r•   r(   r(   r)   rþ  µ  s    ÿz1getPhases.<locals>.InCellPhase.startTagTableOtherc                 S   s   | j jd  |¡S rí   rî   r•   r(   r(   r)   rñ   ¿  s    z,getPhases.<locals>.InCellPhase.startTagOtherc                 S   s²   | j j|d dd�r˜| j  |d ¡ | j jd j|d krp| j dd|d i¡ | j j ¡ }|j|d krPq|qPn| j j ¡  | j  ¡  | jj	d | j_
n| j dd|d i¡ d S )NrA   r«   rB  rw   zunexpected-cell-end-tagrš   r  )r?   rD  r{  r~   rA   rM   r   rÎ   r™  rJ   ra   r  r(   r(   r)   r	  Â  s    
ÿ
z.getPhases.<locals>.InCellPhase.endTagTableCellc                 S   s   | j  dd|d i¡ d S r  rÈ   r•   r(   r(   r)   rØ  Ó  s    z+getPhases.<locals>.InCellPhase.endTagIgnorec                 S   s.   | j j|d dd�r |  ¡  |S | j ¡  d S )NrA   r«   rB  )r?   rD  r
  rM   r   r•   r(   r(   r)   ÚendTagImplyÖ  s    z*getPhases.<locals>.InCellPhase.endTagImplyc                 S   s   | j jd  |¡S rí   rî  r•   r(   r(   r)   ró   Þ  s    z*getPhases.<locals>.InCellPhase.endTagOtherr¯   rï  r   )r­   r©   rÃ  rª   r¯   r“  N)r:   r;   r<   râ   r×   r
  r‹   r„   rþ  rñ   r	  rØ  r  ró   r   rô   rÕ   rÍ   rõ   rÖ   r(   rÚ  r(   r)   ÚInCellPhase£  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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   s0   | j jd jdkr | j d¡ n| jjs,J ‚d S )Nrw   r¯   zeof-in-selectrÊ  rC   r(   r(   r)   r‹   ó  s    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 ru  ©r?   r~   rA   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 )Nrw   rv  r�  r  r•   r(   r(   r)   ÚstartTagOptgroup	  s
    z1getPhases.<locals>.InSelectPhase.startTagOptgroupc                 S   s   | j  d¡ |  tdƒ¡ d S )Nzunexpected-select-in-selectr¢   )rM   r   ÚendTagSelecträ   r•   r(   r(   r)   ry  	  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¢   rB  )rM   r   r?   rD  r  rä   rT   r•   r(   r(   r)   ra  	  s
    z.getPhases.<locals>.InSelectPhase.startTagInputc                 S   s   | j jd  |¡S r  rî   r•   r(   r(   r)   r  	  s    z/getPhases.<locals>.InSelectPhase.startTagScriptc                 S   s   | j  dd|d i¡ d S )Nzunexpected-start-tag-in-selectrA   rÈ   r•   r(   r(   r)   rñ   	  s    
ÿz.getPhases.<locals>.InSelectPhase.startTagOtherc                 S   s6   | j jd jdkr | j j ¡  n| j dddi¡ d S )Nrw   rv  úunexpected-end-tag-in-selectrA   ©r?   r~   rA   rÎ   rM   r   r•   r(   r(   r)   ÚendTagOption	  s
    ÿz-getPhases.<locals>.InSelectPhase.endTagOptionc                 S   sf   | j jd jdkr0| j jd jdkr0| j j ¡  | j jd jdkrP| j j ¡  n| j dddi¡ d S )Nrw   rv  éþÿÿÿr�  r  rA   r  r•   r(   r(   r)   ÚendTagOptgroup%	  s    ÿÿz/getPhases.<locals>.InSelectPhase.endTagOptgroupc                 S   sZ   | j jddd�r@| j j ¡ }|jdkr4| j j ¡ }q| j ¡  n| jjsLJ ‚| j ¡  d S )Nr¢   rB  )	r?   rD  r~   rÎ   rA   rM   rc   rT   r   r  r(   r(   r)   r  2	  s    
z-getPhases.<locals>.InSelectPhase.endTagSelectc                 S   s   | j  dd|d i¡ d S )Nr  rA   rÈ   r•   r(   r(   r)   ró   =	  s    
ÿz,getPhases.<locals>.InSelectPhase.endTagOtherr¯   rv  r�  r¢   )ro  r¾  r4  r  N)r:   r;   r<   râ   r×   r‹   r„   r  r  ry  ra  r  rñ   r  r  r  ró   r   rô   rÕ   rÍ   rõ   rÖ   r(   rÚ  r(   r)   ÚInSelectPhaseï  s8   úýr  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   s   | j jd  ¡  d S ©Nr˜   ræ  rC   r(   r(   r)   r‹   U	  s    z2getPhases.<locals>.InSelectInTablePhase.processEOFc                 S   s   | j jd  |¡S r  rç  r•   r(   r(   r)   r„   X	  s    z9getPhases.<locals>.InSelectInTablePhase.processCharactersc                 S   s(   | j  dd|d i¡ |  tdƒ¡ |S )Nz5unexpected-table-element-start-tag-in-select-in-tablerA   r¢   )rM   r   ró   rä   r•   r(   r(   r)   r^  [	  s    z5getPhases.<locals>.InSelectInTablePhase.startTagTablec                 S   s   | j jd  |¡S r  rî   r•   r(   r(   r)   rñ   `	  s    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-tablerA   r«   rB  r¢   )rM   r   r?   rD  ró   rä   r•   r(   r(   r)   r×  c	  s    z3getPhases.<locals>.InSelectInTablePhase.endTagTablec                 S   s   | j jd  |¡S r  rî  r•   r(   r(   r)   ró   i	  s    z3getPhases.<locals>.InSelectInTablePhase.endTagOther)r©   r«   r¦   r¨   r§   r¥   r£   r¤   N)r:   r;   r<   râ   r×   r‹   r„   r^  rñ   r×  ró   r   rô   rÍ   rõ   rÖ   r(   r(   r(   r)   ÚInSelectInTablePhaseR	  s&   ÿÿÿÿr  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±  r.  r*   r¡  r/  r²  r½  Zh1Zh2Zh3Zh4Zh5Zh6r¬   rk  r´  re  r0  r3  r©  r4   rX  r«  r'   r2  rz  rµ  r¶  Úspanr¸  r·  ÚsubÚsupr«   r¹  rº  r®  Úvarc              %   S   sn   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"d#d$d%œ$}|d& |v rj||d&  |d&< d S )'NZaltGlyphZaltGlyphDefZaltGlyphItemZanimateColorZanimateMotionZanimateTransformZclipPathZfeBlendZfeColorMatrixZfeComponentTransferZfeCompositeZfeConvolveMatrixZfeDiffuseLightingZfeDisplacementMapZfeDistantLightZfeFloodZfeFuncAZfeFuncBZfeFuncGZfeFuncRZfeGaussianBlurZfeImageZfeMergeZfeMergeNodeZfeMorphologyZfeOffsetZfePointLightZfeSpecularLightingZfeSpotLightZfeTileZfeTurbulenceZforeignObjectZglyphRefZlinearGradientZradialGradientZtextPath)$ZaltglyphZaltglyphdefZaltglyphitemZanimatecolorZanimatemotionZanimatetransformZclippathZfeblendZfecolormatrixZfecomponenttransferZfecompositeZfeconvolvematrixZfediffuselightingZfedisplacementmapZfedistantlightZfefloodZfefuncaZfefuncbZfefuncgZfefuncrZfegaussianblurZfeimageZfemergeZfemergenodeZfemorphologyZfeoffsetZfepointlightZfespecularlightingZfespotlightZfetileZfeturbulenceZforeignobjectZglyphrefZlineargradientZradialgradientZtextpathrA   r(   )rD   rŒ   Úreplacementsr(   r(   r)   ÚadjustSVGTagNames„	  sN    Ý%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 )Nrx   r7  u   ï¿½c                 s   s   | ]}|t vV  qd S r-   r8  r9  r(   r(   r)   Ú	<genexpr>±	  rF   zMgetPhases.<locals>.InForeignContentPhase.processCharacters.<locals>.<genexpr>F)rM   rd   r<  r„   r•   rÚ  r(   r)   r„   ­	  s    
ÿz:getPhases.<locals>.InForeignContentPhase.processCharactersc                 S   s(  | j jd }|d | jv s>|d dkr¤t|d  ¡ ƒh d£@ r¤| j dd|d i¡ | j jd j| j jkr | j 	| j jd ¡s | j 
| j jd ¡s | j j ¡  qT|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 )Nrw   rA   r³  rx   >   ÚcolorZfaceÚsizez*unexpected-html-element-in-foreign-contentri   rz   rk   r|   Tr}   )r?   r~   ÚbreakoutElementsÚsetÚkeysrM   r   rk   r‚   rp   rq   rÎ   r   r   r  r   r   rµ   )rD   rŒ   rŽ   r(   r(   r)   r†   µ	  s:    
ÿþ
ÿÿþý


z8getPhases.<locals>.InForeignContentPhase.processStartTagc                 S   sè   t | jjƒd }| jjd }|j t¡|d krF| j dd|d i¡ |j t¡|d kr¬| jj| jj	d krˆ| jj 
¡  | jjj| j_| jj ¡ |kr¦| jjsˆJ ‚qˆd }qä|d8 }| jj| }|j| jjkrÒqFqF| jj |¡}qäqF|S )Nr   rw   rA   r  rÌ  )r�   r?   r~   rA   rm   r   rM   r   ra   rJ   rà  r¶   rÎ   rk   r‚   r‡   )rD   rŒ   Z	nodeIndexr±   r�   r(   r(   r)   r‡   Ð	  s&    z6getPhases.<locals>.InForeignContentPhase.processEndTagN)r:   r;   r<   râ   r×   rƒ   r"  r  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   s   d S r-   r(   rC   r(   r(   r)   r‹   í	  s    z,getPhases.<locals>.AfterBodyPhase.processEOFc                 S   s   | j  || j jd ¡ d S )Nr   rÆ   r•   r(   r(   r)   rˆ   ñ	  s    z0getPhases.<locals>.AfterBodyPhase.processCommentc                 S   s    | j  d¡ | j jd | j _|S )Nzunexpected-char-after-bodyrŸ   ©rM   r   rJ   ra   r•   r(   r(   r)   r„   ö	  s    z3getPhases.<locals>.AfterBodyPhase.processCharactersc                 S   s   | j jd  |¡S rí   rî   r•   r(   r(   r)   rÕ   û	  s    z.getPhases.<locals>.AfterBodyPhase.startTagHtmlc                 S   s*   | j  dd|d i¡ | j jd | j _|S )Nzunexpected-start-tag-after-bodyrA   rŸ   r&  r•   r(   r(   r)   rñ   þ	  s
    
ÿz/getPhases.<locals>.AfterBodyPhase.startTagOtherc                 S   s*   | j jr| j  d¡ n| j jd | j _d S )Nz'unexpected-end-tag-after-body-innerhtmlÚafterAfterBody)rM   rT   r   rJ   ra   )rD   rA   r(   r(   r)   rˆ  
  s    z,getPhases.<locals>.AfterBodyPhase.endTagHtmlc                 S   s*   | j  dd|d i¡ | j jd | j _|S )Nzunexpected-end-tag-after-bodyrA   rŸ   r&  r•   r(   r(   r)   ró   

  s
    
ÿz-getPhases.<locals>.AfterBodyPhase.endTagOtherr¯   N)r:   r;   r<   râ   r×   r‹   rˆ   r„   rÕ   rñ   rˆ  ró   r   rô   rÍ   rõ   rÖ   r(   r(   r(   r)   ÚAfterBodyPhaseê	  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” 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   s0   | j jd jdkr | j d¡ n| jjs,J ‚d S )Nrw   r¯   zeof-in-framesetrÊ  rC   r(   r(   r)   r‹   
  s    z-getPhases.<locals>.InFramesetPhase.processEOFc                 S   s   | j  d¡ d S )Nzunexpected-char-in-framesetrÈ   r•   r(   r(   r)   r„   "
  s    z4getPhases.<locals>.InFramesetPhase.processCharactersc                 S   s   | j  |¡ d S r-   )r?   rµ   r•   r(   r(   r)   r"  %
  s    z3getPhases.<locals>.InFramesetPhase.startTagFramesetc                 S   s   | j  |¡ | j j ¡  d S r-   rù   r•   r(   r(   r)   ÚstartTagFrame(
  s    z0getPhases.<locals>.InFramesetPhase.startTagFramec                 S   s   | j jd  |¡S rí   rî   r•   r(   r(   r)   ÚstartTagNoframes,
  s    z3getPhases.<locals>.InFramesetPhase.startTagNoframesc                 S   s   | j  dd|d i¡ d S )Nz unexpected-start-tag-in-framesetrA   rÈ   r•   r(   r(   r)   rñ   /
  s    
ÿz0getPhases.<locals>.InFramesetPhase.startTagOtherc                 S   sZ   | j jd jdkr | j d¡ n| j j ¡  | jjsV| j jd jdkrV| jjd | j_d S )Nrw   r¯   z)unexpected-frameset-in-frameset-innerhtmlr®   ÚafterFrameset)	r?   r~   rA   rM   r   rÎ   rT   rJ   ra   r•   r(   r(   r)   ÚendTagFrameset3
  s    ÿz1getPhases.<locals>.InFramesetPhase.endTagFramesetc                 S   s   | j  dd|d i¡ d S )Nzunexpected-end-tag-in-framesetrA   rÈ   r•   r(   r(   r)   ró   ?
  s    
ÿz.getPhases.<locals>.InFramesetPhase.endTagOtherr¯   r®   rÄ  r  N)r:   r;   r<   râ   r×   r‹   r„   r"  r)  r*  rñ   r,  ró   r   rô   rÕ   rÍ   rõ   rÖ   r(   rÚ  r(   r)   ÚInFramesetPhase
  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
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   s   d S r-   r(   rC   r(   r(   r)   r‹   T
  s    z0getPhases.<locals>.AfterFramesetPhase.processEOFc                 S   s   | j  d¡ d S )Nzunexpected-char-after-framesetrÈ   r•   r(   r(   r)   r„   X
  s    z7getPhases.<locals>.AfterFramesetPhase.processCharactersc                 S   s   | j jd  |¡S r  rî   r•   r(   r(   r)   r*  [
  s    z6getPhases.<locals>.AfterFramesetPhase.startTagNoframesc                 S   s   | j  dd|d i¡ d S )Nz#unexpected-start-tag-after-framesetrA   rÈ   r•   r(   r(   r)   rñ   ^
  s    
ÿz3getPhases.<locals>.AfterFramesetPhase.startTagOtherc                 S   s   | j jd | j _d S )NÚafterAfterFrameset)rM   rJ   ra   r•   r(   r(   r)   rˆ  b
  s    z0getPhases.<locals>.AfterFramesetPhase.endTagHtmlc                 S   s   | j  dd|d i¡ d S )Nz!unexpected-end-tag-after-framesetrA   rÈ   r•   r(   r(   r)   ró   e
  s    
ÿz1getPhases.<locals>.AfterFramesetPhase.endTagOtherr¯   r  N)r:   r;   r<   râ   r×   r‹   r„   r*  rñ   rˆ  ró   r   rô   rÕ   rÍ   rõ   rÖ   r(   rÚ  r(   r)   ÚAfterFramesetPhaseP
  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e de	fg¡Ze
e_dS )z&getPhases.<locals>.AfterAfterBodyPhasec                 S   s   d S r-   r(   rC   r(   r(   r)   r‹   w
  s    z1getPhases.<locals>.AfterAfterBodyPhase.processEOFc                 S   s   | j  || j j¡ d S r-   rÙ   r•   r(   r(   r)   rˆ   z
  s    z5getPhases.<locals>.AfterAfterBodyPhase.processCommentc                 S   s   | j jd  |¡S rí   r  r•   r(   r(   r)   r…   }
  s    z=getPhases.<locals>.AfterAfterBodyPhase.processSpaceCharactersc                 S   s    | j  d¡ | j jd | j _|S )Núexpected-eof-but-got-charrŸ   r&  r•   r(   r(   r)   r„   €
  s    z8getPhases.<locals>.AfterAfterBodyPhase.processCharactersc                 S   s   | j jd  |¡S rí   rî   r•   r(   r(   r)   rÕ   …
  s    z3getPhases.<locals>.AfterAfterBodyPhase.startTagHtmlc                 S   s*   | j  dd|d i¡ | j jd | j _|S )Núexpected-eof-but-got-start-tagrA   rŸ   r&  r•   r(   r(   r)   rñ   ˆ
  s
    
ÿz4getPhases.<locals>.AfterAfterBodyPhase.startTagOtherc                 S   s*   | j  dd|d i¡ | j jd | j _|S )Núexpected-eof-but-got-end-tagrA   rŸ   r&  r•   r(   r(   r)   r‡   Ž
  s
    
ÿz4getPhases.<locals>.AfterAfterBodyPhase.processEndTagr¯   N)r:   r;   r<   râ   r×   r‹   rˆ   r…   r„   rÕ   rñ   r‡   r   rô   rÍ   rõ   r(   r(   r(   r)   ÚAfterAfterBodyPhaset
  s   ÿr3  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   s   d S r-   r(   rC   r(   r(   r)   r‹   œ
  s    z5getPhases.<locals>.AfterAfterFramesetPhase.processEOFc                 S   s   | j  || j j¡ d S r-   rÙ   r•   r(   r(   r)   rˆ   Ÿ
  s    z9getPhases.<locals>.AfterAfterFramesetPhase.processCommentc                 S   s   | j jd  |¡S rí   r  r•   r(   r(   r)   r…   ¢
  s    zAgetPhases.<locals>.AfterAfterFramesetPhase.processSpaceCharactersc                 S   s   | j  d¡ d S )Nr0  rÈ   r•   r(   r(   r)   r„   ¥
  s    z<getPhases.<locals>.AfterAfterFramesetPhase.processCharactersc                 S   s   | j jd  |¡S rí   rî   r•   r(   r(   r)   rÕ   ¨
  s    z7getPhases.<locals>.AfterAfterFramesetPhase.startTagHtmlc                 S   s   | j jd  |¡S r  rî   r•   r(   r(   r)   ÚstartTagNoFrames«
  s    z;getPhases.<locals>.AfterAfterFramesetPhase.startTagNoFramesc                 S   s   | j  dd|d i¡ d S )Nr1  rA   rÈ   r•   r(   r(   r)   rñ   ®
  s    
ÿz8getPhases.<locals>.AfterAfterFramesetPhase.startTagOtherc                 S   s   | j  dd|d i¡ d S )Nr2  rA   rÈ   r•   r(   r(   r)   r‡   ²
  s    
ÿz8getPhases.<locals>.AfterAfterFramesetPhase.processEndTagr¯   r  N)r:   r;   r<   râ   r×   r‹   rˆ   r…   r„   rÕ   r4  rñ   r‡   r   rô   rÍ   rõ   r(   r(   r(   r)   ÚAfterAfterFramesetPhase™
  s   þr5  )rX   rW   r¡   rï   r  r  rŸ   r´   rž   rÌ  rœ   r�   r›   rš   r™   r˜   rx  r{   r†  r    r+  r'  r.  )r   )rK   rZ   rÂ   rã   ré   rö   r  r   r%  rÈ  rÛ  rð  r÷  r  r  r  r  r  r%  r(  r-  r/  r3  r5  r(   )r)  rÝ  rØ   r)   rI   Œ  sr    H %-f?B     Y! /F@bYLc&r.8$%&érI   c                    sF   t | d ƒt ˆ ƒ@ }|rBt| d ƒ‡ fdd„| d  ¡ D ƒƒ| d< d S )Nrx   c                 3   s"   | ]\}}ˆ   ||¡|fV  qd S r-   )r€   )r@   ÚkÚv©r  r(   r)   r  Ý
  s   ÿz$adjust_attributes.<locals>.<genexpr>)r   r2   r.   )rŒ   r  Zneeds_adjustmentr(   r8  r)   r”   Ú
  s
    
ÿr”   rt   Fc                 C   s   |d u ri }t | | ||dœS )N)r2   rA   rx   r|   )r   )rA   r2   rl   r|   r(   r(   r)   rä   á
  s
    
ÿrä   c                   @   s   e Zd ZdZdS )rv   zError in parsed documentN)r:   r;   r<   r¸   r(   r(   r(   r)   rv   é
  s   rv   )r   T)r*   r   T)rt   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!   ÚmemoizerI   r”   rä   Ú	Exceptionrv   r(   r(   r(   r)   Ú<module>   sN   H

  8
                  _  ÿ
