<!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>

Re%                @   s  d  d l  m Z m Z m Z d  d l 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 d d l m Z m Z d d l m Z d d l m Z d d l m Z m Z d d l m Z m Z m Z d d l m Z m Z d d l m Z d d d d d  Z d d d d d d  Z d d   Z Gd d   d e  Z  d d   Z! d d d  d! d"  Z" Gd# d$   d$ e#  Z$ d S)%    )absolute_importdivisionunicode_literals)with_metaclassN   )inputstream)	tokenizer)treebuilders)Marker)utils)	constants)spaceCharactersasciiUpper2Lower)specialElements)headingElements)cdataElementsrcdataElements)
tokenTypesReparseException
namespaces)htmlIntegrationPointElements"mathmlTextIntegrationPointElements)adjustForeignAttributesetreeTc             C   s4   t  j |  } t | d | } | j |  d | S)z.Parse a string or file-like object into a treenamespaceHTMLElementsencoding)r	   getTreeBuilder
HTMLParserparse)doctreebuilderr   r   tbp r#   ;/tmp/pip-ztkk0jow-build/pip/_vendor/html5lib/html5parser.pyr      s    r   divc             C   s:   t  j |  } t | d | } | j |  d | d | S)Nr   	containerr   )r	   r   r   parseFragment)r   r&   r    r   r   r!   r"   r#   r#   r$   r'      s    r'   c                s    G  f d d   d t   } | S)Nc                   s"   e  Z d  Z   f d d   Z d S)z-method_decorator_metaclass.<locals>.Decoratedc                s^   xE | j    D]7 \ } } t | t j  r:   |  } n  | | | <q Wt j |  | | |  S)N)items
isinstancetypesFunctionTypetype__new__)meta	classnamebases	classDictattributeName	attribute)functionr#   r$   r-   (   s
    z5method_decorator_metaclass.<locals>.Decorated.__new__N)__name__
__module____qualname__r-   r#   )r4   r#   r$   	Decorated'   s   r8   )r,   )r4   r8   r#   )r4   r$   method_decorator_metaclass&   s    r9   c               @   s  e  Z d  Z d Z d e j d d d d d  Z d d d d d d d	  Z d
 d   Z d d   Z	 d d   Z
 d d   Z d d   Z d d d d d  Z d d d d d d  Z d i  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))r   zZHTML parser. Generates a tree structure from a stream of (possibly
        malformed) HTMLNFTc                sz   |   _  | d k r' t j d  } n  | |    _ |   _ g    _ t   f d d   t |  j   D    _	 d S)a  
        strict - raise an exception when a parse error is encountered

        tree - a treebuilder class controlling the type of tree that will be
        returned. Built in treebuilders can be accessed through
        html5lib.treebuilders.getTreeBuilder(treeType)

        tokenizer - a class that provides a stream of tokens to the treebuilder.
        This may be replaced for e.g. a sanitizer which converts some tags to
        text
        Nr   c                s.   g  |  ]$ \ } } | |     j   f  q Sr#   )tree).0namecls)selfr#   r$   
<listcomp>M   s   	 z'HTMLParser.__init__.<locals>.<listcomp>)
strictr	   r   r:   tokenizer_classerrorsdict	getPhasesr(   phases)r>   r:   r   r@   r   debugr#   )r>   r$   __init__6   s    			zHTMLParser.__init__r%   c             K   s   | |  _  | |  _ |  j | d | d | d | d |  | |  _ |  j   x2 y |  j   PWqL t k
 ry |  j   YqL XqL Wd  S)Nr   	parseMeta
useChardetparser)innerHTMLModer&   rA   r   resetmainLoopr   )r>   stream	innerHTMLr&   r   rH   rI   kwargsr#   r#   r$   _parseP   s    		

zHTMLParser._parsec             C   s  |  j  j   d |  _ g  |  _ g  |  _ d |  _ |  j r |  j j   |  _	 |  j	 t
 k rp |  j j |  j _ nH |  j	 t k r |  j j |  j _ n$ |  j	 d k r |  j j |  j _ n  |  j d |  _ |  j j   |  j   n d |  _	 |  j d |  _ d  |  _ d  |  _ d |  _ d  S)NFz	no quirks	plaintext
beforeHtmlinitialT)r:   rL   firstStartTagrB   log
compatModerK   r&   lowerrO   r   r   rcdataStatestater   rawtextStateplaintextStaterE   phaseinsertHtmlElementresetInsertionMode	lastPhasebeforeRCDataPhase
framesetOK)r>   r#   r#   r$   rL   b   s*    								zHTMLParser.resetc             C   se   | j  d k rK | j t d k rK d | j k oJ | j d j t  d k S| j | j  f t k Sd  S)Nzannotation-xmlmathmlr   	text/htmlapplication/xhtml+xml)rd   re   )r<   	namespacer   
attributes	translater   r   )r>   elementr#   r#   r$   isHTMLIntegrationPoint   s    z!HTMLParser.isHTMLIntegrationPointc             C   s   | j  | j f t k S)N)rf   r<   r   )r>   ri   r#   r#   r$   isMathMLTextIntegrationPoint   s    z'HTMLParser.isMathMLTextIntegrationPointc             C   s*  t  d } t  d } t  d } t  d } t  d } t  d } t  d } x|  j   D]y} | }	 x+|	 d  k	 r|  j j r |  j j d n d  }
 |
 r |
 j n d  } |
 r |
 j n d  } |	 d	 } | | k r |  j |	 d
 |	 j d i    d  }	 qb t |  j j  d k s| |  j j	 k s|  j
 |
  rl| | k rZ| d t d d g  k s| | | f k s| t d k r| d k r| d d k s|  j |
  r| | | | f k r|  j } n |  j d } | | k r| j |	  }	 qb | | k r| j |	  }	 qb | | k r/| j |	  }	 qb | | k rM| j |	  }	 qb | | k rk| j |	  }	 qb | | k rb | j |	  }	 qb qb W| | k rS | d rS | d rS |  j d i | d d 6 qS qS Wd } g  } xG | r%| j |  j  |  j j   } | r|  j | k s"t  qqWd  S)N
CharactersSpaceCharactersStartTagEndTagCommentDoctype
ParseErrorr   r,   datadatavarsr   r<   mglyph
malignmarkrc   zannotation-xmlsvginForeignContentselfClosingselfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)r   normalizedTokensr:   openElementsrf   r<   
parseErrorgetlendefaultNamespacerk   	frozensetr   rj   r]   rE   processCharactersprocessSpaceCharactersprocessStartTagprocessEndTagprocessCommentprocessDoctypeappend
processEOFAssertionError)r>   CharactersTokenSpaceCharactersTokenStartTagTokenEndTagTokenCommentTokenDoctypeTokenParseErrorTokentoken	new_tokencurrentNodecurrentNodeNamespacecurrentNodeNamer,   r]   	reprocessrE   r#   r#   r$   rM      sj    






"
 			zHTMLParser.mainLoopc             c   s&   x |  j  D] } |  j |  Vq
 Wd  S)N)r   normalizeToken)r>   r   r#   r#   r$   r|      s    zHTMLParser.normalizedTokensc          
   C   s2   |  j  | d d d | d | d | |  j j   S)af  Parse a HTML document into a well-formed tree

        stream - a filelike 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)
        rO   Fr   rH   rI   )rQ   r:   getDocument)r>   rN   r   rH   rI   r#   r#   r$   r      s    
zHTMLParser.parsec             C   s)   |  j  | d d | d | |  j j   S)a  Parse a HTML fragment into a well-formed tree fragment

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

        stream - a filelike 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)
        Tr&   r   )rQ   r:   getFragment)r>   rN   r&   r   rH   rI   r#   r#   r$   r'      s    zHTMLParser.parseFragmentzXXX-undefined-errorc             C   s;   |  j  j |  j j j   | | f  |  j r7 t  n  d  S)N)rB   r   r   rN   positionr@   rr   )r>   	errorcodert   r#   r#   r$   r~      s    %	zHTMLParser.parseErrorc             C   s<   | d t  d k r8 t | d d d d   | d <n  | S)z3 HTML5 specific normalizations to the token stream r,   rn   rs   Nr   r{   )r   rC   )r>   r   r#   r#   r$   r      s    $zHTMLParser.normalizeTokenc             C   sb   i d d 6} xN | j    D]@ \ } } | | d k r | d | | d | <| d | =q q Wd  S)NdefinitionURLdefinitionurlrs   )r(   )r>   r   replacementskvr#   r#   r$   adjustMathMLAttributes  s
    z!HTMLParser.adjustMathMLAttributesc             C   s  i> d d 6d d 6d d 6d d 6d	 d
 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d  6d! d" 6d# d$ 6d% d& 6d' d( 6d) d* 6d+ d, 6d- d. 6d/ d0 6d1 d2 6d3 d4 6d5 d6 6d7 d8 6d9 d: 6d; d< 6d= d> 6d? d@ 6dA dB 6dC dD 6dE dF 6dG dH 6dI dJ 6dK dL 6dM dN 6dO dP 6dQ dR 6dS dT 6dU dV 6dW dX 6dY dZ 6d[ d\ 6d] d^ 6d_ d` 6da db 6dc dd 6de df 6dg dh 6di dj 6dk dl 6dm dn 6do dp 6dq dr 6ds dt 6du dv 6dw dx 6dy dz 6d{ d| 6} xX t  | d} j    D]@ } | | k r| | } | d} | | d} | <| d} | =qqWd  S)~Nr2   attributenameattributeTypeattributetypebaseFrequencybasefrequencybaseProfilebaseprofilecalcModecalcmodeclipPathUnitsclippathunitscontentScriptTypecontentscripttypecontentStyleTypecontentstyletypediffuseConstantdiffuseconstantedgeModeedgemodeexternalResourcesRequiredexternalresourcesrequired	filterRes	filterresfilterUnitsfilterunitsglyphRefglyphrefgradientTransformgradienttransformgradientUnitsgradientunitskernelMatrixkernelmatrixkernelUnitLengthkernelunitlength	keyPoints	keypoints
keySplines
keysplineskeyTimeskeytimeslengthAdjustlengthadjustlimitingConeAnglelimitingconeanglemarkerHeightmarkerheightmarkerUnitsmarkerunitsmarkerWidthmarkerwidthmaskContentUnitsmaskcontentunits	maskUnits	maskunits
numOctaves
numoctaves
pathLength
pathlengthpatternContentUnitspatterncontentunitspatternTransformpatterntransformpatternUnitspatternunits	pointsAtX	pointsatx	pointsAtY	pointsaty	pointsAtZ	pointsatzpreserveAlphapreservealphapreserveAspectRatiopreserveaspectratioprimitiveUnitsprimitiveunitsrefXrefxrefYrefyrepeatCountrepeatcount	repeatDur	repeatdurrequiredExtensionsrequiredextensionsrequiredFeaturesrequiredfeaturesspecularConstantspecularconstantspecularExponentspecularexponentspreadMethodspreadmethodstartOffsetstartoffsetstdDeviationstddeviationstitchTilesstitchtilessurfaceScalesurfacescalesystemLanguagesystemlanguagetableValuestablevaluestargetXtargetxtargetYtargety
textLength
textlengthviewBoxviewbox
viewTarget
viewtargetxChannelSelectorxchannelselectoryChannelSelectorychannelselector
zoomAndPan
zoomandpanrs   )listkeys)r>   r   r   originalNamesvgNamer#   r#   r$   adjustSVGAttributes	  s    

zHTMLParser.adjustSVGAttributesc             C   s_   t  } xR | d j   D]@ } | | k r | | } | d | | d | <| d | =q q Wd  S)Nrs   )adjustForeignAttributesMapr   )r>   r   r   r!  foreignNamer#   r#   r$   r   P  s    
z"HTMLParser.adjustForeignAttributesc             C   s   |  j  j   d  S)N)rJ   r]   )r>   r   r#   r#   r$   reparseTokenNormalY  s    zHTMLParser.reparseTokenNormalc             C   s]  d } i d d 6d d 6d d 6d d 6d	 d
 6d	 d 6d	 d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6} x |  j  j d  d  d  D] } | j } d  } | |  j  j d k r |  j s t  d } |  j } n  | d k r |  j s t  n  | r| j |  j  j k rq n  | | k r5|  j | | } Pq | r |  j d } Pq q W| |  _ d  S)NFinSelectselectinCelltdthinRowtrinTableBodytbodytheadtfoot	inCaptioncaptioninColumnGroupcolgroupinTabletableinBodyheadbody
inFramesetframeset
beforeHeadhtmlr   r   Tr{   )zselectzcolgroupzheadzhtml)	r:   r}   r<   rO   r   rf   r   rE   r]   )r>   lastnewModesnodenodeName	new_phaser#   r#   r$   r_   \  sD    
 	zHTMLParser.resetInsertionModec             C   su   | d k s t   |  j j |  | d k rC |  j j |  j _ n |  j j |  j _ |  j |  _ |  j	 d |  _ d S)zYGeneric RCDATA/RAWTEXT Parsing algorithm
        contentType - RCDATA or RAWTEXT
        RAWTEXTRCDATAtextN)zRAWTEXTzRCDATA)
r   r:   insertElementr   r[   rZ   rY   r]   originalPhaserE   )r>   r   contentTyper#   r#   r$   parseRCDataRawtext  s    zHTMLParser.parseRCDataRawtext)r5   r6   r7   __doc__r   HTMLTokenizerrG   rQ   rL   rj   rk   rM   r|   r   r'   r~   r   r   r#  r   r&  r_   rJ  r#   r#   r#   r$   r   2   s*   	"
@G	,r   c                s7  d d   } d d   } Gd d   d t  | |  |      Gd d   d    } Gd	 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  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  f d+ d,   d,    } G  f d- d.   d.    } G  f d/ d0   d0    } G  f d1 d2   d2    } i | d3 6| d4 6| d5 6| d6 6| d7 6| d8 6|	 d9 6|
 d: 6| d; 6| d< 6| d= 6| d> 6| d? 6| d@ 6| dA 6| dB 6| dC 6| dD 6| dE 6| dF 6| dG 6| dH 6S)INc                s;   t  d d   t j j   D      f d d   } | S)z4Logger that records which phase processes each tokenc             s   s!   |  ] \ } } | | f Vq d  S)Nr#   )r;   keyvaluer#   r#   r$   	<genexpr>  s    z)getPhases.<locals>.log.<locals>.<genexpr>c                s     j  j d  r t |  d k r | d } y i  | d d 6} Wn   Yn X| d t j k ry | d | d <n  |  j j j |  j j j	 j  |  j j
 j j  |  j j    j  | f    |  | |  S  |  | |  Sd  S)Nprocessr   r,   r<   )r5   
