<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    š•ReÂÉ ã               @   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|Ž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'   ú/builddir/build/BUILDROOT/alt-python37-pip-20.2.4-6.el8.x86_64/opt/alt/python37/lib/python3.7/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                sB   x0|  ¡ D ]$\}}t|tjƒr&ˆ |ƒ}|||< q
W t | |||¡S )N)ÚitemsÚ
isinstanceÚtypesÚFunctionTypeÚtypeÚ__new__)ÚmetaÚ	classnameÚbasesÚ	classDictÚattributeNameÚ	attribute)Úfunctionr'   r(   r1   L   s
    z5method_decorator_metaclass.<locals>.Decorated.__new__N)Ú__name__Ú
__module__Ú__qualname__r1   r'   )r8   r'   r(   Ú	DecoratedK   s   r<   )r0   )r8   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k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)rB   r>   rD   r   Údebugr'   )rB   r(   Ú__init__]   s    


zHTMLParser.__init__r)   c             K   sh   || _ || _|| _tj|fd| i|—Ž| _|  ¡  y|  ¡  W n$ tk
rb   |  ¡  |  ¡  Y nX d S )NÚparser)	ÚinnerHTMLModer*   Ú	scriptingr	   ÚHTMLTokenizerÚ	tokenizerÚresetÚmainLoopr   )rB   ÚstreamÚ	innerHTMLr*   rL   r$   r'   r'   r(   Ú_parse|   s    zHTMLParser._parsec             C   sÄ   | j  ¡  d| _g | _g | _d| _| jrœ| j ¡ | _	| j	t
krL| jj| j_n0| j	tk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>   rO   ÚfirstStartTagrE   ÚlogÚ
compatModerK   r*   ÚlowerrR   r   rN   ÚrcdataStateÚstater   ÚrawtextStateÚplaintextStaterG   ÚphaseÚinsertHtmlElementÚresetInsertionModeÚ	lastPhaseÚbeforeRCDataPhaseÚ
framesetOK)rB   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   sJ   |j dkr6|jtd kr6d|jko4|jd  t¡dkS |j|j ftkS d S )Nzannotation-xmlÚmathmlÚencoding)z	text/htmlzapplication/xhtml+xml)r@   Ú	namespacer   Ú
attributesÚ	translater   r   )rB   Úelementr'   r'   r(   ÚisHTMLIntegrationPoint¶   s    


z!HTMLParser.isHTMLIntegrationPointc             C   s   |j |jftkS )N)rj   r@   r   )rB   rm   r'   r'   r(   ÚisMathMLTextIntegrationPointÀ   s    z'HTMLParser.isMathMLTextIntegrationPointc             C   sv  t d }t d }t d }t d }t d }t d }t d }xô| jD ]è}d }	|}
x¬|
d k	rþ|
}	| jjrv| jjd nd }|r„|jnd }|r’|jnd }|
d	 }||krÄ|  |
d
 |
 di ¡¡ d }
