3 Pf @sFddlmZmZmZddlmZmZmZddlZyddl m Z Wn e k r`ddl m Z YnXddl mZddl mZddl mZdd lmZdd l mZdd lmZmZmZmZmZmZmZmZmZmZmZm Z!m"Z"m#Z#m$Z$m%Z%d!ddZ&d"ddZ'ddZ(Gddde)Z*ej+ddZ,ddZ-d#ddZ.Gdd d e/Z0dS)$)absolute_importdivisionunicode_literals)with_metaclassviewkeysPY3N) OrderedDict) _inputstream) _tokenizer) treebuilders)Marker)_utils)spaceCharactersasciiUpper2LowerspecialElementsheadingElements cdataElementsrcdataElements tokenTypes tagTokenTypes namespaceshtmlIntegrationPointElements"mathmlTextIntegrationPointElementsadjustForeignAttributesadjustMathMLAttributesadjustSVGAttributesEReparseExceptionetreeTcKs$tj|}t||d}|j|f|S)z.Parse a string or file-like object into a tree)namespaceHTMLElements)r getTreeBuilder HTMLParserparse)doc treebuilderr kwargstbpr)!/usr/lib/python3.6/html5parser.pyr#s  r#divcKs,tj|}t||d}|j|fd|i|S)N)r container)r r!r" parseFragment)r$r,r%r r&r'r(r)r)r*r-&s  r-csGfdddt}|S)NcseZdZfddZdS)z-method_decorator_metaclass..DecoratedcsBx0|jD]$\}}t|tjr&|}|||<q Wtj||||S)N)items isinstancetypes FunctionTypetype__new__)metaZ classnamebasesZ classDictZ attributeNameZ attribute)functionr)r*r3.s   z5method_decorator_metaclass..Decorated.__new__N)__name__ __module__ __qualname__r3r))r6r)r* Decorated-sr:)r2)r6r:r))r6r*method_decorator_metaclass,sr;c@seZdZdZd+ddZd,dd Zd d Zed d ZddZ ddZ ddZ ddZ ddZ ddZd-ddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*ZdS).r"zZHTML parser. Generates a tree structure from a stream of (possibly malformed) HTMLNFTcsL|_|dkrtjd}||_g_tfddt|jD_dS)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) Nrcs g|]\}}||jfqSr))tree).0namecls)selfr)r* Msz'HTMLParser.__init__..) strictr r!r<errorsdict getPhasesr.phases)r@r<rBr debugr))r@r*__init__<s    zHTMLParser.__init__r+c Ksh||_||_||_tj|fd|i||_|jy |jWn$tk rb|j|jYnXdS)Nparser) innerHTMLModer, scriptingr Z HTMLTokenizer tokenizerresetmainLoopr)r@stream innerHTMLr,rKr&r)r)r*_parsePs zHTMLParser._parsecCs|jjd|_g|_g|_d|_|jr|jj|_ |j t krL|j j |j _ n0|j tkrd|j j|j _ n|j dkr||j j|j _ n|jd|_|jj|jnd|_ |jd|_d|_d|_d|_dS)NFz no quirks plaintext beforeHtmlinitialT)r<rM firstStartTagrClog compatModerJr,lowerrPrrL rcdataStatestater rawtextStateplaintextStaterFphaseinsertHtmlElementresetInsertionModeZ lastPhaseZbeforeRCDataPhase framesetOK)r@r)r)r*rM^s*         zHTMLParser.resetcCst|dsdS|jjjdjS)zThe name of the character encoding that was used to decode the input stream, or :obj:`None` if that is not determined yet. rLNr)hasattrrLrO charEncodingr>)r@r)r)r*documentEncodings zHTMLParser.documentEncodingcCsJ|jdkr6|jtdkr6d|jko4|jdjtdkS|j|jftkSdS)Nzannotation-xmlmathmlencoding text/htmlapplication/xhtml+xml)rfrg)r> namespacer attributes translaterr)r@elementr)r)r*isHTMLIntegrationPoints   z!HTMLParser.isHTMLIntegrationPointcCs|j|jftkS)N)rhr>r)r@rkr)r)r*isMathMLTextIntegrationPointsz'HTMLParser.isMathMLTextIntegrationPointcCsjtd}td}td}td}td}td}td}x|jD]}d} |} x| dk r| } |jjrx|jjdnd} | r| jnd} | r| jnd} | d }||kr|j| d | jd id} qVt|jjd ksl| |jj ksl|j | r ||kr|d t ddgksl|||fksl| t dkrP| dkrP||krP|d dksl|j | rt||||fkrt|j}n |jd}||kr|j| } qV||kr|j| } qV||kr|j| } qV||kr|j| } qV||kr|j| } qV||krV|j| } qVW||krD| drD| d rD|jdd | d iqDWd}g}x(|rd|j|j|jj}|r>q>WdS)N CharactersZSpaceCharactersStartTagEndTagCommentZDoctype ParseErrorr r2datadatavarsrr>ZmglyphZ malignmarkrdzannotation-xmlsvginForeignContent selfClosingselfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)rnormalizedTokensr< openElementsrhr> parseErrorgetlendefaultNamespacerm frozensetrrlr]rFprocessCharactersprocessSpaceCharactersprocessStartTag processEndTagprocessCommentprocessDoctypeappend processEOF)r@ZCharactersTokenZSpaceCharactersTokenZ StartTagTokenZ EndTagTokenZ CommentTokenZ DoctypeTokenZParseErrorTokentokenZ prev_token new_token currentNodeZcurrentNodeNamespaceZcurrentNodeNamer2r]Z reprocessrFr)r)r*rNsp                   zHTMLParser.mainLoopccs x|jD]}|j|VqWdS)N)rLnormalizeToken)r@rr)r)r*rzs zHTMLParser.normalizedTokenscOs |j|ddf|||jjS)aParse 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) scripting - treat noscript elements as if javascript was turned on FN)rQr<Z getDocument)r@rOargsr&r)r)r*r#s zHTMLParser.parsecOs|j|df|||jjS)a2Parse 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) scripting - treat noscript elements as if javascript was turned on T)rQr<Z getFragment)r@rOrr&r)r)r*r-szHTMLParser.parseFragmentXXX-undefined-errorcCs@|dkr i}|jj|jjj||f|jrrPrhrrFr])r@ZlastZnewModesnodeZnodeNameZ new_phaser)r)r*r_!s> zHTMLParser.resetInsertionModecCsF|jj||dkr"|jj|j_n |jj|j_|j|_|jd|_dS)zYGeneric RCDATA/RAWTEXT Parsing algorithm contentType - RCDATA or RAWTEXT RAWTEXTtextN) r< insertElementrLr[rZrYr] originalPhaserF)r@rZ contentTyper)r)r*parseRCDataRawtextMs   zHTMLParser.parseRCDataRawtext)NFTF)Fr+F)rN)r7r8r9__doc__rHrQrMpropertyrcrlrmrNrzr#r-r|rrrrrr_rr)r)r)r*r"8s&  "  C  ,r"cs"dd}dd}Gdddt|||Gddd}Gd d d }Gfd d d }Gfd dd}Gfddd}Gfddd}Gfddd} Gfddd} Gfddd} Gfddd} Gfddd} Gfddd}Gfdd d }Gfd!d"d"}Gfd#d$d$}Gfd%d&d&}Gfd'd(d(}Gfd)d*d*}Gfd+d,d,}Gfd-d.d.}Gfd/d0d0}Gfd1d2d2}Gfd3d4d4}||||||| | | | | ||||||||||||d5S)6Ncs(tddtjDfdd}|S)z4Logger that records which phase processes each tokencss|]\}}||fVqdS)Nr))r=keyvaluer)r)r* csz)getPhases..log..c sjjdrt|dkr|d}yd|di}WnYnX|dtkr\|d|d<|jjj|jjjj|jj j j|j jj|f|f||S|f||SdS)NZprocessrr2r>) r7 startswithr~rrIrVrrLrZr] __class__)r@rr&rinfo)r6 type_namesr)r*wrappedfs   z'getPhases..log..wrapped)rDrr.)r6rr))r6rr*rVaszgetPhases..logcSs|r t|StSdS)N)r;r2)Z use_metaclassZmetaclass_funcr)r)r* getMetaclasszszgetPhases..getMetaclassc@sXeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ dS)zgetPhases..PhasezNBase class for helper object that implements each phase of processing cSs||_||_dS)N)rIr<)r@rIr<r)r)r*rHsz!getPhases..Phase.__init__cSstdS)N)NotImplementedError)r@r)r)r*rsz#getPhases..Phase.processEOFcSs|jj||jjddS)Nr ry)r< insertCommentr{)r@rr)r)r*rsz'getPhases..Phase.processCommentcSs|jjddS)Nzunexpected-doctype)rIr|)r@rr)r)r*rsz'getPhases..Phase.processDoctypecSs|jj|ddS)Nrs)r< insertText)r@rr)r)r*rsz*getPhases..Phase.processCharacterscSs|jj|ddS)Nrs)r<r)r@rr)r)r*rsz/getPhases..Phase.processSpaceCharacterscSs|j|d|S)Nr>)startTagHandler)r@rr)r)r*rsz(getPhases..Phase.processStartTagcSsl|jj r"|ddkr"|jjdx<|djD],\}}||jjdjkr0||jjdj|<q0Wd|j_dS)Nr>rz non-html-rootrsrF)rIrUr|r.r<r{ri)r@rattrrr)r)r* startTagHtmls  z%getPhases..Phase.startTagHtmlcSs|j|d|S)Nr>) endTagHandler)r@rr)r)r*rsz&getPhases..Phase.processEndTagN) r7r8r9rrHrrrrrrrrr)r)r)r*Phases rc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)zgetPhases..InitialPhasecSsdS)Nr))r@rr)r)r*rsz6getPhases..InitialPhase.processSpaceCharacterscSs|jj||jjdS)N)r<rdocument)r@rr)r)r*rsz.getPhases..InitialPhase.processCommentc8Ss|d}|d}|d}|d}|dks@|dk s@|dk rL|dkrL|jjd|dkrXd}|jj||dkrv|jt}| s|ddks|jdJs|dKks|jdLr|dks|r|jdDkrdE|j_n*|jdMs|jdNr|dk rdH|j_|jj dI|j_ dS)ONr>publicIdsystemIdcorrectrzabout:legacy-compatzunknown-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.dtdquirks -//w3c//dtd xhtml 1.0 frameset//$-//w3c//dtd xhtml 1.0 transitional//zlimited quirksrS)7rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr)rrr)rr)rr)rr) rIr|r<Z insertDoctyperjrrrXrWrFr])r@rr>rrrr)r)r*rs      z.getPhases..InitialPhase.processDoctypecSsd|j_|jjd|j_dS)NrrS)rIrWrFr])r@r)r)r* anythingElsesz,getPhases..InitialPhase.anythingElsecSs|jjd|j|S)Nzexpected-doctype-but-got-chars)rIr|r )r@rr)r)r*rs z1getPhases..InitialPhase.processCharacterscSs"|jjdd|di|j|S)Nz"expected-doctype-but-got-start-tagr>)rIr|r )r@rr)r)r*rsz/getPhases..InitialPhase.processStartTagcSs"|jjdd|di|j|S)Nz expected-doctype-but-got-end-tagr>)rIr|r )r@rr)r)r*rsz-getPhases..InitialPhase.processEndTagcSs|jjd|jdS)Nzexpected-doctype-but-got-eofT)rIr|r )r@r)r)r*r%s z*getPhases..InitialPhase.processEOFN) r7r8r9rrrr rrrrr)r)r)r* InitialPhases_r c@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)z"getPhases..BeforeHtmlPhasecSs&|jjtdd|jjd|j_dS)Nrror)r<Z insertRootimpliedTagTokenrIrFr])r@r)r)r*r^,sz4getPhases..BeforeHtmlPhase.insertHtmlElementcSs |jdS)NT)r^)r@r)r)r*r1sz-getPhases..BeforeHtmlPhase.processEOFcSs|jj||jjdS)N)r<rr)r@rr)r)r*r5sz1getPhases..BeforeHtmlPhase.processCommentcSsdS)Nr))r@rr)r)r*r8sz9getPhases..BeforeHtmlPhase.processSpaceCharacterscSs |j|S)N)r^)r@rr)r)r*r;sz4getPhases..BeforeHtmlPhase.processCharacterscSs |ddkrd|j_|j|S)Nr>rT)rIrUr^)r@rr)r)r*r?s z2getPhases..BeforeHtmlPhase.processStartTagcSs4|ddkr$|jjdd|din |j|SdS)Nr>rrrbrzunexpected-end-tag-before-html)rrrr )rIr|r^)r@rr)r)r*rEs  z0getPhases..BeforeHtmlPhase.processEndTagN) r7r8r9r^rrrrrrr)r)r)r*BeforeHtmlPhase*sr csXeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)z"getPhases..BeforeHeadPhasecsVj|||tjd|jfd|jfg|_|j|j_tjd|jfg|_ |j |j _dS)Nrrrr )rrrr ) rHrMethodDispatcherr startTagHeadr startTagOtherdefaultendTagImplyHeadr endTagOther)r@rIr<)rr)r*rHNs z+getPhases..BeforeHeadPhase.__init__cSs|jtdddS)NrroT)rr )r@r)r)r*r\sz-getPhases..BeforeHeadPhase.processEOFcSsdS)Nr))r@rr)r)r*r`sz9getPhases..BeforeHeadPhase.processSpaceCharacterscSs|jtdd|S)Nrro)rr )r@rr)r)r*rcsz4getPhases..BeforeHeadPhase.processCharacterscSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rgsz/getPhases..BeforeHeadPhase.startTagHtmlcSs0|jj||jjd|j_|jjd|j_dS)Nr inHeadry)r<rr{ headPointerrIrFr])r@rr)r)r*rjs z/getPhases..BeforeHeadPhase.startTagHeadcSs|jtdd|S)Nrro)rr )r@rr)r)r*rosz0getPhases..BeforeHeadPhase.startTagOthercSs|jtdd|S)Nrro)rr )r@rr)r)r*rssz2getPhases..BeforeHeadPhase.endTagImplyHeadcSs|jjdd|didS)Nzend-tag-after-implied-rootr>)rIr|)r@rr)r)r*rwsz.getPhases..BeforeHeadPhase.endTagOtherN) r7r8r9rHrrrrrrrrr))rr)r*BeforeHeadPhaseMs rcseZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!S)"zgetPhases..InHeadPhasec sj|||tjd|jfd|jfd|jfd|jfd|jfd|jfd |j fd |j fg|_ |j |j _ tjd |jfd|jfg|_|j|j_ dS)Nrtitlenoframesstylenoscriptscriptbasebasefontbgsoundcommandlinkr4rr r)rr)rrrrr )r rr)rHrrr startTagTitlestartTagNoFramesStylestartTagNoscriptstartTagScriptstartTagBaseLinkCommand startTagMetarrrr endTagHeadendTagHtmlBodyBrrr)r@rIr<)rr)r*rH|s  z'getPhases..InHeadPhase.__init__cSs |jdS)NT)r )r@r)r)r*rsz)getPhases..InHeadPhase.processEOFcSs |j|S)N)r )r@rr)r)r*rsz0getPhases..InHeadPhase.processCharacterscSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rsz+getPhases..InHeadPhase.startTagHtmlcSs|jjddS)Nz!two-heads-are-not-better-than-one)rIr|)r@rr)r)r*rsz+getPhases..InHeadPhase.startTagHeadcSs$|jj||jjjd|d<dS)NTrx)r<rr{pop)r@rr)r)r*r%s  z6getPhases..InHeadPhase.startTagBaseLinkCommandcSs|jj||jjjd|d<|d}|jjjjddkrd|krZ|jjjj|dnVd|krd|kr|dj d krt j |dj d }t j |}|j}|jjjj|dS) NTrxrsr Z tentativecharsetZcontentz http-equivz content-typezutf-8)r<rr{r)rIrLrOrbZchangeEncodingrXr Z EncodingBytesencodeZContentAttrParserr#)r@rrirsrIcodecr)r)r*r&s   z+getPhases..InHeadPhase.startTagMetacSs|jj|ddS)NZRCDATA)rIr)r@rr)r)r*r!sz,getPhases..InHeadPhase.startTagTitlecSs|jj|ddS)Nr)rIr)r@rr)r)r*r"sz4getPhases..InHeadPhase.startTagNoFramesStylecSs8|jjr|jj|dn|jj||jjd|j_dS)NrinHeadNoscript)rIrKrr<rrFr])r@rr)r)r*r#s z/getPhases..InHeadPhase.startTagNoscriptcSs<|jj||jjj|jj_|jj|j_|jjd|j_dS)Nr) r<rrIrLZscriptDataStaterZr]rrF)r@rr)r)r*r$s  z-getPhases..InHeadPhase.startTagScriptcSs |j|S)N)r )r@rr)r)r*rsz,getPhases..InHeadPhase.startTagOthercSs"|jjjj}|jjd|j_dS)N afterHead)rIr<r{r)rFr])r@rrr)r)r*r'sz)getPhases..InHeadPhase.endTagHeadcSs |j|S)N)r )r@rr)r)r*r(sz/getPhases..InHeadPhase.endTagHtmlBodyBrcSs|jjdd|didS)Nzunexpected-end-tagr>)rIr|)r@rr)r)r*rsz*getPhases..InHeadPhase.endTagOthercSs|jtddS)Nr)r'r )r@r)r)r*r sz+getPhases..InHeadPhase.anythingElseN)r7r8r9rHrrrrr%r&r!r"r#r$rr'r(rr r))rr)r* InHeadPhase{s  r/csxeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS)z&getPhases..InHeadNoscriptPhasecsfj|||tjd|jfd |jfd |jfg|_|j|j_tjd |j fd |j fg|_ |j |j _dS) Nrrrr r4rrrrr )rrr r4rr)rr) rHrrrr%startTagHeadNoscriptrrrendTagNoscriptendTagBrrr)r@rIr<)rr)r*rHs z/getPhases..InHeadNoscriptPhase.__init__cSs|jjd|jdS)Nzeof-in-head-noscriptT)rIr|r )r@r)r)r*rs z1getPhases..InHeadNoscriptPhase.processEOFcSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rsz5getPhases..InHeadNoscriptPhase.processCommentcSs|jjd|j|S)Nzchar-in-head-noscript)rIr|r )r@rr)r)r*rs z8getPhases..InHeadNoscriptPhase.processCharacterscSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rsz=getPhases..InHeadNoscriptPhase.processSpaceCharacterscSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rsz3getPhases..InHeadNoscriptPhase.startTagHtmlcSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r%sz>getPhases..InHeadNoscriptPhase.startTagBaseLinkCommandcSs|jjdd|didS)Nzunexpected-start-tagr>)rIr|)r@rr)r)r*r0 sz;getPhases..InHeadNoscriptPhase.startTagHeadNoscriptcSs"|jjdd|di|j|S)Nzunexpected-inhead-noscript-tagr>)rIr|r )r@rr)r)r*r sz4getPhases..InHeadNoscriptPhase.startTagOthercSs"|jjjj}|jjd|j_dS)Nr)rIr<r{r)rFr])r@rrr)r)r*r1sz5getPhases..InHeadNoscriptPhase.endTagNoscriptcSs"|jjdd|di|j|S)Nzunexpected-inhead-noscript-tagr>)rIr|r )r@rr)r)r*r2sz/getPhases..InHeadNoscriptPhase.endTagBrcSs|jjdd|didS)Nzunexpected-end-tagr>)rIr|)r@rr)r)r*rsz2getPhases..InHeadNoscriptPhase.endTagOthercSs|jtddS)Nr)r1r )r@r)r)r*r sz3getPhases..InHeadNoscriptPhase.anythingElseN)r7r8r9rHrrrrrr%r0rr1r2rr r))rr)r*InHeadNoscriptPhases r3cspeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS)z!getPhases..AfterHeadPhasec snj|||tjd|jfd|jfd|jfd|jfd |jfg|_|j |j_ tjd|j fg|_ |j |j _ dS)Nrrrrrrr r4rrrrrr ) rrrr r4rrrr)rrr )rHrrr startTagBodystartTagFramesetstartTagFromHeadrrrrr(rr)r@rIr<)rr)r*rH#s z*getPhases..AfterHeadPhase.__init__cSs |jdS)NT)r )r@r)r)r*r4sz,getPhases..AfterHeadPhase.processEOFcSs |j|S)N)r )r@rr)r)r*r8sz3getPhases..AfterHeadPhase.processCharacterscSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r<sz.getPhases..AfterHeadPhase.startTagHtmlcSs(d|j_|jj||jjd|j_dS)NFr)rIr`r<rrFr])r@rr)r)r*r4?s z.getPhases..AfterHeadPhase.startTagBodycSs |jj||jjd|j_dS)Nr)r<rrIrFr])r@rr)r)r*r5Ds z2getPhases..AfterHeadPhase.startTagFramesetcSst|jjdd|di|jjj|jj|jjdj|x4|jjdddD]}|jdkrN|jjj |PqNWdS)Nz#unexpected-start-tag-out-of-my-headr>rr rry) rIr|r<r{rrrFrr>remove)r@rrr)r)r*r6Hs z2getPhases..AfterHeadPhase.startTagFromHeadcSs|jjdd|didS)Nzunexpected-start-tagr>)rIr|)r@rr)r)r*rRsz.getPhases..AfterHeadPhase.startTagHeadcSs |j|S)N)r )r@rr)r)r*rUsz/getPhases..AfterHeadPhase.startTagOthercSs |j|S)N)r )r@rr)r)r*r(Ysz2getPhases..AfterHeadPhase.endTagHtmlBodyBrcSs|jjdd|didS)Nzunexpected-end-tagr>)rIr|)r@rr)r)r*r]sz-getPhases..AfterHeadPhase.endTagOthercSs.|jjtdd|jjd|j_d|j_dS)NrrorT)r<rr rIrFr]r`)r@r)r)r*r `sz.getPhases..AfterHeadPhase.anythingElseN)r7r8r9rHrrrr4r5r6rrr(rr r))rr)r*AfterHeadPhase"s  r8cseZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!d?d@Z"dAdBZ#dCdDZ$dEdFZ%dGdHZ&dIdJZ'dKdLZ(dMdNZ)dOdPZ*dQdRZ+dSdTZ,dUdVZ-dWdXZ.dYdZZ/d[d\Z0d]d^Z1d_d`Z2dadbZ3dcddZ4dedfZ5dgS)hzgetPhases..InBodyPhasec,sj||||j|_tjd|jfdd|jfd |jfd |jfde|j ft |j fdf|j fd&|j fdg|jfd*|jfd+|jfdh|jfd8|jfd9|jfdi|jfd=|jfd>|jfdj|jfdk|jfdH|jfdI|jfdJ|jfdK|jfdL|jfdM|jfdN|jfdl|j fdQ|j!fdm|j"fdn|j#fdV|j$fdW|j%fdo|j&fg!|_'|j(|j'_)tjd |j*fd|j+fdp|j,fd&|j-fd |j.fdq|j/ft |j0fdr|j1fds|j2fd@|j3fg |_4|j5|j4_)dS)tNrrrrrr r4rrrrraddressarticleaside blockquotecenterdetailsdirr+dlfieldset figcaptionfigurefooterheaderhgroupmainmenunavolr(sectionsummaryulprelistingformlidddtrRabbigcodeemfontissmallstrikestrongttunobrbuttonappletmarqueeobjectZxmprarear embedimgkeygenwbrparamsourcetrackinputhrimageisindextextareaZiframernoembedrrrprtoptionoptgroupZmathrurcolrframerrrrrrrdialog) rrrrr r4rrr)r9r:r;r<r=r>r?r+r@rArBrCrDrErFrGrHrIrJr(rKrLrM)rNrO)rQrRrS) rUrVrWrXrYrZr[r\r]r^r_r`)rcrdre)rfr rgrhrirj)rkrlrm)rsr)rtru)rvrw) rrxrryrrrrrrr)r9r:r;r<rbr=r>rzr?r+r@rArBrCrDrErFrOrGrHrIrJrNrKrLrM)rRrSrQ)rTrUrVrWrXrYrZrar[r\r]r^r_r`)rcrdre)6rHprocessSpaceCharactersNonPrerrrrstartTagProcessInHeadr4r5startTagClosePrstartTagHeadingstartTagPreListing startTagFormstartTagListItemstartTagPlaintext startTagAstartTagFormatting startTagNobrstartTagButtonstartTagAppletMarqueeObject startTagXmp startTagTablestartTagVoidFormattingstartTagParamSource startTagInput startTagHr startTagImagestartTagIsIndexstartTagTextareastartTagIFramer#startTagRawtextstartTagSelect startTagRpRt startTagOpt startTagMath startTagSvgstartTagMisplacedrrr endTagBody endTagHtml endTagBlock endTagFormendTagPendTagListItem endTagHeadingendTagFormattingendTagAppletMarqueeObjectr2rr)r@rIr<)rr)r*rHhs~ z'getPhases..InBodyPhase.__init__cSs$|j|jko"|j|jko"|j|jkS)N)r>rhri)r@Znode1Znode2r)r)r*isMatchingFormattingElements  z:getPhases..InBodyPhase.isMatchingFormattingElementcSs|jj||jjd}g}x<|jjdddD]&}|tkr@Pq0|j||r0|j|q0Wt|dkrx|jjj|d|jjj|dS)Nr ryryry) r<rr{activeFormattingElementsr rrr~r7)r@rrkZmatchingElementsrr)r)r*addFormattingElements    z3getPhases..InBodyPhase.addFormattingElementc Ss@td}x2|jjdddD]}|j|kr|jjdPqWdS)NrRrSrQr(rrrrrrrrr z expected-closing-tag-but-got-eof) rRrSrQr(rrrrrrrrry)rr<r{r>rIr|)r@Zallowed_elementsrr)r)r*rs  z)getPhases..InBodyPhase.processEOFcSsh|d}|j|_|jdrJ|jjdjdkrJ|jjd j rJ|dd}|rd|jj|jj|dS) Nrs r rNrOrrry)rNrOrrry) r{rrr<r{r>Z hasContent#reconstructActiveFormattingElementsr)r@rrsr)r)r*!processSpaceCharactersDropNewlines   z@getPhases..InBodyPhase.processSpaceCharactersDropNewlinecSsT|ddkrdS|jj|jj|d|jjrPtdd|dDrPd|j_dS)NrscSsg|] }|tkqSr))r)r=charr)r)r*rAszDgetPhases..InBodyPhase.processCharacters..F)r<rrrIr`any)r@rr)r)r*rs  z0getPhases..InBodyPhase.processCharacterscSs|jj|jj|ddS)Nrs)r<rr)r@rr)r)r*r{s z;getPhases..InBodyPhase.processSpaceCharactersNonPrecSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r|sz4getPhases..InBodyPhase.startTagProcessInHeadcSs|jjdddit|jjdks||jjdjdkr6nFd|j_x<|djD],\}}||jjdjkrL||jjdj|<qLWdS)Nzunexpected-start-tagr>rr Frs) rIr|r~r<r{r>r`r.ri)r@rrrr)r)r*r4sz+getPhases..InBodyPhase.startTagBodycSs|jjdddit|jjdks|jjdjdkr6nt|jjs@nj|jjdjrj|jjdjj|jjdx"|jjdjdkr|jjj qlW|jj ||jj d|j_ dS) Nzunexpected-start-tagr>rr rrrry) rIr|r~r<r{r>r`parent removeChildr)rrFr])r@rr)r)r*r5s" z/getPhases..InBodyPhase.startTagFramesetcSs.|jjdddr|jtd|jj|dS)Nr(rb)variant)r<elementInScoperr r)r@rr)r)r*r} sz-getPhases..InBodyPhase.startTagClosePcSs>|jjdddr|jtd|jj|d|j_|j|_dS)Nr(rb)rF) r<rrr rrIr`rr)r@rr)r)r*rs  z1getPhases..InBodyPhase.startTagPreListingcSsZ|jjr|jjdddin:|jjdddr:|jtd|jj||jjd|j_dS) Nzunexpected-start-tagr>rPr(rb)rr ry) r< formPointerrIr|rrr rr{)r@rr)r)r*rs  z+getPhases..InBodyPhase.startTagFormcSsd|j_dgddgddgd}||d}xLt|jjD]<}|j|kr^|jjjt|jdP|j t kr8|jd kr8Pq8W|jj d d d r|jjjtd d|jj |dS)NFrQrSrR)rQrSrRr>rpr9r+r(rb)r)r9r+r() rIr`reversedr<r{r>r]rr  nameTuplerrr)r@rZ stopNamesMapZ stopNamesrr)r)r*rs"      z/getPhases..InBodyPhase.startTagListItemcSs>|jjdddr|jtd|jj||jjj|jj_dS)Nr(rb)r) r<rrr rrIrLr\rZ)r@rr)r)r*r4s z0getPhases..InBodyPhase.startTagPlaintextcSsb|jjdddr|jtd|jjdjtkrR|jjdd|di|jjj |jj |dS)Nr(rb)rr zunexpected-start-tagr>ry) r<rrr r{r>rrIr|r)r)r@rr)r)r*r~:s  z.getPhases..InBodyPhase.startTagHeadingcSs~|jjd}|rf|jjdddd|jtd||jjkrL|jjj|||jjkrf|jjj||jj |j |dS)NrTz$unexpected-start-tag-implies-end-tag) startNameendName) r<!elementInActiveFormattingElementsrIr|rr r{r7rrr)r@rZ afeAElementr)r)r*rBs     z(getPhases..InBodyPhase.startTagAcSs|jj|j|dS)N)r<rr)r@rr)r)r*rOs z1getPhases..InBodyPhase.startTagFormattingcSsP|jj|jjdrB|jjdddd|jtd|jj|j|dS)Nraz$unexpected-start-tag-implies-end-tag)rr)r<rrrIr|rr r)r@rr)r)r*rSs    z+getPhases..InBodyPhase.startTagNobrcSsT|jjdr2|jjdddd|jtd|S|jj|jj|d|j_dS)Nrbz$unexpected-start-tag-implies-end-tag)rrF) r<rrIr|rr rrr`)r@rr)r)r*r]s    z-getPhases..InBodyPhase.startTagButtoncSs0|jj|jj||jjjtd|j_dS)NF)r<rrrrr rIr`)r@rr)r)r*rhs  z:getPhases..InBodyPhase.startTagAppletMarqueeObjectcSsB|jjdddr|jtd|jjd|j_|jj|ddS)Nr(rb)rFr)r<rrr rrIr`r)r@rr)r)r*rns  z*getPhases..InBodyPhase.startTagXmpcSsR|jjdkr*|jjdddr*|jtd|jj|d|j_|jjd|j_ dS)Nrr(rb)rFr) rIrWr<rrr rr`rFr])r@rr)r)r*rus   z,getPhases..InBodyPhase.startTagTablecSs6|jj|jj||jjjd|d<d|j_dS)NTrxF)r<rrr{r)rIr`)r@rr)r)r*r}s    z5getPhases..InBodyPhase.startTagVoidFormattingcSs@|jj}|j|d|dkr<|ddjtdkr<||j_dS)Nr2rshidden)rIr`rrjr)r@rr`r)r)r*rs   z,getPhases..InBodyPhase.startTagInputcSs$|jj||jjjd|d<dS)NTrx)r<rr{r))r@rr)r)r*rs  z2getPhases..InBodyPhase.startTagParamSourcecSsJ|jjdddr|jtd|jj||jjjd|d<d|j_dS)Nr(rb)rTrxF) r<rrr rr{r)rIr`)r@rr)r)r*rs   z)getPhases..InBodyPhase.startTagHrcSs6|jjdddd|jtdd|d|dddS) Nzunexpected-start-tag-treated-asrprh) originalNamenewNamerorsrw)rirw)rIr|rr )r@rr)r)r*rs   z,getPhases..InBodyPhase.startTagImagecSs|jjdddi|jjrdSi}d|dkr>|dd|d<|jtdd|d|jtd d|jtd dd |dkr|dd }nd }|jtd |d|dj}d|kr|d=d |kr|d =d|d<|jtdd||dd|j td |jtd d|j tddS)Nzdeprecated-tagr>rqactionrsrPro)riroZlabelpromptz3This is a searchable index. Enter search keywords: rn)r2rsrnrw)rirw) rIr|r<rrr rrcopyr)r@rZ form_attrsrrir)r)r*rs6      z.getPhases..InBodyPhase.startTagIsIndexcSs0|jj||jjj|jj_|j|_d|j_dS)NF) r<rrIrLrYrZrrr`)r@rr)r)r*rs z/getPhases..InBodyPhase.startTagTextareacSsd|j_|j|dS)NF)rIr`r)r@rr)r)r*rsz-getPhases..InBodyPhase.startTagIFramecSs"|jjr|j|n |j|dS)N)rIrKrr)r@rr)r)r*r#s z/getPhases..InBodyPhase.startTagNoscriptcSs|jj|ddS)z8iframe, noembed noframes, noscript(if scripting enabled)rN)rIr)r@rr)r)r*rsz.getPhases..InBodyPhase.startTagRawtextcSs@|jjdjdkr$|jjjtd|jj|jjj|dS)Nr rvry) r<r{r>rIr]rr rr)r@rr)r)r*rs z*getPhases..InBodyPhase.startTagOptcSs|jj|jj|d|j_|jj|jjd|jjd|jjd|jjd|jjd|jjdfkrx|jjd|j_n|jjd |j_dS) NFrrrrrrinSelectInTabler)r<rrrIr`r]rF)r@rr)r)r*rs      z-getPhases..InBodyPhase.startTagSelectcSsB|jjdr2|jj|jjdjdkr2|jj|jj|dS)Nrubyr ry)r<rgenerateImpliedEndTagsr{r>rIr|r)r@rr)r)r*rs    z+getPhases..InBodyPhase.startTagRpRtcSsZ|jj|jj||jj|td|d<|jj||drV|jjjd|d<dS)NrdrhrwTrx) r<rrIrrrrr{r))r@rr)r)r*rs      z+getPhases..InBodyPhase.startTagMathcSsZ|jj|jj||jj|td|d<|jj||drV|jjjd|d<dS)NrurhrwTrx) r<rrIrrrrr{r))r@rr)r)r*rs      z*getPhases..InBodyPhase.startTagSvgcSs|jjdd|didS)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" zunexpected-start-tag-ignoredr>N)rIr|)r@rr)r)r*rsz0getPhases..InBodyPhase.startTagMisplacedcSs|jj|jj|dS)N)r<rr)r@rr)r)r*rs z,getPhases..InBodyPhase.startTagOthercSs|jjdddsD|jtdd|jjdddi|jtddnX|jjd|jjd j dkrt|jjdddi|jjj }x|j dkr|jjj }qWdS) Nr(rb)rrozunexpected-end-tagr>rpr ry) r<rr}r rIr|rrr{r>r))r@rrr)r)r*rs   z&getPhases..InBodyPhase.endTagPcSs|jjds|jjdS|jjdjdkrlx>|jjddD]*}|jtdkr>|jjdd|jdPq>W|jjd|j_dS)Nrr rRrSrQrwrvr(rtrurrrrrrrz$expected-one-end-tag-but-got-another)gotName expectedName afterBodyry)rRrSrQrwrvr(rtrurrrrrrrr) r<rrIr|r{r>rrFr])r@rrr)r)r*r!s  z)getPhases..InBodyPhase.endTagBodycSs"|jjdr|jtd|SdS)Nr)r<rrr )r@rr)r)r*r3s z)getPhases..InBodyPhase.endTagHtmlcSs|ddkr|j|_|jj|d}|r2|jj|jjdj|dkr^|jjdd|di|r|jjj }x|j|dkr|jjj }qpWdS)Nr>rNr zend-tag-too-earlyry) r{rr<rrr{r>rIr|r))r@rZinScoperr)r)r*r9s   z*getPhases..InBodyPhase.endTagBlockcSsx|jj}d|j_|dks&|jj| r:|jjdddin:|jj|jjd|krf|jjdddi|jjj|dS)Nzunexpected-end-tagr>rPr zend-tag-too-early-ignoredry)r<rrrIr|rr{r7)r@rrr)r)r*rGs   z)getPhases..InBodyPhase.endTagFormcSs|ddkrd}nd}|jj|d|dsB|jjdd|dinj|jj|dd|jjd j|dkr|jjdd|di|jjj}x|j|dkr|jjj}qWdS) Nr>rQlist)rzunexpected-end-tag)excluder zend-tag-too-earlyry)r<rrIr|rr{r>r))r@rrrr)r)r*rTs  z-getPhases..InBodyPhase.endTagListItemcSsx$tD]}|jj|r|jjPqW|jjdj|dkrR|jjdd|dixBtD]:}|jj|rX|jjj}x|jtkr|jjj}qvWPqXWdS)Nr r>zend-tag-too-earlyry) rr<rrr{r>rIr|r))r@ritemr)r)r*res       z,getPhases..InBodyPhase.endTagHeadingcSs"d}x|dkr|d7}|jj|d}| sL||jjkrZ|jj|j rZ|j|dS||jjkr|jjdd|di|jjj |dS|jj|js|jjdd|didS||jjdkr|jjdd|di|jjj |}d}x,|jj|dD]}|j t kr|}PqW|dkrb|jjj }x||krN|jjj }q4W|jjj |dS|jj|d}|jjj |}|} } d} |jjj | } x| d krh| d7} | d8} |jj| } | |jjkr|jjj | q| |krP| |kr |jjj | d}| j} | |jj|jjj | <| |jj|jjj | <| } | jrV| jj| | j| | } qW| jr~| jj| |jtdkr|jj\}}|j| |n |j| |j} |j| |j| |jjj ||jjj|| |jjj ||jjj|jjj |d| qWdS)z)The much-feared adoption agency algorithmrr r>Nzadoption-agency-1.2zadoption-agency-4.4zadoption-agency-1.3rrrrrrry)rrrrr)r<rr{rr>rrIr|rr7indexrrr)Z cloneNoderrZ appendChildrZgetTableMisnestedNodePosition insertBeforeZreparentChildreninsert)r@rZouterLoopCounterZformattingElementZafeIndexZ furthestBlockrkZcommonAncestorZbookmarkZlastNoderZinnerLoopCounterrZclonerrr)r)r*rts                    z/getPhases..InBodyPhase.endTagFormattingcSs|jj|dr|jj|jjdj|dkrF|jjdd|di|jj|dr|jjj}x|j|dkr|jjj}qdW|jjdS)Nr>r zend-tag-too-earlyry) r<rrr{r>rIr|r)clearActiveFormattingElements)r@rrkr)r)r*rs  z8getPhases..InBodyPhase.endTagAppletMarqueeObjectcSs@|jjdddd|jj|jjtdd|jjjdS)Nzunexpected-end-tag-treated-asr z br element)rrro)rIr|r<rrr r{r))r@rr)r)r*r2#s   z'getPhases..InBodyPhase.endTagBrcSsx|jjdddD]}|j|dkr~|jj|dd|jjdj|dkrd|jjdd|dix|jjj|krxqfWPq|jtkr|jjdd|diPqWdS)Nr r>)rzunexpected-end-tagryry) r<r{r>rrIr|r)rr)r@rrr)r)r*r*s z*getPhases..InBodyPhase.endTagOtherN)6r7r8r9rHrrrrrr{r|r4r5r}rrrrr~rrrrrrrrrrrrrrrr#rrrrrrrrrrrrrrrrrr2rr))rr)r* InBodyPhaseesh G             $ rcs@eZdZfddZddZddZddZd d Zd d Zd S)zgetPhases..TextPhasecsFj|||tjg|_|j|j_tjd|jfg|_|j|j_dS)Nr) rHrrrrr endTagScriptrr)r@rIr<)rr)r*rH9s   z%getPhases..TextPhase.__init__cSs|jj|ddS)Nrs)r<r)r@rr)r)r*rAsz.getPhases..TextPhase.processCharacterscSs8|jjdd|jjdji|jjj|jj|j_dS)Nz&expected-named-closing-tag-but-got-eofr>r Try)rIr|r<r{r>r)rr])r@r)r)r*rDs   z'getPhases..TextPhase.processEOFcSsdS)Nr))r@rr)r)r*rKsz*getPhases..TextPhase.startTagOthercSs|jjj}|jj|j_dS)N)r<r{r)rIrr])r@rrr)r)r*rNs z)getPhases..TextPhase.endTagScriptcSs|jjj|jj|j_dS)N)r<r{r)rIrr])r@rr)r)r*rUs z(getPhases..TextPhase.endTagOtherN) r7r8r9rHrrrrrr))rr)r* TextPhase8s  rcseZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'S)(zgetPhases..InTablePhasec sj|||tjd|jfd|jfd|jfd|jfd|jfd|jfd |j fd|j fd|j fd|j fg |_ |j|j _tjd |jfd|jfg|_|j|j_dS)NrrrrxrrrrrrrrrrnrPr)rrr)rrr)rr) rrrxrrrrrrrr)rHrrrstartTagCaptionstartTagColgroup startTagColstartTagRowGroupstartTagImplyTbodyrstartTagStyleScriptrrrrr endTagTable endTagIgnorerr)r@rIr<)rr)r*rH[s$ z(getPhases..InTablePhase.__init__cSs(x"|jjdjdkr"|jjjqWdS)Nr rrry)rr)r<r{r>r))r@r)r)r*clearStackToTableContextssz8getPhases..InTablePhase.clearStackToTableContextcSs$|jjdjdkr |jjdndS)Nr rz eof-in-tablery)r<r{r>rIr|)r@r)r)r*r|sz*getPhases..InTablePhase.processEOFcSs4|jj}|jjd|j_||jj_|jjj|dS)N inTableText)rIr]rFrr)r@rrr)r)r*rs z6getPhases..InTablePhase.processSpaceCharacterscSs4|jj}|jjd|j_||jj_|jjj|dS)Nr)rIr]rFrr)r@rrr)r)r*rs z1getPhases..InTablePhase.processCharacterscSs&d|j_|jjdj|d|j_dS)NTrF)r<insertFromTablerIrFr)r@rr)r)r*rsz*getPhases..InTablePhase.insertTextcSs6|j|jjjt|jj||jjd|j_dS)Nr) rr<rrr rrIrFr])r@rr)r)r*rs z/getPhases..InTablePhase.startTagCaptioncSs(|j|jj||jjd|j_dS)Nr)rr<rrIrFr])r@rr)r)r*rs z0getPhases..InTablePhase.startTagColgroupcSs|jtdd|S)Nrro)rr )r@rr)r)r*rsz+getPhases..InTablePhase.startTagColcSs(|j|jj||jjd|j_dS)Nr)rr<rrIrFr])r@rr)r)r*rs z0getPhases..InTablePhase.startTagRowGroupcSs|jtdd|S)Nrro)rr )r@rr)r)r*rsz2getPhases..InTablePhase.startTagImplyTbodycSs6|jjdddd|jjjtd|jjs2|SdS)Nz$unexpected-start-tag-implies-end-tagr)rr)rIr|r]rr rP)r@rr)r)r*rs  z-getPhases..InTablePhase.startTagTablecSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rsz3getPhases..InTablePhase.startTagStyleScriptcSsVd|dkrH|ddjtdkrH|jjd|jj||jjjn |j|dS)Nr2rsrz unexpected-hidden-input-in-table) rjrrIr|r<rr{r)r)r@rr)r)r*rs    z-getPhases..InTablePhase.startTagInputcSsD|jjd|jjdkr@|jj||jjd|j_|jjjdS)Nzunexpected-form-in-tabler ry)rIr|r<rrr{r))r@rr)r)r*rs    z,getPhases..InTablePhase.startTagFormcSs<|jjdd|did|j_|jjdj|d|j_dS)Nz)unexpected-start-tag-implies-table-voodoor>TrF)rIr|r<rrFr)r@rr)r)r*rsz-getPhases..InTablePhase.startTagOthercSs|jjdddr|jj|jjdjdkrJ|jjdd|jjdjdx"|jjdjdkrl|jjjqLW|jjj|jjn |jjdS) Nr)rr zend-tag-too-early-named)rrryryry) r<rrr{r>rIr|r)r_)r@rr)r)r*rs   z+getPhases..InTablePhase.endTagTablecSs|jjdd|didS)Nzunexpected-end-tagr>)rIr|)r@rr)r)r*rsz,getPhases..InTablePhase.endTagIgnorecSs<|jjdd|did|j_|jjdj|d|j_dS)Nz'unexpected-end-tag-implies-table-voodoor>TrF)rIr|r<rrFr)r@rr)r)r*rsz+getPhases..InTablePhase.endTagOtherN)r7r8r9rHrrrrrrrrrrrrrrrrrrr))rr)r* InTablePhaseYs&   rcsPeZdZfddZddZddZddZd d Zd d Zd dZ ddZ dS)z#getPhases..InTableTextPhasecsj|||d|_g|_dS)N)rHrcharacterTokens)r@rIr<)rr)r*rHsz,getPhases..InTableTextPhase.__init__cSsddjdd|jD}tdd|DrJtd|d}|jjdj|n|rZ|jj|g|_dS)NrcSsg|] }|dqS)rsr))r=rr)r)r*rAszGgetPhases..InTableTextPhase.flushCharacters..cSsg|] }|tkqSr))r)r=rr)r)r*rAsrn)r2rsr)joinrrrrIrFrr<)r@rsrr)r)r*flushCharacterss z3getPhases..InTableTextPhase.flushCharacterscSs|j|j|j_|S)N)rrrIr])r@rr)r)r*rs z2getPhases..InTableTextPhase.processCommentcSs|j|j|j_dS)NT)rrrIr])r@r)r)r*rs z.getPhases..InTableTextPhase.processEOFcSs |ddkrdS|jj|dS)Nrsr)rr)r@rr)r)r*rs z5getPhases..InTableTextPhase.processCharacterscSs|jj|dS)N)rr)r@rr)r)r*rsz:getPhases..InTableTextPhase.processSpaceCharacterscSs|j|j|j_|S)N)rrrIr])r@rr)r)r*r s z3getPhases..InTableTextPhase.processStartTagcSs|j|j|j_|S)N)rrrIr])r@rr)r)r*rs z1getPhases..InTableTextPhase.processEndTagN) r7r8r9rHrrrrrrrr))rr)r*InTableTextPhases  rcs`eZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)z!getPhases..InCaptionPhasec sfj|||tjd|jfd |jfg|_|j|j_tjd|jfd |j fd|j fg|_ |j |j _dS)Nrrrxrrrrrrrrr) rrxrrrrrrr) rrxrrrrrrrr) rHrrrstartTagTableElementrrr endTagCaptionrrrr)r@rIr<)rr)r*rHs z*getPhases..InCaptionPhase.__init__cSs|jjddd S)Nrr)r)r<r)r@r)r)r*ignoreEndTagCaption+sz5getPhases..InCaptionPhase.ignoreEndTagCaptioncSs|jjdjdS)Nr)rIrFr)r@r)r)r*r.sz,getPhases..InCaptionPhase.processEOFcSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r1sz3getPhases..InCaptionPhase.processCharacterscSs0|jj|j}|jjjtd|s,|SdS)Nr)rIr|rr]rr )r@r ignoreEndTagr)r)r*r4s  z6getPhases..InCaptionPhase.startTagTableElementcSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r<sz/getPhases..InCaptionPhase.startTagOthercSs|js|jj|jjdjdkrB|jjdd|jjdjdx"|jjdjdkrd|jjjqDW|jjj|jj|jj d|j_ n |jjdS) Nr rz$expected-one-end-tag-but-got-another)rrrryryry) rr<rr{r>rIr|r)rrFr])r@rr)r)r*r?s   z/getPhases..InCaptionPhase.endTagCaptioncSs0|jj|j}|jjjtd|s,|SdS)Nr)rIr|rr]rr )r@rrr)r)r*rQs  z-getPhases..InCaptionPhase.endTagTablecSs|jjdd|didS)Nzunexpected-end-tagr>)rIr|)r@rr)r)r*rXsz.getPhases..InCaptionPhase.endTagIgnorecSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r[sz-getPhases..InCaptionPhase.endTagOtherN) r7r8r9rHrrrrrrrrrr))rr)r*InCaptionPhases rcsXeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)z%getPhases..InColumnGroupPhasecs^j|||tjd|jfd|jfg|_|j|j_tjd|jfd|j fg|_ |j |j _dS)Nrrxr) rHrrrrrrrendTagColgroup endTagColrr)r@rIr<)rr)r*rHas z.getPhases..InColumnGroupPhase.__init__cSs|jjdjdkS)Nr rry)r<r{r>)r@r)r)r*ignoreEndTagColgrouppsz:getPhases..InColumnGroupPhase.ignoreEndTagColgroupcSs8|jjdjdkrdS|j}|jtd|s4dSdS)Nr rrTry)r<r{r>rrr )r@rr)r)r*rss z0getPhases..InColumnGroupPhase.processEOFcSs"|j}|jtd|s|SdS)Nr)rrr )r@rrr)r)r*r}sz7getPhases..InColumnGroupPhase.processCharacterscSs$|jj||jjjd|d<dS)NTrx)r<rr{r))r@rr)r)r*rs  z1getPhases..InColumnGroupPhase.startTagColcSs"|j}|jtd|s|SdS)Nr)rrr )r@rrr)r)r*rsz3getPhases..InColumnGroupPhase.startTagOthercSs4|jr|jjn|jjj|jjd|j_dS)Nr)rrIr|r<r{r)rFr])r@rr)r)r*rs  z4getPhases..InColumnGroupPhase.endTagColgroupcSs|jjdddidS)Nz no-end-tagr>rx)rIr|)r@rr)r)r*rsz/getPhases..InColumnGroupPhase.endTagColcSs"|j}|jtd|s|SdS)Nr)rrr )r@rrr)r)r*rsz1getPhases..InColumnGroupPhase.endTagOtherN) r7r8r9rHrrrrrrrrr))rr)r*InColumnGroupPhase^s   rcsxeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS)z#getPhases..InTableBodyPhasec svj|||tjd|jfd|jfd |jfd|jfg|_|j|j_ tjd|j fd |j fd|j fg|_ |j|j _ dS)Nrrrrrrxrrrrrr)rr)rrxrrrr)rrr)rrrxrrrrr)rHrrr startTagTrstartTagTableCellstartTagTableOtherrrrendTagTableRowGrouprrrr)r@rIr<)rr)r*rHs z,getPhases..InTableBodyPhase.__init__cSs:x"|jjdjdkr"|jjjqW|jjdjdkr6dS) Nr rrrrry)rrrrry)r<r{r>r))r@r)r)r*clearStackToTableBodyContexts z@getPhases..InTableBodyPhase.clearStackToTableBodyContextcSs|jjdjdS)Nr)rIrFr)r@r)r)r*rsz.getPhases..InTableBodyPhase.processEOFcSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rsz:getPhases..InTableBodyPhase.processSpaceCharacterscSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rsz5getPhases..InTableBodyPhase.processCharacterscSs(|j|jj||jjd|j_dS)Nr)rr<rrIrFr])r@rr)r)r*rs z.getPhases..InTableBodyPhase.startTagTrcSs*|jjdd|di|jtdd|S)Nzunexpected-cell-in-table-bodyr>rro)rIr|rr )r@rr)r)r*rsz5getPhases..InTableBodyPhase.startTagTableCellcSsb|jjddds0|jjddds0|jjdddrT|j|jt|jjdj|S|jjdS)Nrr)rrrr ry) r<rrrr r{r>rIr|)r@rr)r)r*rsz6getPhases..InTableBodyPhase.startTagTableOthercSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rsz1getPhases..InTableBodyPhase.startTagOthercSsT|jj|dddr:|j|jjj|jjd|j_n|jjdd|didS)Nr>r)rrz unexpected-end-tag-in-table-body) r<rrr{r)rIrFr]r|)r@rr)r)r*rs  z7getPhases..InTableBodyPhase.endTagTableRowGroupcSsb|jjddds0|jjddds0|jjdddrT|j|jt|jjdj|S|jjdS)Nrr)rrrr ry) r<rrrr r{r>rIr|)r@rr)r)r*rsz/getPhases..InTableBodyPhase.endTagTablecSs|jjdd|didS)Nz unexpected-end-tag-in-table-bodyr>)rIr|)r@rr)r)r*rsz0getPhases..InTableBodyPhase.endTagIgnorecSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rsz/getPhases..InTableBodyPhase.endTagOtherN)r7r8r9rHrrrrrrrrrrrrr))rr)r*InTableBodyPhases    rcseZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS)zgetPhases..InRowPhasec svj|||tjd|jfd |jfd|jfg|_|j|j_tjd |j fd |j fd|j fd|j fg|_ |j|j _dS)Nrrrrrxrrrrrrr)rr)rrxrrrrr)rrr)rrrxrrrr)rHrrrrrrrrendTagTrrrrrr)r@rIr<)rr)r*rHs z&getPhases..InRowPhase.__init__cSsDx>|jjdjdkr>|jjdd|jjdji|jjjqWdS) Nr rrz'unexpected-implied-end-tag-in-table-rowr>ry)rrry)r<r{r>rIr|r))r@r)r)r*clearStackToTableRowContextsz9getPhases..InRowPhase.clearStackToTableRowContextcSs|jjddd S)Nrr)r)r<r)r@r)r)r*ignoreEndTagTrsz,getPhases..InRowPhase.ignoreEndTagTrcSs|jjdjdS)Nr)rIrFr)r@r)r)r*r"sz(getPhases..InRowPhase.processEOFcSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r%sz4getPhases..InRowPhase.processSpaceCharacterscSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r(sz/getPhases..InRowPhase.processCharacterscSs6|j|jj||jjd|j_|jjjtdS)Nr) rr<rrIrFr]rrr )r@rr)r)r*r+s z/getPhases..InRowPhase.startTagTableCellcSs"|j}|jtd|s|SdS)Nr)rrr )r@rrr)r)r*r1sz0getPhases..InRowPhase.startTagTableOthercSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r8sz+getPhases..InRowPhase.startTagOthercSs<|js.|j|jjj|jjd|j_n |jjdS)Nr) rrr<r{r)rIrFr]r|)r@rr)r)r*r;s  z&getPhases..InRowPhase.endTagTrcSs"|j}|jtd|s|SdS)Nr)rrr )r@rrr)r)r*rEsz)getPhases..InRowPhase.endTagTablecSs4|jj|dddr&|jtd|S|jjdS)Nr>r)rr)r<rrr rIr|)r@rr)r)r*rMsz1getPhases..InRowPhase.endTagTableRowGroupcSs|jjdd|didS)Nzunexpected-end-tag-in-table-rowr>)rIr|)r@rr)r)r*rTsz*getPhases..InRowPhase.endTagIgnorecSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rXsz)getPhases..InRowPhase.endTagOtherN)r7r8r9rHrrrrrrrrrrrrrr))rr)r* InRowPhases  rcs`eZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)zgetPhases..InCellPhasec sfj|||tjd|jfd |jfg|_|j|j_tjd|jfd|j fd|j fg|_ |j |j _dS)Nrrrxrrrrrrrrr) rrxrrrrrrr)rr)rrrxrr)rrrrr) rHrrrrrrrendTagTableCellr endTagImplyrr)r@rIr<)rr)r*rH]s z'getPhases..InCellPhase.__init__cSsB|jjdddr |jtdn|jjdddr>|jtddS)Nrr)rr)r<rrr )r@r)r)r* closeCellnsz(getPhases..InCellPhase.closeCellcSs|jjdjdS)Nr)rIrFr)r@r)r)r*rusz)getPhases..InCellPhase.processEOFcSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rxsz0getPhases..InCellPhase.processCharacterscSs:|jjddds |jjdddr,|j|S|jjdS)Nrr)rr)r<rrrIr|)r@rr)r)r*r{s z1getPhases..InCellPhase.startTagTableOthercSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rsz,getPhases..InCellPhase.startTagOthercSs|jj|dddr|jj|d|jjdj|dkrt|jjdd|dix.|jjj}|j|dkrRPqRWn |jjj|jj|jj d|j_ n|jjdd|didS) Nr>r)rr zunexpected-cell-end-tagrzunexpected-end-tagry) r<rrr{r>rIr|r)rrFr])r@rrr)r)r*rs   z.getPhases..InCellPhase.endTagTableCellcSs|jjdd|didS)Nzunexpected-end-tagr>)rIr|)r@rr)r)r*rsz+getPhases..InCellPhase.endTagIgnorecSs.|jj|dddr |j|S|jjdS)Nr>r)r)r<rrrIr|)r@rr)r)r*rsz*getPhases..InCellPhase.endTagImplycSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rsz*getPhases..InCellPhase.endTagOtherN) r7r8r9rHrrrrrrrrrr))rr)r* InCellPhase[s  rcsxeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS)z getPhases..InSelectPhasecsj|||tjd|jfd|jfd|jfd|jfd |jfd|jfg|_ |j |j _ tjd|j fd|j fd|jfg|_|j|j_ dS) Nrrvrwrrnrirrr)rnrirr)rHrrrstartTagOptionstartTagOptgrouprrr$rrr endTagOptionendTagOptgroup endTagSelectrr)r@rIr<)rr)r*rHs z)getPhases..InSelectPhase.__init__cSs$|jjdjdkr |jjdndS)Nr rz eof-in-selectry)r<r{r>rIr|)r@r)r)r*rsz+getPhases..InSelectPhase.processEOFcSs$|ddkrdS|jj|ddS)Nrsr)r<r)r@rr)r)r*rs z2getPhases..InSelectPhase.processCharacterscSs.|jjdjdkr|jjj|jj|dS)Nr rvry)r<r{r>r)r)r@rr)r)r*rs z/getPhases..InSelectPhase.startTagOptioncSsL|jjdjdkr|jjj|jjdjdkr<|jjj|jj|dS)Nr rvrwryry)r<r{r>r)r)r@rr)r)r*rs   z1getPhases..InSelectPhase.startTagOptgroupcSs|jjd|jtddS)Nzunexpected-select-in-selectr)rIr|rr )r@rr)r)r*rs z/getPhases..InSelectPhase.startTagSelectcSs2|jjd|jjdddr.|jtd|SdS)Nzunexpected-input-in-selectr)r)rIr|r<rrr )r@rr)r)r*rs  z.getPhases..InSelectPhase.startTagInputcSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r$sz/getPhases..InSelectPhase.startTagScriptcSs|jjdd|didS)Nzunexpected-start-tag-in-selectr>)rIr|)r@rr)r)r*rsz.getPhases..InSelectPhase.startTagOthercSs6|jjdjdkr |jjjn|jjdddidS)Nr rvzunexpected-end-tag-in-selectr>ry)r<r{r>r)rIr|)r@rr)r)r*rsz-getPhases..InSelectPhase.endTagOptioncSsf|jjdjdkr0|jjdjdkr0|jjj|jjd jdkrP|jjjn|jjdddidS) Nr rvrrwzunexpected-end-tag-in-selectr>ryry)r<r{r>r)rIr|)r@rr)r)r*rs z/getPhases..InSelectPhase.endTagOptgroupcSsR|jjdddrD|jjj}x|jdkr6|jjj}qW|jjn |jjdS)Nr)r)r<rr{r)r>rIr_r|)r@rrr)r)r*rs    z-getPhases..InSelectPhase.endTagSelectcSs|jjdd|didS)Nzunexpected-end-tag-in-selectr>)rIr|)r@rr)r)r*r sz,getPhases..InSelectPhase.endTagOtherN)r7r8r9rHrrrrrrr$rrrrrr))rr)r* InSelectPhases   rcsHeZdZfddZddZddZddZd d Zd d Zd dZ dS)z'getPhases..InSelectInTablePhasec sNj|||tjd |jfg|_|j|j_tjd |jfg|_|j |j_dS) Nrrrrrrrr)rrrrrrrr)rrrrrrrr) rHrrrrrrrrr)r@rIr<)rr)r*rH s z0getPhases..InSelectInTablePhase.__init__cSs|jjdjdS)Nr)rIrFr)r@r)r)r*r sz2getPhases..InSelectInTablePhase.processEOFcSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r sz9getPhases..InSelectInTablePhase.processCharacterscSs(|jjdd|di|jtd|S)Nz5unexpected-table-element-start-tag-in-select-in-tabler>r)rIr|rr )r@rr)r)r*r! sz5getPhases..InSelectInTablePhase.startTagTablecSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r& sz5getPhases..InSelectInTablePhase.startTagOthercSs@|jjdd|di|jj|dddr<|jtd|SdS)Nz3unexpected-table-element-end-tag-in-select-in-tabler>r)rr)rIr|r<rrr )r@rr)r)r*r) sz3getPhases..InSelectInTablePhase.endTagTablecSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r/ sz3getPhases..InSelectInTablePhase.endTagOtherN) r7r8r9rHrrrrrrr))rr)r*InSelectInTablePhase s rc-seZdZeddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,g,Zfd-d.Zd/d0Zfd1d2Zd3d4Zd5d6Z d7S)8z(getPhases..InForeignContentPhaserUrVr<rr r=rWrRr+r@rSrXrgZh1Zh2Zh3Zh4Zh5Zh6rrorZrhrQrOrHr4rarJr(rNrr[r\spanr^r]subZsuprr_r`rMvarcsj|||dS)N)rH)r@rIr<)rr)r*rH< sz1getPhases..InForeignContentPhase.__init__c%Ssnddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%$}|d&|krj||d&|d&<dS)'NZaltGlyphZ altGlyphDefZ altGlyphItemZ animateColorZ animateMotionZanimateTransformZclipPathZfeBlendZ feColorMatrixZfeComponentTransferZ feCompositeZfeConvolveMatrixZfeDiffuseLightingZfeDisplacementMapZfeDistantLightZfeFloodZfeFuncAZfeFuncBZfeFuncGZfeFuncRZfeGaussianBlurZfeImageZfeMergeZ feMergeNodeZ feMorphologyZfeOffsetZ fePointLightZfeSpecularLightingZ feSpotLightZfeTileZ feTurbulenceZ foreignObjectZglyphRefZlinearGradientZradialGradientZtextPath)$ZaltglyphZ altglyphdefZ altglyphitemZ animatecolorZ animatemotionZanimatetransformZclippathZfeblendZ fecolormatrixZfecomponenttransferZ fecompositeZfeconvolvematrixZfediffuselightingZfedisplacementmapZfedistantlightZfefloodZfefuncaZfefuncbZfefuncgZfefuncrZfegaussianblurZfeimageZfemergeZ femergenodeZ femorphologyZfeoffsetZ fepointlightZfespecularlightingZ fespotlightZfetileZ feturbulenceZ foreignobjectZglyphrefZlineargradientZradialgradientZtextpathr>r))r@r replacementsr)r)r*adjustSVGTagNames? sL z:getPhases..InForeignContentPhase.adjustSVGTagNamescsL|ddkrd|d<n&|jjr.InForeignContentPhase.processCharacters..F)rIr`rr)r@r)rr)r*rh s   z:getPhases..InForeignContentPhase.processCharacterscSs6|jjd}|d|jksD|ddkrt|djtdddg@r|jjdd|dixR|jjdj|jjkr|jj |jjd r|jj |jjd r|jjj q\W|S|jt d kr|jj |n$|jt d kr|j||jj||jj||j|d <|jj||d r2|jjj d |d<dS)Nr r>rYrsZcolorZfacesizez*unexpected-html-element-in-foreign-contentrdrurhrwTrxryryryry)r<r{breakoutElementssetkeysrIr|rhrrlrmr)rrrrrr)r@rrr)r)r*rp s.          z8getPhases..InForeignContentPhase.processStartTagcSst|jjd}|jjd}|jjt|dkrF|jjdd|dix|jjt|dkr|jj|jj dkr|jjj |jjj |j_x|jjj |krqWd}P|d8}|jj|}|j |jjkrqHqH|jjj|}PqHW|S)Nr r>zunexpected-end-tagrry)r~r<r{r>rjrrIr|r]rFrrr)rhrr)r@rZ nodeIndexrrr)r)r*r s(   z6getPhases..InForeignContentPhase.processEndTagN) r7r8r9rrrHrrrrr))rr)r*InForeignContentPhase2 s       ) rcsPeZdZfddZddZddZddZd d Zd d Zd dZ ddZ dS)z!getPhases..AfterBodyPhasecsNj|||tjd|jfg|_|j|j_tjd|jfg|_|j |j_dS)Nr) rHrrrrrrrrr)r@rIr<)rr)r*rH s  z*getPhases..AfterBodyPhase.__init__cSsdS)Nr))r@r)r)r*r sz,getPhases..AfterBodyPhase.processEOFcSs|jj||jjddS)Nr)r<rr{)r@rr)r)r*r sz0getPhases..AfterBodyPhase.processCommentcSs |jjd|jjd|j_|S)Nzunexpected-char-after-bodyr)rIr|rFr])r@rr)r)r*r s z3getPhases..AfterBodyPhase.processCharacterscSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r sz.getPhases..AfterBodyPhase.startTagHtmlcSs*|jjdd|di|jjd|j_|S)Nzunexpected-start-tag-after-bodyr>r)rIr|rFr])r@rr)r)r*r sz/getPhases..AfterBodyPhase.startTagOthercSs*|jjr|jjdn|jjd|j_dS)Nz'unexpected-end-tag-after-body-innerhtmlafterAfterBody)rIrPr|rFr])r@r>r)r)r*r sz,getPhases..AfterBodyPhase.endTagHtmlcSs*|jjdd|di|jjd|j_|S)Nzunexpected-end-tag-after-bodyr>r)rIr|rFr])r@rr)r)r*r sz-getPhases..AfterBodyPhase.endTagOtherN) r7r8r9rHrrrrrrrr))rr)r*AfterBodyPhase s rcsXeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)z"getPhases..InFramesetPhasecsfj|||tjd|jfd|jfd|jfd|jfg|_|j|j_ tjd|j fg|_ |j |j _ dS)Nrrryr) rHrrrr5 startTagFramestartTagNoframesrrrendTagFramesetrr)r@rIr<)rr)r*rH s z+getPhases..InFramesetPhase.__init__cSs$|jjdjdkr |jjdndS)Nr rzeof-in-framesetry)r<r{r>rIr|)r@r)r)r*r sz-getPhases..InFramesetPhase.processEOFcSs|jjddS)Nzunexpected-char-in-frameset)rIr|)r@rr)r)r*r sz4getPhases..InFramesetPhase.processCharacterscSs|jj|dS)N)r<r)r@rr)r)r*r5 sz3getPhases..InFramesetPhase.startTagFramesetcSs|jj||jjjdS)N)r<rr{r))r@rr)r)r*r  s z0getPhases..InFramesetPhase.startTagFramecSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r  sz3getPhases..InFramesetPhase.startTagNoframescSs|jjdd|didS)Nz unexpected-start-tag-in-framesetr>)rIr|)r@rr)r)r*r sz0getPhases..InFramesetPhase.startTagOthercSs\|jjdjdkr |jjdn |jjj|jj rX|jjdjdkrX|jjd|j_dS)Nr rz)unexpected-frameset-in-frameset-innerhtmlr afterFramesetryry) r<r{r>rIr|r)rPrFr])r@rr)r)r*r  s   z1getPhases..InFramesetPhase.endTagFramesetcSs|jjdd|didS)Nzunexpected-end-tag-in-framesetr>)rIr|)r@rr)r)r*r sz.getPhases..InFramesetPhase.endTagOtherN) r7r8r9rHrrr5r r rr rr))rr)r*InFramesetPhase s  r csHeZdZfddZddZddZddZd d Zd d Zd dZ dS)z%getPhases..AfterFramesetPhasecsVj|||tjd|jfd|jfg|_|j|j_tjd|jfg|_ |j |j _dS)Nrr) rHrrrr rrrrrr)r@rIr<)rr)r*rH s z.getPhases..AfterFramesetPhase.__init__cSsdS)Nr))r@r)r)r*r sz0getPhases..AfterFramesetPhase.processEOFcSs|jjddS)Nzunexpected-char-after-frameset)rIr|)r@rr)r)r*r! sz7getPhases..AfterFramesetPhase.processCharacterscSs|jjdj|S)Nr)rIrFr)r@rr)r)r*r $ sz6getPhases..AfterFramesetPhase.startTagNoframescSs|jjdd|didS)Nz#unexpected-start-tag-after-framesetr>)rIr|)r@rr)r)r*r' sz3getPhases..AfterFramesetPhase.startTagOthercSs|jjd|j_dS)NafterAfterFrameset)rIrFr])r@rr)r)r*r+ sz0getPhases..AfterFramesetPhase.endTagHtmlcSs|jjdd|didS)Nz!unexpected-end-tag-after-framesetr>)rIr|)r@rr)r)r*r. sz1getPhases..AfterFramesetPhase.endTagOtherN) r7r8r9rHrrr rrrr))rr)r*AfterFramesetPhase s rcsPeZdZfddZddZddZddZd d Zd d Zd dZ ddZ dS)z&getPhases..AfterAfterBodyPhasecs0j|||tjd|jfg|_|j|j_dS)Nr)rHrrrrrr)r@rIr<)rr)r*rH3 sz/getPhases..AfterAfterBodyPhase.__init__cSsdS)Nr))r@r)r)r*r; sz1getPhases..AfterAfterBodyPhase.processEOFcSs|jj||jjdS)N)r<rr)r@rr)r)r*r> sz5getPhases..AfterAfterBodyPhase.processCommentcSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rA sz=getPhases..AfterAfterBodyPhase.processSpaceCharacterscSs |jjd|jjd|j_|S)Nzexpected-eof-but-got-charr)rIr|rFr])r@rr)r)r*rD s z8getPhases..AfterAfterBodyPhase.processCharacterscSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rI sz3getPhases..AfterAfterBodyPhase.startTagHtmlcSs*|jjdd|di|jjd|j_|S)Nzexpected-eof-but-got-start-tagr>r)rIr|rFr])r@rr)r)r*rL sz4getPhases..AfterAfterBodyPhase.startTagOthercSs*|jjdd|di|jjd|j_|S)Nzexpected-eof-but-got-end-tagr>r)rIr|rFr])r@rr)r)r*rR sz4getPhases..AfterAfterBodyPhase.processEndTagN) r7r8r9rHrrrrrrrr))rr)r*AfterAfterBodyPhase2 s rcsXeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)z*getPhases..AfterAfterFramesetPhasecs8j|||tjd|jfd|jfg|_|j|j_dS)Nrr)rHrrrstartTagNoFramesrrr)r@rIr<)rr)r*rHY s z3getPhases..AfterAfterFramesetPhase.__init__cSsdS)Nr))r@r)r)r*rb sz5getPhases..AfterAfterFramesetPhase.processEOFcSs|jj||jjdS)N)r<rr)r@rr)r)r*re sz9getPhases..AfterAfterFramesetPhase.processCommentcSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rh szAgetPhases..AfterAfterFramesetPhase.processSpaceCharacterscSs|jjddS)Nzexpected-eof-but-got-char)rIr|)r@rr)r)r*rk sz.AfterAfterFramesetPhase.processCharacterscSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rn sz7getPhases..AfterAfterFramesetPhase.startTagHtmlcSs|jjdj|S)Nr)rIrFr)r@rr)r)r*rq sz;getPhases..AfterAfterFramesetPhase.startTagNoFramescSs|jjdd|didS)Nzexpected-eof-but-got-start-tagr>)rIr|)r@rr)r)r*rt sz8getPhases..AfterAfterFramesetPhase.startTagOthercSs|jjdd|didS)Nzexpected-eof-but-got-end-tagr>)rIr|)r@rr)r)r*rx sz8getPhases..AfterAfterFramesetPhase.processEndTagN) r7r8r9rHrrrrrrrrr))rr)r*AfterAfterFramesetPhaseX s r)rTrSrrr-r.rrrrrrrrrrrrvrrr rr)r)rGrVrr r rr/r3r8rrrrrrrrrrrrrr rrrr))rr*rE_sp)#.g@CX!-GBbYLd's/9%&&rEcs^ts tjr t|dt@}nt|dt@}|rZtfdd|djD|d<dS)Nrsc3s"|]\}}j|||fVqdS)N)r})r=kv)rr)r*r sz$adjust_attributes..)rrZPY27rrrr.)rrZneeds_adjustmentr))rr*r s   rrpFcCs|dkr i}t||||dS)N)r2r>rsrw)r)r>r2rirwr)r)r*r  s r c@seZdZdZdS)rrzError in parsed documentN)r7r8r9rr)r)r)r*rr srr)rT)r+rT)rpNF)1Z __future__rrrZpip._vendor.sixrrrr0 collectionsr ImportErrorZpip._vendor.ordereddictrr r r Ztreebuilders.baser rZ constantsrrrrrrrrrrrrrrrrrr#r-r;rer"ZmemoizerErr  Exceptionrrr)r)r)r*sR     H   )L