startswithr   r   tagTokenTypesrJ   rV   r   r   rZ   r]   	__class__)r>   argsrP   r   info)r4   
type_namesr#   r$   wrapped  s    $
	
z'getPhases.<locals>.log.<locals>.wrapped)rC   r   r   r(   )r4   rW  r#   )r4   rV  r$   rV     s    zgetPhases.<locals>.logc             S   s   |  r t  |  St Sd  S)N)r9   r,   )use_metaclassmetaclass_funcr#   r#   r$   getMetaclass  s    
zgetPhases.<locals>.getMetaclassc               @   s   e  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
        c             S   s   | |  _  | |  _ d  S)N)rJ   r:   )r>   rJ   r:   r#   r#   r$   rG     s    	z!getPhases.<locals>.Phase.__init__c             S   s
   t   d  S)N)NotImplementedError)r>   r#   r#   r$   r     s    z#getPhases.<locals>.Phase.processEOFc             S   s!   |  j  j | |  j  j d  d  S)Nr   r{   )r:   insertCommentr}   )r>   r   r#   r#   r$   r     s    z'getPhases.<locals>.Phase.processCommentc             S   s   |  j  j d  d  S)Nzunexpected-doctype)rJ   r~   )r>   r   r#   r#   r$   r     s    z'getPhases.<locals>.Phase.processDoctypec             S   s   |  j  j | d  d  S)Nrs   )r:   
insertText)r>   r   r#   r#   r$   r     s    z*getPhases.<locals>.Phase.processCharactersc             S   s   |  j  j | d  d  S)Nrs   )r:   r]  )r>   r   r#   r#   r$   r     s    z/getPhases.<locals>.Phase.processSpaceCharactersc             S   s   |  j  | d |  S)Nr<   )startTagHandler)r>   r   r#   r#   r$   r     s    z(getPhases.<locals>.Phase.processStartTagc             S   s   |  j  j r0 | d d k r0 |  j  j d  n  xQ | d j   D]? \ } } | |  j j d j k rA | |  j j d j | <qA qA Wd |  j  _ d  S)Nr<   r>  znon-html-rootrs   r   F)rJ   rU   r~   r(   r:   r}   rg   )r>   r   attrrN  r#   r#   r$   startTagHtml  s    z%getPhases.<locals>.Phase.startTagHtmlc             S   s   |  j  | d |  S)Nr<   )endTagHandler)r>   r   r#   r#   r$   r     s    z&getPhases.<locals>.Phase.processEndTagN)r5   r6   r7   rK  rG   r   r   r   r   r   r   r`  r   r#   r#   r#   r$   Phase  s   
rb  c               @   sp   e  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 S)zgetPhases.<locals>.InitialPhasec             S   s   d  S)Nr#   )r>   r   r#   r#   r$   r     s    z6getPhases.<locals>.InitialPhase.processSpaceCharactersc             S   s   |  j  j | |  j  j  d  S)N)r:   r\  document)r>   r   r#   r#   r$   r     s    z.getPhases.<locals>.InitialPhase.processCommentc          8   S   su  | d } | d } | d } | d } | d k sX | d  k	 sX | d  k	 rk | d k rk |  j  j d  n  | d  k r d } n  |  j j |  | d k r | j t  } n  | s| d d k s| j dJ  s| dK k s| j dL  r | d  k s| r"| j   dD k r"dE |  j  _ n9 | j dM  sL| j dN  r[| d  k	 r[dH |  j  _ n  |  j  j	 dI |  j  _
 d  S)ONr<   publicIdsystemIdcorrectr>  zabout:legacy-compatzunknown-doctype *+//silmaril//dtd html pro v0r11 19970101//4-//advasoft ltd//dtd html 3.0 aswedit + extensions//*-//as//dtd html 3.0 aswedit + extensions//-//ietf//dtd html 2.0 level 1//-//ietf//dtd html 2.0 level 2//&-//ietf//dtd html 2.0 strict level 1//&-//ietf//dtd html 2.0 strict level 2//-//ietf//dtd html 2.0 strict//-//ietf//dtd html 2.0//-//ietf//dtd html 2.1e//-//ietf//dtd html 3.0//-//ietf//dtd html 3.2 final//-//ietf//dtd html 3.2//-//ietf//dtd html 3//-//ietf//dtd html level 0//-//ietf//dtd html level 1//-//ietf//dtd html level 2//-//ietf//dtd html level 3//"-//ietf//dtd html strict level 0//"-//ietf//dtd html strict level 1//"-//ietf//dtd html strict level 2//"-//ietf//dtd html strict level 3//-//ietf//dtd html strict//-//ietf//dtd html//(-//metrius//dtd metrius presentational//5-//microsoft//dtd internet explorer 2.0 html strict//.-//microsoft//dtd internet explorer 2.0 html//0-//microsoft//dtd internet explorer 2.0 tables//5-//microsoft//dtd internet explorer 3.0 html strict//.-//microsoft//dtd internet explorer 3.0 html//0-//microsoft//dtd internet explorer 3.0 tables//#-//netscape comm. corp.//dtd html//*-//netscape comm. corp.//dtd strict html//*-//o'reilly and associates//dtd html 2.0//3-//o'reilly and associates//dtd html extended 1.0//;-//o'reilly and associates//dtd html extended relaxed 1.0//N-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//E-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//$-//spyglass//dtd html 2.0 extended//+-//sq//dtd html 2.0 hotmetal + extensions//--//sun microsystems corp.//dtd hotjava html//4-//sun microsystems corp.//dtd hotjava strict html//-//w3c//dtd html 3 1995-03-24//-//w3c//dtd html 3.2 draft//-//w3c//dtd html 3.2 final//-//w3c//dtd html 3.2//-//w3c//dtd html 3.2s draft//-//w3c//dtd html 4.0 frameset//#-//w3c//dtd html 4.0 transitional//(-//w3c//dtd html experimental 19960712//&-//w3c//dtd html experimental 970421//-//w3c//dtd w3 html//-//w3o//dtd w3 html 3.0//#-//webtechs//dtd mozilla html 2.0//-//webtechs//dtd mozilla html//$-//w3o//dtd w3 html strict 3.0//en//"-/w3c/dtd html 4.0 transitional/en -//w3c//dtd html 4.01 frameset//$-//w3c//dtd html 4.01 transitional//z:http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtdquirks -//w3c//dtd xhtml 1.0 frameset//$-//w3c//dtd xhtml 1.0 transitional//zlimited quirksrS   )7rh  ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )r  r  zhtml)r  r  )r  r  )r  r  )rJ   r~   r:   insertDoctyperh   r   rQ  rX   rW   rE   r]   )r>   r   r<   rd  re  rf  r#   r#   r$   r     s    



	                                                      	  	 	 	 	z.getPhases.<locals>.InitialPhase.processDoctypec             S   s&   d |  j  _ |  j  j d |  j  _ d  S)Nr  rS   )rJ   rW   rE   r]   )r>   r#   r#   r$   anythingElseJ  s    z,getPhases.<locals>.InitialPhase.anythingElsec             S   s   |  j  j d  |  j   | S)Nzexpected-doctype-but-got-chars)rJ   r~   r  )r>   r   r#   r#   r$   r   N  s    
z1getPhases.<locals>.InitialPhase.processCharactersc             S   s,   |  j  j d i | d d 6 |  j   | S)Nz"expected-doctype-but-got-start-tagr<   )rJ   r~   r  )r>   r   r#   r#   r$   r   S  s    
z/getPhases.<locals>.InitialPhase.processStartTagc             S   s,   |  j  j d i | d d 6 |  j   | S)Nz expected-doctype-but-got-end-tagr<   )rJ   r~   r  )r>   r   r#   r#   r$   r   Y  s    
z-getPhases.<locals>.InitialPhase.processEndTagc             S   s   |  j  j d  |  j   d S)Nzexpected-doctype-but-got-eofT)rJ   r~   r  )r>   r#   r#   r$   r   _  s    
z*getPhases.<locals>.InitialPhase.processEOFN)r5   r6   r7   r   r   r   r  r   r   r   r   r#   r#   r#   r$   InitialPhase  s   `r  c               @   sd   e  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 S)z"getPhases.<locals>.BeforeHtmlPhasec             S   s3   |  j  j t d d   |  j j d |  j _ d  S)Nr>  rn   r=  )r:   
insertRootimpliedTagTokenrJ   rE   r]   )r>   r#   r#   r$   r^   f  s    z4getPhases.<locals>.BeforeHtmlPhase.insertHtmlElementc             S   s   |  j    d S)NT)r^   )r>   r#   r#   r$   r   k  s    
z-getPhases.<locals>.BeforeHtmlPhase.processEOFc             S   s   |  j  j | |  j  j  d  S)N)r:   r\  rc  )r>   r   r#   r#   r$   r   o  s    z1getPhases.<locals>.BeforeHtmlPhase.processCommentc             S   s   d  S)Nr#   )r>   r   r#   r#   r$   r   r  s    z9getPhases.<locals>.BeforeHtmlPhase.processSpaceCharactersc             S   s   |  j    | S)N)r^   )r>   r   r#   r#   r$   r   u  s    
z4getPhases.<locals>.BeforeHtmlPhase.processCharactersc             S   s-   | d d k r d |  j  _ n  |  j   | S)Nr<   r>  T)rJ   rU   r^   )r>   r   r#   r#   r$   r   y  s    
z2getPhases.<locals>.BeforeHtmlPhase.processStartTagc             S   sC   | d d k r1 |  j  j d i | d d 6 n |  j   | Sd  S)Nr<   r9  r:  r>  brzunexpected-end-tag-before-html)zheadzbodyzhtmlzbr)rJ   r~   r^   )r>   r   r#   r#   r$   r     s
    
z0getPhases.<locals>.BeforeHtmlPhase.processEndTagN)
r5   r6   r7   r^   r   r   r   r   r   r   r#   r#   r#   r$   BeforeHtmlPhased  s   r  c                   s   e  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 S)z"getPhases.<locals>.BeforeHeadPhasec                s}     j  |  | |  t j d |  j f d |  j f g  |  _ |  j |  j _ t j d |  j f g  |  _	 |  j
 |  j	 _ d  S)Nr>  r9  r:  r  )zheadzbodyzhtmlzbr)rG   r   MethodDispatcherr`  startTagHeadr^  startTagOtherdefaultendTagImplyHeadra  endTagOther)r>   rJ   r:   )rb  r#   r$   rG     s    z+getPhases.<locals>.BeforeHeadPhase.__init__c             S   s   |  j  t d d   d S)Nr9  rn   T)r  r  )r>   r#   r#   r$   r     s    z-getPhases.<locals>.BeforeHeadPhase.processEOFc             S   s   d  S)Nr#   )r>   r   r#   r#   r$   r     s    z9getPhases.<locals>.BeforeHeadPhase.processSpaceCharactersc             S   s   |  j  t d d   | S)Nr9  rn   )r  r  )r>   r   r#   r#   r$   r     s    z4getPhases.<locals>.BeforeHeadPhase.processCharactersc             S   s   |  j  j d j |  S)Nr8  )rJ   rE   r   )r>   r   r#   r#   r$   r`    s    z/getPhases.<locals>.BeforeHeadPhase.startTagHtmlc             S   s@   |  j  j |  |  j  j d |  j  _ |  j j d |  j _ d  S)Nr   inHeadr{   )r:   rG  r}   headPointerrJ   rE   r]   )r>   r   r#   r#   r$   r    s    z/getPhases.<locals>.BeforeHeadPhase.startTagHeadc             S   s   |  j  t d d   | S)Nr9  rn   )r  r  )r>   r   r#   r#   r$   r    s    z0getPhases.<locals>.BeforeHeadPhase.startTagOtherc             S   s   |  j  t d d   | S)Nr9  rn   )r  r  )r>   r   r#   r#   r$   r    s    z2getPhases.<locals>.BeforeHeadPhase.endTagImplyHeadc             S   s"   |  j  j d i | d d 6 d  S)Nzend-tag-after-implied-rootr<   )rJ   r~   )r>   r   r#   r#   r$   r    s    z.getPhases.<locals>.BeforeHeadPhase.endTagOtherN)r5   r6   r7   rG   r   r   r   r`  r  r  r  r  r#   )rb  r#   r$   BeforeHeadPhase  s   r  c                   s   e  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 S) zgetPhases.<locals>.InHeadPhasec          
      s     j  |  | |  t j d |  j f d |  j f d |  j f d |  j f d |  j f d |  j f d |  j	 f g  |  _
 |  j |  j
 _ t j d |  j f d |  j f g  |  _ |  j |  j _ d  S)Nr>  titlenoscriptnoframesstylescriptbasebasefontbgsoundcommandlinkr.   r9  r  r:  )znoscriptznoframeszstyle)zbasezbasefontzbgsoundzcommandzlink)zbrzhtmlzbody)rG   r   r  r`  startTagTitlestartTagNoScriptNoFramesStylestartTagScriptstartTagBaseLinkCommandstartTagMetar  r^  r  r  
endTagHeadendTagHtmlBodyBrra  r  )r>   rJ   r:   )rb  r#   r$   rG     s    	z'getPhases.<locals>.InHeadPhase.__init__c             S   s   |  j    d S)NT)r  )r>   r#   r#   r$   r     s    
z)getPhases.<locals>.InHeadPhase.processEOFc             S   s   |  j    | S)N)r  )r>   r   r#   r#   r$   r     s    
z0getPhases.<locals>.InHeadPhase.processCharactersc             S   s   |  j  j d j |  S)Nr8  )rJ   rE   r   )r>   r   r#   r#   r$   r`    s    z+getPhases.<locals>.InHeadPhase.startTagHtmlc             S   s   |  j  j d  d  S)Nz!two-heads-are-not-better-than-one)rJ   r~   )r>   r   r#   r#   r$   r    s    z+getPhases.<locals>.InHeadPhase.startTagHeadc             S   s.   |  j  j |  |  j  j j   d | d <d  S)NTrz   )r:   rG  r}   pop)r>   r   r#   r#   r$   r    s    z6getPhases.<locals>.InHeadPhase.startTagBaseLinkCommandc             S   s   |  j  j |  |  j  j j   d | d <| d } |  j j j j d d k r d | k ry |  j j j j | d  q d | k r d | k r | d j	   d	 k r t
 j | d j d
   } t
 j |  } | j   } |  j j j j |  q n  d  S)NTrz   rs   r   	tentativecharsetcontentz