qTt| jjƒdksj|| jj	ksj|  
|¡r||kr|d tddgƒksj|||fksj|td krN|dkrN||krN|d dksj|  |¡rr||||fkrr| j}n
| jd }||kr’| |
¡}
qT||kr¨| |
¡}
qT||kr¾| |
¡}
qT||krÔ| |
¡}
qT||krê| |
¡}
qT||krT| |
¡}
qTW ||krB|	d rB|	d sB|  dd|	d i¡ qBW d}g }x8|rp| | j¡ | j ¡ }|r:| j|ks:t‚q:W d S )NÚ
CharactersÚSpaceCharactersÚStartTagÚEndTagÚCommentÚDoctypeÚ
ParseErroréÿÿÿÿr0   ÚdataÚdatavarsr   r@   ÚmglyphÚ
malignmarkrh   zannotation-xmlÚsvgÚinForeignContentÚselfClosingÚselfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)r   rN   r>   ÚopenElementsrj   r@   Ú
parseErrorÚgetÚlenÚdefaultNamespacero   Ú	frozensetr   rn   r_   rG   ÚprocessCharactersÚprocessSpaceCharactersÚprocessStartTagÚprocessEndTagÚprocessCommentÚprocessDoctypeÚappendÚ
processEOFÚAssertionError)rB   ÚCharactersTokenÚSpaceCharactersTokenÚStartTagTokenÚEndTagTokenÚCommentTokenÚDoctypeTokenÚParseErrorTokenÚtokenÚ
prev_tokenÚ	new_tokenÚcurrentNodeÚcurrentNodeNamespaceÚcurrentNodeNamer0   r_   Ú	reprocessrG   r'   r'   r(   rP   Ã   sp    









zHTMLParser.mainLoopc             O   s    | j |ddf|ž|Ž | 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>   ÚgetDocument)rB   rQ   Úargsr$   r'   r'   r(   r!     s    zHTMLParser.parsec             O   s   | j |df|ž|Ž | 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>   ÚgetFragment)rB   rQ   rž   r$   r'   r'   r(   r+     s    zHTMLParser.parseFragmentúXXX-undefined-errorc             C   s@   |d kri }| j  | jj ¡ ||f¡ | jr<tt| | ƒ‚d S )N)rE   rŒ   rN   rQ   ÚpositionrD   rv   r   )rB   Ú	errorcodery   r'   r'   r(   r   ;  s
    zHTMLParser.parseErrorc             C   s   t |tƒ d S )N)Úadjust_attributesr   )rB   r–   r'   r'   r(   r   C  s    z!HTMLParser.adjustMathMLAttributesc             C   s   t |tƒ d S )N)r£   r   )rB   r–   r'   r'   r(   r   F  s    zHTMLParser.adjustSVGAttributesc             C   s   t |tƒ d S )N)r£   ÚadjustForeignAttributesMap)rB   r–   r'   r'   r(   r   I  s    z"HTMLParser.adjustForeignAttributesc             C   s   | j  ¡  d S )N)rJ   r_   )rB   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œ}x˜| j jd d d… D ]‚}|j}d }|| j jd krl| jsbt‚d}| j}|dkr~| js~t‚|s’|j| j jkr’q:||kr¬| j||  }P q:|r:| jd	 }P q:W || _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€   r@   rR   rŽ   rj   r„   rG   r_   )rB   ÚlastÚnewModesÚnodeÚnodeNameÚ	new_phaser'   r'   r(   ra   P  sB    


zHTMLParser.resetInsertionModec             C   sR   |dkst ‚| j |¡ |dkr.| jj| j_n| jj| j_| j| _| j	d | _d S )N)ÚRAWTEXTÚRCDATArÃ   Útext)
rŽ   r>   ÚinsertElementrN   r]   r\   r[   r_   ÚoriginalPhaserG   )rB   r–   ÚcontentTyper'   r'   r(   ÚparseRCDataRawtext|  s    zHTMLParser.parseRCDataRawtext)NFTF)Fr)   F)r    N)r9   r:   r;   Ú__doc__rI   rS   rO   Úpropertyrg   rn   ro   rP   r!   r+   r   r   r   r   r¥   ra   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(   rC     s    z*getPhases.<locals>.log.<locals>.<dictcomp>c                sš   ˆ j  d¡r†t|ƒdkr†|d }dˆ|d  i}|d tkrH|d |d< | jj | jjjj | jj	j
j | j
j ˆ j |f¡ ˆ | f|ž|ŽS ˆ | f|ž|ŽS d S )NÚprocessr   r0   r@   )r9   Ú
startswithrƒ   r   rJ   rX   rŒ   rN   r\   r_   Ú	__class__)rB   rž   r$   r–   Úinfo)r8   Ú
type_namesr'   r(   Úwrapped’  s    
z'getPhases.<locals>.log.<locals>.wrapped)r   r,   )r8   rÓ   r'   )r8   rÒ   r(   rX   Ž  s    zgetPhases.<locals>.logc             S   s   | rt |ƒS tS d S )N)r=   r0   )Úuse_metaclassÚ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
        )rJ   r>   Ú__startTagCacheÚ__endTagCachec             S   s   || _ || _i | _i | _d S )N)rJ   r>   Ú_Phase__startTagCacheÚ_Phase__endTagCache)rB   rJ   r>   r'   r'   r(   rI   ¯  s    z!getPhases.<locals>.Phase.__init__c             S   s   t ‚d S )N)ÚNotImplementedError)rB   r'   r'   r(   r   µ  s    z#getPhases.<locals>.Phase.processEOFc             S   s   | j  || j jd ¡ d S )Nrw   )r>   ÚinsertCommentr€   )rB   r–   r'   r'   r(   rŠ   ¸  s    z'getPhases.<locals>.Phase.processCommentc             S   s   | j  d¡ d S )Nzunexpected-doctype)rJ   r   )rB   r–   r'   r'   r(   r‹   ½  s    z'getPhases.<locals>.Phase.processDoctypec             S   s   | j  |d ¡ d S )Nrx   )r>   Ú
insertText)rB   r–   r'   r'   r(   r†   À  s    z*getPhases.<locals>.Phase.processCharactersc             S   s   | j  |d ¡ d S )Nrx   )r>   rÝ   )rB   r–   r'   r'   r(   r‡   Ã  s    z/getPhases.<locals>.Phase.processSpaceCharactersc             S   sn   |d }|| j kr| j | }nH| j|  }| j |< x2t| j ƒt| jƒd krd| j  tt| j ƒƒ¡ q4W ||ƒS )Nr@   gš™™™™™ñ?)rÙ   ÚstartTagHandlerrƒ   ÚpopÚnextÚiter)rB   r–   r@   Úfuncr'   r'   r(   rˆ   Æ  s    
z(getPhases.<locals>.Phase.processStartTagc             S   sj   | j js |d dkr | j  d¡ x<|d  ¡ D ],\}}|| jjd jkr.|| jjd j|< q.W d| j _d S )Nr@   r½   znon-html-rootrx   r   F)rJ   rW   r   r,   r>   r€   rk   )rB   r–   ÚattrrÍ   r'   r'   r(   ÚstartTagHtml×  s    z%getPhases.<locals>.Phase.startTagHtmlc             S   sn   |d }|| j kr| j | }nH| j|  }| j |< x2t| j ƒt| jƒd krd| j  tt| j ƒƒ¡ q4W ||ƒS )Nr@   gš™™™™™ñ?)rÚ   ÚendTagHandlerrƒ   rß   rà   rá   )rB   r–   r@   râ   r'   r'   r(   r‰   á  s    
z&getPhases.<locals>.Phase.processEndTagN)r9   r:   r;   rÊ   Ú	__slots__rI   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 )Nr'   )rB   r–   r'   r'   r(   r‡   õ  s    z6getPhases.<locals>.InitialPhase.processSpaceCharactersc             S   s   | j  || j j¡ d S )N)r>   rÜ   Údocument)rB   r–   r'   r'   r(   rŠ   ø  s    z.getPhases.<locals>.InitialPhase.processCommentc             S   sü   |d }|d }|d }|d }|dks@|d k	s@|d k	rL|dkrL| j  d¡ |d krXd}| j |¡ |dkrv| t¡}|rº|d dksº| d	¡sº|d
ksº| d¡rª|d ksº|rÄ| ¡ dkrÄd| j _n$| d¡sà| d¡rè|d k	rèd| 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   )rJ   r   r>   ÚinsertDoctyperl   r   rÏ   rZ   rY   rG   r_   )rB   r–   r@   ré   rê   rë   r'   r'   r(   r‹   û  s8    
7
z.getPhases.<locals>.InitialPhase.processDoctypec             S   s   d| j _| j jd | j _d S )Nrí   rU   )rJ   rY   rG   r_   )rB   r'   r'   r(   ÚanythingElseZ  s    z,getPhases.<locals>.InitialPhase.anythingElsec             S   s   | j  d¡ |  ¡  |S )Nzexpected-doctype-but-got-chars)rJ   r   rï   )rB   r–   r'   r'   r(   r†   ^  s    z1getPhases.<locals>.InitialPhase.processCharactersc             S   s"   | j  dd|d i¡ |  ¡  |S )Nz"expected-doctype-but-got-start-tagr@   )rJ   r   rï   )rB   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-tagr@   )rJ   r   rï   )rB   r–   r'   r'   r(   r‰   i  s    z-getPhases.<locals>.InitialPhase.processEndTagc             S   s   | j  d¡ |  ¡  dS )Nzexpected-doctype-but-got-eofT)rJ   r   rï   )rB   r'   r'   r(   r   o  s    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>   Ú
insertRootÚimpliedTagTokenrJ   rG   r_   )rB   r'   r'   r(   r`   x  s    z4getPhases.<locals>.BeforeHtmlPhase.insertHtmlElementc             S   s   |   ¡  dS )NT)r`   )rB   r'   r'   r(   r   }  s    z-getPhases.<locals>.BeforeHtmlPhase.processEOFc             S   s   | j  || j j¡ d S )N)r>   rÜ   rè   )rB   r–   r'   r'   r(   rŠ     s    z1getPhases.<locals>.BeforeHtmlPhase.processCommentc             S   s   d S )Nr'   )rB   r–   r'   r'   r(   r‡   „  s    z9getPhases.<locals>.BeforeHtmlPhase.processSpaceCharactersc             S   s   |   ¡  |S )N)r`   )rB   r–   r'   r'   r(   r†   ‡  s    z4getPhases.<locals>.BeforeHtmlPhase.processCharactersc             S   s    |d dkrd| j _|  ¡  |S )Nr@   r½   T)rJ   rW   r`   )rB   r–   r'   r'   r(   rˆ   ‹  s    z2getPhases.<locals>.BeforeHtmlPhase.processStartTagc             S   s4   |d dkr$| j  dd|d i¡ n|  ¡  |S d S )Nr@   )rº   r»   r½   Úbrzunexpected-end-tag-before-html)rJ   r   r`   )rB   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   œ  s    z-getPhases.<locals>.BeforeHeadPhase.processEOFc             S   s   d S )Nr'   )rB   r–   r'   r'   r(   r‡      s    z9getPhases.<locals>.BeforeHeadPhase.processSpaceCharactersc             S   s   |   tddƒ¡ |S )Nrº   rr   )rö   ró   )rB   r–   r'   r'   r(   r†   £  s    z4getPhases.<locals>.BeforeHeadPhase.processCharactersc             S   s   | j jd  |¡S )Nr­   )rJ   rG   rˆ   )rB   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€   ÚheadPointerrJ   rG   r_   )rB   r–   r'   r'   r(   rö   ª  s    z/getPhases.<locals>.BeforeHeadPhase.startTagHeadc             S   s   |   tddƒ¡ |S )Nrº   rr   )rö   ró   )rB   r–   r'   r'   r(   ÚstartTagOther¯  s    z0getPhases.<locals>.BeforeHeadPhase.startTagOtherc             S   s   |   tddƒ¡ |S )Nrº   rr   )rö   ró   )rB   r–   r'   r'   r(   ÚendTagImplyHead³  s    z2getPhases.<locals>.BeforeHeadPhase.endTagImplyHeadc             S   s   | j  dd|d i¡ d S )Nzend-tag-after-implied-rootr@   )rJ   r   )rB   r–   r'   r'   r(   ÚendTagOther·  s    z.getPhases.<locals>.BeforeHeadPhase.endTagOtherr½   rº   )rº   r»   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   s   |   ¡  dS )NT)rï   )rB   r'   r'   r(   r   Ê  s    z)getPhases.<locals>.InHeadPhase.processEOFc             S   s   |   ¡  |S )N)rï   )rB   r–   r'   r'   r(   r†   Î  s    z0getPhases.<locals>.InHeadPhase.processCharactersc             S   s   | j jd  |¡S )Nr­   )rJ   rG   rˆ   )rB   r–   r'   r'   r(   rä   Ò  s    z+getPhases.<locals>.InHeadPhase.startTagHtmlc             S   s   | j  d¡ d S )Nz!two-heads-are-not-better-than-one)rJ   r   )rB   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ß   )rB   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|krZ| jjj |d ¡ nVd|kr°d|kr°|d  	¡ d	kr°t
 |d  d
¡¡}t
 |¡}| ¡ }| jjj |¡ d S )NTr   rx   r   Ú	tentativeÚcharsetÚcontentz