http-equivzcontent-typezutf-8)r:   rG  r}   r  rJ   r   rN   charEncodingchangeEncodingrX   r   EncodingBytesencodeContentAttrParserr   )r>   r   rg   rs   rJ   codecr#   r#   r$   r    s    

z+getPhases.<locals>.InHeadPhase.startTagMetac             S   s   |  j  j | d  d  S)NrE  )rJ   rJ  )r>   r   r#   r#   r$   r    s    z,getPhases.<locals>.InHeadPhase.startTagTitlec             S   s   |  j  j | d  d  S)NrD  )rJ   rJ  )r>   r   r#   r#   r$   r    s    z<getPhases.<locals>.InHeadPhase.startTagNoScriptNoFramesStylec             S   sT   |  j  j |  |  j j j |  j j _ |  j j |  j _ |  j j d |  j _ d  S)NrF  )	r:   rG  rJ   r   scriptDataStaterZ   r]   rH  rE   )r>   r   r#   r#   r$   r    s    z-getPhases.<locals>.InHeadPhase.startTagScriptc             S   s   |  j    | S)N)r  )r>   r   r#   r#   r$   r    s    
z,getPhases.<locals>.InHeadPhase.startTagOtherc             S   sQ   |  j  j j j   } | j d k s7 t d | j   |  j  j d |  j  _ d  S)Nr9  zExpected head got %s	afterHead)rJ   r:   r}   r  r<   r   rE   r]   )r>   r   rA  r#   r#   r$   r    s    "z)getPhases.<locals>.InHeadPhase.endTagHeadc             S   s   |  j    | S)N)r  )r>   r   r#   r#   r$   r  
  s    
z/getPhases.<locals>.InHeadPhase.endTagHtmlBodyBrc             S   s"   |  j  j d i | d d 6 d  S)Nzunexpected-end-tagr<   )rJ   r~   )r>   r   r#   r#   r$   r    s    z*getPhases.<locals>.InHeadPhase.endTagOtherc             S   s   |  j  t d   d  S)Nr9  )r  r  )r>   r#   r#   r$   r    s    z+getPhases.<locals>.InHeadPhase.anythingElseN)r5   r6   r7   rG   r   r   r`  r  r  r  r  r  r  r  r  r  r  r  r#   )rb  r#   r$   InHeadPhase  s   r  c                   s   e  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 S)z!getPhases.<locals>.AfterHeadPhasec                s     j  |  | |  t j d |  j f d |  j f d |  j f d |  j f d |  j f g  |  _ |  j	 |  j _
 t j d |  j f g  |  _ |  j |  j _
 d  S)Nr>  r:  r<  r  r  r  r  r.   r  r  r  r  r9  r  )	zbasezbasefontzbgsoundzlinkzmetaznoframeszscriptzstyleztitle)zbodyzhtmlzbr)rG   r   r  r`  startTagBodystartTagFramesetstartTagFromHeadr  r^  r  r  r  ra  r  )r>   rJ   r:   )rb  r#   r$   rG     s     		z*getPhases.<locals>.AfterHeadPhase.__init__c             S   s   |  j    d S)NT)r  )r>   r#   r#   r$   r   *  s    
z,getPhases.<locals>.AfterHeadPhase.processEOFc             S   s   |  j    | S)N)r  )r>   r   r#   r#   r$   r   .  s    
z3getPhases.<locals>.AfterHeadPhase.processCharactersc             S   s   |  j  j d j |  S)Nr8  )rJ   rE   r   )r>   r   r#   r#   r$   r`  2  s    z.getPhases.<locals>.AfterHeadPhase.startTagHtmlc             S   s6   d |  j  _ |  j j |  |  j  j d |  j  _ d  S)NFr8  )rJ   rb   r:   rG  rE   r]   )r>   r   r#   r#   r$   r  5  s    z.getPhases.<locals>.AfterHeadPhase.startTagBodyc             S   s*   |  j  j |  |  j j d |  j _ d  S)Nr;  )r:   rG  rJ   rE   r]   )r>   r   r#   r#   r$   r  :  s    z2getPhases.<locals>.AfterHeadPhase.startTagFramesetc             S   s   |  j  j d i | d d 6 |  j j j |  j j  |  j  j d j |  xG |  j j d  d  d  D], } | j d k rh |  j j j	 |  Pqh qh Wd  S)Nz#unexpected-start-tag-out-of-my-headr<   r  r   r9  r{   )
rJ   r~   r:   r}   r   r  rE   r   r<   remove)r>   r   rA  r#   r#   r$   r  >  s     z2getPhases.<locals>.AfterHeadPhase.startTagFromHeadc             S   s"   |  j  j d i | d d 6 d  S)Nzunexpected-start-tagr<   )rJ   r~   )r>   r   r#   r#   r$   r  H  s    z.getPhases.<locals>.AfterHeadPhase.startTagHeadc             S   s   |  j    | S)N)r  )r>   r   r#   r#   r$   r  K  s    
z/getPhases.<locals>.AfterHeadPhase.startTagOtherc             S   s   |  j    | S)N)r  )r>   r   r#   r#   r$   r  O  s    
z2getPhases.<locals>.AfterHeadPhase.endTagHtmlBodyBrc             S   s"   |  j  j d i | d d 6 d  S)Nzunexpected-end-tagr<   )rJ   r~   )r>   r   r#   r#   r$   r  S  s    z-getPhases.<locals>.AfterHeadPhase.endTagOtherc             S   s?   |  j  j t d d   |  j j d |  j _ d |  j _ d  S)Nr:  rn   r8  T)r:   rG  r  rJ   rE   r]   rb   )r>   r#   r#   r$   r  V  s    z.getPhases.<locals>.AfterHeadPhase.anythingElseN)r5   r6   r7   rG   r   r   r`  r  r  r  r  r  r  r  r  r#   )rb  r#   r$   AfterHeadPhase  s   
r  c                   sn  e  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 d/ d0   Z d1 d2   Z d3 d4   Z d5 d6   Z d7 d8   Z d9 d:   Z d; d<   Z  d= d>   Z! d? d@   Z" dA dB   Z# dC dD   Z$ dE dF   Z% dG dH   Z& dI dJ   Z' dK dL   Z( dM dN   Z) dO dP   Z* dQ dR   Z+ dS dT   Z, dU dV   Z- dW dX   Z. dY dZ   Z/ d[ d\   Z0 d] d^   Z1 d_ d`   Z2 da db   Z3 dc dd   Z4 de S)fzgetPhases.<locals>.InBodyPhasec          +      s]    j  |  | |  |  j |  _ t j d |  j f dd |  j f d |  j f d |  j f de |  j	 f t
 |  j f df |  j f d' |  j f dg |  j f d+ |  j f d, |  j f dh |  j f d9 |  j f d: |  j f di |  j f d> |  j f d? |  j f dj |  j f dk |  j f dI |  j f dJ |  j f dK |  j f dL |  j f dM |  j f dN |  j f dl |  j f dQ |  j  f dm |  j! f dn |  j" f dV |  j# f dW |  j$ f do |  j% f g   |  _& |  j' |  j& _( t j d |  j) f d |  j* f dp |  j+ f d' |  j, f d! |  j- f dq |  j. f t
 |  j/ f dr |  j0 f ds |  j1 f dA |  j2 f g
  |  _3 |  j4 |  j3 _( d  S)tNr>  r  r  r  r  r  r.   r  r  r  r  r:  r<  addressarticleaside
blockquotecenterdetailsdirr%   dlfieldset
figcaptionfigurefooterheaderhgroupmainmenunavolr"   sectionsummaryulprelistingformlidddtrR   abbigcodeemfontissmallstrikestrongttunobrbuttonappletmarqueeobjectxmpr7  arear  embedimgkeygenwbrparamsourcetrackinputhrimageisindextextareaiframenoembedr  r(  rprtoptionoptgroupmathrw   r3  colr5  framer9  r/  r*  r1  r+  r0  r-  dialog)
zbasezbasefontzbgsoundzcommandzlinkzmetanoframeszscriptzstyleztitle)addressarticleaside
blockquotecenterdetailsr$  dirdivdlfieldset
figcaptionfigurefooterheaderhgroupmainmenunavolr"   sectionsummaryul)prelisting)lidddt)r  bigcodeemfontr  r  smallstrikestrongttr   )appletmarqueeobject)zareazbrzembedzimgzkeygenzwbr)zparamzsourceztrack)znoembedr  znoscript)zrpzrt)zoptionzoptgroup)zcaptionzcolzcolgroupzframezheadztbodyztdztfootzthztheadztr)r  r   r!  r"  zbuttonr#  r$  zdialogr%  r&  r'  r(  r)  r*  r+  r,  r-  r6  r.  r/  r0  r1  r5  r2  r3  r4  )r8  r9  r7  )r  r  r:  r;  r<  r=  r  znobrr  r>  r?  r@  rA  r   )rB  rC  rD  )5rG   r   processSpaceCharactersNonPrer   r  r`  startTagProcessInHeadr  r  startTagClosePr   startTagHeadingstartTagPreListingstartTagFormstartTagListItemstartTagPlaintext	startTagAstartTagFormattingstartTagNobrstartTagButtonstartTagAppletMarqueeObjectstartTagXmpstartTagTablestartTagVoidFormattingstartTagParamSourcestartTagInput
startTagHrstartTagImagestartTagIsIndexstartTagTextareastartTagIFramestartTagRawtextstartTagSelectstartTagRpRtstartTagOptstartTagMathstartTagSvgstartTagMisplacedr^  r  r  
endTagBody
endTagHtmlendTagBlock
endTagFormendTagPendTagListItemendTagHeadingendTagFormattingendTagAppletMarqueeObjectendTagBrra  r  )r>   rJ   r:   )rb  r#   r$   rG   ^  s|     	   	 	      z'getPhases.<locals>.InBodyPhase.__init__c             S   s   | j  | j  k s$ | j | j k r( d St | j  t | j  k rJ d St | j j    } t | j j    } x- t | |  D] \ } } | | k r d Sq Wd S)NFT)r<   rf   r   rg   sortedr(   zip)r>   node1node2attributes1attributes2attr1attr2r#   r#   r$   isMatchingFormattingElement  s    $z:getPhases.<locals>.InBodyPhase.isMatchingFormattingElementc             S   s   |  j  j |  |  j  j d } g  } xS |  j  j d  d  d  D]8 } | t k rV Pq@ |  j | |  r@ | j |  q@ q@ Wt |  d k s t  t |  d k r |  j  j j	 | d  n  |  j  j j |  d  S)Nr      r{   r{   r{   )
r:   rG  r}   activeFormattingElementsr
   ru  r   r   r   r  )r>   r   ri   matchingElementsrA  r#   r#   r$   addFormattingElement  s     z3getPhases.<locals>.InBodyPhase.addFormattingElementc             S   sW   t  d  } xD |  j j d  d  d  D]) } | j | k r& |  j j d  Pq& q& Wd  S)Nr  r  r  r"   r/  r*  r1  r+  r0  r-  r:  r>  r   z expected-closing-tag-but-got-eof)zddzdtzlir"   ztbodyztdztfootzthztheadztrzbodyzhtmlr{   )r   r:   r}   r<   rJ   r~   )r>   allowed_elementsrA  r#   r#   r$   r     s     	 z)getPhases.<locals>.InBodyPhase.processEOFc             S   s   | d } |  j  |  _ | j d  rh |  j j d j d k rh |  j j d	 j   rh | d d   } n  | r |  j j   |  j j |  n  d  S)
Nrs   
r   r  r  r  r{   )zprezlistingztextarear{   )	rE  r   rQ  r:   r}   r<   
hasContent#reconstructActiveFormattingElementsr]  )r>   r   rs   r#   r#   r$   !processSpaceCharactersDropNewline  s    
z@getPhases.<locals>.InBodyPhase.processSpaceCharactersDropNewlinec             S   sq   | d d k r d  S|  j  j   |  j  j | d  |  j j rm t d d   | d D  rm d |  j _ n  d  S)Nrs    c             S   s   g  |  ] } | t  k  q Sr#   )r   )r;   charr#   r#   r$   r?     s   	zDgetPhases.<locals>.InBodyPhase.processCharacters.<locals>.<listcomp>F)r:   r}  r]  rJ   rb   any)r>   r   r#   r#   r$   r     s    z0getPhases.<locals>.InBodyPhase.processCharactersc             S   s%   |  j  j   |  j  j | d  d  S)Nrs   )r:   r}  r]  )r>   r   r#   r#   r$   r     s    z5getPhases.<locals>.InBodyPhase.processSpaceCharactersc             S   s   |  j  j d j |  S)Nr  )rJ   rE   r   )r>   r   r#   r#   r$   rF    s    z4getPhases.<locals>.InBodyPhase.startTagProcessInHeadc             S   s   |  j  j d i d d 6 t |  j j  d k sK |  j j d j d k r` |  j  j s t  n` d |  j  _ xQ | d j	   D]? \ } } | |  j j d j
 k r} | |  j j d j
 | <q} q} Wd  S)Nzunexpected-start-tagr:  r<   r   Frs   )rJ   r~   r   r:   r}   r<   rO   r   rb   r(   rg   )r>   r   r_  rN  r#   r#   r$   r    s    z+getPhases.<locals>.InBodyPhase.startTagBodyc             S   s  |  j  j d i d d 6 t |  j j  d k sK |  j j d j d k r` |  j  j s t  n |  j  j so n |  j j d j	 r |  j j d j	 j
 |  j j d  n  x- |  j j d j d k r |  j j j   q W|  j j |  |  j  j d |  j  _ d  S)	Nzunexpected-start-tagr<  r<   r   r:  r>  r;  r{   )rJ   r~   r   r:   r}   r<   rO   r   rb   parentremoveChildr  rG  rE   r]   )r>   r   r#   r#   r$   r    s    1'z/getPhases.<locals>.InBodyPhase.startTagFramesetc             S   sB   |  j  j d d d r. |  j t d   n  |  j  j |  d  S)Nr"   variantr  )r:   elementInScoperg  r  rG  )r>   r   r#   r#   r$   rG    s    z-getPhases.<locals>.InBodyPhase.startTagClosePc             S   sZ   |  j  j d d d r. |  j t d   n  |  j  j |  d |  j _ |  j |  _ d  S)Nr"   r  r  F)	r:   r  rg  r  rG  rJ   rb   r~  r   )r>   r   r#   r#   r$   rI    s
    z1getPhases.<locals>.InBodyPhase.startTagPreListingc             S   s   |  j  j r) |  j j d i d d 6 nT |  j  j d d d rW |  j t d   n  |  j  j |  |  j  j d |  j  _ d  S)	Nzunexpected-start-tagr  r<   r"   r  r  r   r{   )	r:   formPointerrJ   r~   r  rg  r  rG  r}   )r>   r   r#   r#   r$   rJ    s    z+getPhases.<locals>.InBodyPhase.startTagFormc             S   s   d |  j  _ i d g d 6d d g d 6d d g d 6} | | d } xn t |  j j  D]Z } | j | k r |  j  j j t | j d   Pn  | j	 t
 k rW | j d k rW PqW qW W|  j j d	 d
 d r |  j  j j t d	 d   n  |  j j |  d  S)NFr  r  r  r<   ro   r  r%   r"   r  r  )zaddresszdivr"   )rJ   rb   reversedr:   r}   r<   r]   r   r  	nameTupler   r  rG  )r>   r   stopNamesMap	stopNamesrA  r#   r#   r$   rK    s"    z/getPhases.<locals>.InBodyPhase.startTagListItemc             S   sZ   |  j  j d d d r. |  j t d   n  |  j  j |  |  j j j |  j j _ d  S)Nr"   r  r  )	r:   r  rg  r  rG  rJ   r   r\   rZ   )r>   r   r#   r#   r$   rL  1  s    z0getPhases.<locals>.InBodyPhase.startTagPlaintextc             S   s   |  j  j d d d r. |  j t d   n  |  j  j d j t k rx |  j j d i | d d 6 |  j  j j	   n  |  j  j
 |  d  S)Nr"   r  r  r   zunexpected-start-tagr<   r{   )r:   r  rg  r  r}   r<   r   rJ   r~   r  rG  )r>   r   r#   r#   r$   rH  7  s    z.getPhases.<locals>.InBodyPhase.startTagHeadingc             S   s   |  j  j d  } | r |  j j d i d d 6d d 6 |  j t d   | |  j  j k rt |  j  j j |  n  | |  j  j k r |  j  j j |  q n  |  j  j	   |  j
 |  d  S)Nr  z$unexpected-start-tag-implies-end-tag	startNameendName)r:   !elementInActiveFormattingElementsrJ   r~   rj  r  r}   r  rw  r}  ry  )r>   r   afeAElementr#   r#   r$   rM  ?  s    z(getPhases.<locals>.InBodyPhase.startTagAc             S   s   |  j  j   |  j |  d  S)N)r:   r}  ry  )r>   r   r#   r#   r$   rN  L  s    z1getPhases.<locals>.InBodyPhase.startTagFormattingc             S   st   |  j  j   |  j  j d  rc |  j j d i d d 6d d 6 |  j t d   |  j  j   n  |  j |  d  S)Nr  z$unexpected-start-tag-implies-end-tagr  r  )r:   r}  r  rJ   r~   r   r  ry  )r>   r   r#   r#   r$   rO  P  s    z+getPhases.<locals>.InBodyPhase.startTagNobrc             S   sw   |  j  j d  rJ |  j j d i d d 6d d 6 |  j t d   | S|  j  j   |  j  j |  d |  j _ d  S)Nr  z$unexpected-start-tag-implies-end-tagr  r  F)	r:   r  rJ   r~   r   r  r}  rG  rb   )r>   r   r#   r#   r$   rP  Z  s    z-getPhases.<locals>.InBodyPhase.startTagButtonc             S   s@   |  j  j   |  j  j |  |  j  j j t  d |  j _ d  S)NF)r:   r}  rG  rw  r   r
   rJ   rb   )r>   r   r#   r#   r$   rQ  e  s    z:getPhases.<locals>.InBodyPhase.startTagAppletMarqueeObjectc             S   s^   |  j  j d d d r. |  j t d   n  |  j  j   d |  j _ |  j j | d  d  S)Nr"   r  r  FrD  )r:   r  rg  r  r}  rJ   rb   rJ  )r>   r   r#   r#   r$   rR  k  s
    z*getPhases.<locals>.InBodyPhase.startTagXmpc             S   sy   |  j  j d k rC |  j j d d d rC |  j t d   qC n  |  j j |  d |  j  _ |  j  j d |  j  _	 d  S)Nr  r"   r  r  Fr6  )
rJ   rW   r:   r  r   r  rG  rb   rE   r]   )r>   r   r#   r#   r$   rS  r  s    z,getPhases.<locals>.InBodyPhase.startTagTablec             S   sG   |  j  j   |  j  j |  |  j  j j   d | d <d |  j _ d  S)NTrz   F)r:   r}  rG  r}   r  rJ   rb   )r>   r   r#   r#   r$   rT  z  s
    
z5getPhases.<locals>.InBodyPhase.startTagVoidFormattingc             S   sY   |  j  j } |  j |  d | d k rU | d d j t  d k rU | |  j  _ n  d  S)Nr,   rs   hidden)rJ   rb   rT  rh   r   )r>   r   rb   r#   r#   r$   rV    s
    z,getPhases.<locals>.InBodyPhase.startTagInputc             S   s.   |  j  j |  |  j  j j   d | d <d  S)NTrz   )r:   rG  r}   r  )r>   r   r#   r#   r$   rU    s    z2getPhases.<locals>.InBodyPhase.startTagParamSourcec             S   sh   |  j  j d d d r. |  j t d   n  |  j  j |  |  j  j j   d | d <d |  j _ d  S)Nr"   r  r  Trz   F)	r:   r  rg  r  rG  r}   r  rJ   rb   )r>   r   r#   r#   r$   rW    s    
z)getPhases.<locals>.InBodyPhase.startTagHrc          	   S   sO   |  j  j d i d d 6d d 6 |  j t d d d | d d	 | d	  d  S)
Nzunexpected-start-tag-treated-asr  r!  r	  newNamern   rg   rs   ry   )rJ   r~   r   r  )r>   r   r#   r#   r$   rX    s
    
z,getPhases.<locals>.InBodyPhase.startTagImagec          	   S   s  |  j  j d i d d 6 |  j j r* d  Si  } d | d k rU | d d | d <n  |  j t d d d |  |  j t d	 d   |  j t d
 d   d | d k r | d d } n d } |  j i t d d 6| d 6 | d j   } d | k r	| d =n  d | k r| d =n  d | d <|  j t d d d | d | d  |  j	 t d
   |  j t d	 d   |  j	 t d   d  S)Nzdeprecated-tagr  r<   actionrs   r  rn   rg   r  labelpromptz3This is a searchable index. Enter search keywords: rl   r,   r  ry   )
rJ   r~   r:   r  r   r  r   r   copyr   )r>   r   
form_attrsr  rg   r#   r#   r$   rY    s6    



z.getPhases.<locals>.InBodyPhase.startTagIsIndexc             S   sD   |  j  j |  |  j j j |  j j _ |  j |  _ d |  j _ d  S)NF)	r:   rG  rJ   r   rY   rZ   r~  r   rb   )r>   r   r#   r#   r$   rZ    s    z/getPhases.<locals>.InBodyPhase.startTagTextareac             S   s   d |  j  _ |  j |  d  S)NF)rJ   rb   r\  )r>   r   r#   r#   r$   r[    s    z-getPhases.<locals>.InBodyPhase.startTagIFramec             S   s   |  j  j | d  d S)z8iframe, noembed noframes, noscript(if scripting enabled)rD  N)rJ   rJ  )r>   r   r#   r#   r$   r\    s    z.getPhases.<locals>.InBodyPhase.startTagRawtextc             S   sY   |  j  j d j d k r5 |  j j j t d   n  |  j  j   |  j j  j |  d  S)Nr   r  r{   )	r:   r}   r<   rJ   r]   r   r  r}  rG  )r>   r   r#   r#   r$   r_    s    z*getPhases.<locals>.InBodyPhase.startTagOptc             S   s   |  j  j   |  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 r |  j j d |  j _ n |  j j d	 |  j _ d  S)
NFr6  r2  r4  r.  r,  r)  inSelectInTabler'  )r:   r}  rG  rJ   rb   r]   rE   )r>   r   r#   r#   r$   r]    s    z-getPhases.<locals>.InBodyPhase.startTagSelectc             S   s_   |  j  j d  rK |  j  j   |  j  j d j d k rK |  j j   qK n  |  j  j |  d  S)Nrubyr   r{   )r:   r  generateImpliedEndTagsr}   r<   rJ   r~   rG  )r>   r   r#   r#   r$   r^    s
    z+getPhases.<locals>.InBodyPhase.startTagRpRtc             S   sv   |  j  j   |  j j |  |  j j |  t d | d <|  j  j |  | d rr |  j  j j   d | d <n  d  S)Nrc   rf   ry   Trz   )	r:   r}  rJ   r   r   r   rG  r}   r  )r>   r   r#   r#   r$   r`    s    
z+getPhases.<locals>.InBodyPhase.startTagMathc             S   sv   |  j  j   |  j j |  |  j j |  t d | d <|  j  j |  | d rr |  j  j j   d | d <n  d  S)Nrw   rf   ry   Trz   )	r:   r}  rJ   r#  r   r   rG  r}   r  )r>   r   r#   r#   r$   ra    s    
z*getPhases.<locals>.InBodyPhase.startTagSvgc             S   s"   |  j  j d i | d d 6 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~   )r>   r   r#   r#   r$   rb    s    z0getPhases.<locals>.InBodyPhase.startTagMisplacedc             S   s!   |  j  j   |  j  j |  d  S)N)r:   r}  rG  )r>   r   r#   r#   r$   r    s    z,getPhases.<locals>.InBodyPhase.startTagOtherc             S   s   |  j  j d d d sa |  j t d d   |  j j d i d d 6 |  j t d d   n |  j  j d  |  j  j d	 j	 d k r |  j j d i d d 6 n  |  j  j j
   } x% | j	 d k r |  j  j j
   } q Wd  S)