http-equivzcontent-typezutf-8)r>   rÆ   r€   rß   rJ   rN   rQ   rf   ÚchangeEncodingrZ   r   ÚEncodingBytesÚencodeÚContentAttrParserr!   )rB   r–   rk   rx   rJ   Úcodecr'   r'   r(   ÚstartTagMetaÝ  s    
z+getPhases.<locals>.InHeadPhase.startTagMetac             S   s   | j  |d¡ d S )NrÄ   )rJ   rÉ   )rB   r–   r'   r'   r(   ÚstartTagTitleò  s    z,getPhases.<locals>.InHeadPhase.startTagTitlec             S   s   | j  |d¡ d S )NrÃ   )rJ   rÉ   )rB   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)rJ   rL   rÉ   r>   rÆ   rG   r_   )rB   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Æ   rJ   rN   ÚscriptDataStater\   r_   rÇ   rG   )rB   r–   r'   r'   r(   ÚstartTagScript   s    z-getPhases.<locals>.InHeadPhase.startTagScriptc             S   s   |   ¡  |S )N)rï   )rB   r–   r'   r'   r(   rù     s    z,getPhases.<locals>.InHeadPhase.startTagOtherc             S   s:   | j jj ¡ }|jdks&td|j ƒ‚| j jd | j _d S )Nrº   zExpected head got %sÚ	afterHead)rJ   r>   r€   rß   r@   rŽ   rG   r_   )rB   r–   rÀ   r'   r'   r(   Ú
endTagHead
  s    z)getPhases.<locals>.InHeadPhase.endTagHeadc             S   s   |   ¡  |S )N)rï   )rB   r–   r'   r'   r(   ÚendTagHtmlBodyBr  s    z/getPhases.<locals>.InHeadPhase.endTagHtmlBodyBrc             S   s   | j  dd|d i¡ d S )Nzunexpected-end-tagr@   )rJ   r   )rB   r–   r'   r'   r(   rû     s    z*getPhases.<locals>.InHeadPhase.endTagOtherc             S   s   |   tdƒ¡ d S )Nrº   )r  ró   )rB   r'   r'   r(   rï     s    z+getPhases.<locals>.InHeadPhase.anythingElser½   Útitle)ÚnoframesÚstyleÚnoscriptÚscript)ÚbaseÚbasefontÚbgsoundÚcommandÚlinkr2   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Æ  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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-noscriptT)rJ   r   rï   )rB   r'   r'   r(   r   /  s    z1getPhases.<locals>.InHeadNoscriptPhase.processEOFc             S   s   | j jd  |¡S )Nr÷   )rJ   rG   rŠ   )rB   r–   r'   r'   r(   rŠ   4  s    z5getPhases.<locals>.InHeadNoscriptPhase.processCommentc             S   s   | j  d¡ |  ¡  |S )Nzchar-in-head-noscript)rJ   r   rï   )rB   r–   r'   r'   r(   r†   7  s    z8getPhases.<locals>.InHeadNoscriptPhase.processCharactersc             S   s   | j jd  |¡S )Nr÷   )rJ   rG   r‡   )rB   r–   r'   r'   r(   r‡   <  s    z=getPhases.<locals>.InHeadNoscriptPhase.processSpaceCharactersc             S   s   | j jd  |¡S )Nr­   )rJ   rG   rˆ   )rB   r–   r'   r'   r(   rä   ?  s    z3getPhases.<locals>.InHeadNoscriptPhase.startTagHtmlc             S   s   | j jd  |¡S )Nr÷   )rJ   rG   rˆ   )rB   r–   r'   r'   r(   rÿ   B  s    z>getPhases.<locals>.InHeadNoscriptPhase.startTagBaseLinkCommandc             S   s   | j  dd|d i¡ d S )Nzunexpected-start-tagr@   )rJ   r   )rB   r–   r'   r'   r(   ÚstartTagHeadNoscriptE  s    z;getPhases.<locals>.InHeadNoscriptPhase.startTagHeadNoscriptc             S   s"   | j  dd|d i¡ |  ¡  |S )Nzunexpected-inhead-noscript-tagr@   )rJ   r   rï   )rB   r–   r'   r'   r(   rù   H  s    z4getPhases.<locals>.InHeadNoscriptPhase.startTagOtherc             S   s:   | j jj ¡ }|jdks&td|j ƒ‚| j jd | j _d S )Nr  zExpected noscript got %sr÷   )rJ   r>   r€   rß   r@   rŽ   rG   r_   )rB   r–   rÀ   r'   r'   r(   ÚendTagNoscriptM  s    z5getPhases.<locals>.InHeadNoscriptPhase.endTagNoscriptc             S   s"   | j  dd|d i¡ |  ¡  |S )Nzunexpected-inhead-noscript-tagr@   )rJ   r   rï   )rB   r–   r'   r'   r(   ÚendTagBrR  s    z/getPhases.<locals>.InHeadNoscriptPhase.endTagBrc             S   s   | j  dd|d i¡ d S )Nzunexpected-end-tagr@   )rJ   r   )rB   r–   r'   r'   r(   rû   W  s    z2getPhases.<locals>.InHeadNoscriptPhase.endTagOtherc             S   s   |   tdƒ¡ d S )Nr  )r  ró   )rB   r'   r'   r(   rï   Z  s    z3getPhases.<locals>.InHeadNoscriptPhase.anythingElser½   )r  r  r  r2   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'   r'   r(   ÚInHeadNoscriptPhase,  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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 )NT)rï   )rB   r'   r'   r(   r   n  s    z,getPhases.<locals>.AfterHeadPhase.processEOFc             S   s   |   ¡  |S )N)rï   )rB   r–   r'   r'   r(   r†   r  s    z3getPhases.<locals>.AfterHeadPhase.processCharactersc             S   s   | j jd  |¡S )Nr­   )rJ   rG   rˆ   )rB   r–   r'   r'   r(   rä   v  s    z.getPhases.<locals>.AfterHeadPhase.startTagHtmlc             S   s(   d| j _| j |¡ | j jd | j _d S )NFr­   )rJ   rd   r>   rÆ   rG   r_   )rB   r–   r'   r'   r(   ÚstartTagBodyy  s    z.getPhases.<locals>.AfterHeadPhase.startTagBodyc             S   s    | j  |¡ | jjd | j_d S )Nr®   )r>   rÆ   rJ   rG   r_   )rB   r–   r'   r'   r(   ÚstartTagFrameset~  s    z2getPhases.<locals>.AfterHeadPhase.startTagFramesetc             S   st   | j  dd|d i¡ | jj | jj¡ | j jd  |¡ x4| jjd d d… D ]}|jdkrN| jj 	|¡ P qNW d S )Nz#unexpected-start-tag-out-of-my-headr@   r÷   rw   rº   )
rJ   r   r>   r€   rŒ   rø   rG   rˆ   r@   Úremove)rB   r–   rÀ   r'   r'   r(   ÚstartTagFromHead‚  s    
z2getPhases.<locals>.AfterHeadPhase.startTagFromHeadc             S   s   | j  dd|d i¡ d S )Nzunexpected-start-tagr@   )rJ   r   )rB   r–   r'   r'   r(   rö   Œ  s    z.getPhases.<locals>.AfterHeadPhase.startTagHeadc             S   s   |   ¡  |S )N)rï   )rB   r–   r'   r'   r(   rù     s    z/getPhases.<locals>.AfterHeadPhase.startTagOtherc             S   s   |   ¡  |S )N)rï   )rB   r–   r'   r'   r(   r  “  s    z2getPhases.<locals>.AfterHeadPhase.endTagHtmlBodyBrc             S   s   | j  dd|d i¡ d S )Nzunexpected-end-tagr@   )rJ   r   )rB   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»   rr   r­   T)r>   rÆ   ró   rJ   rG   r_   rd   )rB   r'   r'   r(   rï   š  s    z.getPhases.<locals>.AfterHeadPhase.anythingElser½   r»   r¼   )	r  r  r  r  r2   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'   r(   ÚAfterHeadPhasek  s.   

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de$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||Ž | j| _d S )N)ÚsuperrI   ÚprocessSpaceCharactersNonPrer‡   )rB   rž   r$   )ÚInBodyPhaserÐ   r'   r(   rI   ²  s    z'getPhases.<locals>.InBodyPhase.__init__c             S   s$   |j |j ko"|j|jko"|j|jkS )N)r@   rj   rk   )rB   Únode1Únode2r'   r'   r(   ÚisMatchingFormattingElement·  s    z:getPhases.<locals>.InBodyPhase.isMatchingFormattingElementc             S   sš   | j  |¡ | j jd }g }x<| j jd d d… D ]&}|tkr@P q0|  ||¡r0| |¡ q0W t|ƒdksjt‚t|ƒdkrˆ| j j 	|d ¡ | j j |¡ d S )Nrw   é   )
r>   rÆ   r€   ÚactiveFormattingElementsr   r+  rŒ   rƒ   rŽ   r#  )rB   r–   rm   ÚmatchingElementsrÀ   r'   r'   r(   ÚaddFormattingElement½  s    z3getPhases.<locals>.InBodyPhase.addFormattingElementc             S   s@   t dƒ}x2| jjd d d… D ]}|j|kr| j d¡ P qW 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€   r@   rJ   r   )rB   Úallowed_elementsrÀ   r'   r'   r(   r   Î  s
    