Nr"   r  r  rn   zunexpected-end-tagr<   ro   r   r{   )r:   r  rG  r  rJ   r~   rg  r  r}   r<   r  )r>   r   rA  r#   r#   r$   rg    s    z&getPhases.<locals>.InBodyPhase.endTagPc             S   s   |  j  j d  s# |  j j   d  S|  j  j d j d k r x^ |  j  j d d   D]C } | j t d  k rS |  j j d i d d 6| j d 6 PqS qS Wn  |  j j d |  j _ d  S)Nr:  r      r  r  r  r  r  r"   r  r  r/  r*  r1  r+  r0  r-  r>  z$expected-one-end-tag-but-got-anotherexpectedNamegotName	afterBodyr{   )zddzdtzlizoptgroupzoptionr"   zrpzrtztbodyztdztfootzthztheadztrzbodyzhtml)	r:   r  rJ   r~   r}   r<   r   rE   r]   )r>   r   rA  r#   r#   r$   rc    s    	   	z)getPhases.<locals>.InBodyPhase.endTagBodyc             S   s-   |  j  j d  r) |  j t d   | Sd  S)Nr:  )r:   r  rc  r  )r>   r   r#   r#   r$   rd  +  s    z)getPhases.<locals>.InBodyPhase.endTagHtmlc             S   s   | d d k r |  j  |  _ n  |  j j | d  } | rK |  j j   n  |  j j d j | d k r |  j j d i | d d 6 n  | r |  j j j	   } x, | j | d k r |  j j j	   } q Wn  d  S)Nr<   r  r   zend-tag-too-earlyr{   )
rE  r   r:   r  r  r}   r<   rJ   r~   r  )r>   r   inScoperA  r#   r#   r$   re  1  s    !z*getPhases.<locals>.InBodyPhase.endTagBlockc             S   s   |  j  j } d  |  j  _ | d  k s7 |  j  j |  rT |  j j d i d d 6 nS |  j  j   |  j  j d | k r |  j j d i d d 6 n  |  j  j j |  d  S)Nzunexpected-end-tagr  r<   r   zend-tag-too-early-ignoredr{   )r:   r  r  rJ   r~   r  r}   r  )r>   r   rA  r#   r#   r$   rf  ?  s    z)getPhases.<locals>.InBodyPhase.endTagFormc             S   s   | d d k r d } n d  } |  j  j | d d | s\ |  j j d i | d d 6 n |  j  j d | d  |  j  j d	 j | d k r |  j j d i | d d 6 n  |  j  j j   } x) | j | d k r |  j  j j   } q Wd  S)
Nr<   r  r  r  zunexpected-end-tagexcluder   zend-tag-too-earlyr{   )r:   r  rJ   r~   r  r}   r<   r  )r>   r   r  rA  r#   r#   r$   rh  L  s    	!	z-getPhases.<locals>.InBodyPhase.endTagListItemc             S   s   x1 t  D]) } |  j j |  r |  j j   Pq q W|  j j d j | d k rr |  j j d i | d d 6 n  x^ t  D]V } |  j j |  ry |  j j j   } x% | j t  k r |  j j j   } q WPqy qy Wd  S)Nr   r<   zend-tag-too-earlyr{   )	r   r:   r  r  r}   r<   rJ   r~   r  )r>   r   itemr#   r#   r$   ri  ]  s    !z,getPhases.<locals>.InBodyPhase.endTagHeadingc             S   s9  d } x,| d k  r4| d 7} |  j  j | d  } | sd | |  j  j k ru |  j  j | j  ru |  j |  d S| |  j  j k r |  j j d i | d d 6 |  j  j j	 |  d S|  j  j | j  s |  j j d i | d d 6 d S| |  j  j d k r*|  j j d i | d d 6 n  |  j  j j
 |  } d } x7 |  j  j | d  D] } | j t k r\| } Pq\q\W| d k r|  j  j j   } x" | | k r|  j  j j   } qW|  j  j j	 |  d S|  j  j | d } |  j  j j
 |  } | }	 }
 d } |  j  j j
 |
  } x| d	 k  r?| d 7} | d 8} |  j  j | }
 |
 |  j  j k r|  j  j j	 |
  q*n  |
 | k rPn  |	 | k r|  j  j j
 |
  d } n  |
 j   } | |  j  j |  j  j j
 |
  <| |  j  j |  j  j j
 |
  <| }
 |	 j r)|	 j j |	  n  |
 j |	  |
 }	 q*W|	 j r\|	 j j |	  n  | j t d  k r|  j  j   \ } } | j |	 |  n | j |	  | j   } | j |  | j |  |  j  j j	 |  |  j  j j | |  |  j  j j	 |  |  j  j j |  j  j j
 |  d |  q	 Wd S)z)The much-feared adoption agency algorithmr      r   r<   Nzadoption-agency-1.2zadoption-agency-4.4zadoption-agency-1.3rv  r7  r/  r1  r0  r-  r{   )ztableztbodyztfootztheadztr)r:   r  r}   r  r<   r  rJ   r~   rw  r  indexr  r   r  	cloneNoder  r  appendChildr   getTableMisnestedNodePositioninsertBeforereparentChildreninsert)r>   r   outerLoopCounterformattingElementafeIndexfurthestBlockri   commonAncestorbookmarklastNoderA  innerLoopCounterr  cloner  r  r#   r#   r$   rj  l  s    

	!



	
	z/getPhases.<locals>.InBodyPhase.endTagFormattingc             S   s   |  j  j | d  r& |  j  j   n  |  j  j d j | d k rd |  j j d i | d d 6 n  |  j  j | d  r |  j  j j   } x) | j | d k r |  j  j j   } q W|  j  j   n  d  S)Nr<   r   zend-tag-too-earlyr{   )	r:   r  r  r}   r<   rJ   r~   r  clearActiveFormattingElements)r>   r   ri   r#   r#   r$   rk    s    !z8getPhases.<locals>.InBodyPhase.endTagAppletMarqueeObjectc             S   s[   |  j  j d i d d 6d d 6 |  j j   |  j j t d d   |  j j j   d  S)Nzunexpected-end-tag-treated-asr  r!  z
br elementr  rn   )rJ   r~   r:   r}  rG  r  r}   r  )r>   r   r#   r#   r$   rl    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 r |  j j d i | d d 6 n  x |  j  j j   | k r q WPq | j t k r |  j j d i | d d 6 Pq q Wd  S)Nr   r<   r  zunexpected-end-tagr{   r{   )	r:   r}   r<   r  rJ   r~   r  r  r   )r>   r   rA  r#   r#   r$   r  "  s     !z*getPhases.<locals>.InBodyPhase.endTagOtherN)5r5   r6   r7   rG   ru  ry  r   r~  r   r   rF  r  r  rG  rI  rJ  rK  rL  rH  rM  rN  rO  rP  rQ  rR  rS  rT  rV  rU  rW  rX  rY  rZ  r[  r\  r_  r]  r^  r`  ra  rb  r  rg  rc  rd  re  rf  rh  ri  rj  rk  rl  r  r#   )rb  r#   r$   InBodyPhase[  sd   F
	
 	r  c                   s^   e  Z d  Z   f d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d S)zgetPhases.<locals>.TextPhasec                se     j  |  | |  t j g   |  _ |  j |  j _ t j d |  j f g  |  _ |  j |  j _ d  S)Nr  )	rG   r   r  r^  r  r  endTagScriptra  r  )r>   rJ   r:   )rb  r#   r$   rG   1  s    z%getPhases.<locals>.TextPhase.__init__c             S   s   |  j  j | d  d  S)Nrs   )r:   r]  )r>   r   r#   r#   r$   r   9  s    z.getPhases.<locals>.TextPhase.processCharactersc             S   sM   |  j  j d i |  j j d j d 6 |  j j j   |  j  j |  j  _ d S)Nz&expected-named-closing-tag-but-got-eofr   r<   Tr{   )rJ   r~   r:   r}   r<   r  rH  r]   )r>   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   )r>   r   r#   r#   r$   r  C  s    z*getPhases.<locals>.TextPhase.startTagOtherc             S   s=   |  j  j j   } | j d k s' t  |  j j |  j _ d  S)Nr  )r:   r}   r  r<   r   rJ   rH  r]   )r>   r   rA  r#   r#   r$   r  F  s    z)getPhases.<locals>.TextPhase.endTagScriptc             S   s&   |  j  j j   |  j j |  j _ d  S)N)r:   r}   r  rJ   rH  r]   )r>   r   r#   r#   r$   r  M  s    z(getPhases.<locals>.TextPhase.endTagOtherN)	r5   r6   r7   rG   r   r   r  r  r  r#   )rb  r#   r$   	TextPhase0  s   r  c                   s   e  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' S)(zgetPhases.<locals>.InTablePhasec                s     j  |  | |  t j d |  j f d |  j f d |  j f d |  j f d |  j f d |  j f d |  j	 f d |  j
 f d |  j f d |  j f g
  |  _ |  j |  j _ t j d |  j f d |  j f g  |  _ |  j |  j _ d  S)Nr>  r3  r5  r  r/  r1  r0  r*  r+  r-  r7  r  r  r  r  r:  )tbodytfootthead)tdthtr)zstylezscript)zbodyzcaptionzcolzcolgroupzhtmlr  r  r  r  r  r  )rG   r   r  r`  startTagCaptionstartTagColgroupstartTagColstartTagRowGroupstartTagImplyTbodyrS  startTagStyleScriptrV  rJ  r^  r  r  endTagTableendTagIgnorera  r  )r>   rJ   r:   )rb  r#   r$   rG   S  s$     z(getPhases.<locals>.InTablePhase.__init__c             S   s4   x- |  j  j d j d k r/ |  j  j j   q Wd  S)Nr   r7  r>  r{   )ztablezhtml)r:   r}   r<   r  )r>   r#   r#   r$   clearStackToTableContextk  s    z8getPhases.<locals>.InTablePhase.clearStackToTableContextc             S   sB   |  j  j d j d k r, |  j j d  n |  j j s> t  d  S)Nr   r>  zeof-in-tabler{   )r:   r}   r<   rJ   r~   rO   r   )r>   r#   r#   r$   r   t  s    z*getPhases.<locals>.InTablePhase.processEOFc             S   sH   |  j  j } |  j  j d |  j  _ | |  j  j _ |  j  j j |  d  S)NinTableText)rJ   r]   rE   rH  r   )r>   r   rH  r#   r#   r$   r   {  s    z6getPhases.<locals>.InTablePhase.processSpaceCharactersc             S   sH   |  j  j } |  j  j d |  j  _ | |  j  j _ |  j  j j |  d  S)Nr  )rJ   r]   rE   rH  r   )r>   r   rH  r#   r#   r$   r     s    z1getPhases.<locals>.InTablePhase.processCharactersc             S   s3   d |  j  _ |  j j d j |  d |  j  _ d  S)NTr8  F)r:   insertFromTablerJ   rE   r   )r>   r   r#   r#   r$   r]    s    z*getPhases.<locals>.InTablePhase.insertTextc             S   sG   |  j    |  j j j t  |  j j |  |  j j d |  j _ d  S)Nr2  )	r  r:   rw  r   r
   rG  rJ   rE   r]   )r>   r   r#   r#   r$   r    s    
z/getPhases.<locals>.InTablePhase.startTagCaptionc             S   s4   |  j    |  j j |  |  j j d |  j _ d  S)Nr4  )r  r:   rG  rJ   rE   r]   )r>   r   r#   r#   r$   r    s    
z0getPhases.<locals>.InTablePhase.startTagColgroupc             S   s   |  j  t d d   | S)Nr5  rn   )r  r  )r>   r   r#   r#   r$   r    s    z+getPhases.<locals>.InTablePhase.startTagColc             S   s4   |  j    |  j j |  |  j j d |  j _ d  S)Nr.  )r  r:   rG  rJ   rE   r]   )r>   r   r#   r#   r$   r    s    
z0getPhases.<locals>.InTablePhase.startTagRowGroupc             S   s   |  j  t d d   | S)Nr/  rn   )r  r  )r>   r   r#   r#   r$   r    s    z2getPhases.<locals>.InTablePhase.startTagImplyTbodyc             S   sN   |  j  j d i d d 6d d 6 |  j  j j t d   |  j  j sJ | Sd  S)Nz$unexpected-start-tag-implies-end-tagr7  r  r  )rJ   r~   r]   r   r  rO   )r>   r   r#   r#   r$   rS    s
    z-getPhases.<locals>.InTablePhase.startTagTablec             S   s   |  j  j d j |  S)Nr  )rJ   rE   r   )r>   r   r#   r#   r$   r    s    z3getPhases.<locals>.InTablePhase.startTagStyleScriptc             S   sq   d | d k r` | d d j  t  d k r` |  j j d  |  j j |  |  j j j   n |  j |  d  S)Nr,   rs   r  z unexpected-hidden-input-in-table)	rh   r   rJ   r~   r:   rG  r}   r  r  )r>   r   r#   r#   r$   rV    s    z-getPhases.<locals>.InTablePhase.startTagInputc             S   s_   |  j  j d  |  j j d  k r[ |  j j |  |  j j d |  j _ |  j j j   n  d  S)Nzunexpected-form-in-tabler   r{   )rJ   r~   r:   r  rG  r}   r  )r>   r   r#   r#   r$   rJ    s
    z,getPhases.<locals>.InTablePhase.startTagFormc             S   sQ   |  j  j d i | d d 6 d |  j _ |  j  j d j |  d |  j _ d  S)Nz)unexpected-start-tag-implies-table-voodoor<   Tr8  F)rJ   r~   r:   r  rE   r   )r>   r   r#   r#   r$   r    s    z-getPhases.<locals>.InTablePhase.startTagOtherc             S   s   |  j  j d d d r |  j  j   |  j  j d j d k ro |  j j d i d d 6|  j  j d j d 6 n  x- |  j  j d	 j d k r |  j  j j   qr W|  j  j j   |  j j   n |  j j	 s t
  |  j j   d  S)
Nr7  r  r   zend-tag-too-early-namedr  r  r{   r{   r{   )r:   r  r  r}   r<   rJ   r~   r  r_   rO   r   )r>   r   r#   r#   r$   r    s    
z+getPhases.<locals>.InTablePhase.endTagTablec             S   s"   |  j  j d i | d d 6 d  S)Nzunexpected-end-tagr<   )rJ   r~   )r>   r   r#   r#   r$   r    s    z,getPhases.<locals>.InTablePhase.endTagIgnorec             S   sQ   |  j  j d i | d d 6 d |  j _ |  j  j d j |  d |  j _ d  S)Nz'unexpected-end-tag-implies-table-voodoor<   Tr8  F)rJ   r~   r:   r  rE   r   )r>   r   r#   r#   r$   r    s    z+getPhases.<locals>.InTablePhase.endTagOtherN)r5   r6   r7   rG   r  r   r   r   r]  r  r  r  r  r  rS  r  rV  rJ  r  r  r  r  r#   )rb  r#   r$   InTablePhaseQ  s&   	
r  c                   sv   e  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 S)z#getPhases.<locals>.InTableTextPhasec                s)     j  |  | |  d  |  _ g  |  _ d  S)N)rG   rH  characterTokens)r>   rJ   r:   )rb  r#   r$   rG     s    	z,getPhases.<locals>.InTableTextPhase.__init__c             S   s   d j  d d   |  j D  } t d d   | D  rj i t d d 6| d 6} |  j j d j |  n | r |  j j |  n  g  |  _ d  S)	Nrg  c             S   s   g  |  ] } | d   q S)rs   r#   )r;   r  r#   r#   r$   r?     s   	 zGgetPhases.<locals>.InTableTextPhase.flushCharacters.<locals>.<listcomp>c             S   s   g  |  ] } | t  k  q Sr#   )r   )r;   r  r#   r#   r$   r?     s   	 rl   r,   rs   r6  )joinr  r  r   rJ   rE   r]  r:   )r>   rs   r   r#   r#   r$   flushCharacters  s    z3getPhases.<locals>.InTableTextPhase.flushCharactersc             S   s   |  j    |  j |  j _ | S)N)r  rH  rJ   r]   )r>   r   r#   r#   r$   r     s    
z2getPhases.<locals>.InTableTextPhase.processCommentc             S   s   |  j    |  j |  j _ d S)NT)r  rH  rJ   r]   )r>   r#   r#   r$   r     s    
z.getPhases.<locals>.InTableTextPhase.processEOFc             S   s(   | d d k r d  S|  j  j |  d  S)Nrs   r  )r  r   )r>   r   r#   r#   r$   r     s    z5getPhases.<locals>.InTableTextPhase.processCharactersc             S   s   |  j  j |  d  S)N)r  r   )r>   r   r#   r#   r$   r      s    z:getPhases.<locals>.InTableTextPhase.processSpaceCharactersc             S   s   |  j    |  j |  j _ | S)N)r  rH  rJ   r]   )r>   r   r#   r#   r$   r     s    
z3getPhases.<locals>.InTableTextPhase.processStartTagc             S   s   |  j    |  j |  j _ | S)N)r  rH  rJ   r]   )r>   r   r#   r#   r$   r   
  s    
z1getPhases.<locals>.InTableTextPhase.processEndTagN)r5   r6   r7   rG   r  r   r   r   r   r   r   r#   )rb  r#   r$   InTableTextPhase  s   	r  c                   s   e  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 S)z!getPhases.<locals>.InCaptionPhasec                s     j  |  | |  t j d |  j f d |  j f g  |  _ |  j |  j _ t j d |  j f d |  j	 f d |  j
 f g  |  _ |  j |  j _ d  S)Nr>  r3  r  r5  r/  r*  r1  r+  r0  r-  r7  r:  )	zcaptioncolcolgrouptbodytdtfootththeadtr)
zbodyr  r  zhtmlr  r  r  r  r  r  )rG   r   r  r`  startTagTableElementr^  r  r  endTagCaptionr  r  ra  r  )r>   rJ   r:   )rb  r#   r$   rG     s      z*getPhases.<locals>.InCaptionPhase.__init__c             S   s   |  j  j d d d S)Nr3  r  r7  )r:   r  )r>   r#   r#   r$   ignoreEndTagCaption#  s    z5getPhases.<locals>.InCaptionPhase.ignoreEndTagCaptionc             S   s   |  j  j d j   d  S)Nr8  )rJ   rE   r   )r>   r#   r#   r$   r   &  s    z,getPhases.<locals>.InCaptionPhase.processEOFc             S   s   |  j  j d j |  S)Nr8  )rJ   rE   r   )r>   r   r#   r#   r$   r   )  s    z3getPhases.<locals>.InCaptionPhase.processCharactersc             S   s@   |  j  j   |  j   } |  j  j j t d   | s< | Sd  S)Nr3  )rJ   r~   r  r]   r   r  )r>   r   ignoreEndTagr#   r#   r$   r  ,  s
    z6getPhases.<locals>.InCaptionPhase.startTagTableElementc             S   s   |  j  j d j |  S)Nr8  )rJ   rE   r   )r>   r   r#   r#   r$   r  4  s    z/getPhases.<locals>.InCaptionPhase.startTagOtherc             S   s   |  j    s |  j j   |  j j d j d k rc |  j j d i d d 6|  j j d j d 6 n  x- |  j j d	 j d k r |  j j j   qf W|  j j j   |  j j   |  j j	 d |  j _
 n |  j j s t  |  j j   d  S)
Nr   r3  z$expected-one-end-tag-but-got-anotherr  r  r6  r{   r{   r{   )r  r:   r  r}   r<   rJ   r~   r  r  rE   r]   rO   r   )r>   r   r#   r#   r$   r  7  s    
z/getPhases.<locals>.InCaptionPhase.endTagCaptionc             S   s@   |  j  j   |  j   } |  j  j j t d   | s< | Sd  S)Nr3  )rJ   r~   r  r]   r   r  )r>   r   r  r#   r#   r$   r  I  s
    z-getPhases.<locals>.InCaptionPhase.endTagTablec             S   s"   |  j  j d i | d d 6 d  S)Nzunexpected-end-tagr<   )rJ   r~   )r>   r   r#   r#   r$   r  P  s    z.getPhases.<locals>.InCaptionPhase.endTagIgnorec             S   s   |  j  j d j |  S)Nr8  )rJ   rE   r   )r>   r   r#   r#   r$   r  S  s    z-getPhases.<locals>.InCaptionPhase.endTagOtherN)r5   r6   r7   rG   r  r   r   r  r  r  r  r  r  r#   )rb  r#   r$   InCaptionPhase  s   r  c                   s   e  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 S)z%getPhases.<locals>.InColumnGroupPhasec                s     j  |  | |  t j d |  j f d |  j f g  |  _ |  j |  j _ t j d |  j f d |  j	 f g  |  _
 |  j |  j
 _ d  S)Nr>  r  r5  )rG   r   r  r`  r  r^  r  r  endTagColgroup	endTagColra  r  )r>   rJ   r:   )rb  r#   r$   rG   Y  s    z.getPhases.<locals>.InColumnGroupPhase.__init__c             S   s   |  j  j d j d k S)Nr   r>  r{   )r:   r}   r<   )r>   r#   r#   r$   ignoreEndTagColgrouph  s    z:getPhases.<locals>.InColumnGroupPhase.ignoreEndTagColgroupc             S   s\   |  j  j d j d k r/ |  j j s+ t  d  S|  j   } |  j t d   | sX d Sd  S)Nr   r>  r5  Tr{   )	r:   r}   r<   rJ   rO   r   r  r  r  )r>   r  r#   r#   r$   r   k  s    z0getPhases.<locals>.InColumnGroupPhase.processEOFc             S   s-   |  j    } |  j t d   | s) | Sd  S)Nr5  )r  r  r  )r>   r   r  r#   r#   r$   r   u  s    z7getPhases.<locals>.InColumnGroupPhase.processCharactersc             S   s$   |  j  j |  |  j  j j   d  S)N)r:   rG  r}   r  )r>   r   r#   r#   r$   r  {  s    z1getPhases.<locals>.InColumnGroupPhase.startTagColc             S   s-   |  j    } |  j t d   | s) | Sd  S)Nr5  )r  r  r  )r>   r   r  r#   r#   r$   r    s    z3getPhases.<locals>.InColumnGroupPhase.startTagOtherc             S   sX   |  j    r. |  j j s t  |  j j   n& |  j j j   |  j j d |  j _	 d  S)Nr6  )
r  rJ   rO   r   r~   r:   r}   r  rE   r]   )r>   r   r#   r#   r$   r    s
    z4getPhases.<locals>.InColumnGroupPhase.endTagColgroupc             S   s   |  j  j d i d d 6 d  S)Nz
no-end-tagr  r<   )rJ   r~   )r>   r   r#   r#   r$   r    s    z/getPhases.<locals>.InColumnGroupPhase.endTagColc             S   s-   |  j    } |  j t d   | s) | Sd  S)Nr5  )r  r  r  )r>   r   r  r#   r#   r$   r    s    z1getPhases.<locals>.InColumnGroupPhase.endTagOtherN)r5   r6   r7   rG   r  r   r   r  r  r  r  r  r#   )rb  r#   r$   InColumnGroupPhaseV  s   
	r  c                   s   e  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 S)z#getPhases.<locals>.InTableBodyPhasec                s     j  |  | |  t j d |  j f d |  j f d |  j f d |  j f g  |  _ |  j |  j _	 t j d |  j
 f d |  j f d |  j f g  |  _ |  j |  j _	 d  S)Nr>  r-  r*  r+  r3  r  r5  r/  r1  r0  r7  r:  )tdth)captioncolcolgrouptbodytfootthead)r  r  r  )zbodyr  r  r  zhtmlr  r  ztr)rG   r   r  r`  
startTagTrstartTagTableCellstartTagTableOtherr^  r  r  endTagTableRowGroupr  r  ra  r  )r>   rJ   r:   )rb  r#   r$   rG     s     z,getPhases.<locals>.InTableBodyPhase.__init__c             S   sb   x- |  j  j d j d k r/ |  j  j j   q W|  j  j d j d k r^ |  j j s^ t  n  d  S)	Nr   r/  r1  r0  r>  r{   )ztbodyztfootztheadzhtmlr{   )r:   r}   r<   r  rJ   rO   r   )r>   r#   r#   r$   clearStackToTableBodyContext  s
    	z@getPhases.<locals>.InTableBodyPhase.clearStackToTableBodyContextc             S   s   |  j  j d j   d  S)Nr6  )rJ   rE   r   )r>   r#   r#   r$   r     s    z.getPhases.<locals>.InTableBodyPhase.processEOFc             S   s   |  j  j d j |  S)Nr6  )rJ   rE   r   )r>   r   r#   r#   r$   r     s    z:getPhases.<locals>.InTableBodyPhase.processSpaceCharactersc             S   s   |  j  j d j |  S)Nr6  )rJ   rE   r   )r>   r   r#   r#   r$   r     s    z5getPhases.<locals>.InTableBodyPhase.processCharactersc             S   s4   |  j    |  j j |  |  j j d |  j _ d  S)Nr,  )r  r:   rG  rJ   rE   r]   )r>   r   r#   r#   r$   r    s    
z.getPhases.<locals>.InTableBodyPhase.startTagTrc             S   s8   |  j  j d i | d d 6 |  j t d d   | S)Nzunexpected-cell-in-table-bodyr<   r-  rn   )rJ   r~   r  r  )r>   r   r#   r#   r$   r    s    z5getPhases.<locals>.InTableBodyPhase.startTagTableCellc             S   s   |  j  j d d d sH |  j  j d d d sH |  j  j d d d rv |  j   |  j t |  j  j d j   | S|  j j s t	  |  j j
   d  S)Nr/  r  r7  r0  r1  r   r{   )r:   r  r  r  r  r}   r<   rJ   rO   r   r~   )r>   r   r#   r#   r$   r    s    
z6getPhases.<locals>.InTableBodyPhase.startTagTableOtherc             S   s   |  j  j d j |  S)Nr6  )rJ   rE   r   )r>   r   r#   r#   r$   r    s    z1getPhases.<locals>.InTableBodyPhase.startTagOtherc             S   sq   |  j  j | d d d rO |  j   |  j  j j   |  j j d |  j _ n |  j j d i | d d 6 d  S)Nr<   r  r7  r6  z unexpected-end-tag-in-table-body)	r:   r  r  r}   r  rJ   rE   r]   r~   )r>   r   r#   r#   r$   r    s    
z7getPhases.<locals>.InTableBodyPhase.endTagTableRowGroupc             S   s   |  j  j d d d sH |  j  j d d d sH |  j  j d d d rv |  j   |  j t |  j  j d j   | S|  j j s t	  |  j j
   d  S)Nr/  r  r7  r0  r1  r   r{   )r:   r  r  r  r  r}   r<   rJ   rO   r   r~   )r>   r   r#   r#   r$   r    s    
z/getPhases.<locals>.InTableBodyPhase.endTagTablec             S   s"   |  j  j d i | d d 6 d  S)Nz unexpected-end-tag-in-table-bodyr<   )rJ   r~   )r>   r   r#   r#   r$   r    s    z0getPhases.<locals>.InTableBodyPhase.endTagIgnorec             S   s   |  j  j d j |  S)Nr6  )rJ   rE   r   )r>   r   r#   r#   r$   r    s    z/getPhases.<locals>.InTableBodyPhase.endTagOtherN)r5   r6   r7   rG   r  r   r   r   r  r  r  r  r  r  r  r  r#   )rb  r#   r$   InTableBodyPhase  s   
	r  c                   s   e  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 S)zgetPhases.<locals>.InRowPhasec                s     j  |  | |  t j d |  j f d |  j f d |  j f g  |  _ |  j |  j _ t j d
 |  j	 f d |  j
 f d |  j f d |  j f g  |  _ |  j |  j _ d  S)Nr>  r*  r+  r3  r  r5  r/  r1  r0  r-  r7  r:  )tdth)captioncolcolgrouptbodytfoottheadztr)r  r  r  )zbodyr  r  r  zhtmlr  r  )rG   r   r  r`  r  r  r^  r  r  endTagTrr  r  r  ra  r  )r>   rJ   r:   )rb  r#   r$   rG     s     z&getPhases.<locals>.InRowPhase.__init__c             S   s[   xT |  j  j d j d k rV |  j j d i |  j  j d j d 6 |  j  j j   q Wd  S)	Nr   r-  r>  z'unexpected-implied-end-tag-in-table-rowr<   r{   )ztrzhtmlr{   )r:   r}   r<   rJ   r~   r  )r>   r#   r#   r$   clearStackToTableRowContext  s    z9getPhases.<locals>.InRowPhase.clearStackToTableRowContextc             S   s   |  j  j d d d S)Nr-  r  r7  )r:   r  )r>   r#   r#   r$   ignoreEndTagTr  s    z,getPhases.<locals>.InRowPhase.ignoreEndTagTrc             S   s   |  j  j d j   d  S)Nr6  )rJ   rE   r   )r>   r#   r#   r$   r     s    z(getPhases.<locals>.InRowPhase.processEOFc             S   s   |  j  j d j |  S)Nr6  )rJ   rE   r   )r>   r   r#   r#   r$   r     s    z4getPhases.<locals>.InRowPhase.processSpaceCharactersc             S   s   |  j  j d j |  S)Nr6  )rJ   rE   r   )r>   r   r#   r#   r$   r     s    z/getPhases.<locals>.InRowPhase.processCharactersc             S   sG   |  j    |  j j |  |  j j d |  j _ |  j j j t  d  S)Nr)  )	r  r:   rG  rJ   rE   r]   rw  r   r
   )r>   r   r#   r#   r$   r  "  s    
z/getPhases.<locals>.InRowPhase.startTagTableCellc             S   s-   |  j    } |  j t d   | s) | Sd  S)Nr-  )r  r  r  )r>   r   r  r#   r#   r$   r  (  s    z0getPhases.<locals>.InRowPhase.startTagTableOtherc             S   s   |  j  j d j |  S)Nr6  )rJ   rE   r   )r>   r   r#   r#   r$   r  /  s    z+getPhases.<locals>.InRowPhase.startTagOtherc             S   sb   |  j    s? |  j   |  j j j   |  j j d |  j _ n |  j j sQ t	  |  j j
   d  S)Nr.  )r  r  r:   r}   r  rJ   rE   r]   rO   r   r~   )r>   r   r#   r#   r$   r  2  s    
z&getPhases.<locals>.InRowPhase.endTagTrc             S   s-   |  j    } |  j t d   | s) | Sd  S)Nr-  )r  r  r  )r>   r   r  r#   r#   r$   r  <  s    z)getPhases.<locals>.InRowPhase.endTagTablec             S   sD   |  j  j | d d d r3 |  j t d   | S|  j j   d  S)Nr<   r  r7  r-  )r:   r  r  r  rJ   r~   )r>   r   r#   r#   r$   r  D  s    z1getPhases.<locals>.InRowPhase.endTagTableRowGroupc             S   s"   |  j  j d i | d d 6 d  S)Nzunexpected-end-tag-in-table-rowr<   )rJ   r~   )r>   r   r#   r#   r$   r  K  s    z*getPhases.<locals>.InRowPhase.endTagIgnorec             S   s   |  j  j d j |  S)Nr6  )rJ   rE   r   )r>   r   r#   r#   r$   r  O  s    z)getPhases.<locals>.InRowPhase.endTagOtherN)r5   r6   r7   rG   r  r  r   r   r   r  r  r  r  r  r  r  r  r#   )rb  r#   r$   
InRowPhase  s   
r  c                   s   e  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 S)zgetPhases.<locals>.InCellPhasec                s     j  |  | |  t j d |  j f d |  j f g  |  _ |  j |  j _ t j d |  j f d |  j	 f d |  j
 f g  |  _ |  j |  j _ d  S)Nr>  r3  r  r5  r/  r*  r1  r+  r0  r-  r:  r7  )	captioncolcolgrouptbodytdtfootththeadtr)r  r  )zbodyr  r  r  zhtml)ztabler  r  r  r  )rG   r   r  r`  r  r^  r  r  endTagTableCellr  endTagImplyra  r  )r>   rJ   r:   )rb  r#   r$   rG   T  s     z'getPhases.<locals>.InCellPhase.__init__c             S   s`   |  j  j d d d r. |  j t d   n. |  j  j d d d r\ |  j t d   n  d  S)Nr*  r  r7  r+  )r:   r  r  r  )r>   r#   r#   r$   	closeCelle  s    z(getPhases.<locals>.InCellPhase.closeCellc             S   s   |  j  j d j   d  S)Nr8  )rJ   rE   r   )r>   r#   r#   r$   r   l  s    z)getPhases.<locals>.InCellPhase.processEOFc             S   s   |  j  j d j |  S)Nr8  )rJ   rE   r   )r>   r   r#   r#   r$   r   o  s    z0getPhases.<locals>.InCellPhase.processCharactersc             S   sa   |  j  j d d d s0 |  j  j d d d r> |  j   | S|  j j sP t  |  j j   d  S)Nr*  r  r7  r+  )r:   r  r  rJ   rO   r   r~   )r>   r   r#   r#   r$   r  r  s    