z)getPhases.<locals>.InBodyPhase.processEOFc             S   sf   |d }| j | _| d¡rH| jjd jdkrH| jjd  ¡ sH|dd … }|rb| j ¡  | j |¡ d S )Nrx   Ú
rw   )ÚpreÚlistingÚtextarear   )	r'  r‡   rÏ   r>   r€   r@   Ú
hasContentÚ#reconstructActiveFormattingElementsrÝ   )rB   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 k‘qS r'   )r   )r?   Úcharr'   r'   r(   ú
<listcomp>í  s   zDgetPhases.<locals>.InBodyPhase.processCharacters.<locals>.<listcomp>F)r>   r9  rÝ   rJ   rd   Úany)rB   r–   r'   r'   r(   r†   å  s    
z0getPhases.<locals>.InBodyPhase.processCharactersc             S   s   | j  ¡  | j  |d ¡ d S )Nrx   )r>   r9  rÝ   )rB   r–   r'   r'   r(   r'  ñ  s    
z;getPhases.<locals>.InBodyPhase.processSpaceCharactersNonPrec             S   s   | j jd  |¡S )Nr÷   )rJ   rG   rˆ   )rB   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ˆt‚nFd| j _x<|d  	¡ D ],\}}|| jjd j
krX|| jjd j
|< qXW d S )Nzunexpected-start-tagr@   r»   r   Frx   )rJ   r   rƒ   r>   r€   r@   rR   rŽ   rd   r,   rk   )rB   r–   rã   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¶t‚nt| j jsLnj| jjd j	rv| jjd j	 
| jjd ¡ x"| jjd jdkr˜| jj ¡  qxW | j |¡ | j jd | j _d S )	Nzunexpected-start-tagr@   r¼   r   r»   rw   r½   r®   )rJ   r   rƒ   r>   r€   r@   rR   rŽ   rd   ÚparentÚremoveChildrß   rÆ   rG   r_   )rB   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Æ   )rB   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&   rB  )rC  F)	r>   rD  rE  ró   rÆ   rJ   rd   r:  r‡   )rB   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 )Nzunexpected-start-tagr@   Úformr&   rB  )rC  rw   )	r>   ÚformPointerrJ   r   rD  rE  ró   rÆ   r€   )rB   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  }xLt| jjƒD ]<}|j|kr^| j j t|jdƒ¡ P |j	t
kr8|jdkr8P q8W | jjd	d
drœ| j j td	dƒ¡ | j |¡ d S )NFr2  r1  r0  )r2  r1  r0  r@   rs   )Úaddressr)   r&   r&   rB  )rC  )rJ   rd   Úreversedr>   r€   r@   r_   r‰   ró   Ú	nameTupler   rD  rÆ   )rB   r–   ÚstopNamesMapÚ	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 )Nr&   rB  )rC  )	r>   rD  rE  ró   rÆ   rJ   rN   r^   r\   )rB   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krR| j dd|d i¡ | j j 	¡  | j  
|¡ d S )Nr&   rB  )rC  rw   zunexpected-start-tagr@   )r>   rD  rE  ró   r€   r@   r   rJ   r   rß   rÆ   )rB   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krL| j j |¡ || j jkrf| j j |¡ | j  	¡  |  
|¡ d S )NÚaz$unexpected-start-tag-implies-end-tag)Ú	startNameÚendName)r>   Ú!elementInActiveFormattingElementsrJ   r   ÚendTagFormattingró   r€   r#  r-  r9  r/  )rB   r–   ÚafeAElementr'   r'   r(   Ú	startTagAJ  s    
z(getPhases.<locals>.InBodyPhase.startTagAc             S   s   | j  ¡  |  |¡ d S )N)r>   r9  r/  )rB   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Únobrz$unexpected-start-tag-implies-end-tag)rT  rU  )r>   r9  rD  rJ   r   r‰   ró   r/  )rB   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 )NrB  z$unexpected-start-tag-implies-end-tag)rT  rU  F)	r>   rD  rJ   r   r‰   ró   r9  rÆ   rd   )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>   r9  rÆ   r-  rŒ   r   rJ   rd   )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&   rB  )rC  FrÃ   )r>   rD  rE  ró   r9  rJ   rd   rÉ   )rB   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&   rB  )rC  Fr¬   )
rJ   rY   r>   rD  r‰   ró   rÆ   rd   rG   r_   )rB   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>   r9  rÆ   r€   rß   rJ   rd   )rB   r–   r'   r'   r(   ÚstartTagVoidFormatting…  s
    
z5getPhases.<locals>.InBodyPhase.startTagVoidFormattingc             S   s@   | j j}|  |¡ d|d kr<|d d  t¡dkr<|| j _d S )Nr0   rx   Úhidden)rJ   rd   ra  rl   r   )rB   r–   rd   r'   r'   r(   ÚstartTagInputŒ  s
    
z,getPhases.<locals>.InBodyPhase.startTagInputc             S   s$   | j  |¡ | j j ¡  d|d< d S )NTr   )r>   rÆ   r€   rß   )rB   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&   rB  )rC  Tr   F)	r>   rD  rE  ró   rÆ   r€   rß   rJ   rd   )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)ÚoriginalNameÚnewNamerr   rx   r~   )rk   r~   )rJ   r   rˆ   ró   )rB   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 kr>|d d |d< |  tdd|d¡ |  td	dƒ¡ |  td
dƒ¡ d|d krŒ|d d }nd}|  td |dœ¡ |d  ¡ }d|kr¾|d= d|krÌ|d= d|d< |  tdd||d d¡ |  	td
ƒ¡ |  td	dƒ¡ |  	tdƒ¡ d S )Nzdeprecated-tagr@   ÚisindexÚactionrx   rH  rr   )rk   ÚhrÚlabelÚpromptz3This is a searchable index. Enter search keywords: rp   )r0   rx   Úinputr~   )rk   r~   )
rJ   r   r>   rI  rˆ   ró   r†   r   Úcopyr‰   )rB   r–   Ú
form_attrsro  rk   r'   r'   r(   ÚstartTagIsIndex©  s6    


z.getPhases.<locals>.InBodyPhase.startTagIsIndexc             S   s0   | j  |¡ | jjj| jj_| j| _d| j_d S )NF)	r>   rÆ   rJ   rN   r[   r\   r:  r‡   rd   )rB   r–   r'   r'   r(   ÚstartTagTextareaÈ  s    z/getPhases.<locals>.InBodyPhase.startTagTextareac             S   s   d| j _|  |¡ d S )NF)rJ   rd   ÚstartTagRawtext)rB   r–   r'   r'   r(   ÚstartTagIFrameÎ  s    z-getPhases.<locals>.InBodyPhase.startTagIFramec             S   s"   | j jr|  |¡ n
|  |¡ d S )N)rJ   rL   ru  rù   )rB   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Ã   N)rJ   rÉ   )rB   r–   r'   r'   r(   ru  Ø  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€   r@   rJ   r_   r‰   ró   r9  rÆ   )rB   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krx| jjd | j_n| jjd	 | j_d S )
NFr¬   rª   r«   r©   r¨   r§   ÚinSelectInTabler¦   )r>   r9  rÆ   rJ   rd   r_   rG   )rB   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€   r@   rJ   r   rÆ   )rB   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 )Nrh   rj   r~   Tr   )	r>   r9  rJ   r   r   r   rÆ   r€   rß   )rB   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 )Nr|   rj   r~   Tr   )	r>   r9  rJ   r   r   r   rÆ   r€   rß   )rB   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-ignoredr@   N)rJ   r   )rB   r–   r'   r'   r(   ÚstartTagMisplaced  s    z0getPhases.<locals>.InBodyPhase.startTagMisplacedc             S   s   | j  ¡  | j  |¡ d S )N)r>   r9  rÆ   )rB   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ƒ¡ nX| j  d¡ | j jd j	dkrt| j dddi¡ | j j 
¡ }x|j	dkrš| j j 
¡ }q‚W d S )	Nr&   rB  )rC  rr   zunexpected-end-tagr@   rs   rw   )r>   rD  rF  ró   rJ   r   rE  r|  r€   r@   rß   )rB   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rlx>| j jdd … D ]*}|jtdƒkr>| j dd|jdœ¡ P q>W | jjd | j_d S )Nr»   rw   é   )r0  r1  r2  Úoptgrouprw  r&   ÚrpÚrtr´   r±   r¶   r²   rµ   r³   r»   r½   z$expected-one-end-tag-but-got-another)ÚgotNameÚexpectedNameÚ	afterBody)	r>   rD  rJ   r   r€   r@   r…   rG   r_   )rB   r–   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ó   )rB   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 	¡ }x|j|d krŒ| jj 	¡ }qpW d S )Nr@   r5  rw   zend-tag-too-early)
r'  r‡   r>   rD  r|  r€   r@   rJ   r   rß   )rB   r–   ÚinScoperÀ   r'   r'   r(   ÚendTagBlockA  s    
z*getPhases.<locals>.InBodyPhase.endTagBlockc             S   sv   | j j}d | j _|d ks$| j  |¡s8| j dddi¡ n:| j  ¡  | j jd |krd| j dddi¡ | j j |¡ d S )Nzunexpected-end-tagr@   rH  rw   zend-tag-too-early-ignored)r>   rI  rD  rJ   r   r|  r€   r#  )rB   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¡ nj| j j|d d | j jd j|d kr€| j dd|d i¡ | j j ¡ }x|j|d krª| j j ¡ }qŽW d S )	Nr@   r2  Úlist)rC  zunexpected-end-tag)Úexcluderw   zend-tag-too-early)r>   rD  rJ   r   r|  r€   r@   rß   )rB   r–   rC  rÀ   r'   r'   r(   ÚendTagListItem\  s    z-getPhases.<locals>.InBodyPhase.endTagListItemc             S   sš   x$t D ]}| j |¡r| j ¡  P qW | jjd j|d krR| j dd|d i¡ xBt D ]:}| j |¡rX| jj ¡ }x|jt krŽ| jj ¡ }qvW P qXW d S )Nrw   r@   zend-tag-too-early)	r   r>   rD  r|  r€   r@   rJ   r   rß   )rB   r–   Úitemr'   r'   r(   ÚendTagHeadingm  s    


z,getPhases.<locals>.InBodyPhase.endTagHeadingc             S   s  d}x|dk r|d7 }| j  |d ¡}|rH|| j jkrV| j  |j¡sV|  |¡ dS || j jk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}x,| j j|d… D ]}|jtk rü|}P  qüW |dkr^| j j ¡ }x||krJ| j j ¡ }q0W | j j 	|¡ dS | j j|d  }| j j 
|¡}| }	}
d}| j j 
|
¡}xÎ|d
k rd|d7 }|d8 }| j j| }
|
| j jkrÞ| j j 	|
¡ q˜|
|krêP |	|kr| j j 
|
¡d }|
 ¡ }|| j j| j j 
|
¡< || j j| j j 
|
¡< |}
|	jrR|	j |	¡ |
 |	¡ |
}	q˜W |	jrz|	j |	¡ |jtdƒkr¦| j  ¡ \}}| |	|¡ n
| |	¡ | ¡ }| |¡ | |¡ | j j 	|¡ | j j ||¡ | j j 	|¡ | j j | j j 
|¡d |¡ qW dS )z)The much-feared adoption agency algorithmr   é   r   r@   Nzadoption-agency-1.2zadoption-agency-4.4rw   zadoption-agency-1.3r,  )r¹   r´   r¶   rµ   r³   )r>   rV  r€   rD  r@   rû   rJ   r   r-  r#  ÚindexrM  r   rß   Ú	cloneNoder@  rA  ÚappendChildr…   ÚgetTableMisnestedNodePositionÚinsertBeforeÚreparentChildrenÚinsert)rB   r–   ÚouterLoopCounterÚformattingElementÚafeIndexÚfurthestBlockrm   ÚcommonAncestorÚbookmarkÚlastNoderÀ   ÚinnerLoopCounterr“  Úcloner@  r—  r'   r'   r(   rW  |  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 ¡ }x|j|d kr€| j j ¡ }qdW | j  ¡  d S )Nr@   rw   zend-tag-too-early)	r>   rD  r|  r€   r@   rJ   r   rß   ÚclearActiveFormattingElements)rB   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 element)rh  ri  rr   )rJ   r   r>   r9  rÆ   ró   r€   rß   )rB   r–   r'   r'   r(   r  +  s
    