z1getPhases.<locals>.InCellPhase.startTagTableOtherc             S   s   |  j  j d j |  S)Nr8  )rJ   rE   r   )r>   r   r#   r#   r$   r  |  s    z,getPhases.<locals>.InCellPhase.startTagOtherc             S   s   |  j  j | d d d r |  j  j | d  |  j  j d j | d k r |  j j d i | d d 6 x@ |  j  j j   } | j | d k rn Pqn qn Wn |  j  j j   |  j  j   |  j j	 d |  j _
 n |  j j d i | d d 6 d  S)	Nr<   r  r7  r   zunexpected-cell-end-tagr,  zunexpected-end-tagr{   )r:   r  r  r}   r<   rJ   r~   r  r  rE   r]   )r>   r   rA  r#   r#   r$   r    s    z.getPhases.<locals>.InCellPhase.endTagTableCellc             S   s"   |  j  j d i | d d 6 d  S)Nzunexpected-end-tagr<   )rJ   r~   )r>   r   r#   r#   r$   r    s    z+getPhases.<locals>.InCellPhase.endTagIgnorec             S   s;   |  j  j | d d d r* |  j   | S|  j j   d  S)Nr<   r  r7  )r:   r  r  rJ   r~   )r>   r   r#   r#   r$   r     s    
z*getPhases.<locals>.InCellPhase.endTagImplyc             S   s   |  j  j d j |  S)Nr8  )rJ   rE   r   )r>   r   r#   r#   r$   r    s    z*getPhases.<locals>.InCellPhase.endTagOtherN)r5   r6   r7   rG   r  r   r   r  r  r  r  r   r  r#   )rb  r#   r$   InCellPhaseR  s   
r  c                   s   e  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 S)z getPhases.<locals>.InSelectPhasec                s     j  |  | |  t j d |  j f d |  j f d |  j f d |  j f d	 |  j f d |  j f g  |  _	 |  j
 |  j	 _ t j d |  j f d |  j f d |  j f g  |  _ |  j |  j _ d  S)
Nr>  r  r  r(  r  r
  r  r  )zinputzkeygenztextarea)rG   r   r  r`  startTagOptionstartTagOptgroupr]  rV  r  r^  r  r  endTagOptionendTagOptgroupendTagSelectra  r  )r>   rJ   r:   )rb  r#   r$   rG     s    z)getPhases.<locals>.InSelectPhase.__init__c             S   sB   |  j  j d j d k r, |  j j d  n |  j j s> t  d  S)Nr   r>  zeof-in-selectr{   )r:   r}   r<   rJ   r~   rO   r   )r>   r#   r#   r$   r     s    z+getPhases.<locals>.InSelectPhase.processEOFc             S   s,   | d d k r d  S|  j  j | d  d  S)Nrs   r  )r:   r]  )r>   r   r#   r#   r$   r     s    z2getPhases.<locals>.InSelectPhase.processCharactersc             S   s@   |  j  j d j d k r, |  j  j j   n  |  j  j |  d  S)Nr   r  r{   )r:   r}   r<   r  rG  )r>   r   r#   r#   r$   r    s    z/getPhases.<locals>.InSelectPhase.startTagOptionc             S   sl   |  j  j d j d k r, |  j  j j   n  |  j  j d j d k rX |  j  j j   n  |  j  j |  d  S)Nr   r  r  r{   r{   )r:   r}   r<   r  rG  )r>   r   r#   r#   r$   r    s
    z1getPhases.<locals>.InSelectPhase.startTagOptgroupc             S   s'   |  j  j d  |  j t d   d  S)Nzunexpected-select-in-selectr(  )rJ   r~   r  r  )r>   r   r#   r#   r$   r]    s    z/getPhases.<locals>.InSelectPhase.startTagSelectc             S   sU   |  j  j d  |  j j d d d r? |  j t d   | S|  j  j sQ t  d  S)Nzunexpected-input-in-selectr(  r  )rJ   r~   r:   r  r  r  rO   r   )r>   r   r#   r#   r$   rV    s
    z.getPhases.<locals>.InSelectPhase.startTagInputc             S   s   |  j  j d j |  S)Nr  )rJ   rE   r   )r>   r   r#   r#   r$   r    s    z/getPhases.<locals>.InSelectPhase.startTagScriptc             S   s"   |  j  j d i | d d 6 d  S)Nzunexpected-start-tag-in-selectr<   )rJ   r~   )r>   r   r#   r#   r$   r    s    z.getPhases.<locals>.InSelectPhase.startTagOtherc             S   sJ   |  j  j d j d k r, |  j  j j   n |  j j d i d d 6 d  S)Nr   r  zunexpected-end-tag-in-selectr<   r{   )r:   r}   r<   r  rJ   r~   )r>   r   r#   r#   r$   r    s    z-getPhases.<locals>.InSelectPhase.endTagOptionc             S   s   |  j  j d j d k rE |  j  j d j d k rE |  j  j j   n  |  j  j d	 j d k rq |  j  j j   n |  j j d i d d 6 d  S)
Nr   r  r  r  zunexpected-end-tag-in-selectr<   r{   r{   )r:   r}   r<   r  rJ   r~   )r>   r   r#   r#   r$   r    s    z/getPhases.<locals>.InSelectPhase.endTagOptgroupc             S   s   |  j  j d d d rb |  j  j j   } x% | j d k rQ |  j  j j   } q- W|  j j   n |  j j st t  |  j j	   d  S)Nr(  r  )
r:   r  r}   r  r<   rJ   r_   rO   r   r~   )r>   r   rA  r#   r#   r$   r    s    z-getPhases.<locals>.InSelectPhase.endTagSelectc             S   s"   |  j  j d i | d d 6 d  S)Nzunexpected-end-tag-in-selectr<   )rJ   r~   )r>   r   r#   r#   r$   r    s    z,getPhases.<locals>.InSelectPhase.endTagOtherN)r5   r6   r7   rG   r   r   r  r  r]  rV  r  r  r  r  r  r  r#   )rb  r#   r$   InSelectPhase  s   r	  c                   sj   e  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 S)z'getPhases.<locals>.InSelectInTablePhasec          	      sq     j  |  | |  t j d	 |  j f g  |  _ |  j |  j _ t j d
 |  j f g  |  _ |  j	 |  j _ d  S)Nr3  r7  r/  r1  r0  r-  r*  r+  )captiontabletbodytfoottheadtrtdth)r
  r  r  r  r  r  r  r  )
rG   r   r  rS  r^  r  r  r  ra  r  )r>   rJ   r:   )rb  r#   r$   rG   	  s    z0getPhases.<locals>.InSelectInTablePhase.__init__c             S   s   |  j  j d j   d  S)Nr'  )rJ   rE   r   )r>   r#   r#   r$   r   	  s    z2getPhases.<locals>.InSelectInTablePhase.processEOFc             S   s   |  j  j d j |  S)Nr'  )rJ   rE   r   )r>   r   r#   r#   r$   r   	  s    z9getPhases.<locals>.InSelectInTablePhase.processCharactersc             S   s5   |  j  j d i | d d 6 |  j t d   | S)Nz5unexpected-table-element-start-tag-in-select-in-tabler<   r(  )rJ   r~   r  r  )r>   r   r#   r#   r$   rS  	  s    z5getPhases.<locals>.InSelectInTablePhase.startTagTablec             S   s   |  j  j d j |  S)Nr'  )rJ   rE   r   )r>   r   r#   r#   r$   r  	  s    z5getPhases.<locals>.InSelectInTablePhase.startTagOtherc             S   sU   |  j  j d i | d d 6 |  j j | d d d rQ |  j t d   | Sd  S)Nz3unexpected-table-element-end-tag-in-select-in-tabler<   r  r7  r(  )rJ   r~   r:   r  r  r  )r>   r   r#   r#   r$   r   	  s    z3getPhases.<locals>.InSelectInTablePhase.endTagTablec             S   s   |  j  j d j |  S)Nr'  )rJ   rE   r   )r>   r   r#   r#   r$   r  &	  s    z3getPhases.<locals>.InSelectInTablePhase.endTagOtherN)
r5   r6   r7   rG   r   r   rS  r  r  r  r#   )rb  r#   r$   InSelectInTablePhase	  s   r  c            -       s   e  Z d  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   f d- d.   Z d/ d0   Z   f d1 d2   Z d3 d4   Z d5 d6   Z	 d7 S)8z(getPhases.<locals>.InForeignContentPhaser  r  r  r:  r  r  r  r  r%   r  r  r  r  h1h2h3h4h5h6r9  r  r  r	  r  r  r  r.   r  r  r"   r  r  r  r  spanr  r  subsupr7  r  r   r  varc                s     j  |  | |  d  S)N)rG   )r>   rJ   r:   )rb  r#   r$   rG   3	  s    z1getPhases.<locals>.InForeignContentPhase.__init__c             S   s+  i$ d d 6d d 6d d 6d d 6d	 d
 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d  6d! d" 6d# d$ 6d% d& 6d' d( 6d) d* 6d+ d, 6d- d. 6d/ d0 6d1 d2 6d3 d4 6d5 d6 6d7 d8 6d9 d: 6d; d< 6d= d> 6d? d@ 6dA dB 6dC dD 6dE dF 6dG dH 6} | dI | k r'| | dI | dI <n  d  S)JNaltGlyphaltglyphaltGlyphDefaltglyphdefaltGlyphItemaltglyphitemanimateColoranimatecoloranimateMotionanimatemotionanimateTransformanimatetransformclipPathclippathfeBlendfeblendfeColorMatrixfecolormatrixfeComponentTransferfecomponenttransferfeCompositefecompositefeConvolveMatrixfeconvolvematrixfeDiffuseLightingfediffuselightingfeDisplacementMapfedisplacementmapfeDistantLightfedistantlightfeFloodfefloodfeFuncAfefuncafeFuncBfefuncbfeFuncGfefuncgfeFuncRfefuncrfeGaussianBlurfegaussianblurfeImagefeimagefeMergefemergefeMergeNodefemergenodefeMorphologyfemorphologyfeOffsetfeoffsetfePointLightfepointlightfeSpecularLightingfespecularlightingfeSpotLightfespotlightfeTilefetilefeTurbulencefeturbulenceforeignObjectforeignobjectr   r   linearGradientlineargradientradialGradientradialgradienttextPathtextpathr<   r#   )r>   r   r   r#   r#   r$   adjustSVGTagNames6	  sL    

z:getPhases.<locals>.InForeignContentPhase.adjustSVGTagNamesc                si   | d d k r d | d <n8 |  j  j rU t d d   | d D  rU d |  j  _ n    j |  |  d  S)Nrs   r  u   �c             s   s   |  ] } | t  k Vq d  S)N)r   )r;   r  r#   r#   r$   rO  c	  s    zMgetPhases.<locals>.InForeignContentPhase.processCharacters.<locals>.<genexpr>F)rJ   rb   r  r   )r>   r   )rb  r#   r$   r   _	  s    z:getPhases.<locals>.InForeignContentPhase.processCharactersc             S   s  |  j  j d } | d |  j k s\ | d d k r t | d j    t d d d g  @r |  j j d i | d d 6 xm |  j  j d j |  j  j k r |  j j	 |  j  j d  r |  j j
 |  j  j d  r |  j  j j   q} W| S| j t d	 k r|  j j |  n3 | j t d
 k rG|  j |  |  j j |  n  |  j j |  | j | d <|  j  j |  | d r|  j  j j   d | d <n  d  S)Nr   r<   r  rs   colorfacesizez*unexpected-html-element-in-foreign-contentrc   rw   rf   ry   Trz   r{   r{   r{   r{   )r:   r}   breakoutElementssetr   rJ   r~   rf   r   rj   rk   r  r   r   rc  r#  r   rG  )r>   r   r   r#   r#   r$   r   g	  s.    )
z8getPhases.<locals>.InForeignContentPhase.processStartTagc             S   sK  t  |  j j  d } |  j j d } | j | d k rZ |  j j d i | d d 6 n  x | j j t  | d k r |  j j |  j j	 d k r |  j j j
   |  j j j |  j _ n  x. |  j j j   | k r |  j j s t  q Wd  } Pn  | d 8} |  j j | } | j |  j j k r-q] q] |  j j j |  } Pq] W| S)Nr   r<   zunexpected-end-tagr  r{   )r   r:   r}   r<   rJ   r~   rh   r   r]   rE   r  rH  r  r   rf   r   r   )r>   r   	nodeIndexrA  r   r#   r#   r$   r   	  s(    !
z6getPhases.<locals>.InForeignContentPhase.processEndTagN)
r5   r6   r7   r   rg  rG   rc  r   r   r   r#   )rb  r#   r$   InForeignContentPhase)	  s   )rj  c                   sv   e  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 S)z!getPhases.<locals>.AfterBodyPhasec                sq     j  |  | |  t j d |  j f g  |  _ |  j |  j _ t j d |  j f g  |  _ |  j	 |  j _ d  S)Nr>  )
rG   r   r  r`  r^  r  r  rd  ra  r  )r>   rJ   r:   )rb  r#   r$   rG   	  s    z*getPhases.<locals>.AfterBodyPhase.__init__c             S   s   d  S)Nr#   )r>   r#   r#   r$   r   	  s    z,getPhases.<locals>.AfterBodyPhase.processEOFc             S   s!   |  j  j | |  j  j d  d  S)Nr   )r:   r\  r}   )r>   r   r#   r#   r$   r   	  s    z0getPhases.<locals>.AfterBodyPhase.processCommentc             S   s*   |  j  j d  |  j  j d |  j  _ | S)Nzunexpected-char-after-bodyr8  )rJ   r~   rE   r]   )r>   r   r#   r#   r$   r   	  s    z3getPhases.<locals>.AfterBodyPhase.processCharactersc             S   s   |  j  j d j |  S)Nr8  )rJ   rE   r   )r>   r   r#   r#   r$   r`  	  s    z.getPhases.<locals>.AfterBodyPhase.startTagHtmlc             S   s8   |  j  j d i | d d 6 |  j  j d |  j  _ | S)Nzunexpected-start-tag-after-bodyr<   r8  )rJ   r~   rE   r]   )r>   r   r#   r#   r$   r  	  s    z/getPhases.<locals>.AfterBodyPhase.startTagOtherc             S   s9   |  j  j r |  j  j d  n |  j  j d |  j  _ d  S)Nz'unexpected-end-tag-after-body-innerhtmlafterAfterBody)rJ   rO   r~   rE   r]   )r>   r<   r#   r#   r$   rd  	  s    z,getPhases.<locals>.AfterBodyPhase.endTagHtmlc             S   s8   |  j  j d i | d d 6 |  j  j d |  j  _ | S)Nzunexpected-end-tag-after-bodyr<   r8  )rJ   r~   rE   r]   )r>   r   r#   r#   r$   r  	  s    z-getPhases.<locals>.AfterBodyPhase.endTagOtherN)r5   r6   r7   rG   r   r   r   r`  r  rd  r  r#   )rb  r#   r$   AfterBodyPhase	  s   rl  c                   s   e  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 S)z"getPhases.<locals>.InFramesetPhasec                s     j  |  | |  t j d |  j f d |  j f d |  j f d |  j f g  |  _ |  j |  j _	 t j d |  j
 f g  |  _ |  j |  j _	 d  S)Nr>  r<  r  r  )rG   r   r  r`  r  startTagFramestartTagNoframesr^  r  r  endTagFramesetra  r  )r>   rJ   r:   )rb  r#   r$   rG   	  s    z+getPhases.<locals>.InFramesetPhase.__init__c             S   sB   |  j  j d j d k r, |  j j d  n |  j j s> t  d  S)Nr   r>  zeof-in-framesetr{   )r:   r}   r<   rJ   r~   rO   r   )r>   r#   r#   r$   r   	  s    z-getPhases.<locals>.InFramesetPhase.processEOFc             S   s   |  j  j d  d  S)Nzunexpected-char-in-frameset)rJ   r~   )r>   r   r#   r#   r$   r   	  s    z4getPhases.<locals>.InFramesetPhase.processCharactersc             S   s   |  j  j |  d  S)N)r:   rG  )r>   r   r#   r#   r$   r  	  s    z3getPhases.<locals>.InFramesetPhase.startTagFramesetc             S   s$   |  j  j |  |  j  j j   d  S)N)r:   rG  r}   r  )r>   r   r#   r#   r$   rm  	  s    z0getPhases.<locals>.InFramesetPhase.startTagFramec             S   s   |  j  j d j |  S)Nr8  )rJ   rE   r   )r>   r   r#   r#   r$   rn  	  s    z3getPhases.<locals>.InFramesetPhase.startTagNoframesc             S   s"   |  j  j d i | d d 6 d  S)Nz unexpected-start-tag-in-framesetr<   )rJ   r~   )r>   r   r#   r#   r$   r  	  s    z0getPhases.<locals>.InFramesetPhase.startTagOtherc             S   s   |  j  j d j d k r, |  j j d  n |  j  j j   |  j j r{ |  j  j d j d k r{ |  j j d |  j _ n  d  S)Nr   r>  z)unexpected-frameset-in-frameset-innerhtmlr<  afterFramesetr{   r{   )	r:   r}   r<   rJ   r~   r  rO   rE   r]   )r>   r   r#   r#   r$   ro  	  s    z1getPhases.<locals>.InFramesetPhase.endTagFramesetc             S   s"   |  j  j d i | d d 6 d  S)Nzunexpected-end-tag-in-framesetr<   )rJ   r~   )r>   r   r#   r#   r$   r   
  s    z.getPhases.<locals>.InFramesetPhase.endTagOtherN)r5   r6   r7   rG   r   r   r  rm  rn  r  ro  r  r#   )rb  r#   r$   InFramesetPhase	  s   rq  c                   sj   e  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 S)z%getPhases.<locals>.AfterFramesetPhasec                s}     j  |  | |  t j d |  j f d |  j f g  |  _ |  j |  j _ t j d |  j f g  |  _	 |  j
 |  j	 _ d  S)Nr>  r  )rG   r   r  r`  rn  r^  r  r  rd  ra  r  )r>   rJ   r:   )rb  r#   r$   rG   
  s    z.getPhases.<locals>.AfterFramesetPhase.__init__c             S   s   d  S)Nr#   )r>   r#   r#   r$   r   
  s    z0getPhases.<locals>.AfterFramesetPhase.processEOFc             S   s   |  j  j d  d  S)Nzunexpected-char-after-frameset)rJ   r~   )r>   r   r#   r#   r$   r   
  s    z7getPhases.<locals>.AfterFramesetPhase.processCharactersc             S   s   |  j  j d j |  S)Nr  )rJ   rE   r   )r>   r   r#   r#   r$   rn  
  s    z6getPhases.<locals>.AfterFramesetPhase.startTagNoframesc             S   s"   |  j  j d i | d d 6 d  S)Nz#unexpected-start-tag-after-framesetr<   )rJ   r~   )r>   r   r#   r#   r$   r  
  s    z3getPhases.<locals>.AfterFramesetPhase.startTagOtherc             S   s   |  j  j d |  j  _ d  S)NafterAfterFrameset)rJ   rE   r]   )r>   r   r#   r#   r$   rd  "
  s    z0getPhases.<locals>.AfterFramesetPhase.endTagHtmlc             S   s"   |  j  j d i | d d 6 d  S)Nz!unexpected-end-tag-after-framesetr<   )rJ   r~   )r>   r   r#   r#   r$   r  %
  s    z1getPhases.<locals>.AfterFramesetPhase.endTagOtherN)