z'getPhases.<locals>.InBodyPhase.endTagBrc             S   s¨   x¢| j jd d d… D ]Œ}|j|d kr~| j j|d d | j jd j|d krd| j dd|d i¡ x| j j ¡ |krxqfW P q|jtkr| j dd|d i¡ P qW d S )Nrw   r@   )rŽ  zunexpected-end-tag)	r>   r€   r@   r|  rJ   r   rß   rM  r   )rB   r–   rÀ   r'   r'   r(   rû   2  s    
z*getPhases.<locals>.InBodyPhase.endTagOtherr½   )	r  r  r  r  r  r2   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)r5  r6  rH  )r2  r0  r1  rT   rS  )ÚbÚbigÚcodeÚemÚfontÚiÚsÚsmallÚstrikeÚstrongÚttÚur[  rB  )ÚappletÚmarqueeÚobjectÚxmpr¹   )Úarearô   Úembedrg  ÚkeygenÚwbr)ÚparamÚsourceÚtrackrp  rm  rf  rk  r7  Úiframer  )Únoembedr  r°   )rƒ  r„  )rw  r‚  Úmathr|   )r·   Úcolr¸   Úframerº   r´   r±   r¶   r²   rµ   r³   )rK  r¥  r¦  r§  rB  r¨  r©  Údialogrª  r)   r«  r¬  r­  r®  r¯  r°  r±  r6  r²  r³  r´  rµ  r5  r¶  r·  r¸  r&   )r0  r1  r2  )rS  r¹  rº  r»  r¼  r½  r¾  r[  r¿  rÀ  rÁ  rÂ  rÃ  rÄ  rô   )?r9   r:   r;   ræ   rI   r+  r/  r   r:  r†   r'  r?  r!  r"  rF  rG  rJ  rP  rQ  rR  rY  rZ  r\  r]  r^  r_  r`  ra  rc  rd  re  rj  rs  rt  rv  r  ru  rx  rz  r}  r~  r  r€  rù   rE  rˆ  r‰  r‹  rŒ  r  r‘  rW  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 )Nrx   )r>   rÝ   )rB   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-eofr@   rw   T)rJ   r   r>   r€   r@   rß   rÇ   r_   )rB   r'   r'   r(   r   ‡  s
    z'getPhases.<locals>.TextPhase.processEOFc             S   s   dst d|d  ƒ‚d S )NFz4Tried to process start tag %s in RCDATA/RAWTEXT moder@   )rŽ   )rB   r–   r'   r'   r(   rù   Ž  s    z*getPhases.<locals>.TextPhase.startTagOtherc             S   s*   | j j ¡ }|jdkst‚| jj| j_d S )Nr  )r>   r€   rß   r@   rŽ   rJ   rÇ   r_   )rB   r–   rÀ   r'   r'   r(   ÚendTagScript‘  s    z)getPhases.<locals>.TextPhase.endTagScriptc             S   s   | j j ¡  | jj| j_d S )N)r>   r€   rß   rJ   rÇ   r_   )rB   r–   r'   r'   r(   rû   ˜  s    z(getPhases.<locals>.TextPhase.endTagOtherr  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   s(   x"| j jd jdkr"| j j ¡  qW d S )Nrw   )r¹   r½   )r>   r€   r@   rß   )rB   r'   r'   r(   ÚclearStackToTableContext§  s    z8getPhases.<locals>.InTablePhase.clearStackToTableContextc             S   s0   | j jd jdkr | j d¡ n| jjs,t‚d S )Nrw   r½   zeof-in-table)r>   r€   r@   rJ   r   rR   rŽ   )rB   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)rJ   r_   rG   rÇ   r‡   )rB   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 )NrÚ  )rJ   r_   rG   rÇ   r†   )rB   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>   ÚinsertFromTablerJ   rG   r†   )rB   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Æ   rJ   rG   r_   )rB   r–   r'   r'   r(   ÚstartTagCaptionÊ  s    z/getPhases.<locals>.InTablePhase.startTagCaptionc             S   s(   |   ¡  | j |¡ | jjd | j_d S )Nr«   )rÙ  r>   rÆ   rJ   rG   r_   )rB   r–   r'   r'   r(   ÚstartTagColgroupÐ  s    z0getPhases.<locals>.InTablePhase.startTagColgroupc             S   s   |   tddƒ¡ |S )Nr¸   rr   )rÝ  ró   )rB   r–   r'   r'   r(   ÚstartTagColÕ  s    z+getPhases.<locals>.InTablePhase.startTagColc             S   s(   |   ¡  | j |¡ | jjd | j_d S )Nr©   )rÙ  r>   rÆ   rJ   rG   r_   )rB   r–   r'   r'   r(   ÚstartTagRowGroupÙ  s    z0getPhases.<locals>.InTablePhase.startTagRowGroupc             S   s   |   tddƒ¡ |S )Nr´   rr   )rß  ró   )rB   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 )Nz$unexpected-start-tag-implies-end-tagr¹   )rT  rU  )rJ   r   r_   r‰   ró   rR   )rB   r–   r'   r'   r(   r`  â  s
    z-getPhases.<locals>.InTablePhase.startTagTablec             S   s   | j jd  |¡S )Nr÷   )rJ   rG   rˆ   )rB   r–   r'   r'   r(   ÚstartTagStyleScripté  s    z3getPhases.<locals>.InTablePhase.startTagStyleScriptc             S   sV   d|d krH|d d   t¡dkrH| j d¡ | j |¡ | jj ¡  n
|  |¡ d S )Nr0   rx   rb  z unexpected-hidden-input-in-table)	rl   r   rJ   r   r>   rÆ   r€   rß   rù   )rB   r–   r'   r'   r(   rc  ì  s    z-getPhases.<locals>.InTablePhase.startTagInputc             S   sD   | j  d¡ | jjd kr@| j |¡ | jjd | j_| jj ¡  d S )Nzunexpected-form-in-tablerw   )rJ   r   r>   rI  rÆ   r€   rß   )rB   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-voodoor@   Tr­   F)rJ   r   r>   rÛ  rG   rˆ   )rB   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œ¡ x"| j jd jdkrl| j j ¡  qLW | j j ¡  | j ¡  n| jj	s’t
‚| j ¡  d S )Nr¹   )rC  rw   zend-tag-too-early-named)r…  r†  )r>   rD  r|  r€   r@   rJ   r   rß   ra   rR   rŽ   )rB   r–   r'   r'   r(   ÚendTagTable  s    
z+getPhases.<locals>.InTablePhase.endTagTablec             S   s   | j  dd|d i¡ d S )Nzunexpected-end-tagr@   )rJ   r   )rB   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-voodoor@   Tr­   F)rJ   r   r>   rÛ  rG   r‰   )rB   r–   r'   r'   r(   rû     s    z+getPhases.<locals>.InTablePhase.endTagOtherr½   r·   r¸   rÓ  )r´   r¶   rµ   )r±   r²   r³   r¹   )r  r  rp  rH  )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á  rc  rJ  rù   râ  rã  rû   r   rü   rä   rÞ   rý   rå   r'   )rç   r'   r(   ÚInTablePhase¢  sH   	

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||Ž d | _g | _d S )N)r&  rI   rÇ   rå  )rB   rž   r$   )ÚInTableTextPhaserÐ   r'   r(   rI   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=  <  s    zGgetPhases.<locals>.InTableTextPhase.flushCharacters.<locals>.<listcomp>c             S   s   g | ]}|t k‘qS r'   )r   )r?   r  r'   r'   r(   r=  =  s    rp   )r0   rx   r¬   )Újoinrå  r>  r   rJ   rG   rÝ   r>   )rB   rx   r–   r'   r'   r(   ÚflushCharacters;  s    z3getPhases.<locals>.InTableTextPhase.flushCharactersc             S   s   |   ¡  | j| j_|S )N)rè  rÇ   rJ   r_   )rB   r–   r'   r'   r(   rŠ   D  s    
z2getPhases.<locals>.InTableTextPhase.processCommentc             S   s   |   ¡  | j| j_dS )NT)rè  rÇ   rJ   r_   )rB   r'   r'   r(   r   I  s    
z.getPhases.<locals>.InTableTextPhase.processEOFc             S   s    |d dkrd S | j  |¡ d S )Nrx   r;  )rå  rŒ   )rB   r–   r'   r'   r(   r†   N  s    z5getPhases.<locals>.InTableTextPhase.processCharactersc             S   s   | j  |¡ d S )N)rå  rŒ   )rB   r–   r'   r'   r(   r‡   S  s    z:getPhases.<locals>.InTableTextPhase.processSpaceCharactersc             S   s   |   ¡  | j| j_|S )N)rè  rÇ   rJ   r_   )rB   r–   r'   r'   r(   rˆ   X  s    
z3getPhases.<locals>.InTableTextPhase.processStartTagc             S   s   |   ¡  | j| j_|S )N)rè  rÇ   rJ   r_   )rB   r–   r'   r'   r(   r‰   ]  s    
z1getPhases.<locals>.InTableTextPhase.processEndTag)r9   r:   r;   ræ   rI   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¹   )rC  )r>   rD  )rB   r'   r'   r(   ÚignoreEndTagCaptionf  s    z5getPhases.<locals>.InCaptionPhase.ignoreEndTagCaptionc             S   s   | j jd  ¡  d S )Nr­   )rJ   rG   r   )rB   r'   r'   r(   r   i  s    z,getPhases.<locals>.InCaptionPhase.processEOFc             S   s   | j jd  |¡S )Nr­   )rJ   rG   r†   )rB   r–   r'   r'   r(   r†   l  s    z3getPhases.<locals>.InCaptionPhase.processCharactersc             S   s0   | j  ¡  |  ¡ }| j j tdƒ¡ |s,|S d S )Nr·   )rJ   r   ré  r_   r‰   ró   )rB   r–   ÚignoreEndTagr'   r'   r(   ÚstartTagTableElemento  s
    
z6getPhases.<locals>.InCaptionPhase.startTagTableElementc             S   s   | j jd  |¡S )Nr­   )rJ   rG   rˆ   )rB   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œ¡ x"| jjd jdkrd| jj ¡  qDW | jj ¡  | j ¡  | jj	d | j_
n| jjsšt‚| j ¡  d S )Nrw   r·   z$expected-one-end-tag-but-got-another)r…  r†  r¬   )ré  r>   r|  r€   r@   rJ   r   rß   r£  rG   r_   rR   rŽ   )rB   r–   r'   r'   r(   ÚendTagCaptionz  s    

z/getPhases.<locals>.InCaptionPhase.endTagCaptionc             S   s0   | j  ¡  |  ¡ }| j j tdƒ¡ |s,|S d S )Nr·   )rJ   r   ré  r_   r‰   ró   )rB   r–   rê  r'   r'   r(   râ  Œ  s
    
z-getPhases.<locals>.InCaptionPhase.endTagTablec             S   s   | j  dd|d i¡ d S )Nzunexpected-end-tagr@   )rJ   r   )rB   r–   r'   r'   r(   rã  “  s    z.getPhases.<locals>.InCaptionPhase.endTagIgnorec             S   s   | j jd  |¡S )Nr­   )rJ   rG   r‰   )rB   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)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  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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€   r@   )rB   r'   r'   r(   ÚignoreEndTagColgroup¬  s    z:getPhases.<locals>.InColumnGroupPhase.ignoreEndTagColgroupc             S   sD   | j jd jdkr"| jjst‚d S |  ¡ }|  tdƒ¡ |s@dS d S )Nrw   r½   r¸   T)	r>   r€   r@   rJ   rR   rŽ   rî  ÚendTagColgroupró   )rB   rê  r'   r'   r(   r   ¯  s    z0getPhases.<locals>.InColumnGroupPhase.processEOFc             S   s"   |   ¡ }|  tdƒ¡ |s|S d S )Nr¸   )rî  rï  ró   )rB   r–   rê  r'   r'   r(   r†   ¹  s    z7getPhases.<locals>.InColumnGroupPhase.processCharactersc             S   s$   | j  |¡ | j j ¡  d|d< d S )NTr   )r>   rÆ   r€   rß   )rB   r–   r'   r'   r(   rÞ  ¿  s    z1getPhases.<locals>.InColumnGroupPhase.startTagColc             S   s"   |   ¡ }|  tdƒ¡ |s|S d S )Nr¸   )rî  rï  ró   )rB   r–   rê  r'   r'   r(   rù   Ä  s    z3getPhases.<locals>.InColumnGroupPhase.startTagOtherc             S   s@   |   ¡ r | jjst‚| j ¡  n| jj ¡  | jjd | j_	d S )Nr¬   )
rî  rJ   rR   rŽ   r   r>   r€   rß   rG   r_   )rB   r–   r'   r'   r(   rï  Ê  s
    z4getPhases.<locals>.InColumnGroupPhase.endTagColgroupc             S   s   | j  dddi¡ d S )Nz
no-end-tagr@   rÓ  )rJ   r   )rB   r–   r'   r'   r(   Ú	endTagColÓ  s    z/getPhases.<locals>.InColumnGroupPhase.endTagColc             S   s"   |   ¡ }|  tdƒ¡ |s|S d S )Nr¸   )rî  rï  ró   )rB   r–   rê  r'   r'   r(   rû   Ö  s    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   sF   x"| j jd jdkr"| j j ¡  qW | j jd jdkrB| jjsBt‚d S )Nrw   )r´   r¶   rµ   r½   r½   )r>   r€   r@   rß   rJ   rR   rŽ   )rB   r'   r'   r(   ÚclearStackToTableBodyContextí  s    z@getPhases.<locals>.InTableBodyPhase.clearStackToTableBodyContextc             S   s   | j jd  ¡  d S )Nr¬   )rJ   rG   r   )rB   r'   r'   r(   r   ÷  s    z.getPhases.<locals>.InTableBodyPhase.processEOFc             S   s   | j jd  |¡S )Nr¬   )rJ   rG   r‡   )rB   r–   r'   r'   r(   r‡   ú  s    z:getPhases.<locals>.InTableBodyPhase.processSpaceCharactersc             S   s   | j jd  |¡S )Nr¬   )rJ   rG   r†   )rB   r–   r'   r'   r(   r†   ý  s    z5getPhases.<locals>.InTableBodyPhase.processCharactersc             S   s(   |   ¡  | j |¡ | jjd | j_d S )Nr¨   )rò  r>   rÆ   rJ   rG   r_   )rB   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-bodyr@   r³   rr   )rJ   r   ró  ró   )rB   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`t	‚| j 
¡  d S )Nr´   r¹   )rC  rµ   r¶   rw   )r>   rD  rò  ÚendTagTableRowGroupró   r€   r@   rJ   rR   rŽ   r   )rB   r–   r'   r'   r(   ÚstartTagTableOther  s    z6getPhases.<locals>.InTableBodyPhase.startTagTableOtherc             S   s   | j jd  |¡S )Nr¬   )rJ   rG   rˆ   )rB   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 )Nr@   r¹   )rC  r¬   z unexpected-end-tag-in-table-body)	r>   rD  rò  r€   rß   rJ   rG   r_   r   )rB   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`t	‚| j 
¡  d S )Nr´   r¹   )rC  rµ   r¶   rw   )r>   rD  rò  rõ  ró   r€   r@   rJ   rR   rŽ   r   )rB   r–   r'   r'   r(   râ  %  s    z/getPhases.<locals>.InTableBodyPhase.endTagTablec             S   s   | j  dd|d i¡ d S )Nz unexpected-end-tag-in-table-bodyr@   )rJ   r   )rB   r–   r'   r'   r(   rã  2  s    z0getPhases.<locals>.InTableBodyPhase.endTagIgnorec             S   s   | j jd  |¡S )Nr¬   )rJ   rG   r‰   )rB   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±   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(   ÚInTableBodyPhaseè  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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   sD   x>| j jd jdkr>| j dd| j jd ji¡ | j j ¡  qW d S )Nrw   )r³   r½   z'unexpected-implied-end-tag-in-table-rowr@   )r>   r€   r@   rJ   r   rß   )rB   r'   r'   r(   ÚclearStackToTableRowContextO  s    z9getPhases.<locals>.InRowPhase.clearStackToTableRowContextc             S   s   | j jddd S )Nr³   r¹   )rC  )r>   rD  )rB   r'   r'   r(   ÚignoreEndTagTrU  s    z,getPhases.<locals>.InRowPhase.ignoreEndTagTrc             S   s   | j jd  ¡  d S )Nr¬   )rJ   rG   r   )rB   r'   r'   r(   r   Y  s    z(getPhases.<locals>.InRowPhase.processEOFc             S   s   | j jd  |¡S )Nr¬   )rJ   rG   r‡   )rB   r–   r'   r'   r(   r‡   \  s    z4getPhases.<locals>.InRowPhase.processSpaceCharactersc             S   s   | j jd  |¡S )Nr¬   )rJ   rG   r†   )rB   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Æ   rJ   rG   r_   r-  rŒ   r   )rB   r–   r'   r'   r(   rô  b  s    z/getPhases.<locals>.InRowPhase.startTagTableCellc             S   s"   |   ¡ }|  tdƒ¡ |s|S d S )Nr³   )rù  ÚendTagTrró   )rB   r–   rê  r'   r'   r(   rö  h  s    z0getPhases.<locals>.InRowPhase.startTagTableOtherc             S   s   | j jd  |¡S )Nr¬   )rJ   rG   rˆ   )rB   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:t	‚| j 
¡  d S )Nr©   )rù  rø  r>   r€   rß   rJ   rG   r_   rR   rŽ   r   )rB   r–   r'   r'   r(   rú  r  s    z&getPhases.<locals>.InRowPhase.endTagTrc             S   s"   |   ¡ }|  tdƒ¡ |s|S d S )Nr³   )rù  rú  ró   )rB   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¹   )rC  r³   )r>   rD  rú  ró   rJ   r   )rB   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-rowr@   )rJ   r   )rB   r–   r'   r'   r(   rã  ‹  s    z*getPhases.<locals>.InRowPhase.endTagIgnorec             S   s   | j jd  |¡S )Nr¬   )rJ   rG   r‰   )rB   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¸   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(   Ú
InRowPhaseJ  s6   


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¹   )rC  r²   )r>   rD  ÚendTagTableCellró   )rB   r'   r'   r(   Ú	closeCell¨  s    z(getPhases.<locals>.InCellPhase.closeCellc             S   s   | j jd  ¡  d S )Nr­   )rJ   rG   r   )rB   r'   r'   r(   r   ¯  s    z)getPhases.<locals>.InCellPhase.processEOFc             S   s   | j jd  |¡S )Nr­   )rJ   rG   r†   )rB   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s8t‚| j ¡  d S )Nr±   r¹   )rC  r²   )r>   rD  rý  rJ   rR   rŽ   r   )rB   r–   r'   r'   r(   rö  µ  s    z1getPhases.<locals>.InCellPhase.startTagTableOtherc             S   s   | j jd  |¡S )Nr­   )rJ   rG   rˆ   )rB   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rt| j dd|d i¡ x.| j j ¡ }|j|d krRP qRW n| j j ¡  | j  ¡  | jj	d | j_
n| j dd|d i¡ d S )Nr@   r¹   )rC  rw   zunexpected-cell-end-tagr¨   zunexpected-end-tag)r>   rD  r|  r€   r@   rJ   r   rß   r£  rG   r_   )rB   r–   rÀ   r'   r'   r(   rü  Â  s    
z.getPhases.<locals>.InCellPhase.endTagTableCellc             S   s   | j  dd|d i¡ d S )Nzunexpected-end-tagr@   )rJ   r   )rB   r–   r'   r'   r(   rã  Ó  s    z+getPhases.<locals>.InCellPhase.endTagIgnorec             S   s.   | j j|d ddr |  ¡  |S | j ¡  d S )Nr@   r¹   )rC  )r>   rD  rý  rJ   r   )rB   r–   r'   r'   r(   ÚendTagImplyÖ  s    z*getPhases.<locals>.InCellPhase.endTagImplyc             S   s   | j jd  |¡S )Nr­   )rJ   rG   r‰   )rB   r–   r'   r'   r(   rû   Þ  s    z*getPhases.<locals>.InCellPhase.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(   Ú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,t‚d S )Nrw   r½   zeof-in-select)r>   r€   r@   rJ   r   rR   rŽ   )rB   r'   r'   r(   r   ó  s    z+getPhases.<locals>.InSelectPhase.processEOFc             S   s$   |d dkrd S | j  |d ¡ d S )Nrx   r;  )r>   rÝ   )rB   r–   r'   r'   r(   r†   ù  s    z2getPhases.<locals>.InSelectPhase.processCharactersc             S   s.   | j jd jdkr| j j ¡  | j  |¡ d S )Nrw   rw  )r>   r€   r@   rß   rÆ   )rB   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   rw  r‚  )r>   r€   r@   rß   rÆ   )rB   r–   r'   r'   r(   ÚstartTagOptgroup	  s
    z1getPhases.<locals>.InSelectPhase.startTagOptgroupc             S   s   | j  d¡ |  tdƒ¡ d S )Nzunexpected-select-in-selectr°   )rJ   r   ÚendTagSelectró   )rB   r–   r'   r'   r(   rz  	  s    z/getPhases.<locals>.InSelectPhase.startTagSelectc             S   s>   | j  d¡ | jjdddr.|  tdƒ¡ |S | j js:t‚d S )Nzunexpected-input-in-selectr°   )rC  )rJ   r   r>   rD  r  ró   rR   rŽ   )rB   r–   r'   r'   r(   rc  	  s
    z.getPhases.<locals>.InSelectPhase.startTagInputc             S   s   | j jd  |¡S )Nr÷   )rJ   rG   rˆ   )rB   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-selectr@   )rJ   r   )rB   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   rw  zunexpected-end-tag-in-selectr@   )r>   r€   r@   rß   rJ   r   )rB   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   rw  éþÿÿÿr‚  zunexpected-end-tag-in-selectr@   )r>   r€   r@   rß   rJ   r   )rB   r–   r'   r'   r(   ÚendTagOptgroup%	  s    z/getPhases.<locals>.InSelectPhase.endTagOptgroupc             S   s^   | j jdddrD| j j ¡ }x|jdkr6| j j ¡ }qW | j ¡  n| jjsPt‚| j 	¡  d S )Nr°   )rC  )
r>   rD  r€   rß   r@   rJ   ra   rR   rŽ   r   )rB   r–   rÀ   r'   r'   r(   r  2	  s    z-getPhases.<locals>.InSelectPhase.endTagSelectc             S   s   | j  dd|d i¡ d S )Nzunexpected-end-tag-in-selectr@   )rJ   r   )rB   r–   r'   r'   r(   rû   =	  s    z,getPhases.<locals>.InSelectPhase.endTagOtherr½   rw  r‚  r°   )rp  rË  r7  r  N)r9   r:   r;   rð   ræ   r   r†   r   r  rz  rc  r  rù   r  r  r  rû   r   rü   rä   rÞ   rý   rå   r'   )rç   r'   r(   ÚInSelectPhaseï  s4   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¦   )rJ   rG   r   )rB   r'   r'   r(   r   U	  s    z2getPhases.<locals>.InSelectInTablePhase.processEOFc             S   s   | j jd  |¡S )Nr¦   )rJ   rG   r†   )rB   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-tabler@   r°   )rJ   r   rû   ró   )rB   r–   r'   r'   r(   r`  [	  s    z5getPhases.<locals>.InSelectInTablePhase.startTagTablec             S   s   | j jd  |¡S )Nr¦   )rJ   rG   rˆ   )rB   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-tabler@   r¹   )rC  r°   )rJ   r   r>   rD  rû   ró   )rB   r–   r'   r'   r(   râ  c	  s    z3getPhases.<locals>.InSelectInTablePhase.endTagTablec             S   s   | j jd  |¡S )Nr¦   )rJ   rG   r‰   )rB   r–   r'   r'   r(   rû   i	  s    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   

r  c            -       s–   e Zd Zeƒ Ze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&d'd(d)d*d+d,g,ƒZd-d.„ Z‡ fd/d0„Zd1d2„ Z	d3d4„ Z
d5S )6z(getPhases.<locals>.InForeignContentPhaser¹  rº  r§  r»   rô   r¨  r»  r0  r)   r«  r1  r¼  rÊ  Úh1Úh2Úh3Úh4Úh5Úh6rº   rm  r¾  rg  r2  r6  r³  r2   r[  rµ  r&   r5  r{  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& |krj||d&  |d&< d S )'NÚaltGlyphÚaltGlyphDefÚaltGlyphItemÚanimateColorÚanimateMotionÚanimateTransformÚclipPathÚfeBlendÚfeColorMatrixÚfeComponentTransferÚfeCompositeÚfeConvolveMatrixÚfeDiffuseLightingÚfeDisplacementMapÚfeDistantLightÚfeFloodÚfeFuncAÚfeFuncBÚfeFuncGÚfeFuncRÚfeGaussianBlurÚfeImageÚfeMergeÚfeMergeNodeÚfeMorphologyÚfeOffsetÚfePointLightÚfeSpecularLightingÚfeSpotLightÚfeTileÚfeTurbulenceÚforeignObjectÚglyphRefÚlinearGradientÚradialGradientÚtextPath)$ÚaltglyphÚaltglyphdefÚaltglyphitemÚanimatecolorÚanimatemotionÚanimatetransformÚclippathÚfeblendÚfecolormatrixÚfecomponenttransferÚfecompositeÚfeconvolvematrixÚfediffuselightingÚfedisplacementmapÚfedistantlightÚfefloodÚfefuncaÚfefuncbÚfefuncgÚfefuncrÚfegaussianblurÚfeimageÚfemergeÚfemergenodeÚfemorphologyÚfeoffsetÚfepointlightÚfespecularlightingÚfespotlightÚfetileÚfeturbulenceÚforeignobjectÚglyphrefÚlineargradientÚradialgradientÚtextpathr@   r'   )rB   r–   Úreplacementsr'   r'   r(   ÚadjustSVGTagNames„	  sL    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   r;  u   ï¿½c             s   s   | ]}|t kV  qd S )N)r   )r?   r<  r'   r'   r(   ú	<genexpr>±	  s    zMgetPhases.<locals>.InForeignContentPhase.processCharacters.<locals>.<genexpr>F)rJ   rd   r>  r†   )rB   r–   )rç   r'   r(   r†   ­	  s    
z:getPhases.<locals>.InForeignContentPhase.processCharactersc             S   s.  | j jd }|d | jks@|d dkrªt|d  ¡ ƒdddh@ rª| j dd|d i¡ xN| j jd j| j jkr¤| j 	| j jd ¡s¤| j 
| j jd ¡s¤| j j ¡  qXW |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   r@   r½  rx   ÚcolorÚfaceÚsizez*unexpected-html-element-in-foreign-contentrh   r|   rj   r~   Tr   )r>   r€   ÚbreakoutElementsÚsetÚkeysrJ   r   rj   r„   rn   ro   rß   r   r   r[  r   r   rÆ   )rB   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¡ x¤|j t¡|d kr²| jj| jj	d krŠ| jj 
¡  | jjj| j_x | jj ¡ |krª| jjsŒt‚qŒW d }P |d8 }| jj| }|j| jjkrØqHqH| jj |¡}P qHW |S )Nr   rw   r@   zunexpected-end-tagrÚ  )rƒ   r>   r€   r@   rl   r   rJ   r   r_   rG   rè  rÇ   rß   rŽ   rj   r„   r‰   )rB   r–   Ú	nodeIndexrÀ   r˜   r'   r'   r(   r‰   Ð	  s(    z6getPhases.<locals>.InForeignContentPhase.processEndTagN)r9   r:   r;   rð   ræ   r…   r`  r[  r†   rˆ   r‰   r'   )rç   r'   r(   ÚInForeignContentPhasex	  s   


)rd  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 )Nr'   )rB   r'   r'   r(   r   í	  s    z,getPhases.<locals>.AfterBodyPhase.processEOFc             S   s   | j  || j jd ¡ d S )Nr   )r>   rÜ   r€   )rB   r–   r'   r'   r(   rŠ   ñ	  s    z0getPhases.<locals>.AfterBodyPhase.processCommentc             S   s    | j  d¡ | j jd | j _|S )Nzunexpected-char-after-bodyr­   )rJ   r   rG   r_   )rB   r–   r'   r'   r(   r†   ö	  s    z3getPhases.<locals>.AfterBodyPhase.processCharactersc             S   s   | j jd  |¡S )Nr­   )rJ   rG   rˆ   )rB   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-bodyr@   r­   )rJ   r   rG   r_   )rB   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)rJ   rR   r   rG   r_   )rB   r@   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-bodyr@   r­   )rJ   r   rG   r_   )rB   r–   r'   r'   r(   rû   

  s    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   rf  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,t‚d S )Nrw   r½   zeof-in-frameset)r>   r€   r@   rJ   r   rR   rŽ   )rB   r'   r'   r(   r   
  s    z-getPhases.<locals>.InFramesetPhase.processEOFc             S   s   | j  d¡ d S )Nzunexpected-char-in-frameset)rJ   r   )rB   r–   r'   r'   r(   r†   "
  s    z4getPhases.<locals>.InFramesetPhase.processCharactersc             S   s   | j  |¡ d S )N)r>   rÆ   )rB   r–   r'   r'   r(   r"  %
  s    z3getPhases.<locals>.InFramesetPhase.startTagFramesetc             S   s   | j  |¡ | j j ¡  d S )N)r>   rÆ   r€   rß   )rB   r–   r'   r'   r(   ÚstartTagFrame(
  s    z0getPhases.<locals>.InFramesetPhase.startTagFramec             S   s   | j jd  |¡S )Nr­   )rJ   rG   rˆ   )rB   r–   r'   r'   r(   ÚstartTagNoframes,
  s    z3getPhases.<locals>.InFramesetPhase.startTagNoframesc             S   s   | j  dd|d i¡ d S )Nz unexpected-start-tag-in-framesetr@   )rJ   r   )rB   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€   r@   rJ   r   rß   rR   rG   r_   )rB   r–   r'   r'   r(   ÚendTagFrameset3
  s    z1getPhases.<locals>.InFramesetPhase.endTagFramesetc             S   s   | j  dd|d i¡ d S )Nzunexpected-end-tag-in-framesetr@   )rJ   r   )rB   r–   r'   r'   r(   rû   ?
  s    z.getPhases.<locals>.InFramesetPhase.endTagOtherr½   r¼   rÔ  r  N)r9   r:   r;   rð   ræ   r   r†   r"  rg  rh  rù   rj  rû   r   rü   rä   rÞ   rý   rå   r'   )rç   r'   r(   ÚInFramesetPhase
  s$   rk  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 )Nr'   )rB   r'   r'   r(   r   T
  s    z0getPhases.<locals>.AfterFramesetPhase.processEOFc             S   s   | j  d¡ d S )Nzunexpected-char-after-frameset)rJ   r   )rB   r–   r'   r'   r(   r†   X
  s    z7getPhases.<locals>.AfterFramesetPhase.processCharactersc             S   s   | j jd  |¡S )Nr÷   )rJ   rG   rˆ   )rB   r–   r'   r'   r(   rh  [
  s    z6getPhases.<locals>.AfterFramesetPhase.startTagNoframesc             S   s   | j  dd|d i¡ d S )Nz#unexpected-start-tag-after-framesetr@   )rJ   r   )rB   r–   r'   r'   r(   rù   ^
  s    z3getPhases.<locals>.AfterFramesetPhase.startTagOtherc             S   s   | j jd | j _d S )NÚafterAfterFrameset)rJ   rG   r_   )rB   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-framesetr@   )rJ   r   )rB   r–   r'   r'   r(   rû   e
  s    z1getPhases.<locals>.AfterFramesetPhase.endTagOtherr½   r  N)r9   r:   r;   rð   ræ   r   r†   rh  rù   r‰  rû   r   rü   rä   rÞ   rý   rå   r'   )rç   r'   r(   ÚAfterFramesetPhaseP
  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	dd„ Z
dd„ Ze de	fg¡Ze
e_dS )z&getPhases.<locals>.AfterAfterBodyPhasec             S   s   d S )Nr'   )rB   r'   r'   r(   r   w
  s    z1getPhases.<locals>.AfterAfterBodyPhase.processEOFc             S   s   | j  || j j¡ d S )N)r>   rÜ   rè   )rB   r–   r'   r'   r(   rŠ   z
  s    z5getPhases.<locals>.AfterAfterBodyPhase.processCommentc             S   s   | j jd  |¡S )Nr­   )rJ   rG   r‡   )rB   r–   r'   r'   r(   r‡   }
  s    z=getPhases.<locals>.AfterAfterBodyPhase.processSpaceCharactersc             S   s    | j  d¡ | j jd | j _|S )Nzexpected-eof-but-got-charr­   )rJ   r   rG   r_   )rB   r–   r'   r'   r(   r†   €
  s    z8getPhases.<locals>.AfterAfterBodyPhase.processCharactersc             S   s   | j jd  |¡S )Nr­   )rJ   rG   rˆ   )rB   r–   r'   r'   r(   rä   …
  s    z3getPhases.<locals>.AfterAfterBodyPhase.startTagHtmlc             S   s*   | j  dd|d i¡ | j jd | j _|S )Nzexpected-eof-but-got-start-tagr@   r­   )rJ   r   rG   r_   )rB   r–   r'   r'   r(   rù   ˆ
  s    z4getPhases.<locals>.AfterAfterBodyPhase.startTagOtherc             S   s*   | j  dd|d i¡ | j jd | j _|S )Nzexpected-eof-but-got-end-tagr@   r­   )rJ   r   rG   r_   )rB   r–   r'   r'   r(   r‰   Ž
  s    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   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
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 )Nr'   )rB   r'   r'   r(   r   œ
  s    z5getPhases.<locals>.AfterAfterFramesetPhase.processEOFc             S   s   | j  || j j¡ d S )N)r>   rÜ   rè   )rB   r–   r'   r'   r(   rŠ   Ÿ
  s    z9getPhases.<locals>.AfterAfterFramesetPhase.processCommentc             S   s   | j jd  |¡S )Nr­   )rJ   rG   r‡   )rB   r–   r'   r'   r(   r‡   ¢
  s    zAgetPhases.<locals>.AfterAfterFramesetPhase.processSpaceCharactersc             S   s   | j  d¡ d S )Nzexpected-eof-but-got-char)rJ   r   )rB   r–   r'   r'   r(   r†   ¥
  s    z<getPhases.<locals>.AfterAfterFramesetPhase.processCharactersc             S   s   | j jd  |¡S )Nr­   )rJ   rG   rˆ   )rB   r–   r'   r'   r(   rä   ¨
  s    z7getPhases.<locals>.AfterAfterFramesetPhase.startTagHtmlc             S   s   | j jd  |¡S )Nr÷   )rJ   rG   rˆ   )rB   r–   r'   r'   r(   ÚstartTagNoFrames«
  s    z;getPhases.<locals>.AfterAfterFramesetPhase.startTagNoFramesc             S   s   | j  dd|d i¡ d S )Nzexpected-eof-but-got-start-tagr@   )rJ   r   )rB   r–   r'   r'   r(   rù   ®
  s    z8getPhases.<locals>.AfterAfterFramesetPhase.startTagOtherc             S   s   | j  dd|d i¡ d S )Nzexpected-eof-but-got-end-tagr@   )rJ   r   )rB   r–   r'   r'   r(   r‰   ²
  s    z8getPhases.<locals>.AfterAfterFramesetPhase.processEndTagr½   r  N)r9   r:   r;   rð   ræ   r   rŠ   r‡   r†   rä   ro  rù   r‰   r   rü   rÞ   rý   r'   r'   r'   r(   ÚAfterAfterFramesetPhase™
  s   rp  )rV   rU   r¯   r÷   r  r  r­   rÅ   r¬   rÚ  rª   r«   r©   r¨   r§   r¦   ry  r}   r‡  r®   ri  re  rl  )r   )rH   rX   rÖ   rñ   rõ   rþ   r  r   r%  rØ  rä  rí  rñ  r÷  rû  rÿ  r  r  rd  rf  rk  rm  rn  rp  r'   )r(  ræ  rç   r(   rF   Œ  sp    H %-f?B     Y! /F@bYLc&r.8$%&rF   c                sF   t | d ƒt ˆ ƒ@ }|rBt| d ƒ‡ fdd„| d  ¡ D ƒƒ| d< d S )Nrx   c             3   s"   | ]\}}ˆ   ||¡|fV  qd S )N)r‚   )r?   ÚkÚv)rZ  r'   r(   r\  Ý
  s   z$adjust_attributes.<locals>.<genexpr>)r   r0   r,   )r–   rZ  Úneeds_adjustmentr'   )rZ  r(   r£   Ú
  s    r£   rs   Fc             C   s   |d kri }t | | ||dœS )N)r0   r@   rx   r~   )r   )r@   r0   rk   r~   r'   r'   r(   ró   á
  s    
ró   c               @   s   e Zd ZdZdS )rv   zError in parsed documentN)r9   r:   r;   rÊ   r'   r'   r'   r(   rv   é
  s   rv   )r   T)r)   r   T)rs   NF),Ú
__future__r   r   r   Zpip._vendor.sixr   r   r.   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    ÚmemoizerF   r£   ró   Ú	Exceptionrv   r'   r'   r'   r(   Ú<module>   sJ   H

  8                  ` 