r5   r6   r7   rG   r   r   rn  r  rd  r  r#   )rb  r#   r$   AfterFramesetPhase
  s   rs  c                   sv   e  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 S)z&getPhases.<locals>.AfterAfterBodyPhasec                sD     j  |  | |  t j d |  j f g  |  _ |  j |  j _ d  S)Nr>  )rG   r   r  r`  r^  r  r  )r>   rJ   r:   )rb  r#   r$   rG   *
  s    z/getPhases.<locals>.AfterAfterBodyPhase.__init__c             S   s   d  S)Nr#   )r>   r#   r#   r$   r   2
  s    z1getPhases.<locals>.AfterAfterBodyPhase.processEOFc             S   s   |  j  j | |  j  j  d  S)N)r:   r\  rc  )r>   r   r#   r#   r$   r   5
  s    z5getPhases.<locals>.AfterAfterBodyPhase.processCommentc             S   s   |  j  j d j |  S)Nr8  )rJ   rE   r   )r>   r   r#   r#   r$   r   8
  s    z=getPhases.<locals>.AfterAfterBodyPhase.processSpaceCharactersc             S   s*   |  j  j d  |  j  j d |  j  _ | S)Nzexpected-eof-but-got-charr8  )rJ   r~   rE   r]   )r>   r   r#   r#   r$   r   ;
  s    z8getPhases.<locals>.AfterAfterBodyPhase.processCharactersc             S   s   |  j  j d j |  S)Nr8  )rJ   rE   r   )r>   r   r#   r#   r$   r`  @
  s    z3getPhases.<locals>.AfterAfterBodyPhase.startTagHtmlc             S   s8   |  j  j d i | d d 6 |  j  j d |  j  _ | S)Nzexpected-eof-but-got-start-tagr<   r8  )rJ   r~   rE   r]   )r>   r   r#   r#   r$   r  C
  s    z4getPhases.<locals>.AfterAfterBodyPhase.startTagOtherc             S   s8   |  j  j d i | d d 6 |  j  j d |  j  _ | S)Nzexpected-eof-but-got-end-tagr<   r8  )rJ   r~   rE   r]   )r>   r   r#   r#   r$   r   I
  s    z4getPhases.<locals>.AfterAfterBodyPhase.processEndTagN)r5   r6   r7   rG   r   r   r   r   r`  r  r   r#   )rb  r#   r$   AfterAfterBodyPhase)
  s   rt  c                   s   e  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 S)z*getPhases.<locals>.AfterAfterFramesetPhasec                sP     j  |  | |  t j d |  j f d |  j f g  |  _ |  j |  j _ d  S)Nr>  r  )rG   r   r  r`  startTagNoFramesr^  r  r  )r>   rJ   r:   )rb  r#   r$   rG   P
  s
    z3getPhases.<locals>.AfterAfterFramesetPhase.__init__c             S   s   d  S)Nr#   )r>   r#   r#   r$   r   Y
  s    z5getPhases.<locals>.AfterAfterFramesetPhase.processEOFc             S   s   |  j  j | |  j  j  d  S)N)r:   r\  rc  )r>   r   r#   r#   r$   r   \
  s    z9getPhases.<locals>.AfterAfterFramesetPhase.processCommentc             S   s   |  j  j d j |  S)Nr8  )rJ   rE   r   )r>   r   r#   r#   r$   r   _
  s    zAgetPhases.<locals>.AfterAfterFramesetPhase.processSpaceCharactersc             S   s   |  j  j d  d  S)Nzexpected-eof-but-got-char)rJ   r~   )r>   r   r#   r#   r$   r   b
  s    z<getPhases.<locals>.AfterAfterFramesetPhase.processCharactersc             S   s   |  j  j d j |  S)Nr8  )rJ   rE   r   )r>   r   r#   r#   r$   r`  e
  s    z7getPhases.<locals>.AfterAfterFramesetPhase.startTagHtmlc             S   s   |  j  j d j |  S)Nr  )rJ   rE   r   )r>   r   r#   r#   r$   ru  h
  s    z;getPhases.<locals>.AfterAfterFramesetPhase.startTagNoFramesc             S   s"   |  j  j d i | d d 6 d  S)Nzexpected-eof-but-got-start-tagr<   )rJ   r~   )r>   r   r#   r#   r$   r  k
  s    z8getPhases.<locals>.AfterAfterFramesetPhase.startTagOtherc             S   s"   |  j  j d i | d d 6 d  S)Nzexpected-eof-but-got-end-tagr<   )rJ   r~   )r>   r   r#   r#   r$   r   o
  s    z8getPhases.<locals>.AfterAfterFramesetPhase.processEndTagN)r5   r6   r7   rG   r   r   r   r   r`  ru  r  r   r#   )rb  r#   r$   AfterAfterFramesetPhaseO
  s   	rv  rT   rS   r=  r  r  r8  rF  r6  r  r2  r4  r.  r,  r)  r'  r  rx   r  r;  rp  rk  rr  )r   )rF   rV   rZ  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  rj  rl  rq  rs  rt  rv  r#   )rb  r$   rD     sd    %)#.cC  !-GAbYLd's/9%&$rD   ro   Fc             C   s9   | d  k r i  } n  i t  | d 6|  d 6| d 6| d 6S)Nr,   r<   rs   ry   )r   )r<   r,   rg   ry   r#   r#   r$   r  
  s    	r  c               @   s   e  Z d  Z d Z d S)rr   zError in parsed documentN)r5   r6   r7   rK  r#   r#   r#   r$   rr   
  s   rr   )%
__future__r   r   r   Zpip._vendor.sixr   r*   rg  r   r   r	   Ztreebuilders._baser
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r$  r   r'   r9   r  r   rD   r  	Exceptionrr   r#   r#   r#   r$   <module>   sD   	 i        