remove non-go1 commands and packages
diff --git a/src/cmd/cov/Makefile b/src/cmd/cov/Makefile
deleted file mode 100644
index 3f528d7..0000000
--- a/src/cmd/cov/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright 2012 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-include ../../Make.dist
diff --git a/src/cmd/cov/doc.go b/src/cmd/cov/doc.go
deleted file mode 100644
index a5fc003..0000000
--- a/src/cmd/cov/doc.go
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-/*
-
-Cov is a rudimentary code coverage tool.
-
-Usage:
-	go tool cov [-lsv] [-g substring] [-m minlines] [6.out args]
-
-Given a command to run, it runs the command while tracking which
-sections of code have been executed.  When the command finishes,
-cov prints the line numbers of sections of code in the binary that
-were not executed.   With no arguments it assumes the command "6.out".
-
-
-The options are:
-
-	-l
-		print full path names instead of paths relative to the current directory
-	-s
-		show the source code that didn't execute, in addition to the line numbers.
-	-v
-		print debugging information during the run.
-	-g substring
-		restrict the coverage analysis to functions or files whose names contain substring
-	-m minlines
-		only report uncovered sections of code larger than minlines lines
-
-The program is the same for all architectures: 386, amd64, and arm.
-
-*/
-package documentation
diff --git a/src/cmd/cov/main.c b/src/cmd/cov/main.c
deleted file mode 100644
index 9496632..0000000
--- a/src/cmd/cov/main.c
+++ /dev/null
@@ -1,480 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-/*
- * code coverage
- */
-
-#include <u.h>
-#include <libc.h>
-#include <bio.h>
-#include "tree.h"
-
-#include <ureg_amd64.h>
-#include <mach.h>
-typedef struct Ureg Ureg;
-
-void
-usage(void)
-{
-	fprint(2, "usage: cov [-lsv] [-g substring] [-m minlines] [6.out args...]\n");
-	fprint(2, "-g specifies pattern of interesting functions or files\n");
-	exits("usage");
-}
-
-typedef struct Range Range;
-struct Range
-{
-	uvlong pc;
-	uvlong epc;
-};
-
-int chatty;
-int fd;
-int longnames;
-int pid;
-int doshowsrc;
-Map *mem;
-Map *text;
-Fhdr fhdr;
-char *substring;
-char cwd[1000];
-int ncwd;
-int minlines = -1000;
-
-Tree breakpoints;	// code ranges not run
-
-/*
- * comparison for Range structures
- * they are "equal" if they overlap, so
- * that a search for [pc, pc+1) finds the
- * Range containing pc.
- */
-int
-rangecmp(void *va, void *vb)
-{
-	Range *a = va, *b = vb;
-	if(a->epc <= b->pc)
-		return 1;
-	if(b->epc <= a->pc)
-		return -1;
-	return 0;
-}
-
-/*
- * remember that we ran the section of code [pc, epc).
- */
-void
-ran(uvlong pc, uvlong epc)
-{
-	Range key;
-	Range *r;
-	uvlong oldepc;
-
-	if(chatty)
-		print("run %#llux-%#llux\n", pc, epc);
-
-	key.pc = pc;
-	key.epc = pc+1;
-	r = treeget(&breakpoints, &key);
-	if(r == nil)
-		sysfatal("unchecked breakpoint at %#llux+%d", pc, (int)(epc-pc));
-
-	// Might be that the tail of the sequence
-	// was run already, so r->epc is before the end.
-	// Adjust len.
-	if(epc > r->epc)
-		epc = r->epc;
-
-	if(r->pc == pc) {
-		r->pc = epc;
-	} else {
-		// Chop r to before pc;
-		// add new entry for after if needed.
-		// Changing r->epc does not affect r's position in the tree.
-		oldepc = r->epc;
-		r->epc = pc;
-		if(epc < oldepc) {
-			Range *n;
-			n = malloc(sizeof *n);
-			n->pc = epc;
-			n->epc = oldepc;
-			treeput(&breakpoints, n, n);
-		}
-	}
-}
-
-void
-showsrc(char *file, int line1, int line2)
-{
-	Biobuf *b;
-	char *p;
-	int n, stop;
-
-	if((b = Bopen(file, OREAD)) == nil) {
-		print("\topen %s: %r\n", file);
-		return;
-	}
-
-	for(n=1; n<line1 && (p = Brdstr(b, '\n', 1)) != nil; n++)
-		free(p);
-
-	// print up to five lines (this one and 4 more).
-	// if there are more than five lines, print 4 and "..."
-	stop = n+4;
-	if(stop > line2)
-		stop = line2;
-	if(stop < line2)
-		stop--;
-	for(; n<=stop && (p = Brdstr(b, '\n', 1)) != nil; n++) {
-		print("  %d %s\n", n, p);
-		free(p);
-	}
-	if(n < line2)
-		print("  ...\n");
-	Bterm(b);
-}
-
-/*
- * if s is in the current directory or below,
- * return the relative path.
- */
-char*
-shortname(char *s)
-{
-	if(!longnames && strlen(s) > ncwd && memcmp(s, cwd, ncwd) == 0 && s[ncwd] == '/')
-		return s+ncwd+1;
-	return s;
-}
-
-/*
- * we've decided that [pc, epc) did not run.
- * do something about it.
- */
-void
-missing(uvlong pc, uvlong epc)
-{
-	char file[1000];
-	int line1, line2;
-	char buf[100];
-	Symbol s;
-	char *p;
-	uvlong uv;
-
-	if(!findsym(pc, CTEXT, &s) || !fileline(file, sizeof file, pc)) {
-	notfound:
-		print("%#llux-%#llux\n", pc, epc);
-		return;
-	}
-	p = strrchr(file, ':');
-	*p++ = 0;
-	line1 = atoi(p);
-	for(uv=pc; uv<epc; ) {
-		if(!fileline(file, sizeof file, epc-2))
-			goto notfound;
-		uv += machdata->instsize(text, uv);
-	}
-	p = strrchr(file, ':');
-	*p++ = 0;
-	line2 = atoi(p);
-
-	if(line2+1-line2 < minlines)
-		return;
-
-	if(pc == s.value) {
-		// never entered function
-		print("%s:%d %s never called (%#llux-%#llux)\n", shortname(file), line1, s.name, pc, epc);
-		return;
-	}
-	if(pc <= s.value+13) {
-		// probably stub for stack growth.
-		// check whether last instruction is call to morestack.
-		// the -5 below is the length of
-		//	CALL sys.morestack.
-		buf[0] = 0;
-		machdata->das(text, epc-5, 0, buf, sizeof buf);
-		if(strstr(buf, "morestack"))
-			return;
-	}
-
-	if(epc - pc == 5) {
-		// check for CALL sys.panicindex
-		buf[0] = 0;
-		machdata->das(text, pc, 0, buf, sizeof buf);
-		if(strstr(buf, "panicindex"))
-			return;
-	}
-
-	if(epc - pc == 2 || epc -pc == 3) {
-		// check for XORL inside shift.
-		// (on x86 have to implement large left or unsigned right shift with explicit zeroing).
-		//	f+90 0x00002c9f	CMPL	CX,$20
-		//	f+93 0x00002ca2	JCS	f+97(SB)
-		//	f+95 0x00002ca4	XORL	AX,AX <<<
-		//	f+97 0x00002ca6	SHLL	CL,AX
-		//	f+99 0x00002ca8	MOVL	$1,CX
-		//
-		//	f+c8 0x00002cd7	CMPL	CX,$40
-		//	f+cb 0x00002cda	JCS	f+d0(SB)
-		//	f+cd 0x00002cdc	XORQ	AX,AX <<<
-		//	f+d0 0x00002cdf	SHLQ	CL,AX
-		//	f+d3 0x00002ce2	MOVQ	$1,CX
-		buf[0] = 0;
-		machdata->das(text, pc, 0, buf, sizeof buf);
-		if(strncmp(buf, "XOR", 3) == 0) {
-			machdata->das(text, epc, 0, buf, sizeof buf);
-			if(strncmp(buf, "SHL", 3) == 0 || strncmp(buf, "SHR", 3) == 0)
-				return;
-		}
-	}
-
-	if(epc - pc == 3) {
-		// check for SAR inside shift.
-		// (on x86 have to implement large signed right shift as >>31).
-		//	f+36 0x00016216	CMPL	CX,$20
-		//	f+39 0x00016219	JCS	f+3e(SB)
-		//	f+3b 0x0001621b	SARL	$1f,AX <<<
-		//	f+3e 0x0001621e	SARL	CL,AX
-		//	f+40 0x00016220	XORL	CX,CX
-		//	f+42 0x00016222	CMPL	CX,AX
-		buf[0] = 0;
-		machdata->das(text, pc, 0, buf, sizeof buf);
-		if(strncmp(buf, "SAR", 3) == 0) {
-			machdata->das(text, epc, 0, buf, sizeof buf);
-			if(strncmp(buf, "SAR", 3) == 0)
-				return;
-		}
-	}
-
-	// show first instruction to make clear where we were.
-	machdata->das(text, pc, 0, buf, sizeof buf);
-
-	if(line1 != line2)
-		print("%s:%d,%d %#llux-%#llux %s\n",
-			shortname(file), line1, line2, pc, epc, buf);
-	else
-		print("%s:%d %#llux-%#llux %s\n",
-			shortname(file), line1, pc, epc, buf);
-	if(doshowsrc)
-		showsrc(file, line1, line2);
-}
-
-/*
- * walk the tree, calling missing for each non-empty
- * section of missing code.
- */
-void
-walktree(TreeNode *t)
-{
-	Range *n;
-
-	if(t == nil)
-		return;
-	walktree(t->left);
-	n = t->key;
-	if(n->pc < n->epc)
-		missing(n->pc, n->epc);
-	walktree(t->right);
-}
-
-/*
- * set a breakpoint all over [pc, epc)
- * and remember that we did.
- */
-void
-breakpoint(uvlong pc, uvlong epc)
-{
-	Range *r;
-
-	r = malloc(sizeof *r);
-	r->pc = pc;
-	r->epc = epc;
-	treeput(&breakpoints, r, r);
-
-	for(; pc < epc; pc+=machdata->bpsize)
-		put1(mem, pc, machdata->bpinst, machdata->bpsize);
-}
-
-/*
- * install breakpoints over all text symbols
- * that match the pattern.
- */
-void
-cover(void)
-{
-	Symbol s;
-	char *lastfn;
-	uvlong lastpc;
-	int i;
-	char buf[200];
-
-	lastfn = nil;
-	lastpc = 0;
-	for(i=0; textsym(&s, i); i++) {
-		switch(s.type) {
-		case 'T':
-		case 't':
-			if(lastpc != 0) {
-				breakpoint(lastpc, s.value);
-				lastpc = 0;
-			}
-			// Ignore second entry for a given name;
-			// that's the debugging blob.
-			if(lastfn && strcmp(s.name, lastfn) == 0)
-				break;
-			lastfn = s.name;
-			buf[0] = 0;
-			fileline(buf, sizeof buf, s.value);
-			if(substring == nil || strstr(buf, substring) || strstr(s.name, substring))
-				lastpc = s.value;
-		}
-	}
-}
-
-uvlong
-rgetzero(Map *map, char *reg)
-{
-	USED(map);
-	USED(reg);
-
-	return 0;
-}
-
-/*
- * remove the breakpoints at pc and successive instructions,
- * up to and including the first jump or other control flow transfer.
- */
-void
-uncover(uvlong pc)
-{
-	uchar buf[1000];
-	int n, n1, n2;
-	uvlong foll[2];
-
-	// Double-check that we stopped at a breakpoint.
-	if(get1(mem, pc, buf, machdata->bpsize) < 0)
-		sysfatal("read mem inst at %#llux: %r", pc);
-	if(memcmp(buf, machdata->bpinst, machdata->bpsize) != 0)
-		sysfatal("stopped at %#llux; not at breakpoint %d", pc, machdata->bpsize);
-
-	// Figure out how many bytes of straight-line code
-	// there are in the text starting at pc.
-	n = 0;
-	while(n < sizeof buf) {
-		n1 = machdata->instsize(text, pc+n);
-		if(n+n1 > sizeof buf)
-			break;
-		n2 = machdata->foll(text, pc+n, rgetzero, foll);
-		n += n1;
-		if(n2 != 1 || foll[0] != pc+n)
-			break;
-	}
-
-	// Record that this section of code ran.
-	ran(pc, pc+n);
-
-	// Put original instructions back.
-	if(get1(text, pc, buf, n) < 0)
-		sysfatal("get1: %r");
-	if(put1(mem, pc, buf, n) < 0)
-		sysfatal("put1: %r");
-}
-
-int
-startprocess(char **argv)
-{
-	int pid;
-
-	if((pid = fork()) < 0)
-		sysfatal("fork: %r");
-	if(pid == 0) {
-		pid = getpid();
-		if(ctlproc(pid, "hang") < 0)
-			sysfatal("ctlproc hang: %r");
-		exec(argv[0], argv);
-		sysfatal("exec %s: %r", argv[0]);
-	}
-	if(ctlproc(pid, "attached") < 0 || ctlproc(pid, "waitstop") < 0)
-		sysfatal("attach %d %s: %r", pid, argv[0]);
-	return pid;
-}
-
-int
-go(void)
-{
-	uvlong pc;
-	char buf[100];
-	int n;
-
-	for(n = 0;; n++) {
-		ctlproc(pid, "startstop");
-		if(get8(mem, offsetof(Ureg, ip), &pc) < 0) {
-			rerrstr(buf, sizeof buf);
-			if(strstr(buf, "exited") || strstr(buf, "No such process"))
-				return n;
-			sysfatal("cannot read pc: %r");
-		}
-		pc--;
-		if(put8(mem, offsetof(Ureg, ip), pc) < 0)
-			sysfatal("cannot write pc: %r");
-		uncover(pc);
-	}
-}
-
-void
-main(int argc, char **argv)
-{
-	int n;
-
-	ARGBEGIN{
-	case 'g':
-		substring = EARGF(usage());
-		break;
-	case 'l':
-		longnames++;
-		break;
-	case 'n':
-		minlines = atoi(EARGF(usage()));
-		break;
-	case 's':
-		doshowsrc = 1;
-		break;
-	case 'v':
-		chatty++;
-		break;
-	default:
-		usage();
-	}ARGEND
-
-	getwd(cwd, sizeof cwd);
-	ncwd = strlen(cwd);
-
-	if(argc == 0) {
-		*--argv = "6.out";
-	}
-	fd = open(argv[0], OREAD);
-	if(fd < 0)
-		sysfatal("open %s: %r", argv[0]);
-	if(crackhdr(fd, &fhdr) <= 0)
-		sysfatal("crackhdr: %r");
-	machbytype(fhdr.type);
-	if(syminit(fd, &fhdr) <= 0)
-		sysfatal("syminit: %r");
-	text = loadmap(nil, fd, &fhdr);
-	if(text == nil)
-		sysfatal("loadmap: %r");
-	pid = startprocess(argv);
-	mem = attachproc(pid, &fhdr);
-	if(mem == nil)
-		sysfatal("attachproc: %r");
-	breakpoints.cmp = rangecmp;
-	cover();
-	n = go();
-	walktree(breakpoints.root);
-	if(chatty)
-		print("%d breakpoints\n", n);
-	detachproc(mem);
-	exits(0);
-}
-
diff --git a/src/cmd/cov/tree.c b/src/cmd/cov/tree.c
deleted file mode 100644
index 905bb7d..0000000
--- a/src/cmd/cov/tree.c
+++ /dev/null
@@ -1,243 +0,0 @@
-// Renamed from Map to Tree to avoid conflict with libmach.
-
-/*
-Copyright (c) 2003-2007 Russ Cox, Tom Bergan, Austin Clements,
-	Massachusetts Institute of Technology
-Portions Copyright (c) 2009 The Go Authors. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-// Mutable map structure, but still based on
-// Okasaki, Red Black Trees in a Functional Setting, JFP 1999,
-// which is a lot easier than the traditional red-black
-// and plenty fast enough for me.  (Also I could copy
-// and edit fmap.c.)
-
-#include <u.h>
-#include <libc.h>
-#include "tree.h"
-
-enum
-{
-	Red = 0,
-	Black = 1
-};
-
-
-// Red-black trees are binary trees with this property:
-//	1. No red node has a red parent.
-//	2. Every path from the root to a leaf contains the
-//		same number of black nodes.
-
-static TreeNode*
-rwTreeNode(TreeNode *p, int color, TreeNode *left, void *key, void *value, TreeNode *right)
-{
-	if(p == nil)
-		p = malloc(sizeof *p);
-	p->color = color;
-	p->left = left;
-	p->key = key;
-	p->value = value;
-	p->right = right;
-	return p;
-}
-
-static TreeNode*
-balance(TreeNode *m0)
-{
-	void *xk, *xv, *yk, *yv, *zk, *zv;
-	TreeNode *a, *b, *c, *d;
-	TreeNode *m1, *m2;
-	int color;
-	TreeNode *left, *right;
-	void *key, *value;
-
-	color = m0->color;
-	left = m0->left;
-	key = m0->key;
-	value = m0->value;
-	right = m0->right;
-
-	// Okasaki notation: (T is mkTreeNode, B is Black, R is Red, x, y, z are key-value.
-	//
-	// balance B (T R (T R a x b) y c) z d
-	// balance B (T R a x (T R b y c)) z d
-	// balance B a x (T R (T R b y c) z d)
-	// balance B a x (T R b y (T R c z d))
-	//
-	//     = T R (T B a x b) y (T B c z d)
-
-	if(color == Black){
-		if(left && left->color == Red){
-			if(left->left && left->left->color == Red){
-				a = left->left->left;
-				xk = left->left->key;
-				xv = left->left->value;
-				b = left->left->right;
-				yk = left->key;
-				yv = left->value;
-				c = left->right;
-				zk = key;
-				zv = value;
-				d = right;
-				m1 = left;
-				m2 = left->left;
-				goto hard;
-			}else if(left->right && left->right->color == Red){
-				a = left->left;
-				xk = left->key;
-				xv = left->value;
-				b = left->right->left;
-				yk = left->right->key;
-				yv = left->right->value;
-				c = left->right->right;
-				zk = key;
-				zv = value;
-				d = right;
-				m1 = left;
-				m2 = left->right;
-				goto hard;
-			}
-		}else if(right && right->color == Red){
-			if(right->left && right->left->color == Red){
-				a = left;
-				xk = key;
-				xv = value;
-				b = right->left->left;
-				yk = right->left->key;
-				yv = right->left->value;
-				c = right->left->right;
-				zk = right->key;
-				zv = right->value;
-				d = right->right;
-				m1 = right;
-				m2 = right->left;
-				goto hard;
-			}else if(right->right && right->right->color == Red){
-				a = left;
-				xk = key;
-				xv = value;
-				b = right->left;
-				yk = right->key;
-				yv = right->value;
-				c = right->right->left;
-				zk = right->right->key;
-				zv = right->right->value;
-				d = right->right->right;
-				m1 = right;
-				m2 = right->right;
-				goto hard;
-			}
-		}
-	}
-	return rwTreeNode(m0, color, left, key, value, right);
-
-hard:
-	return rwTreeNode(m0, Red, rwTreeNode(m1, Black, a, xk, xv, b),
-		yk, yv, rwTreeNode(m2, Black, c, zk, zv, d));
-}
-
-static TreeNode*
-ins0(TreeNode *p, void *k, void *v, TreeNode *rw)
-{
-	if(p == nil)
-		return rwTreeNode(rw, Red, nil, k, v, nil);
-	if(p->key == k){
-		if(rw)
-			return rwTreeNode(rw, p->color, p->left, k, v, p->right);
-		p->value = v;
-		return p;
-	}
-	if(p->key < k)
-		p->left = ins0(p->left, k, v, rw);
-	else
-		p->right = ins0(p->right, k, v, rw);
-	return balance(p);
-}
-
-static TreeNode*
-ins1(Tree *m, TreeNode *p, void *k, void *v, TreeNode *rw)
-{
-	int i;
-
-	if(p == nil)
-		return rwTreeNode(rw, Red, nil, k, v, nil);
-	i = m->cmp(p->key, k);
-	if(i == 0){
-		if(rw)
-			return rwTreeNode(rw, p->color, p->left, k, v, p->right);
-		p->value = v;
-		return p;
-	}
-	if(i < 0)
-		p->left = ins1(m, p->left, k, v, rw);
-	else
-		p->right = ins1(m, p->right, k, v, rw);
-	return balance(p);
-}
-
-void
-treeputelem(Tree *m, void *key, void *val, TreeNode *rw)
-{
-	if(m->cmp)
-		m->root = ins1(m, m->root, key, val, rw);
-	else
-		m->root = ins0(m->root, key, val, rw);
-}
-
-void
-treeput(Tree *m, void *key, void *val)
-{
-	treeputelem(m, key, val, nil);
-}
-
-void*
-treeget(Tree *m, void *key)
-{
-	int i;
-	TreeNode *p;
-
-	p = m->root;
-	if(m->cmp){
-		for(;;){
-			if(p == nil)
-				return nil;
-			i = m->cmp(p->key, key);
-			if(i < 0)
-				p = p->left;
-			else if(i > 0)
-				p = p->right;
-			else
-				return p->value;
-		}
-	}else{
-		for(;;){
-			if(p == nil)
-				return nil;
-			if(p->key == key)
-				return p->value;
-			if(p->key < key)
-				p = p->left;
-			else
-				p = p->right;
-		}
-	}
-}
diff --git a/src/cmd/cov/tree.h b/src/cmd/cov/tree.h
deleted file mode 100644
index a716d83..0000000
--- a/src/cmd/cov/tree.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// Renamed from Map to Tree to avoid conflict with libmach.
-
-/*
-Copyright (c) 2003-2007 Russ Cox, Tom Bergan, Austin Clements,
-                        Massachusetts Institute of Technology
-Portions Copyright (c) 2009 The Go Authors. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-typedef struct Tree Tree;
-typedef struct TreeNode TreeNode;
-struct Tree
-{
-        int (*cmp)(void*, void*);
-        TreeNode *root;
-};
-
-struct TreeNode
-{
-        int color;
-        TreeNode *left;
-        void *key;
-        void *value;
-        TreeNode *right;
-};
-
-void *treeget(Tree*, void*);
-void treeput(Tree*, void*, void*);
-void treeputelem(Tree*, void*, void*, TreeNode*);
diff --git a/src/cmd/prof/Makefile b/src/cmd/prof/Makefile
deleted file mode 100644
index 3f528d7..0000000
--- a/src/cmd/prof/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright 2012 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-include ../../Make.dist
diff --git a/src/cmd/prof/doc.go b/src/cmd/prof/doc.go
deleted file mode 100644
index 0072f9a..0000000
--- a/src/cmd/prof/doc.go
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-/*
-
-Prof is a rudimentary real-time profiler.
-
-Given a command to run or the process id (pid) of a command already
-running, it samples the program's state at regular intervals and reports
-on its behavior.  With no options, it prints a histogram of the locations
-in the code that were sampled during execution.
-
-Since it is a real-time profiler, unlike a traditional profiler it samples
-the program's state even when it is not running, such as when it is
-asleep or waiting for I/O.  Each thread contributes equally to the
-statistics.
-
-Usage:
-	go tool prof -p pid [-t total_secs] [-d delta_msec] [6.out args ...]
-
-The output modes (default -h) are:
-
-	-P file.prof:
-		Write the profile information to file.prof, in the format used by pprof.
-		At the moment, this only works on Linux amd64 binaries and requires that the
-		binary be written using 6l -e to produce ELF debug info.
-		See http://code.google.com/p/google-perftools for details.
-	-h: histograms
-		How many times a sample occurred at each location.
-	-f: dynamic functions
-		At each sample period, print the name of the executing function.
-	-l: dynamic file and line numbers
-		At each sample period, print the file and line number of the executing instruction.
-	-r: dynamic registers
-		At each sample period, print the register contents.
-	-s: dynamic function stack traces
-		At each sample period, print the symbolic stack trace.
-
-Flag -t sets the maximum real time to sample, in seconds, and -d
-sets the sampling interval in milliseconds.  The default is to sample
-every 100ms until the program completes.
-
-It is installed as go tool prof and is architecture-independent.
-
-*/
-package documentation
diff --git a/src/cmd/prof/main.c b/src/cmd/prof/main.c
deleted file mode 100644
index f0acaf1..0000000
--- a/src/cmd/prof/main.c
+++ /dev/null
@@ -1,899 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-#include <u.h>
-#include <time.h>
-#include <libc.h>
-#include <bio.h>
-#include <ctype.h>
-
-#define Ureg Ureg_amd64
-	#include <ureg_amd64.h>
-#undef Ureg
-#define Ureg Ureg_x86
-	#include <ureg_x86.h>
-#undef Ureg
-#include <mach.h>
-
-char* file = "6.out";
-static Fhdr fhdr;
-int have_syms;
-int fd;
-struct Ureg_amd64 ureg_amd64;
-struct Ureg_x86 ureg_x86;
-int total_sec = 0;
-int delta_msec = 100;
-int nsample;
-int nsamplethread;
-
-// pprof data, stored as sequences of N followed by N PC values.
-// See http://code.google.com/p/google-perftools .
-uvlong	*ppdata;	// traces
-Biobuf*	pproffd;	// file descriptor to write trace info
-long	ppstart;	// start position of current trace
-long	nppdata;	// length of data
-long	ppalloc;	// size of allocated data
-char	ppmapdata[10*1024];	// the map information for the output file
-
-// output formats
-int pprof;	// print pprof output to named file
-int functions;	// print functions
-int histograms;	// print histograms
-int linenums;	// print file and line numbers rather than function names
-int registers;	// print registers
-int stacks;		// print stack traces
-
-int pid;		// main process pid
-
-int nthread;	// number of threads
-int thread[32];	// thread pids
-Map *map[32];	// thread maps
-
-void
-Usage(void)
-{
-	fprint(2, "Usage: prof -p pid [-t total_secs] [-d delta_msec]\n");
-	fprint(2, "       prof [-t total_secs] [-d delta_msec] 6.out args ...\n");
-	fprint(2, "\tformats (default -h):\n");
-	fprint(2, "\t\t-P file.prof: write [c]pprof output to file.prof\n");
-	fprint(2, "\t\t-h: histograms\n");
-	fprint(2, "\t\t-f: dynamic functions\n");
-	fprint(2, "\t\t-l: dynamic file and line numbers\n");
-	fprint(2, "\t\t-r: dynamic registers\n");
-	fprint(2, "\t\t-s: dynamic function stack traces\n");
-	fprint(2, "\t\t-hs: include stack info in histograms\n");
-	exit(2);
-}
-
-typedef struct PC PC;
-struct PC {
-	uvlong pc;
-	uvlong callerpc;
-	unsigned int count;
-	PC* next;
-};
-
-enum {
-	Ncounters = 256
-};
-
-PC *counters[Ncounters];
-
-// Set up by setarch() to make most of the code architecture-independent.
-typedef struct Arch Arch;
-struct Arch {
-	char*	name;
-	void	(*regprint)(void);
-	int	(*getregs)(Map*);
-	int	(*getPC)(Map*);
-	int	(*getSP)(Map*);
-	uvlong	(*uregPC)(void);
-	uvlong	(*uregSP)(void);
-	void	(*ppword)(uvlong w);
-};
-
-void
-amd64_regprint(void)
-{
-	fprint(2, "ax\t0x%llux\n", ureg_amd64.ax);
-	fprint(2, "bx\t0x%llux\n", ureg_amd64.bx);
-	fprint(2, "cx\t0x%llux\n", ureg_amd64.cx);
-	fprint(2, "dx\t0x%llux\n", ureg_amd64.dx);
-	fprint(2, "si\t0x%llux\n", ureg_amd64.si);
-	fprint(2, "di\t0x%llux\n", ureg_amd64.di);
-	fprint(2, "bp\t0x%llux\n", ureg_amd64.bp);
-	fprint(2, "r8\t0x%llux\n", ureg_amd64.r8);
-	fprint(2, "r9\t0x%llux\n", ureg_amd64.r9);
-	fprint(2, "r10\t0x%llux\n", ureg_amd64.r10);
-	fprint(2, "r11\t0x%llux\n", ureg_amd64.r11);
-	fprint(2, "r12\t0x%llux\n", ureg_amd64.r12);
-	fprint(2, "r13\t0x%llux\n", ureg_amd64.r13);
-	fprint(2, "r14\t0x%llux\n", ureg_amd64.r14);
-	fprint(2, "r15\t0x%llux\n", ureg_amd64.r15);
-	fprint(2, "ds\t0x%llux\n", ureg_amd64.ds);
-	fprint(2, "es\t0x%llux\n", ureg_amd64.es);
-	fprint(2, "fs\t0x%llux\n", ureg_amd64.fs);
-	fprint(2, "gs\t0x%llux\n", ureg_amd64.gs);
-	fprint(2, "type\t0x%llux\n", ureg_amd64.type);
-	fprint(2, "error\t0x%llux\n", ureg_amd64.error);
-	fprint(2, "pc\t0x%llux\n", ureg_amd64.ip);
-	fprint(2, "cs\t0x%llux\n", ureg_amd64.cs);
-	fprint(2, "flags\t0x%llux\n", ureg_amd64.flags);
-	fprint(2, "sp\t0x%llux\n", ureg_amd64.sp);
-	fprint(2, "ss\t0x%llux\n", ureg_amd64.ss);
-}
-
-int
-amd64_getregs(Map *map)
-{
-	int i;
-	union {
-		uvlong regs[1];
-		struct Ureg_amd64 ureg;
-	} u;
-
-	for(i = 0; i < sizeof ureg_amd64; i+=8) {
-		if(get8(map, (uvlong)i, &u.regs[i/8]) < 0)
-			return -1;
-	}
-	ureg_amd64 = u.ureg;
-	return 0;
-}
-
-int
-amd64_getPC(Map *map)
-{
-	uvlong x;
-	int r;
-
-	r = get8(map, offsetof(struct Ureg_amd64, ip), &x);
-	ureg_amd64.ip = x;
-	return r;
-}
-
-int
-amd64_getSP(Map *map)
-{
-	uvlong x;
-	int r;
-
-	r = get8(map, offsetof(struct Ureg_amd64, sp), &x);
-	ureg_amd64.sp = x;
-	return r;
-}
-
-uvlong
-amd64_uregPC(void)
-{
-	return ureg_amd64.ip;
-}
-
-uvlong
-amd64_uregSP(void) {
-	return ureg_amd64.sp;
-}
-
-void
-amd64_ppword(uvlong w)
-{
-	uchar buf[8];
-
-	buf[0] = w;
-	buf[1] = w >> 8;
-	buf[2] = w >> 16;
-	buf[3] = w >> 24;
-	buf[4] = w >> 32;
-	buf[5] = w >> 40;
-	buf[6] = w >> 48;
-	buf[7] = w >> 56;
-	Bwrite(pproffd, buf, 8);
-}
-
-void
-x86_regprint(void)
-{
-	fprint(2, "ax\t0x%ux\n", ureg_x86.ax);
-	fprint(2, "bx\t0x%ux\n", ureg_x86.bx);
-	fprint(2, "cx\t0x%ux\n", ureg_x86.cx);
-	fprint(2, "dx\t0x%ux\n", ureg_x86.dx);
-	fprint(2, "si\t0x%ux\n", ureg_x86.si);
-	fprint(2, "di\t0x%ux\n", ureg_x86.di);
-	fprint(2, "bp\t0x%ux\n", ureg_x86.bp);
-	fprint(2, "ds\t0x%ux\n", ureg_x86.ds);
-	fprint(2, "es\t0x%ux\n", ureg_x86.es);
-	fprint(2, "fs\t0x%ux\n", ureg_x86.fs);
-	fprint(2, "gs\t0x%ux\n", ureg_x86.gs);
-	fprint(2, "cs\t0x%ux\n", ureg_x86.cs);
-	fprint(2, "flags\t0x%ux\n", ureg_x86.flags);
-	fprint(2, "pc\t0x%ux\n", ureg_x86.pc);
-	fprint(2, "sp\t0x%ux\n", ureg_x86.sp);
-	fprint(2, "ss\t0x%ux\n", ureg_x86.ss);
-}
-
-int
-x86_getregs(Map *map)
-{
-	int i;
-
-	for(i = 0; i < sizeof ureg_x86; i+=4) {
-		if(get4(map, (uvlong)i, &((uint32*)&ureg_x86)[i/4]) < 0)
-			return -1;
-	}
-	return 0;
-}
-
-int
-x86_getPC(Map* map)
-{
-	return get4(map, offsetof(struct Ureg_x86, pc), &ureg_x86.pc);
-}
-
-int
-x86_getSP(Map* map)
-{
-	return get4(map, offsetof(struct Ureg_x86, sp), &ureg_x86.sp);
-}
-
-uvlong
-x86_uregPC(void)
-{
-	return (uvlong)ureg_x86.pc;
-}
-
-uvlong
-x86_uregSP(void)
-{
-	return (uvlong)ureg_x86.sp;
-}
-
-void
-x86_ppword(uvlong w)
-{
-	uchar buf[4];
-
-	buf[0] = w;
-	buf[1] = w >> 8;
-	buf[2] = w >> 16;
-	buf[3] = w >> 24;
-	Bwrite(pproffd, buf, 4);
-}
-
-Arch archtab[] = {
-	{
-		"amd64",
-		amd64_regprint,
-		amd64_getregs,
-		amd64_getPC,
-		amd64_getSP,
-		amd64_uregPC,
-		amd64_uregSP,
-		amd64_ppword,
-	},
-	{
-		"386",
-		x86_regprint,
-		x86_getregs,
-		x86_getPC,
-		x86_getSP,
-		x86_uregPC,
-		x86_uregSP,
-		x86_ppword,
-	},
-	{
-		nil
-	}
-};
-
-Arch *arch;
-
-int
-setarch(void)
-{
-	int i;
-
-	if(mach != nil) {
-		for(i = 0; archtab[i].name != nil; i++) {
-			if (strcmp(mach->name, archtab[i].name) == 0) {
-				arch = &archtab[i];
-				return 0;
-			}
-		}
-	}
-	return -1;
-}
-
-int
-getthreads(void)
-{
-	int i, j, curn, found;
-	Map *curmap[nelem(map)];
-	int curthread[nelem(map)];
-	static int complained = 0;
-
-	curn = procthreadpids(pid, curthread, nelem(curthread));
-	if(curn <= 0)
-		return curn;
-
-	if(curn > nelem(map)) {
-		if(complained == 0) {
-			fprint(2, "prof: too many threads; limiting to %d\n", nthread, nelem(map));
-			complained = 1;
-		}
-		curn = nelem(map);
-	}
-	if(curn == nthread && memcmp(thread, curthread, curn*sizeof(*thread)) == 0)
-		return curn;	// no changes
-
-	// Number of threads has changed (might be the init case).
-	// A bit expensive but rare enough not to bother being clever.
-	for(i = 0; i < curn; i++) {
-		found = 0;
-		for(j = 0; j < nthread; j++) {
-			if(curthread[i] == thread[j]) {
-				found = 1;
-				curmap[i] = map[j];
-				map[j] = nil;
-				break;
-			}
-		}
-		if(found)
-			continue;
-
-		// map new thread
-		curmap[i] = attachproc(curthread[i], &fhdr);
-		if(curmap[i] == nil) {
-			fprint(2, "prof: can't attach to %d: %r\n", curthread[i]);
-			return -1;
-		}
-	}
-
-	for(j = 0; j < nthread; j++)
-		if(map[j] != nil)
-			detachproc(map[j]);
-
-	nthread = curn;
-	memmove(thread, curthread, nthread*sizeof thread[0]);
-	memmove(map, curmap, sizeof map);
-	return nthread;
-}
-
-int
-sample(Map *map)
-{
-	static int n;
-
-	n++;
-	if(registers) {
-		if(arch->getregs(map) < 0)
-			goto bad;
-	} else {
-		// we need only two registers
-		if(arch->getPC(map) < 0)
-			goto bad;
-		if(arch->getSP(map) < 0)
-			goto bad;
-	}
-	return 1;
-bad:
-	if(n == 1)
-		fprint(2, "prof: can't read registers: %r\n");
-	return 0;
-}
-
-void
-addtohistogram(uvlong pc, uvlong callerpc, uvlong sp)
-{
-	int h;
-	PC *x;
-	
-	USED(sp);
-
-	h = (pc + callerpc*101) % Ncounters;
-	for(x = counters[h]; x != NULL; x = x->next) {
-		if(x->pc == pc && x->callerpc == callerpc) {
-			x->count++;
-			return;
-		}
-	}
-	x = malloc(sizeof(PC));
-	x->pc = pc;
-	x->callerpc = callerpc;
-	x->count = 1;
-	x->next = counters[h];
-	counters[h] = x;
-}
-
-void
-addppword(uvlong pc)
-{
-	if(pc == 0) {
-		return;
-	}
-	if(nppdata == ppalloc) {
-		ppalloc = (1000+nppdata)*2;
-		ppdata = realloc(ppdata, ppalloc * sizeof ppdata[0]);
-		if(ppdata == nil) {
-			fprint(2, "prof: realloc failed: %r\n");
-			exit(2);
-		}
-	}
-	ppdata[nppdata++] = pc;
-}
-
-void
-startpptrace()
-{
-	ppstart = nppdata;
-	addppword(~0);
-}
-
-void
-endpptrace()
-{
-	ppdata[ppstart] = nppdata-ppstart-1;
-}
-
-uvlong nextpc;
-
-void
-xptrace(Map *map, uvlong pc, uvlong sp, Symbol *sym)
-{
-	USED(map);
-
-	char buf[1024];
-	if(sym == nil){
-		fprint(2, "syms\n");
-		return;
-	}
-	if(histograms)
-		addtohistogram(nextpc, pc, sp);
-	if(!histograms || stacks > 1 || pprof) {
-		if(nextpc == 0)
-			nextpc = sym->value;
-		if(stacks){
-			fprint(2, "%s(", sym->name);
-			fprint(2, ")");
-			if(nextpc != sym->value)
-				fprint(2, "+%#llux ", nextpc - sym->value);
-			if(have_syms && linenums && fileline(buf, sizeof buf, pc)) {
-				fprint(2, " %s", buf);
-			}
-			fprint(2, "\n");
-		}
-		if (pprof) {
-			addppword(nextpc);
-		}
-	}
-	nextpc = pc;
-}
-
-void
-stacktracepcsp(Map *map, uvlong pc, uvlong sp)
-{
-	nextpc = pc;
-	if(pprof){
-		startpptrace();
-	}
-	if(machdata->ctrace==nil)
-		fprint(2, "no machdata->ctrace\n");
-	else if(machdata->ctrace(map, pc, sp, 0, xptrace) <= 0)
-		fprint(2, "no stack frame: pc=%#p sp=%#p\n", pc, sp);
-	else {
-		addtohistogram(nextpc, 0, sp);
-		if(stacks)
-			fprint(2, "\n");
-	}
-	if(pprof){
-		endpptrace();
-	}
-}
-
-void
-printpc(Map *map, uvlong pc, uvlong sp)
-{
-	char buf[1024];
-	if(registers)
-		arch->regprint();
-	if(have_syms > 0 && linenums &&  fileline(buf, sizeof buf, pc))
-		fprint(2, "%s\n", buf);
-	if(have_syms > 0 && functions) {
-		symoff(buf, sizeof(buf), pc, CANY);
-		fprint(2, "%s\n", buf);
-	}
-	if(stacks || pprof){
-		stacktracepcsp(map, pc, sp);
-	}
-	else if(histograms){
-		addtohistogram(pc, 0, sp);
-	}
-}
-
-void
-ppmaps(void)
-{
-	int fd, n;
-	char tmp[100];
-	Seg *seg;
-
-	// If it's Linux, the info is in /proc/$pid/maps
-	snprint(tmp, sizeof tmp, "/proc/%d/maps", pid);
-	fd = open(tmp, 0);
-	if(fd >= 0) {
-		n = read(fd, ppmapdata, sizeof ppmapdata - 1);
-		close(fd);
-		if(n < 0) {
-			fprint(2, "prof: can't read %s: %r\n", tmp);
-			exit(2);
-		}
-		ppmapdata[n] = 0;
-		return;
-	}
-
-	// It's probably a mac. Synthesize an entry for the text file.
-	// The register segment may come first but it has a zero offset, so grab the first non-zero offset segment.
-	for(n = 0; n < 3; n++){
-		seg = &map[0]->seg[n];
-		if(seg->b == 0) {
-			continue;
-		}
-		snprint(ppmapdata, sizeof ppmapdata,
-			"%.16x-%.16x r-xp %d 00:00 34968549                           %s\n",
-			seg->b, seg->e, seg->f, "/home/r/6.out"
-		);
-		return;
-	}
-	fprint(2, "prof: no text segment in maps for %s\n", file);
-	exit(2);
-}
-
-void
-samples(void)
-{
-	int i, pid, msec;
-	struct timespec req;
-	int getmaps;
-
-	req.tv_sec = delta_msec/1000;
-	req.tv_nsec = 1000000*(delta_msec % 1000);
-	getmaps = 0;
-	if(pprof)
-		getmaps= 1;
-	for(msec = 0; total_sec <= 0 || msec < 1000*total_sec; msec += delta_msec) {
-		nsample++;
-		nsamplethread += nthread;
-		for(i = 0; i < nthread; i++) {
-			pid = thread[i];
-			if(ctlproc(pid, "stop") < 0)
-				return;
-			if(!sample(map[i])) {
-				ctlproc(pid, "start");
-				return;
-			}
-			printpc(map[i], arch->uregPC(), arch->uregSP());
-			ctlproc(pid, "start");
-		}
-		nanosleep(&req, NULL);
-		getthreads();
-		if(nthread == 0)
-			break;
-		if(getmaps) {
-			getmaps = 0;
-			ppmaps();
-		}
-	}
-}
-
-typedef struct Func Func;
-struct Func
-{
-	Func *next;
-	Symbol s;
-	uint onstack;
-	uint leaf;
-};
-
-Func *func[257];
-int nfunc;
-
-Func*
-findfunc(uvlong pc)
-{
-	Func *f;
-	uint h;
-	Symbol s;
-
-	if(pc == 0)
-		return nil;
-
-	if(!findsym(pc, CTEXT, &s))
-		return nil;
-
-	h = s.value % nelem(func);
-	for(f = func[h]; f != NULL; f = f->next)
-		if(f->s.value == s.value)
-			return f;
-
-	f = malloc(sizeof *f);
-	memset(f, 0, sizeof *f);
-	f->s = s;
-	f->next = func[h];
-	func[h] = f;
-	nfunc++;
-	return f;
-}
-
-int
-compareleaf(const void *va, const void *vb)
-{
-	Func *a, *b;
-
-	a = *(Func**)va;
-	b = *(Func**)vb;
-	if(a->leaf != b->leaf)
-		return b->leaf - a->leaf;
-	if(a->onstack != b->onstack)
-		return b->onstack - a->onstack;
-	return strcmp(a->s.name, b->s.name);
-}
-
-void
-dumphistogram()
-{
-	int i, h, n;
-	PC *x;
-	Func *f, **ff;
-
-	if(!histograms)
-		return;
-
-	// assign counts to functions.
-	for(h = 0; h < Ncounters; h++) {
-		for(x = counters[h]; x != NULL; x = x->next) {
-			f = findfunc(x->pc);
-			if(f) {
-				f->onstack += x->count;
-				f->leaf += x->count;
-			}
-			f = findfunc(x->callerpc);
-			if(f)
-				f->leaf -= x->count;
-		}
-	}
-
-	// build array
-	ff = malloc(nfunc*sizeof ff[0]);
-	n = 0;
-	for(h = 0; h < nelem(func); h++)
-		for(f = func[h]; f != NULL; f = f->next)
-			ff[n++] = f;
-
-	// sort by leaf counts
-	qsort(ff, nfunc, sizeof ff[0], compareleaf);
-
-	// print.
-	fprint(2, "%d samples (avg %.1g threads)\n", nsample, (double)nsamplethread/nsample);
-	for(i = 0; i < nfunc; i++) {
-		f = ff[i];
-		fprint(2, "%6.2f%%\t", 100.0*(double)f->leaf/nsample);
-		if(stacks)
-			fprint(2, "%6.2f%%\t", 100.0*(double)f->onstack/nsample);
-		fprint(2, "%s\n", f->s.name);
-	}
-}
-
-typedef struct Trace Trace;
-struct Trace {
-	int	count;
-	int	npc;
-	uvlong	*pc;
-	Trace	*next;
-};
-
-void
-dumppprof()
-{
-	uvlong i, n, *p, *e;
-	int ntrace;
-	Trace *trace, *tp, *up, *prev;
-
-	if(!pprof)
-		return;
-	e = ppdata + nppdata;
-	// Create list of traces.  First, count the traces
-	ntrace = 0;
-	for(p = ppdata; p < e;) {
-		n = *p++;
-		p += n;
-		if(n == 0)
-			continue;
-		ntrace++;
-	}
-	if(ntrace <= 0)
-		return;
-	// Allocate and link the traces together.
-	trace = malloc(ntrace * sizeof(Trace));
-	tp = trace;
-	for(p = ppdata; p < e;) {
-		n = *p++;
-		if(n == 0)
-			continue;
-		tp->count = 1;
-		tp->npc = n;
-		tp->pc = p;
-		tp->next = tp+1;
-		tp++;
-		p += n;
-	}
-	trace[ntrace-1].next = nil;
-	// Eliminate duplicates.  Lousy algorithm, although not as bad as it looks because
-	// the list collapses fast.
-	for(tp = trace; tp != nil; tp = tp->next) {
-		prev = tp;
-		for(up = tp->next; up != nil; up = up->next) {
-			if(up->npc == tp->npc && memcmp(up->pc, tp->pc, up->npc*sizeof up->pc[0]) == 0) {
-				tp->count++;
-				prev->next = up->next;
-			} else {
-				prev = up;
-			}
-		}
-	}
-	// Write file.
-	// See http://code.google.com/p/google-perftools/source/browse/trunk/doc/cpuprofile-fileformat.html
-	// 1) Header
-	arch->ppword(0);	// must be zero
-	arch->ppword(3);	// 3 words follow in header
-	arch->ppword(0);	// must be zero
-	arch->ppword(delta_msec * 1000);	// sampling period in microseconds
-	arch->ppword(0);	// must be zero (padding)
-	// 2) One record for each trace.
-	for(tp = trace; tp != nil; tp = tp->next) {
-		arch->ppword(tp->count);
-		arch->ppword(tp->npc);
-		for(i = 0; i < tp->npc; i++) {
-			arch->ppword(tp->pc[i]);
-		}
-	}
-	// 3) Binary trailer
-	arch->ppword(0);	// must be zero
-	arch->ppword(1);	// must be one
-	arch->ppword(0);	// must be zero
-	// 4) Mapped objects.
-	Bwrite(pproffd, ppmapdata, strlen(ppmapdata));
-	// 5) That's it.
-	Bterm(pproffd);
-}
-
-int
-startprocess(char **argv)
-{
-	int pid;
-
-	if((pid = fork()) == 0) {
-		pid = getpid();
-		if(ctlproc(pid, "hang") < 0){
-			fprint(2, "prof: child process could not hang\n");
-			exits(0);
-		}
-		execv(argv[0], argv);
-		fprint(2, "prof: could not exec %s: %r\n", argv[0]);
-		exits(0);
-	}
-
-	if(pid == -1) {
-		fprint(2, "prof: could not fork\n");
-		exit(1);
-	}
-	if(ctlproc(pid, "attached") < 0 || ctlproc(pid, "waitstop") < 0) {
-		fprint(2, "prof: could not attach to child process: %r\n");
-		exit(1);
-	}
-	return pid;
-}
-
-void
-detach(void)
-{
-	int i;
-
-	for(i = 0; i < nthread; i++)
-		detachproc(map[i]);
-}
-
-int
-main(int argc, char *argv[])
-{
-	int i;
-	char *ppfile;
-
-	ARGBEGIN{
-	case 'P':
-		pprof =1;
-		ppfile = EARGF(Usage());
-		pproffd = Bopen(ppfile, OWRITE);
-		if(pproffd == nil) {
-			fprint(2, "prof: cannot open %s: %r\n", ppfile);
-			exit(2);
-		}
-		break;
-	case 'd':
-		delta_msec = atoi(EARGF(Usage()));
-		break;
-	case 't':
-		total_sec = atoi(EARGF(Usage()));
-		break;
-	case 'p':
-		pid = atoi(EARGF(Usage()));
-		break;
-	case 'f':
-		functions = 1;
-		break;
-	case 'h':
-		histograms = 1;
-		break;
-	case 'l':
-		linenums = 1;
-		break;
-	case 'r':
-		registers = 1;
-		break;
-	case 's':
-		stacks++;
-		break;
-	default:
-		Usage();
-	}ARGEND
-	if(pid <= 0 && argc == 0)
-		Usage();
-	if(functions+linenums+registers+stacks+pprof == 0)
-		histograms = 1;
-	if(!machbyname("amd64")) {
-		fprint(2, "prof: no amd64 support\n", pid);
-		exit(1);
-	}
-	if(argc > 0)
-		file = argv[0];
-	else if(pid) {
-		file = proctextfile(pid);
-		if (file == NULL) {
-			fprint(2, "prof: can't find file for pid %d: %r\n", pid);
-			fprint(2, "prof: on Darwin, need to provide file name explicitly\n");
-			exit(1);
-		}
-	}
-	fd = open(file, 0);
-	if(fd < 0) {
-		fprint(2, "prof: can't open %s: %r\n", file);
-		exit(1);
-	}
-	if(crackhdr(fd, &fhdr)) {
-		have_syms = syminit(fd, &fhdr);
-		if(!have_syms) {
-			fprint(2, "prof: no symbols for %s: %r\n", file);
-		}
-	} else {
-		fprint(2, "prof: crack header for %s: %r\n", file);
-		exit(1);
-	}
-	if(pid <= 0)
-		pid = startprocess(argv);
-	attachproc(pid, &fhdr);	// initializes thread list
-	if(setarch() < 0) {
-		detach();
-		fprint(2, "prof: can't identify binary architecture for pid %d\n", pid);
-		exit(1);
-	}
-	if(getthreads() <= 0) {
-		detach();
-		fprint(2, "prof: can't find threads for pid %d\n", pid);
-		exit(1);
-	}
-	for(i = 0; i < nthread; i++)
-		ctlproc(thread[i], "start");
-	samples();
-	detach();
-	dumphistogram();
-	dumppprof();
-	exit(0);
-}
diff --git a/src/pkg/exp/README b/src/pkg/exp/README
deleted file mode 100644
index e602e3a..0000000
--- a/src/pkg/exp/README
+++ /dev/null
@@ -1,3 +0,0 @@
-This directory tree contains experimental packages and
-unfinished code that is subject to even more change than the
-rest of the Go tree.
diff --git a/src/pkg/exp/ebnf/ebnf.go b/src/pkg/exp/ebnf/ebnf.go
deleted file mode 100644
index cd8c83c..0000000
--- a/src/pkg/exp/ebnf/ebnf.go
+++ /dev/null
@@ -1,269 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package ebnf is a library for EBNF grammars. The input is text ([]byte)
-// satisfying the following grammar (represented itself in EBNF):
-//
-//	Production  = name "=" [ Expression ] "." .
-//	Expression  = Alternative { "|" Alternative } .
-//	Alternative = Term { Term } .
-//	Term        = name | token [ "…" token ] | Group | Option | Repetition .
-//	Group       = "(" Expression ")" .
-//	Option      = "[" Expression "]" .
-//	Repetition  = "{" Expression "}" .
-//
-// A name is a Go identifier, a token is a Go string, and comments
-// and white space follow the same rules as for the Go language.
-// Production names starting with an uppercase Unicode letter denote
-// non-terminal productions (i.e., productions which allow white-space
-// and comments between tokens); all other production names denote
-// lexical productions.
-//
-package ebnf
-
-import (
-	"errors"
-	"fmt"
-	"text/scanner"
-	"unicode"
-	"unicode/utf8"
-)
-
-// ----------------------------------------------------------------------------
-// Error handling
-
-type errorList []error
-
-func (list errorList) Err() error {
-	if len(list) == 0 {
-		return nil
-	}
-	return list
-}
-
-func (list errorList) Error() string {
-	switch len(list) {
-	case 0:
-		return "no errors"
-	case 1:
-		return list[0].Error()
-	}
-	return fmt.Sprintf("%s (and %d more errors)", list[0], len(list)-1)
-}
-
-func newError(pos scanner.Position, msg string) error {
-	return errors.New(fmt.Sprintf("%s: %s", pos, msg))
-}
-
-// ----------------------------------------------------------------------------
-// Internal representation
-
-type (
-	// An Expression node represents a production expression.
-	Expression interface {
-		// Pos is the position of the first character of the syntactic construct
-		Pos() scanner.Position
-	}
-
-	// An Alternative node represents a non-empty list of alternative expressions.
-	Alternative []Expression // x | y | z
-
-	// A Sequence node represents a non-empty list of sequential expressions.
-	Sequence []Expression // x y z
-
-	// A Name node represents a production name.
-	Name struct {
-		StringPos scanner.Position
-		String    string
-	}
-
-	// A Token node represents a literal.
-	Token struct {
-		StringPos scanner.Position
-		String    string
-	}
-
-	// A List node represents a range of characters.
-	Range struct {
-		Begin, End *Token // begin ... end
-	}
-
-	// A Group node represents a grouped expression.
-	Group struct {
-		Lparen scanner.Position
-		Body   Expression // (body)
-	}
-
-	// An Option node represents an optional expression.
-	Option struct {
-		Lbrack scanner.Position
-		Body   Expression // [body]
-	}
-
-	// A Repetition node represents a repeated expression.
-	Repetition struct {
-		Lbrace scanner.Position
-		Body   Expression // {body}
-	}
-
-	// A Production node represents an EBNF production.
-	Production struct {
-		Name *Name
-		Expr Expression
-	}
-
-	// A Bad node stands for pieces of source code that lead to a parse error.
-	Bad struct {
-		TokPos scanner.Position
-		Error  string // parser error message
-	}
-
-	// A Grammar is a set of EBNF productions. The map
-	// is indexed by production name.
-	//
-	Grammar map[string]*Production
-)
-
-func (x Alternative) Pos() scanner.Position { return x[0].Pos() } // the parser always generates non-empty Alternative
-func (x Sequence) Pos() scanner.Position    { return x[0].Pos() } // the parser always generates non-empty Sequences
-func (x *Name) Pos() scanner.Position       { return x.StringPos }
-func (x *Token) Pos() scanner.Position      { return x.StringPos }
-func (x *Range) Pos() scanner.Position      { return x.Begin.Pos() }
-func (x *Group) Pos() scanner.Position      { return x.Lparen }
-func (x *Option) Pos() scanner.Position     { return x.Lbrack }
-func (x *Repetition) Pos() scanner.Position { return x.Lbrace }
-func (x *Production) Pos() scanner.Position { return x.Name.Pos() }
-func (x *Bad) Pos() scanner.Position        { return x.TokPos }
-
-// ----------------------------------------------------------------------------
-// Grammar verification
-
-func isLexical(name string) bool {
-	ch, _ := utf8.DecodeRuneInString(name)
-	return !unicode.IsUpper(ch)
-}
-
-type verifier struct {
-	errors   errorList
-	worklist []*Production
-	reached  Grammar // set of productions reached from (and including) the root production
-	grammar  Grammar
-}
-
-func (v *verifier) error(pos scanner.Position, msg string) {
-	v.errors = append(v.errors, newError(pos, msg))
-}
-
-func (v *verifier) push(prod *Production) {
-	name := prod.Name.String
-	if _, found := v.reached[name]; !found {
-		v.worklist = append(v.worklist, prod)
-		v.reached[name] = prod
-	}
-}
-
-func (v *verifier) verifyChar(x *Token) rune {
-	s := x.String
-	if utf8.RuneCountInString(s) != 1 {
-		v.error(x.Pos(), "single char expected, found "+s)
-		return 0
-	}
-	ch, _ := utf8.DecodeRuneInString(s)
-	return ch
-}
-
-func (v *verifier) verifyExpr(expr Expression, lexical bool) {
-	switch x := expr.(type) {
-	case nil:
-		// empty expression
-	case Alternative:
-		for _, e := range x {
-			v.verifyExpr(e, lexical)
-		}
-	case Sequence:
-		for _, e := range x {
-			v.verifyExpr(e, lexical)
-		}
-	case *Name:
-		// a production with this name must exist;
-		// add it to the worklist if not yet processed
-		if prod, found := v.grammar[x.String]; found {
-			v.push(prod)
-		} else {
-			v.error(x.Pos(), "missing production "+x.String)
-		}
-		// within a lexical production references
-		// to non-lexical productions are invalid
-		if lexical && !isLexical(x.String) {
-			v.error(x.Pos(), "reference to non-lexical production "+x.String)
-		}
-	case *Token:
-		// nothing to do for now
-	case *Range:
-		i := v.verifyChar(x.Begin)
-		j := v.verifyChar(x.End)
-		if i >= j {
-			v.error(x.Pos(), "decreasing character range")
-		}
-	case *Group:
-		v.verifyExpr(x.Body, lexical)
-	case *Option:
-		v.verifyExpr(x.Body, lexical)
-	case *Repetition:
-		v.verifyExpr(x.Body, lexical)
-	case *Bad:
-		v.error(x.Pos(), x.Error)
-	default:
-		panic(fmt.Sprintf("internal error: unexpected type %T", expr))
-	}
-}
-
-func (v *verifier) verify(grammar Grammar, start string) {
-	// find root production
-	root, found := grammar[start]
-	if !found {
-		var noPos scanner.Position
-		v.error(noPos, "no start production "+start)
-		return
-	}
-
-	// initialize verifier
-	v.worklist = v.worklist[0:0]
-	v.reached = make(Grammar)
-	v.grammar = grammar
-
-	// work through the worklist
-	v.push(root)
-	for {
-		n := len(v.worklist) - 1
-		if n < 0 {
-			break
-		}
-		prod := v.worklist[n]
-		v.worklist = v.worklist[0:n]
-		v.verifyExpr(prod.Expr, isLexical(prod.Name.String))
-	}
-
-	// check if all productions were reached
-	if len(v.reached) < len(v.grammar) {
-		for name, prod := range v.grammar {
-			if _, found := v.reached[name]; !found {
-				v.error(prod.Pos(), name+" is unreachable")
-			}
-		}
-	}
-}
-
-// Verify checks that:
-//	- all productions used are defined
-//	- all productions defined are used when beginning at start
-//	- lexical productions refer only to other lexical productions
-//
-// Position information is interpreted relative to the file set fset.
-//
-func Verify(grammar Grammar, start string) error {
-	var v verifier
-	v.verify(grammar, start)
-	return v.errors.Err()
-}
diff --git a/src/pkg/exp/ebnf/ebnf_test.go b/src/pkg/exp/ebnf/ebnf_test.go
deleted file mode 100644
index 8cfd6b9..0000000
--- a/src/pkg/exp/ebnf/ebnf_test.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ebnf
-
-import (
-	"bytes"
-	"testing"
-)
-
-var goodGrammars = []string{
-	`Program = .`,
-
-	`Program = foo .
-	 foo = "foo" .`,
-
-	`Program = "a" | "b" "c" .`,
-
-	`Program = "a" … "z" .`,
-
-	`Program = Song .
-	 Song = { Note } .
-	 Note = Do | (Re | Mi | Fa | So | La) | Ti .
-	 Do = "c" .
-	 Re = "d" .
-	 Mi = "e" .
-	 Fa = "f" .
-	 So = "g" .
-	 La = "a" .
-	 Ti = ti .
-	 ti = "b" .`,
-}
-
-var badGrammars = []string{
-	`Program = | .`,
-	`Program = | b .`,
-	`Program = a … b .`,
-	`Program = "a" … .`,
-	`Program = … "b" .`,
-	`Program = () .`,
-	`Program = [] .`,
-	`Program = {} .`,
-}
-
-func checkGood(t *testing.T, src string) {
-	grammar, err := Parse("", bytes.NewBuffer([]byte(src)))
-	if err != nil {
-		t.Errorf("Parse(%s) failed: %v", src, err)
-		return
-	}
-	if err = Verify(grammar, "Program"); err != nil {
-		t.Errorf("Verify(%s) failed: %v", src, err)
-	}
-}
-
-func checkBad(t *testing.T, src string) {
-	_, err := Parse("", bytes.NewBuffer([]byte(src)))
-	if err == nil {
-		t.Errorf("Parse(%s) should have failed", src)
-	}
-}
-
-func TestGrammars(t *testing.T) {
-	for _, src := range goodGrammars {
-		checkGood(t, src)
-	}
-	for _, src := range badGrammars {
-		checkBad(t, src)
-	}
-}
diff --git a/src/pkg/exp/ebnf/parser.go b/src/pkg/exp/ebnf/parser.go
deleted file mode 100644
index 7a7e3cc..0000000
--- a/src/pkg/exp/ebnf/parser.go
+++ /dev/null
@@ -1,190 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ebnf
-
-import (
-	"io"
-	"strconv"
-	"text/scanner"
-)
-
-type parser struct {
-	errors  errorList
-	scanner scanner.Scanner
-	pos     scanner.Position // token position
-	tok     rune             // one token look-ahead
-	lit     string           // token literal
-}
-
-func (p *parser) next() {
-	p.tok = p.scanner.Scan()
-	p.pos = p.scanner.Position
-	p.lit = p.scanner.TokenText()
-}
-
-func (p *parser) error(pos scanner.Position, msg string) {
-	p.errors = append(p.errors, newError(pos, msg))
-}
-
-func (p *parser) errorExpected(pos scanner.Position, msg string) {
-	msg = `expected "` + msg + `"`
-	if pos.Offset == p.pos.Offset {
-		// the error happened at the current position;
-		// make the error message more specific
-		msg += ", found " + scanner.TokenString(p.tok)
-		if p.tok < 0 {
-			msg += " " + p.lit
-		}
-	}
-	p.error(pos, msg)
-}
-
-func (p *parser) expect(tok rune) scanner.Position {
-	pos := p.pos
-	if p.tok != tok {
-		p.errorExpected(pos, scanner.TokenString(tok))
-	}
-	p.next() // make progress in any case
-	return pos
-}
-
-func (p *parser) parseIdentifier() *Name {
-	pos := p.pos
-	name := p.lit
-	p.expect(scanner.Ident)
-	return &Name{pos, name}
-}
-
-func (p *parser) parseToken() *Token {
-	pos := p.pos
-	value := ""
-	if p.tok == scanner.String {
-		value, _ = strconv.Unquote(p.lit)
-		// Unquote may fail with an error, but only if the scanner found
-		// an illegal string in the first place. In this case the error
-		// has already been reported.
-		p.next()
-	} else {
-		p.expect(scanner.String)
-	}
-	return &Token{pos, value}
-}
-
-// ParseTerm returns nil if no term was found.
-func (p *parser) parseTerm() (x Expression) {
-	pos := p.pos
-
-	switch p.tok {
-	case scanner.Ident:
-		x = p.parseIdentifier()
-
-	case scanner.String:
-		tok := p.parseToken()
-		x = tok
-		const ellipsis = '…' // U+2026, the horizontal ellipsis character
-		if p.tok == ellipsis {
-			p.next()
-			x = &Range{tok, p.parseToken()}
-		}
-
-	case '(':
-		p.next()
-		x = &Group{pos, p.parseExpression()}
-		p.expect(')')
-
-	case '[':
-		p.next()
-		x = &Option{pos, p.parseExpression()}
-		p.expect(']')
-
-	case '{':
-		p.next()
-		x = &Repetition{pos, p.parseExpression()}
-		p.expect('}')
-	}
-
-	return x
-}
-
-func (p *parser) parseSequence() Expression {
-	var list Sequence
-
-	for x := p.parseTerm(); x != nil; x = p.parseTerm() {
-		list = append(list, x)
-	}
-
-	// no need for a sequence if list.Len() < 2
-	switch len(list) {
-	case 0:
-		p.errorExpected(p.pos, "term")
-		return &Bad{p.pos, "term expected"}
-	case 1:
-		return list[0]
-	}
-
-	return list
-}
-
-func (p *parser) parseExpression() Expression {
-	var list Alternative
-
-	for {
-		list = append(list, p.parseSequence())
-		if p.tok != '|' {
-			break
-		}
-		p.next()
-	}
-	// len(list) > 0
-
-	// no need for an Alternative node if list.Len() < 2
-	if len(list) == 1 {
-		return list[0]
-	}
-
-	return list
-}
-
-func (p *parser) parseProduction() *Production {
-	name := p.parseIdentifier()
-	p.expect('=')
-	var expr Expression
-	if p.tok != '.' {
-		expr = p.parseExpression()
-	}
-	p.expect('.')
-	return &Production{name, expr}
-}
-
-func (p *parser) parse(filename string, src io.Reader) Grammar {
-	p.scanner.Init(src)
-	p.scanner.Filename = filename
-	p.next() // initializes pos, tok, lit
-
-	grammar := make(Grammar)
-	for p.tok != scanner.EOF {
-		prod := p.parseProduction()
-		name := prod.Name.String
-		if _, found := grammar[name]; !found {
-			grammar[name] = prod
-		} else {
-			p.error(prod.Pos(), name+" declared already")
-		}
-	}
-
-	return grammar
-}
-
-// Parse parses a set of EBNF productions from source src.
-// It returns a set of productions. Errors are reported
-// for incorrect syntax and if a production is declared
-// more than once; the filename is used only for error
-// positions.
-//
-func Parse(filename string, src io.Reader) (Grammar, error) {
-	var p parser
-	grammar := p.parse(filename, src)
-	return grammar, p.errors.Err()
-}
diff --git a/src/pkg/exp/ebnflint/doc.go b/src/pkg/exp/ebnflint/doc.go
deleted file mode 100644
index 4bb22a4..0000000
--- a/src/pkg/exp/ebnflint/doc.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-/*
-
-Ebnflint verifies that EBNF productions are consistent and grammatically correct.
-It reads them from an HTML document such as the Go specification.
-
-Grammar productions are grouped in boxes demarcated by the HTML elements
-	<pre class="ebnf">
-	</pre>
-
-
-Usage:
-	go tool ebnflint [--start production] [file]
-
-The --start flag specifies the name of the start production for
-the grammar; it defaults to "Start".
-
-*/
-package documentation
diff --git a/src/pkg/exp/ebnflint/ebnflint.go b/src/pkg/exp/ebnflint/ebnflint.go
deleted file mode 100644
index d54fb22..0000000
--- a/src/pkg/exp/ebnflint/ebnflint.go
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
-	"bytes"
-	"exp/ebnf"
-	"flag"
-	"fmt"
-	"go/scanner"
-	"go/token"
-	"io"
-	"io/ioutil"
-	"os"
-	"path/filepath"
-)
-
-var fset = token.NewFileSet()
-var start = flag.String("start", "Start", "name of start production")
-
-func usage() {
-	fmt.Fprintf(os.Stderr, "usage: go tool ebnflint [flags] [filename]\n")
-	flag.PrintDefaults()
-	os.Exit(1)
-}
-
-// Markers around EBNF sections in .html files
-var (
-	open  = []byte(`<pre class="ebnf">`)
-	close = []byte(`</pre>`)
-)
-
-func report(err error) {
-	scanner.PrintError(os.Stderr, err)
-	os.Exit(1)
-}
-
-func extractEBNF(src []byte) []byte {
-	var buf bytes.Buffer
-
-	for {
-		// i = beginning of EBNF text
-		i := bytes.Index(src, open)
-		if i < 0 {
-			break // no EBNF found - we are done
-		}
-		i += len(open)
-
-		// write as many newlines as found in the excluded text
-		// to maintain correct line numbers in error messages
-		for _, ch := range src[0:i] {
-			if ch == '\n' {
-				buf.WriteByte('\n')
-			}
-		}
-
-		// j = end of EBNF text (or end of source)
-		j := bytes.Index(src[i:], close) // close marker
-		if j < 0 {
-			j = len(src) - i
-		}
-		j += i
-
-		// copy EBNF text
-		buf.Write(src[i:j])
-
-		// advance
-		src = src[j:]
-	}
-
-	return buf.Bytes()
-}
-
-func main() {
-	flag.Parse()
-
-	var (
-		name string
-		r    io.Reader
-	)
-	switch flag.NArg() {
-	case 0:
-		name, r = "<stdin>", os.Stdin
-	case 1:
-		name = flag.Arg(0)
-	default:
-		usage()
-	}
-
-	if err := verify(name, *start, r); err != nil {
-		report(err)
-	}
-}
-
-func verify(name, start string, r io.Reader) error {
-	if r == nil {
-		f, err := os.Open(name)
-		if err != nil {
-			return err
-		}
-		defer f.Close()
-		r = f
-	}
-
-	src, err := ioutil.ReadAll(r)
-	if err != nil {
-		return err
-	}
-
-	if filepath.Ext(name) == ".html" || bytes.Index(src, open) >= 0 {
-		src = extractEBNF(src)
-	}
-
-	grammar, err := ebnf.Parse(name, bytes.NewBuffer(src))
-	if err != nil {
-		return err
-	}
-
-	return ebnf.Verify(grammar, start)
-}
diff --git a/src/pkg/exp/ebnflint/ebnflint_test.go b/src/pkg/exp/ebnflint/ebnflint_test.go
deleted file mode 100644
index 875dbc1..0000000
--- a/src/pkg/exp/ebnflint/ebnflint_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2012 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
-	"runtime"
-	"testing"
-)
-
-func TestSpec(t *testing.T) {
-	if err := verify(runtime.GOROOT()+"/doc/go_spec.html", "SourceFile", nil); err != nil {
-		t.Fatal(err)
-	}
-}
diff --git a/src/pkg/exp/gotype/doc.go b/src/pkg/exp/gotype/doc.go
deleted file mode 100644
index 1168086..0000000
--- a/src/pkg/exp/gotype/doc.go
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-/*
-The gotype command does syntactic and semantic analysis of Go files
-and packages similar to the analysis performed by the front-end of
-a Go compiler. Errors are reported if the analysis fails; otherwise
-gotype is quiet (unless -v is set).
-
-Without a list of paths, gotype processes the standard input, which must
-be the source of a single package file.
-
-Given a list of file names, each file must be a source file belonging to
-the same package unless the package name is explicitly specified with the
--p flag.
-
-Given a directory name, gotype collects all .go files in the directory
-and processes them as if they were provided as an explicit list of file
-names. Each directory is processed independently. Files starting with .
-or not ending in .go are ignored.
-
-Usage:
-	gotype [flags] [path ...]
-
-The flags are:
-	-e
-		Print all (including spurious) errors.
-	-p pkgName
-		Process only those files in package pkgName.
-	-r
-		Recursively process subdirectories.
-	-v
-		Verbose mode.
-
-Debugging flags:
-	-comments
-		Parse comments (ignored if -ast not set).
-	-ast
-		Print AST (disables concurrent parsing).
-	-trace
-		Print parse trace (disables concurrent parsing).
-
-
-Examples
-
-To check the files file.go, old.saved, and .ignored:
-
-	gotype file.go old.saved .ignored
-
-To check all .go files belonging to package main in the current directory
-and recursively in all subdirectories:
-
-	gotype -p main -r .
-
-To verify the output of a pipe:
-
-	echo "package foo" | gotype
-
-*/
-package documentation
-
-// BUG(gri): At the moment, only single-file scope analysis is performed.
diff --git a/src/pkg/exp/gotype/gotype.go b/src/pkg/exp/gotype/gotype.go
deleted file mode 100644
index 3aca40e..0000000
--- a/src/pkg/exp/gotype/gotype.go
+++ /dev/null
@@ -1,197 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
-	"errors"
-	"exp/types"
-	"flag"
-	"fmt"
-	"go/ast"
-	"go/parser"
-	"go/scanner"
-	"go/token"
-	"io/ioutil"
-	"os"
-	"path/filepath"
-	"strings"
-)
-
-var (
-	// main operation modes
-	pkgName   = flag.String("p", "", "process only those files in package pkgName")
-	recursive = flag.Bool("r", false, "recursively process subdirectories")
-	verbose   = flag.Bool("v", false, "verbose mode")
-	allErrors = flag.Bool("e", false, "print all (including spurious) errors")
-
-	// debugging support
-	parseComments = flag.Bool("comments", false, "parse comments (ignored if -ast not set)")
-	printTrace    = flag.Bool("trace", false, "print parse trace")
-	printAST      = flag.Bool("ast", false, "print AST")
-)
-
-var exitCode = 0
-
-func usage() {
-	fmt.Fprintf(os.Stderr, "usage: gotype [flags] [path ...]\n")
-	flag.PrintDefaults()
-	os.Exit(2)
-}
-
-func report(err error) {
-	scanner.PrintError(os.Stderr, err)
-	exitCode = 2
-}
-
-// parse returns the AST for the Go source src.
-// The filename is for error reporting only.
-// The result is nil if there were errors or if
-// the file does not belong to the -p package.
-func parse(fset *token.FileSet, filename string, src []byte) *ast.File {
-	if *verbose {
-		fmt.Println(filename)
-	}
-
-	// ignore files with different package name
-	if *pkgName != "" {
-		file, err := parser.ParseFile(fset, filename, src, parser.PackageClauseOnly)
-		if err != nil {
-			report(err)
-			return nil
-		}
-		if file.Name.Name != *pkgName {
-			if *verbose {
-				fmt.Printf("\tignored (package %s)\n", file.Name.Name)
-			}
-			return nil
-		}
-	}
-
-	// parse entire file
-	mode := parser.DeclarationErrors
-	if *allErrors {
-		mode |= parser.SpuriousErrors
-	}
-	if *parseComments && *printAST {
-		mode |= parser.ParseComments
-	}
-	if *printTrace {
-		mode |= parser.Trace
-	}
-	file, err := parser.ParseFile(fset, filename, src, mode)
-	if err != nil {
-		report(err)
-		return nil
-	}
-	if *printAST {
-		ast.Print(fset, file)
-	}
-
-	return file
-}
-
-func parseStdin(fset *token.FileSet) (files map[string]*ast.File) {
-	files = make(map[string]*ast.File)
-	src, err := ioutil.ReadAll(os.Stdin)
-	if err != nil {
-		report(err)
-		return
-	}
-	const filename = "<standard input>"
-	if file := parse(fset, filename, src); file != nil {
-		files[filename] = file
-	}
-	return
-}
-
-func parseFiles(fset *token.FileSet, filenames []string) (files map[string]*ast.File) {
-	files = make(map[string]*ast.File)
-	for _, filename := range filenames {
-		src, err := ioutil.ReadFile(filename)
-		if err != nil {
-			report(err)
-			continue
-		}
-		if file := parse(fset, filename, src); file != nil {
-			if files[filename] != nil {
-				report(errors.New(fmt.Sprintf("%q: duplicate file", filename)))
-				continue
-			}
-			files[filename] = file
-		}
-	}
-	return
-}
-
-func isGoFilename(filename string) bool {
-	// ignore non-Go files
-	return !strings.HasPrefix(filename, ".") && strings.HasSuffix(filename, ".go")
-}
-
-func processDirectory(dirname string) {
-	f, err := os.Open(dirname)
-	if err != nil {
-		report(err)
-		return
-	}
-	filenames, err := f.Readdirnames(-1)
-	f.Close()
-	if err != nil {
-		report(err)
-		// continue since filenames may not be empty
-	}
-	for i, filename := range filenames {
-		filenames[i] = filepath.Join(dirname, filename)
-	}
-	processFiles(filenames, false)
-}
-
-func processFiles(filenames []string, allFiles bool) {
-	i := 0
-	for _, filename := range filenames {
-		switch info, err := os.Stat(filename); {
-		case err != nil:
-			report(err)
-		case info.IsDir():
-			if allFiles || *recursive {
-				processDirectory(filename)
-			}
-		default:
-			if allFiles || isGoFilename(info.Name()) {
-				filenames[i] = filename
-				i++
-			}
-		}
-	}
-	fset := token.NewFileSet()
-	processPackage(fset, parseFiles(fset, filenames[0:i]))
-}
-
-func processPackage(fset *token.FileSet, files map[string]*ast.File) {
-	// make a package (resolve all identifiers)
-	pkg, err := ast.NewPackage(fset, files, types.GcImport, types.Universe)
-	if err != nil {
-		report(err)
-		return
-	}
-	_, err = types.Check(fset, pkg)
-	if err != nil {
-		report(err)
-	}
-}
-
-func main() {
-	flag.Usage = usage
-	flag.Parse()
-
-	if flag.NArg() == 0 {
-		fset := token.NewFileSet()
-		processPackage(fset, parseStdin(fset))
-	} else {
-		processFiles(flag.Args(), true)
-	}
-
-	os.Exit(exitCode)
-}
diff --git a/src/pkg/exp/gotype/gotype_test.go b/src/pkg/exp/gotype/gotype_test.go
deleted file mode 100644
index 8732d4c..0000000
--- a/src/pkg/exp/gotype/gotype_test.go
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
-	"path/filepath"
-	"runtime"
-	"testing"
-)
-
-func runTest(t *testing.T, path, pkg string) {
-	exitCode = 0
-	*pkgName = pkg
-	*recursive = false
-
-	if pkg == "" {
-		processFiles([]string{path}, true)
-	} else {
-		processDirectory(path)
-	}
-
-	if exitCode != 0 {
-		t.Errorf("processing %s failed: exitCode = %d", path, exitCode)
-	}
-}
-
-var tests = []struct {
-	path string
-	pkg  string
-}{
-	// individual files
-	{"testdata/test1.go", ""},
-
-	// directories
-	{filepath.Join(runtime.GOROOT(), "src/pkg/go/ast"), "ast"},
-	{filepath.Join(runtime.GOROOT(), "src/pkg/go/doc"), "doc"},
-	{filepath.Join(runtime.GOROOT(), "src/pkg/go/token"), "scanner"},
-	{filepath.Join(runtime.GOROOT(), "src/pkg/go/scanner"), "scanner"},
-	{filepath.Join(runtime.GOROOT(), "src/pkg/go/parser"), "parser"},
-	{filepath.Join(runtime.GOROOT(), "src/pkg/exp/types"), "types"},
-}
-
-func Test(t *testing.T) {
-	for _, test := range tests {
-		runTest(t, test.path, test.pkg)
-	}
-}
diff --git a/src/pkg/exp/gotype/testdata/test1.go b/src/pkg/exp/gotype/testdata/test1.go
deleted file mode 100644
index ba8a51f..0000000
--- a/src/pkg/exp/gotype/testdata/test1.go
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package p
-
-func _() {
-	// the scope of a local type declaration starts immediately after the type name
-	type T struct{ _ *T }
-}
-
-func _(x interface{}) {
-	// the variable defined by a TypeSwitchGuard is declared in each TypeCaseClause
-	switch t := x.(type) {
-	case int:
-		_ = t
-	case float32:
-		_ = t
-	default:
-		_ = t
-	}
-
-	// the variable defined by a TypeSwitchGuard must not conflict with other
-	// variables declared in the initial simple statement
-	switch t := 0; t := x.(type) {
-	}
-}
diff --git a/src/pkg/exp/html/const.go b/src/pkg/exp/html/const.go
deleted file mode 100644
index d7cc8bb..0000000
--- a/src/pkg/exp/html/const.go
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-// Section 12.2.3.2 of the HTML5 specification says "The following elements
-// have varying levels of special parsing rules".
-// http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#the-stack-of-open-elements
-var isSpecialElementMap = map[string]bool{
-	"address":    true,
-	"applet":     true,
-	"area":       true,
-	"article":    true,
-	"aside":      true,
-	"base":       true,
-	"basefont":   true,
-	"bgsound":    true,
-	"blockquote": true,
-	"body":       true,
-	"br":         true,
-	"button":     true,
-	"caption":    true,
-	"center":     true,
-	"col":        true,
-	"colgroup":   true,
-	"command":    true,
-	"dd":         true,
-	"details":    true,
-	"dir":        true,
-	"div":        true,
-	"dl":         true,
-	"dt":         true,
-	"embed":      true,
-	"fieldset":   true,
-	"figcaption": true,
-	"figure":     true,
-	"footer":     true,
-	"form":       true,
-	"frame":      true,
-	"frameset":   true,
-	"h1":         true,
-	"h2":         true,
-	"h3":         true,
-	"h4":         true,
-	"h5":         true,
-	"h6":         true,
-	"head":       true,
-	"header":     true,
-	"hgroup":     true,
-	"hr":         true,
-	"html":       true,
-	"iframe":     true,
-	"img":        true,
-	"input":      true,
-	"isindex":    true,
-	"li":         true,
-	"link":       true,
-	"listing":    true,
-	"marquee":    true,
-	"menu":       true,
-	"meta":       true,
-	"nav":        true,
-	"noembed":    true,
-	"noframes":   true,
-	"noscript":   true,
-	"object":     true,
-	"ol":         true,
-	"p":          true,
-	"param":      true,
-	"plaintext":  true,
-	"pre":        true,
-	"script":     true,
-	"section":    true,
-	"select":     true,
-	"style":      true,
-	"summary":    true,
-	"table":      true,
-	"tbody":      true,
-	"td":         true,
-	"textarea":   true,
-	"tfoot":      true,
-	"th":         true,
-	"thead":      true,
-	"title":      true,
-	"tr":         true,
-	"ul":         true,
-	"wbr":        true,
-	"xmp":        true,
-}
-
-func isSpecialElement(element *Node) bool {
-	switch element.Namespace {
-	case "", "html":
-		return isSpecialElementMap[element.Data]
-	case "svg":
-		return element.Data == "foreignObject"
-	}
-	return false
-}
diff --git a/src/pkg/exp/html/doc.go b/src/pkg/exp/html/doc.go
deleted file mode 100644
index 56b194f..0000000
--- a/src/pkg/exp/html/doc.go
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-/*
-Package html implements an HTML5-compliant tokenizer and parser.
-INCOMPLETE.
-
-Tokenization is done by creating a Tokenizer for an io.Reader r. It is the
-caller's responsibility to ensure that r provides UTF-8 encoded HTML.
-
-	z := html.NewTokenizer(r)
-
-Given a Tokenizer z, the HTML is tokenized by repeatedly calling z.Next(),
-which parses the next token and returns its type, or an error:
-
-	for {
-		tt := z.Next()
-		if tt == html.ErrorToken {
-			// ...
-			return ...
-		}
-		// Process the current token.
-	}
-
-There are two APIs for retrieving the current token. The high-level API is to
-call Token; the low-level API is to call Text or TagName / TagAttr. Both APIs
-allow optionally calling Raw after Next but before Token, Text, TagName, or
-TagAttr. In EBNF notation, the valid call sequence per token is:
-
-	Next {Raw} [ Token | Text | TagName {TagAttr} ]
-
-Token returns an independent data structure that completely describes a token.
-Entities (such as "&lt;") are unescaped, tag names and attribute keys are
-lower-cased, and attributes are collected into a []Attribute. For example:
-
-	for {
-		if z.Next() == html.ErrorToken {
-			// Returning io.EOF indicates success.
-			return z.Err()
-		}
-		emitToken(z.Token())
-	}
-
-The low-level API performs fewer allocations and copies, but the contents of
-the []byte values returned by Text, TagName and TagAttr may change on the next
-call to Next. For example, to extract an HTML page's anchor text:
-
-	depth := 0
-	for {
-		tt := z.Next()
-		switch tt {
-		case ErrorToken:
-			return z.Err()
-		case TextToken:
-			if depth > 0 {
-				// emitBytes should copy the []byte it receives,
-				// if it doesn't process it immediately.
-				emitBytes(z.Text())
-			}
-		case StartTagToken, EndTagToken:
-			tn, _ := z.TagName()
-			if len(tn) == 1 && tn[0] == 'a' {
-				if tt == StartTagToken {
-					depth++
-				} else {
-					depth--
-				}
-			}
-		}
-	}
-
-Parsing is done by calling Parse with an io.Reader, which returns the root of
-the parse tree (the document element) as a *Node. It is the caller's
-responsibility to ensure that the Reader provides UTF-8 encoded HTML. For
-example, to process each anchor node in depth-first order:
-
-	doc, err := html.Parse(r)
-	if err != nil {
-		// ...
-	}
-	var f func(*html.Node)
-	f = func(n *html.Node) {
-		if n.Type == html.ElementNode && n.Data == "a" {
-			// Do something with n...
-		}
-		for _, c := range n.Child {
-			f(c)
-		}
-	}
-	f(doc)
-
-The relevant specifications include:
-http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html and
-http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html
-*/
-package html
-
-// The tokenization algorithm implemented by this package is not a line-by-line
-// transliteration of the relatively verbose state-machine in the WHATWG
-// specification. A more direct approach is used instead, where the program
-// counter implies the state, such as whether it is tokenizing a tag or a text
-// node. Specification compliance is verified by checking expected and actual
-// outputs over a test suite rather than aiming for algorithmic fidelity.
-
-// TODO(nigeltao): Does a DOM API belong in this package or a separate one?
-// TODO(nigeltao): How does parsing interact with a JavaScript engine?
diff --git a/src/pkg/exp/html/doctype.go b/src/pkg/exp/html/doctype.go
deleted file mode 100644
index f692061..0000000
--- a/src/pkg/exp/html/doctype.go
+++ /dev/null
@@ -1,156 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-import (
-	"strings"
-)
-
-// parseDoctype parses the data from a DoctypeToken into a name,
-// public identifier, and system identifier. It returns a Node whose Type 
-// is DoctypeNode, whose Data is the name, and which has attributes
-// named "system" and "public" for the two identifiers if they were present.
-// quirks is whether the document should be parsed in "quirks mode".
-func parseDoctype(s string) (n *Node, quirks bool) {
-	n = &Node{Type: DoctypeNode}
-
-	// Find the name.
-	space := strings.IndexAny(s, whitespace)
-	if space == -1 {
-		space = len(s)
-	}
-	n.Data = s[:space]
-	// The comparison to "html" is case-sensitive.
-	if n.Data != "html" {
-		quirks = true
-	}
-	n.Data = strings.ToLower(n.Data)
-	s = strings.TrimLeft(s[space:], whitespace)
-
-	if len(s) < 6 {
-		// It can't start with "PUBLIC" or "SYSTEM".
-		// Ignore the rest of the string.
-		return n, quirks || s != ""
-	}
-
-	key := strings.ToLower(s[:6])
-	s = s[6:]
-	for key == "public" || key == "system" {
-		s = strings.TrimLeft(s, whitespace)
-		if s == "" {
-			break
-		}
-		quote := s[0]
-		if quote != '"' && quote != '\'' {
-			break
-		}
-		s = s[1:]
-		q := strings.IndexRune(s, rune(quote))
-		var id string
-		if q == -1 {
-			id = s
-			s = ""
-		} else {
-			id = s[:q]
-			s = s[q+1:]
-		}
-		n.Attr = append(n.Attr, Attribute{Key: key, Val: id})
-		if key == "public" {
-			key = "system"
-		} else {
-			key = ""
-		}
-	}
-
-	if key != "" || s != "" {
-		quirks = true
-	} else if len(n.Attr) > 0 {
-		if n.Attr[0].Key == "public" {
-			public := strings.ToLower(n.Attr[0].Val)
-			switch public {
-			case "-//w3o//dtd w3 html strict 3.0//en//", "-/w3d/dtd html 4.0 transitional/en", "html":
-				quirks = true
-			default:
-				for _, q := range quirkyIDs {
-					if strings.HasPrefix(public, q) {
-						quirks = true
-						break
-					}
-				}
-			}
-			// The following two public IDs only cause quirks mode if there is no system ID.
-			if len(n.Attr) == 1 && (strings.HasPrefix(public, "-//w3c//dtd html 4.01 frameset//") ||
-				strings.HasPrefix(public, "-//w3c//dtd html 4.01 transitional//")) {
-				quirks = true
-			}
-		}
-		if lastAttr := n.Attr[len(n.Attr)-1]; lastAttr.Key == "system" &&
-			strings.ToLower(lastAttr.Val) == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd" {
-			quirks = true
-		}
-	}
-
-	return n, quirks
-}
-
-// quirkyIDs is a list of public doctype identifiers that cause a document
-// to be interpreted in quirks mode. The identifiers should be in lower case.
-var quirkyIDs = []string{
-	"+//silmaril//dtd html pro v0r11 19970101//",
-	"-//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//",
-	"-//microsoft//dtd internet explorer 2.0 html strict//",
-	"-//microsoft//dtd internet explorer 2.0 html//",
-	"-//microsoft//dtd internet explorer 2.0 tables//",
-	"-//microsoft//dtd internet explorer 3.0 html strict//",
-	"-//microsoft//dtd internet explorer 3.0 html//",
-	"-//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//",
-	"-//o'reilly and associates//dtd html extended 1.0//",
-	"-//o'reilly and associates//dtd html extended relaxed 1.0//",
-	"-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//",
-	"-//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//",
-	"-//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//",
-}
diff --git a/src/pkg/exp/html/entity.go b/src/pkg/exp/html/entity.go
deleted file mode 100644
index bd83075..0000000
--- a/src/pkg/exp/html/entity.go
+++ /dev/null
@@ -1,2253 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-// All entities that do not end with ';' are 6 or fewer bytes long.
-const longestEntityWithoutSemicolon = 6
-
-// entity is a map from HTML entity names to their values. The semicolon matters:
-// http://www.whatwg.org/specs/web-apps/current-work/multipage/named-character-references.html
-// lists both "amp" and "amp;" as two separate entries.
-//
-// Note that the HTML5 list is larger than the HTML4 list at
-// http://www.w3.org/TR/html4/sgml/entities.html
-var entity = map[string]rune{
-	"AElig;":                           '\U000000C6',
-	"AMP;":                             '\U00000026',
-	"Aacute;":                          '\U000000C1',
-	"Abreve;":                          '\U00000102',
-	"Acirc;":                           '\U000000C2',
-	"Acy;":                             '\U00000410',
-	"Afr;":                             '\U0001D504',
-	"Agrave;":                          '\U000000C0',
-	"Alpha;":                           '\U00000391',
-	"Amacr;":                           '\U00000100',
-	"And;":                             '\U00002A53',
-	"Aogon;":                           '\U00000104',
-	"Aopf;":                            '\U0001D538',
-	"ApplyFunction;":                   '\U00002061',
-	"Aring;":                           '\U000000C5',
-	"Ascr;":                            '\U0001D49C',
-	"Assign;":                          '\U00002254',
-	"Atilde;":                          '\U000000C3',
-	"Auml;":                            '\U000000C4',
-	"Backslash;":                       '\U00002216',
-	"Barv;":                            '\U00002AE7',
-	"Barwed;":                          '\U00002306',
-	"Bcy;":                             '\U00000411',
-	"Because;":                         '\U00002235',
-	"Bernoullis;":                      '\U0000212C',
-	"Beta;":                            '\U00000392',
-	"Bfr;":                             '\U0001D505',
-	"Bopf;":                            '\U0001D539',
-	"Breve;":                           '\U000002D8',
-	"Bscr;":                            '\U0000212C',
-	"Bumpeq;":                          '\U0000224E',
-	"CHcy;":                            '\U00000427',
-	"COPY;":                            '\U000000A9',
-	"Cacute;":                          '\U00000106',
-	"Cap;":                             '\U000022D2',
-	"CapitalDifferentialD;":            '\U00002145',
-	"Cayleys;":                         '\U0000212D',
-	"Ccaron;":                          '\U0000010C',
-	"Ccedil;":                          '\U000000C7',
-	"Ccirc;":                           '\U00000108',
-	"Cconint;":                         '\U00002230',
-	"Cdot;":                            '\U0000010A',
-	"Cedilla;":                         '\U000000B8',
-	"CenterDot;":                       '\U000000B7',
-	"Cfr;":                             '\U0000212D',
-	"Chi;":                             '\U000003A7',
-	"CircleDot;":                       '\U00002299',
-	"CircleMinus;":                     '\U00002296',
-	"CirclePlus;":                      '\U00002295',
-	"CircleTimes;":                     '\U00002297',
-	"ClockwiseContourIntegral;":        '\U00002232',
-	"CloseCurlyDoubleQuote;":           '\U0000201D',
-	"CloseCurlyQuote;":                 '\U00002019',
-	"Colon;":                           '\U00002237',
-	"Colone;":                          '\U00002A74',
-	"Congruent;":                       '\U00002261',
-	"Conint;":                          '\U0000222F',
-	"ContourIntegral;":                 '\U0000222E',
-	"Copf;":                            '\U00002102',
-	"Coproduct;":                       '\U00002210',
-	"CounterClockwiseContourIntegral;": '\U00002233',
-	"Cross;":                           '\U00002A2F',
-	"Cscr;":                            '\U0001D49E',
-	"Cup;":                             '\U000022D3',
-	"CupCap;":                          '\U0000224D',
-	"DD;":                              '\U00002145',
-	"DDotrahd;":                        '\U00002911',
-	"DJcy;":                            '\U00000402',
-	"DScy;":                            '\U00000405',
-	"DZcy;":                            '\U0000040F',
-	"Dagger;":                          '\U00002021',
-	"Darr;":                            '\U000021A1',
-	"Dashv;":                           '\U00002AE4',
-	"Dcaron;":                          '\U0000010E',
-	"Dcy;":                             '\U00000414',
-	"Del;":                             '\U00002207',
-	"Delta;":                           '\U00000394',
-	"Dfr;":                             '\U0001D507',
-	"DiacriticalAcute;":                '\U000000B4',
-	"DiacriticalDot;":                  '\U000002D9',
-	"DiacriticalDoubleAcute;":          '\U000002DD',
-	"DiacriticalGrave;":                '\U00000060',
-	"DiacriticalTilde;":                '\U000002DC',
-	"Diamond;":                         '\U000022C4',
-	"DifferentialD;":                   '\U00002146',
-	"Dopf;":                            '\U0001D53B',
-	"Dot;":                             '\U000000A8',
-	"DotDot;":                          '\U000020DC',
-	"DotEqual;":                        '\U00002250',
-	"DoubleContourIntegral;":           '\U0000222F',
-	"DoubleDot;":                       '\U000000A8',
-	"DoubleDownArrow;":                 '\U000021D3',
-	"DoubleLeftArrow;":                 '\U000021D0',
-	"DoubleLeftRightArrow;":            '\U000021D4',
-	"DoubleLeftTee;":                   '\U00002AE4',
-	"DoubleLongLeftArrow;":             '\U000027F8',
-	"DoubleLongLeftRightArrow;":        '\U000027FA',
-	"DoubleLongRightArrow;":            '\U000027F9',
-	"DoubleRightArrow;":                '\U000021D2',
-	"DoubleRightTee;":                  '\U000022A8',
-	"DoubleUpArrow;":                   '\U000021D1',
-	"DoubleUpDownArrow;":               '\U000021D5',
-	"DoubleVerticalBar;":               '\U00002225',
-	"DownArrow;":                       '\U00002193',
-	"DownArrowBar;":                    '\U00002913',
-	"DownArrowUpArrow;":                '\U000021F5',
-	"DownBreve;":                       '\U00000311',
-	"DownLeftRightVector;":             '\U00002950',
-	"DownLeftTeeVector;":               '\U0000295E',
-	"DownLeftVector;":                  '\U000021BD',
-	"DownLeftVectorBar;":               '\U00002956',
-	"DownRightTeeVector;":              '\U0000295F',
-	"DownRightVector;":                 '\U000021C1',
-	"DownRightVectorBar;":              '\U00002957',
-	"DownTee;":                         '\U000022A4',
-	"DownTeeArrow;":                    '\U000021A7',
-	"Downarrow;":                       '\U000021D3',
-	"Dscr;":                            '\U0001D49F',
-	"Dstrok;":                          '\U00000110',
-	"ENG;":                             '\U0000014A',
-	"ETH;":                             '\U000000D0',
-	"Eacute;":                          '\U000000C9',
-	"Ecaron;":                          '\U0000011A',
-	"Ecirc;":                           '\U000000CA',
-	"Ecy;":                             '\U0000042D',
-	"Edot;":                            '\U00000116',
-	"Efr;":                             '\U0001D508',
-	"Egrave;":                          '\U000000C8',
-	"Element;":                         '\U00002208',
-	"Emacr;":                           '\U00000112',
-	"EmptySmallSquare;":                '\U000025FB',
-	"EmptyVerySmallSquare;":            '\U000025AB',
-	"Eogon;":                           '\U00000118',
-	"Eopf;":                            '\U0001D53C',
-	"Epsilon;":                         '\U00000395',
-	"Equal;":                           '\U00002A75',
-	"EqualTilde;":                      '\U00002242',
-	"Equilibrium;":                     '\U000021CC',
-	"Escr;":                            '\U00002130',
-	"Esim;":                            '\U00002A73',
-	"Eta;":                             '\U00000397',
-	"Euml;":                            '\U000000CB',
-	"Exists;":                          '\U00002203',
-	"ExponentialE;":                    '\U00002147',
-	"Fcy;":                             '\U00000424',
-	"Ffr;":                             '\U0001D509',
-	"FilledSmallSquare;":               '\U000025FC',
-	"FilledVerySmallSquare;":           '\U000025AA',
-	"Fopf;":                            '\U0001D53D',
-	"ForAll;":                          '\U00002200',
-	"Fouriertrf;":                      '\U00002131',
-	"Fscr;":                            '\U00002131',
-	"GJcy;":                            '\U00000403',
-	"GT;":                              '\U0000003E',
-	"Gamma;":                           '\U00000393',
-	"Gammad;":                          '\U000003DC',
-	"Gbreve;":                          '\U0000011E',
-	"Gcedil;":                          '\U00000122',
-	"Gcirc;":                           '\U0000011C',
-	"Gcy;":                             '\U00000413',
-	"Gdot;":                            '\U00000120',
-	"Gfr;":                             '\U0001D50A',
-	"Gg;":                              '\U000022D9',
-	"Gopf;":                            '\U0001D53E',
-	"GreaterEqual;":                    '\U00002265',
-	"GreaterEqualLess;":                '\U000022DB',
-	"GreaterFullEqual;":                '\U00002267',
-	"GreaterGreater;":                  '\U00002AA2',
-	"GreaterLess;":                     '\U00002277',
-	"GreaterSlantEqual;":               '\U00002A7E',
-	"GreaterTilde;":                    '\U00002273',
-	"Gscr;":                            '\U0001D4A2',
-	"Gt;":                              '\U0000226B',
-	"HARDcy;":                          '\U0000042A',
-	"Hacek;":                           '\U000002C7',
-	"Hat;":                             '\U0000005E',
-	"Hcirc;":                           '\U00000124',
-	"Hfr;":                             '\U0000210C',
-	"HilbertSpace;":                    '\U0000210B',
-	"Hopf;":                            '\U0000210D',
-	"HorizontalLine;":                  '\U00002500',
-	"Hscr;":                            '\U0000210B',
-	"Hstrok;":                          '\U00000126',
-	"HumpDownHump;":                    '\U0000224E',
-	"HumpEqual;":                       '\U0000224F',
-	"IEcy;":                            '\U00000415',
-	"IJlig;":                           '\U00000132',
-	"IOcy;":                            '\U00000401',
-	"Iacute;":                          '\U000000CD',
-	"Icirc;":                           '\U000000CE',
-	"Icy;":                             '\U00000418',
-	"Idot;":                            '\U00000130',
-	"Ifr;":                             '\U00002111',
-	"Igrave;":                          '\U000000CC',
-	"Im;":                              '\U00002111',
-	"Imacr;":                           '\U0000012A',
-	"ImaginaryI;":                      '\U00002148',
-	"Implies;":                         '\U000021D2',
-	"Int;":                             '\U0000222C',
-	"Integral;":                        '\U0000222B',
-	"Intersection;":                    '\U000022C2',
-	"InvisibleComma;":                  '\U00002063',
-	"InvisibleTimes;":                  '\U00002062',
-	"Iogon;":                           '\U0000012E',
-	"Iopf;":                            '\U0001D540',
-	"Iota;":                            '\U00000399',
-	"Iscr;":                            '\U00002110',
-	"Itilde;":                          '\U00000128',
-	"Iukcy;":                           '\U00000406',
-	"Iuml;":                            '\U000000CF',
-	"Jcirc;":                           '\U00000134',
-	"Jcy;":                             '\U00000419',
-	"Jfr;":                             '\U0001D50D',
-	"Jopf;":                            '\U0001D541',
-	"Jscr;":                            '\U0001D4A5',
-	"Jsercy;":                          '\U00000408',
-	"Jukcy;":                           '\U00000404',
-	"KHcy;":                            '\U00000425',
-	"KJcy;":                            '\U0000040C',
-	"Kappa;":                           '\U0000039A',
-	"Kcedil;":                          '\U00000136',
-	"Kcy;":                             '\U0000041A',
-	"Kfr;":                             '\U0001D50E',
-	"Kopf;":                            '\U0001D542',
-	"Kscr;":                            '\U0001D4A6',
-	"LJcy;":                            '\U00000409',
-	"LT;":                              '\U0000003C',
-	"Lacute;":                          '\U00000139',
-	"Lambda;":                          '\U0000039B',
-	"Lang;":                            '\U000027EA',
-	"Laplacetrf;":                      '\U00002112',
-	"Larr;":                            '\U0000219E',
-	"Lcaron;":                          '\U0000013D',
-	"Lcedil;":                          '\U0000013B',
-	"Lcy;":                             '\U0000041B',
-	"LeftAngleBracket;":                '\U000027E8',
-	"LeftArrow;":                       '\U00002190',
-	"LeftArrowBar;":                    '\U000021E4',
-	"LeftArrowRightArrow;":             '\U000021C6',
-	"LeftCeiling;":                     '\U00002308',
-	"LeftDoubleBracket;":               '\U000027E6',
-	"LeftDownTeeVector;":               '\U00002961',
-	"LeftDownVector;":                  '\U000021C3',
-	"LeftDownVectorBar;":               '\U00002959',
-	"LeftFloor;":                       '\U0000230A',
-	"LeftRightArrow;":                  '\U00002194',
-	"LeftRightVector;":                 '\U0000294E',
-	"LeftTee;":                         '\U000022A3',
-	"LeftTeeArrow;":                    '\U000021A4',
-	"LeftTeeVector;":                   '\U0000295A',
-	"LeftTriangle;":                    '\U000022B2',
-	"LeftTriangleBar;":                 '\U000029CF',
-	"LeftTriangleEqual;":               '\U000022B4',
-	"LeftUpDownVector;":                '\U00002951',
-	"LeftUpTeeVector;":                 '\U00002960',
-	"LeftUpVector;":                    '\U000021BF',
-	"LeftUpVectorBar;":                 '\U00002958',
-	"LeftVector;":                      '\U000021BC',
-	"LeftVectorBar;":                   '\U00002952',
-	"Leftarrow;":                       '\U000021D0',
-	"Leftrightarrow;":                  '\U000021D4',
-	"LessEqualGreater;":                '\U000022DA',
-	"LessFullEqual;":                   '\U00002266',
-	"LessGreater;":                     '\U00002276',
-	"LessLess;":                        '\U00002AA1',
-	"LessSlantEqual;":                  '\U00002A7D',
-	"LessTilde;":                       '\U00002272',
-	"Lfr;":                             '\U0001D50F',
-	"Ll;":                              '\U000022D8',
-	"Lleftarrow;":                      '\U000021DA',
-	"Lmidot;":                          '\U0000013F',
-	"LongLeftArrow;":                   '\U000027F5',
-	"LongLeftRightArrow;":              '\U000027F7',
-	"LongRightArrow;":                  '\U000027F6',
-	"Longleftarrow;":                   '\U000027F8',
-	"Longleftrightarrow;":              '\U000027FA',
-	"Longrightarrow;":                  '\U000027F9',
-	"Lopf;":                            '\U0001D543',
-	"LowerLeftArrow;":                  '\U00002199',
-	"LowerRightArrow;":                 '\U00002198',
-	"Lscr;":                            '\U00002112',
-	"Lsh;":                             '\U000021B0',
-	"Lstrok;":                          '\U00000141',
-	"Lt;":                              '\U0000226A',
-	"Map;":                             '\U00002905',
-	"Mcy;":                             '\U0000041C',
-	"MediumSpace;":                     '\U0000205F',
-	"Mellintrf;":                       '\U00002133',
-	"Mfr;":                             '\U0001D510',
-	"MinusPlus;":                       '\U00002213',
-	"Mopf;":                            '\U0001D544',
-	"Mscr;":                            '\U00002133',
-	"Mu;":                              '\U0000039C',
-	"NJcy;":                            '\U0000040A',
-	"Nacute;":                          '\U00000143',
-	"Ncaron;":                          '\U00000147',
-	"Ncedil;":                          '\U00000145',
-	"Ncy;":                             '\U0000041D',
-	"NegativeMediumSpace;":             '\U0000200B',
-	"NegativeThickSpace;":              '\U0000200B',
-	"NegativeThinSpace;":               '\U0000200B',
-	"NegativeVeryThinSpace;":           '\U0000200B',
-	"NestedGreaterGreater;":            '\U0000226B',
-	"NestedLessLess;":                  '\U0000226A',
-	"NewLine;":                         '\U0000000A',
-	"Nfr;":                             '\U0001D511',
-	"NoBreak;":                         '\U00002060',
-	"NonBreakingSpace;":                '\U000000A0',
-	"Nopf;":                            '\U00002115',
-	"Not;":                             '\U00002AEC',
-	"NotCongruent;":                    '\U00002262',
-	"NotCupCap;":                       '\U0000226D',
-	"NotDoubleVerticalBar;":            '\U00002226',
-	"NotElement;":                      '\U00002209',
-	"NotEqual;":                        '\U00002260',
-	"NotExists;":                       '\U00002204',
-	"NotGreater;":                      '\U0000226F',
-	"NotGreaterEqual;":                 '\U00002271',
-	"NotGreaterLess;":                  '\U00002279',
-	"NotGreaterTilde;":                 '\U00002275',
-	"NotLeftTriangle;":                 '\U000022EA',
-	"NotLeftTriangleEqual;":            '\U000022EC',
-	"NotLess;":                         '\U0000226E',
-	"NotLessEqual;":                    '\U00002270',
-	"NotLessGreater;":                  '\U00002278',
-	"NotLessTilde;":                    '\U00002274',
-	"NotPrecedes;":                     '\U00002280',
-	"NotPrecedesSlantEqual;":           '\U000022E0',
-	"NotReverseElement;":               '\U0000220C',
-	"NotRightTriangle;":                '\U000022EB',
-	"NotRightTriangleEqual;":           '\U000022ED',
-	"NotSquareSubsetEqual;":            '\U000022E2',
-	"NotSquareSupersetEqual;":          '\U000022E3',
-	"NotSubsetEqual;":                  '\U00002288',
-	"NotSucceeds;":                     '\U00002281',
-	"NotSucceedsSlantEqual;":           '\U000022E1',
-	"NotSupersetEqual;":                '\U00002289',
-	"NotTilde;":                        '\U00002241',
-	"NotTildeEqual;":                   '\U00002244',
-	"NotTildeFullEqual;":               '\U00002247',
-	"NotTildeTilde;":                   '\U00002249',
-	"NotVerticalBar;":                  '\U00002224',
-	"Nscr;":                            '\U0001D4A9',
-	"Ntilde;":                          '\U000000D1',
-	"Nu;":                              '\U0000039D',
-	"OElig;":                           '\U00000152',
-	"Oacute;":                          '\U000000D3',
-	"Ocirc;":                           '\U000000D4',
-	"Ocy;":                             '\U0000041E',
-	"Odblac;":                          '\U00000150',
-	"Ofr;":                             '\U0001D512',
-	"Ograve;":                          '\U000000D2',
-	"Omacr;":                           '\U0000014C',
-	"Omega;":                           '\U000003A9',
-	"Omicron;":                         '\U0000039F',
-	"Oopf;":                            '\U0001D546',
-	"OpenCurlyDoubleQuote;":            '\U0000201C',
-	"OpenCurlyQuote;":                  '\U00002018',
-	"Or;":                              '\U00002A54',
-	"Oscr;":                            '\U0001D4AA',
-	"Oslash;":                          '\U000000D8',
-	"Otilde;":                          '\U000000D5',
-	"Otimes;":                          '\U00002A37',
-	"Ouml;":                            '\U000000D6',
-	"OverBar;":                         '\U0000203E',
-	"OverBrace;":                       '\U000023DE',
-	"OverBracket;":                     '\U000023B4',
-	"OverParenthesis;":                 '\U000023DC',
-	"PartialD;":                        '\U00002202',
-	"Pcy;":                             '\U0000041F',
-	"Pfr;":                             '\U0001D513',
-	"Phi;":                             '\U000003A6',
-	"Pi;":                              '\U000003A0',
-	"PlusMinus;":                       '\U000000B1',
-	"Poincareplane;":                   '\U0000210C',
-	"Popf;":                            '\U00002119',
-	"Pr;":                              '\U00002ABB',
-	"Precedes;":                        '\U0000227A',
-	"PrecedesEqual;":                   '\U00002AAF',
-	"PrecedesSlantEqual;":              '\U0000227C',
-	"PrecedesTilde;":                   '\U0000227E',
-	"Prime;":                           '\U00002033',
-	"Product;":                         '\U0000220F',
-	"Proportion;":                      '\U00002237',
-	"Proportional;":                    '\U0000221D',
-	"Pscr;":                            '\U0001D4AB',
-	"Psi;":                             '\U000003A8',
-	"QUOT;":                            '\U00000022',
-	"Qfr;":                             '\U0001D514',
-	"Qopf;":                            '\U0000211A',
-	"Qscr;":                            '\U0001D4AC',
-	"RBarr;":                           '\U00002910',
-	"REG;":                             '\U000000AE',
-	"Racute;":                          '\U00000154',
-	"Rang;":                            '\U000027EB',
-	"Rarr;":                            '\U000021A0',
-	"Rarrtl;":                          '\U00002916',
-	"Rcaron;":                          '\U00000158',
-	"Rcedil;":                          '\U00000156',
-	"Rcy;":                             '\U00000420',
-	"Re;":                              '\U0000211C',
-	"ReverseElement;":                  '\U0000220B',
-	"ReverseEquilibrium;":              '\U000021CB',
-	"ReverseUpEquilibrium;":            '\U0000296F',
-	"Rfr;":                             '\U0000211C',
-	"Rho;":                             '\U000003A1',
-	"RightAngleBracket;":               '\U000027E9',
-	"RightArrow;":                      '\U00002192',
-	"RightArrowBar;":                   '\U000021E5',
-	"RightArrowLeftArrow;":             '\U000021C4',
-	"RightCeiling;":                    '\U00002309',
-	"RightDoubleBracket;":              '\U000027E7',
-	"RightDownTeeVector;":              '\U0000295D',
-	"RightDownVector;":                 '\U000021C2',
-	"RightDownVectorBar;":              '\U00002955',
-	"RightFloor;":                      '\U0000230B',
-	"RightTee;":                        '\U000022A2',
-	"RightTeeArrow;":                   '\U000021A6',
-	"RightTeeVector;":                  '\U0000295B',
-	"RightTriangle;":                   '\U000022B3',
-	"RightTriangleBar;":                '\U000029D0',
-	"RightTriangleEqual;":              '\U000022B5',
-	"RightUpDownVector;":               '\U0000294F',
-	"RightUpTeeVector;":                '\U0000295C',
-	"RightUpVector;":                   '\U000021BE',
-	"RightUpVectorBar;":                '\U00002954',
-	"RightVector;":                     '\U000021C0',
-	"RightVectorBar;":                  '\U00002953',
-	"Rightarrow;":                      '\U000021D2',
-	"Ropf;":                            '\U0000211D',
-	"RoundImplies;":                    '\U00002970',
-	"Rrightarrow;":                     '\U000021DB',
-	"Rscr;":                            '\U0000211B',
-	"Rsh;":                             '\U000021B1',
-	"RuleDelayed;":                     '\U000029F4',
-	"SHCHcy;":                          '\U00000429',
-	"SHcy;":                            '\U00000428',
-	"SOFTcy;":                          '\U0000042C',
-	"Sacute;":                          '\U0000015A',
-	"Sc;":                              '\U00002ABC',
-	"Scaron;":                          '\U00000160',
-	"Scedil;":                          '\U0000015E',
-	"Scirc;":                           '\U0000015C',
-	"Scy;":                             '\U00000421',
-	"Sfr;":                             '\U0001D516',
-	"ShortDownArrow;":                  '\U00002193',
-	"ShortLeftArrow;":                  '\U00002190',
-	"ShortRightArrow;":                 '\U00002192',
-	"ShortUpArrow;":                    '\U00002191',
-	"Sigma;":                           '\U000003A3',
-	"SmallCircle;":                     '\U00002218',
-	"Sopf;":                            '\U0001D54A',
-	"Sqrt;":                            '\U0000221A',
-	"Square;":                          '\U000025A1',
-	"SquareIntersection;":              '\U00002293',
-	"SquareSubset;":                    '\U0000228F',
-	"SquareSubsetEqual;":               '\U00002291',
-	"SquareSuperset;":                  '\U00002290',
-	"SquareSupersetEqual;":             '\U00002292',
-	"SquareUnion;":                     '\U00002294',
-	"Sscr;":                            '\U0001D4AE',
-	"Star;":                            '\U000022C6',
-	"Sub;":                             '\U000022D0',
-	"Subset;":                          '\U000022D0',
-	"SubsetEqual;":                     '\U00002286',
-	"Succeeds;":                        '\U0000227B',
-	"SucceedsEqual;":                   '\U00002AB0',
-	"SucceedsSlantEqual;":              '\U0000227D',
-	"SucceedsTilde;":                   '\U0000227F',
-	"SuchThat;":                        '\U0000220B',
-	"Sum;":                             '\U00002211',
-	"Sup;":                             '\U000022D1',
-	"Superset;":                        '\U00002283',
-	"SupersetEqual;":                   '\U00002287',
-	"Supset;":                          '\U000022D1',
-	"THORN;":                           '\U000000DE',
-	"TRADE;":                           '\U00002122',
-	"TSHcy;":                           '\U0000040B',
-	"TScy;":                            '\U00000426',
-	"Tab;":                             '\U00000009',
-	"Tau;":                             '\U000003A4',
-	"Tcaron;":                          '\U00000164',
-	"Tcedil;":                          '\U00000162',
-	"Tcy;":                             '\U00000422',
-	"Tfr;":                             '\U0001D517',
-	"Therefore;":                       '\U00002234',
-	"Theta;":                           '\U00000398',
-	"ThinSpace;":                       '\U00002009',
-	"Tilde;":                           '\U0000223C',
-	"TildeEqual;":                      '\U00002243',
-	"TildeFullEqual;":                  '\U00002245',
-	"TildeTilde;":                      '\U00002248',
-	"Topf;":                            '\U0001D54B',
-	"TripleDot;":                       '\U000020DB',
-	"Tscr;":                            '\U0001D4AF',
-	"Tstrok;":                          '\U00000166',
-	"Uacute;":                          '\U000000DA',
-	"Uarr;":                            '\U0000219F',
-	"Uarrocir;":                        '\U00002949',
-	"Ubrcy;":                           '\U0000040E',
-	"Ubreve;":                          '\U0000016C',
-	"Ucirc;":                           '\U000000DB',
-	"Ucy;":                             '\U00000423',
-	"Udblac;":                          '\U00000170',
-	"Ufr;":                             '\U0001D518',
-	"Ugrave;":                          '\U000000D9',
-	"Umacr;":                           '\U0000016A',
-	"UnderBar;":                        '\U0000005F',
-	"UnderBrace;":                      '\U000023DF',
-	"UnderBracket;":                    '\U000023B5',
-	"UnderParenthesis;":                '\U000023DD',
-	"Union;":                           '\U000022C3',
-	"UnionPlus;":                       '\U0000228E',
-	"Uogon;":                           '\U00000172',
-	"Uopf;":                            '\U0001D54C',
-	"UpArrow;":                         '\U00002191',
-	"UpArrowBar;":                      '\U00002912',
-	"UpArrowDownArrow;":                '\U000021C5',
-	"UpDownArrow;":                     '\U00002195',
-	"UpEquilibrium;":                   '\U0000296E',
-	"UpTee;":                           '\U000022A5',
-	"UpTeeArrow;":                      '\U000021A5',
-	"Uparrow;":                         '\U000021D1',
-	"Updownarrow;":                     '\U000021D5',
-	"UpperLeftArrow;":                  '\U00002196',
-	"UpperRightArrow;":                 '\U00002197',
-	"Upsi;":                            '\U000003D2',
-	"Upsilon;":                         '\U000003A5',
-	"Uring;":                           '\U0000016E',
-	"Uscr;":                            '\U0001D4B0',
-	"Utilde;":                          '\U00000168',
-	"Uuml;":                            '\U000000DC',
-	"VDash;":                           '\U000022AB',
-	"Vbar;":                            '\U00002AEB',
-	"Vcy;":                             '\U00000412',
-	"Vdash;":                           '\U000022A9',
-	"Vdashl;":                          '\U00002AE6',
-	"Vee;":                             '\U000022C1',
-	"Verbar;":                          '\U00002016',
-	"Vert;":                            '\U00002016',
-	"VerticalBar;":                     '\U00002223',
-	"VerticalLine;":                    '\U0000007C',
-	"VerticalSeparator;":               '\U00002758',
-	"VerticalTilde;":                   '\U00002240',
-	"VeryThinSpace;":                   '\U0000200A',
-	"Vfr;":                             '\U0001D519',
-	"Vopf;":                            '\U0001D54D',
-	"Vscr;":                            '\U0001D4B1',
-	"Vvdash;":                          '\U000022AA',
-	"Wcirc;":                           '\U00000174',
-	"Wedge;":                           '\U000022C0',
-	"Wfr;":                             '\U0001D51A',
-	"Wopf;":                            '\U0001D54E',
-	"Wscr;":                            '\U0001D4B2',
-	"Xfr;":                             '\U0001D51B',
-	"Xi;":                              '\U0000039E',
-	"Xopf;":                            '\U0001D54F',
-	"Xscr;":                            '\U0001D4B3',
-	"YAcy;":                            '\U0000042F',
-	"YIcy;":                            '\U00000407',
-	"YUcy;":                            '\U0000042E',
-	"Yacute;":                          '\U000000DD',
-	"Ycirc;":                           '\U00000176',
-	"Ycy;":                             '\U0000042B',
-	"Yfr;":                             '\U0001D51C',
-	"Yopf;":                            '\U0001D550',
-	"Yscr;":                            '\U0001D4B4',
-	"Yuml;":                            '\U00000178',
-	"ZHcy;":                            '\U00000416',
-	"Zacute;":                          '\U00000179',
-	"Zcaron;":                          '\U0000017D',
-	"Zcy;":                             '\U00000417',
-	"Zdot;":                            '\U0000017B',
-	"ZeroWidthSpace;":                  '\U0000200B',
-	"Zeta;":                            '\U00000396',
-	"Zfr;":                             '\U00002128',
-	"Zopf;":                            '\U00002124',
-	"Zscr;":                            '\U0001D4B5',
-	"aacute;":                          '\U000000E1',
-	"abreve;":                          '\U00000103',
-	"ac;":                              '\U0000223E',
-	"acd;":                             '\U0000223F',
-	"acirc;":                           '\U000000E2',
-	"acute;":                           '\U000000B4',
-	"acy;":                             '\U00000430',
-	"aelig;":                           '\U000000E6',
-	"af;":                              '\U00002061',
-	"afr;":                             '\U0001D51E',
-	"agrave;":                          '\U000000E0',
-	"alefsym;":                         '\U00002135',
-	"aleph;":                           '\U00002135',
-	"alpha;":                           '\U000003B1',
-	"amacr;":                           '\U00000101',
-	"amalg;":                           '\U00002A3F',
-	"amp;":                             '\U00000026',
-	"and;":                             '\U00002227',
-	"andand;":                          '\U00002A55',
-	"andd;":                            '\U00002A5C',
-	"andslope;":                        '\U00002A58',
-	"andv;":                            '\U00002A5A',
-	"ang;":                             '\U00002220',
-	"ange;":                            '\U000029A4',
-	"angle;":                           '\U00002220',
-	"angmsd;":                          '\U00002221',
-	"angmsdaa;":                        '\U000029A8',
-	"angmsdab;":                        '\U000029A9',
-	"angmsdac;":                        '\U000029AA',
-	"angmsdad;":                        '\U000029AB',
-	"angmsdae;":                        '\U000029AC',
-	"angmsdaf;":                        '\U000029AD',
-	"angmsdag;":                        '\U000029AE',
-	"angmsdah;":                        '\U000029AF',
-	"angrt;":                           '\U0000221F',
-	"angrtvb;":                         '\U000022BE',
-	"angrtvbd;":                        '\U0000299D',
-	"angsph;":                          '\U00002222',
-	"angst;":                           '\U000000C5',
-	"angzarr;":                         '\U0000237C',
-	"aogon;":                           '\U00000105',
-	"aopf;":                            '\U0001D552',
-	"ap;":                              '\U00002248',
-	"apE;":                             '\U00002A70',
-	"apacir;":                          '\U00002A6F',
-	"ape;":                             '\U0000224A',
-	"apid;":                            '\U0000224B',
-	"apos;":                            '\U00000027',
-	"approx;":                          '\U00002248',
-	"approxeq;":                        '\U0000224A',
-	"aring;":                           '\U000000E5',
-	"ascr;":                            '\U0001D4B6',
-	"ast;":                             '\U0000002A',
-	"asymp;":                           '\U00002248',
-	"asympeq;":                         '\U0000224D',
-	"atilde;":                          '\U000000E3',
-	"auml;":                            '\U000000E4',
-	"awconint;":                        '\U00002233',
-	"awint;":                           '\U00002A11',
-	"bNot;":                            '\U00002AED',
-	"backcong;":                        '\U0000224C',
-	"backepsilon;":                     '\U000003F6',
-	"backprime;":                       '\U00002035',
-	"backsim;":                         '\U0000223D',
-	"backsimeq;":                       '\U000022CD',
-	"barvee;":                          '\U000022BD',
-	"barwed;":                          '\U00002305',
-	"barwedge;":                        '\U00002305',
-	"bbrk;":                            '\U000023B5',
-	"bbrktbrk;":                        '\U000023B6',
-	"bcong;":                           '\U0000224C',
-	"bcy;":                             '\U00000431',
-	"bdquo;":                           '\U0000201E',
-	"becaus;":                          '\U00002235',
-	"because;":                         '\U00002235',
-	"bemptyv;":                         '\U000029B0',
-	"bepsi;":                           '\U000003F6',
-	"bernou;":                          '\U0000212C',
-	"beta;":                            '\U000003B2',
-	"beth;":                            '\U00002136',
-	"between;":                         '\U0000226C',
-	"bfr;":                             '\U0001D51F',
-	"bigcap;":                          '\U000022C2',
-	"bigcirc;":                         '\U000025EF',
-	"bigcup;":                          '\U000022C3',
-	"bigodot;":                         '\U00002A00',
-	"bigoplus;":                        '\U00002A01',
-	"bigotimes;":                       '\U00002A02',
-	"bigsqcup;":                        '\U00002A06',
-	"bigstar;":                         '\U00002605',
-	"bigtriangledown;":                 '\U000025BD',
-	"bigtriangleup;":                   '\U000025B3',
-	"biguplus;":                        '\U00002A04',
-	"bigvee;":                          '\U000022C1',
-	"bigwedge;":                        '\U000022C0',
-	"bkarow;":                          '\U0000290D',
-	"blacklozenge;":                    '\U000029EB',
-	"blacksquare;":                     '\U000025AA',
-	"blacktriangle;":                   '\U000025B4',
-	"blacktriangledown;":               '\U000025BE',
-	"blacktriangleleft;":               '\U000025C2',
-	"blacktriangleright;":              '\U000025B8',
-	"blank;":                           '\U00002423',
-	"blk12;":                           '\U00002592',
-	"blk14;":                           '\U00002591',
-	"blk34;":                           '\U00002593',
-	"block;":                           '\U00002588',
-	"bnot;":                            '\U00002310',
-	"bopf;":                            '\U0001D553',
-	"bot;":                             '\U000022A5',
-	"bottom;":                          '\U000022A5',
-	"bowtie;":                          '\U000022C8',
-	"boxDL;":                           '\U00002557',
-	"boxDR;":                           '\U00002554',
-	"boxDl;":                           '\U00002556',
-	"boxDr;":                           '\U00002553',
-	"boxH;":                            '\U00002550',
-	"boxHD;":                           '\U00002566',
-	"boxHU;":                           '\U00002569',
-	"boxHd;":                           '\U00002564',
-	"boxHu;":                           '\U00002567',
-	"boxUL;":                           '\U0000255D',
-	"boxUR;":                           '\U0000255A',
-	"boxUl;":                           '\U0000255C',
-	"boxUr;":                           '\U00002559',
-	"boxV;":                            '\U00002551',
-	"boxVH;":                           '\U0000256C',
-	"boxVL;":                           '\U00002563',
-	"boxVR;":                           '\U00002560',
-	"boxVh;":                           '\U0000256B',
-	"boxVl;":                           '\U00002562',
-	"boxVr;":                           '\U0000255F',
-	"boxbox;":                          '\U000029C9',
-	"boxdL;":                           '\U00002555',
-	"boxdR;":                           '\U00002552',
-	"boxdl;":                           '\U00002510',
-	"boxdr;":                           '\U0000250C',
-	"boxh;":                            '\U00002500',
-	"boxhD;":                           '\U00002565',
-	"boxhU;":                           '\U00002568',
-	"boxhd;":                           '\U0000252C',
-	"boxhu;":                           '\U00002534',
-	"boxminus;":                        '\U0000229F',
-	"boxplus;":                         '\U0000229E',
-	"boxtimes;":                        '\U000022A0',
-	"boxuL;":                           '\U0000255B',
-	"boxuR;":                           '\U00002558',
-	"boxul;":                           '\U00002518',
-	"boxur;":                           '\U00002514',
-	"boxv;":                            '\U00002502',
-	"boxvH;":                           '\U0000256A',
-	"boxvL;":                           '\U00002561',
-	"boxvR;":                           '\U0000255E',
-	"boxvh;":                           '\U0000253C',
-	"boxvl;":                           '\U00002524',
-	"boxvr;":                           '\U0000251C',
-	"bprime;":                          '\U00002035',
-	"breve;":                           '\U000002D8',
-	"brvbar;":                          '\U000000A6',
-	"bscr;":                            '\U0001D4B7',
-	"bsemi;":                           '\U0000204F',
-	"bsim;":                            '\U0000223D',
-	"bsime;":                           '\U000022CD',
-	"bsol;":                            '\U0000005C',
-	"bsolb;":                           '\U000029C5',
-	"bsolhsub;":                        '\U000027C8',
-	"bull;":                            '\U00002022',
-	"bullet;":                          '\U00002022',
-	"bump;":                            '\U0000224E',
-	"bumpE;":                           '\U00002AAE',
-	"bumpe;":                           '\U0000224F',
-	"bumpeq;":                          '\U0000224F',
-	"cacute;":                          '\U00000107',
-	"cap;":                             '\U00002229',
-	"capand;":                          '\U00002A44',
-	"capbrcup;":                        '\U00002A49',
-	"capcap;":                          '\U00002A4B',
-	"capcup;":                          '\U00002A47',
-	"capdot;":                          '\U00002A40',
-	"caret;":                           '\U00002041',
-	"caron;":                           '\U000002C7',
-	"ccaps;":                           '\U00002A4D',
-	"ccaron;":                          '\U0000010D',
-	"ccedil;":                          '\U000000E7',
-	"ccirc;":                           '\U00000109',
-	"ccups;":                           '\U00002A4C',
-	"ccupssm;":                         '\U00002A50',
-	"cdot;":                            '\U0000010B',
-	"cedil;":                           '\U000000B8',
-	"cemptyv;":                         '\U000029B2',
-	"cent;":                            '\U000000A2',
-	"centerdot;":                       '\U000000B7',
-	"cfr;":                             '\U0001D520',
-	"chcy;":                            '\U00000447',
-	"check;":                           '\U00002713',
-	"checkmark;":                       '\U00002713',
-	"chi;":                             '\U000003C7',
-	"cir;":                             '\U000025CB',
-	"cirE;":                            '\U000029C3',
-	"circ;":                            '\U000002C6',
-	"circeq;":                          '\U00002257',
-	"circlearrowleft;":                 '\U000021BA',
-	"circlearrowright;":                '\U000021BB',
-	"circledR;":                        '\U000000AE',
-	"circledS;":                        '\U000024C8',
-	"circledast;":                      '\U0000229B',
-	"circledcirc;":                     '\U0000229A',
-	"circleddash;":                     '\U0000229D',
-	"cire;":                            '\U00002257',
-	"cirfnint;":                        '\U00002A10',
-	"cirmid;":                          '\U00002AEF',
-	"cirscir;":                         '\U000029C2',
-	"clubs;":                           '\U00002663',
-	"clubsuit;":                        '\U00002663',
-	"colon;":                           '\U0000003A',
-	"colone;":                          '\U00002254',
-	"coloneq;":                         '\U00002254',
-	"comma;":                           '\U0000002C',
-	"commat;":                          '\U00000040',
-	"comp;":                            '\U00002201',
-	"compfn;":                          '\U00002218',
-	"complement;":                      '\U00002201',
-	"complexes;":                       '\U00002102',
-	"cong;":                            '\U00002245',
-	"congdot;":                         '\U00002A6D',
-	"conint;":                          '\U0000222E',
-	"copf;":                            '\U0001D554',
-	"coprod;":                          '\U00002210',
-	"copy;":                            '\U000000A9',
-	"copysr;":                          '\U00002117',
-	"crarr;":                           '\U000021B5',
-	"cross;":                           '\U00002717',
-	"cscr;":                            '\U0001D4B8',
-	"csub;":                            '\U00002ACF',
-	"csube;":                           '\U00002AD1',
-	"csup;":                            '\U00002AD0',
-	"csupe;":                           '\U00002AD2',
-	"ctdot;":                           '\U000022EF',
-	"cudarrl;":                         '\U00002938',
-	"cudarrr;":                         '\U00002935',
-	"cuepr;":                           '\U000022DE',
-	"cuesc;":                           '\U000022DF',
-	"cularr;":                          '\U000021B6',
-	"cularrp;":                         '\U0000293D',
-	"cup;":                             '\U0000222A',
-	"cupbrcap;":                        '\U00002A48',
-	"cupcap;":                          '\U00002A46',
-	"cupcup;":                          '\U00002A4A',
-	"cupdot;":                          '\U0000228D',
-	"cupor;":                           '\U00002A45',
-	"curarr;":                          '\U000021B7',
-	"curarrm;":                         '\U0000293C',
-	"curlyeqprec;":                     '\U000022DE',
-	"curlyeqsucc;":                     '\U000022DF',
-	"curlyvee;":                        '\U000022CE',
-	"curlywedge;":                      '\U000022CF',
-	"curren;":                          '\U000000A4',
-	"curvearrowleft;":                  '\U000021B6',
-	"curvearrowright;":                 '\U000021B7',
-	"cuvee;":                           '\U000022CE',
-	"cuwed;":                           '\U000022CF',
-	"cwconint;":                        '\U00002232',
-	"cwint;":                           '\U00002231',
-	"cylcty;":                          '\U0000232D',
-	"dArr;":                            '\U000021D3',
-	"dHar;":                            '\U00002965',
-	"dagger;":                          '\U00002020',
-	"daleth;":                          '\U00002138',
-	"darr;":                            '\U00002193',
-	"dash;":                            '\U00002010',
-	"dashv;":                           '\U000022A3',
-	"dbkarow;":                         '\U0000290F',
-	"dblac;":                           '\U000002DD',
-	"dcaron;":                          '\U0000010F',
-	"dcy;":                             '\U00000434',
-	"dd;":                              '\U00002146',
-	"ddagger;":                         '\U00002021',
-	"ddarr;":                           '\U000021CA',
-	"ddotseq;":                         '\U00002A77',
-	"deg;":                             '\U000000B0',
-	"delta;":                           '\U000003B4',
-	"demptyv;":                         '\U000029B1',
-	"dfisht;":                          '\U0000297F',
-	"dfr;":                             '\U0001D521',
-	"dharl;":                           '\U000021C3',
-	"dharr;":                           '\U000021C2',
-	"diam;":                            '\U000022C4',
-	"diamond;":                         '\U000022C4',
-	"diamondsuit;":                     '\U00002666',
-	"diams;":                           '\U00002666',
-	"die;":                             '\U000000A8',
-	"digamma;":                         '\U000003DD',
-	"disin;":                           '\U000022F2',
-	"div;":                             '\U000000F7',
-	"divide;":                          '\U000000F7',
-	"divideontimes;":                   '\U000022C7',
-	"divonx;":                          '\U000022C7',
-	"djcy;":                            '\U00000452',
-	"dlcorn;":                          '\U0000231E',
-	"dlcrop;":                          '\U0000230D',
-	"dollar;":                          '\U00000024',
-	"dopf;":                            '\U0001D555',
-	"dot;":                             '\U000002D9',
-	"doteq;":                           '\U00002250',
-	"doteqdot;":                        '\U00002251',
-	"dotminus;":                        '\U00002238',
-	"dotplus;":                         '\U00002214',
-	"dotsquare;":                       '\U000022A1',
-	"doublebarwedge;":                  '\U00002306',
-	"downarrow;":                       '\U00002193',
-	"downdownarrows;":                  '\U000021CA',
-	"downharpoonleft;":                 '\U000021C3',
-	"downharpoonright;":                '\U000021C2',
-	"drbkarow;":                        '\U00002910',
-	"drcorn;":                          '\U0000231F',
-	"drcrop;":                          '\U0000230C',
-	"dscr;":                            '\U0001D4B9',
-	"dscy;":                            '\U00000455',
-	"dsol;":                            '\U000029F6',
-	"dstrok;":                          '\U00000111',
-	"dtdot;":                           '\U000022F1',
-	"dtri;":                            '\U000025BF',
-	"dtrif;":                           '\U000025BE',
-	"duarr;":                           '\U000021F5',
-	"duhar;":                           '\U0000296F',
-	"dwangle;":                         '\U000029A6',
-	"dzcy;":                            '\U0000045F',
-	"dzigrarr;":                        '\U000027FF',
-	"eDDot;":                           '\U00002A77',
-	"eDot;":                            '\U00002251',
-	"eacute;":                          '\U000000E9',
-	"easter;":                          '\U00002A6E',
-	"ecaron;":                          '\U0000011B',
-	"ecir;":                            '\U00002256',
-	"ecirc;":                           '\U000000EA',
-	"ecolon;":                          '\U00002255',
-	"ecy;":                             '\U0000044D',
-	"edot;":                            '\U00000117',
-	"ee;":                              '\U00002147',
-	"efDot;":                           '\U00002252',
-	"efr;":                             '\U0001D522',
-	"eg;":                              '\U00002A9A',
-	"egrave;":                          '\U000000E8',
-	"egs;":                             '\U00002A96',
-	"egsdot;":                          '\U00002A98',
-	"el;":                              '\U00002A99',
-	"elinters;":                        '\U000023E7',
-	"ell;":                             '\U00002113',
-	"els;":                             '\U00002A95',
-	"elsdot;":                          '\U00002A97',
-	"emacr;":                           '\U00000113',
-	"empty;":                           '\U00002205',
-	"emptyset;":                        '\U00002205',
-	"emptyv;":                          '\U00002205',
-	"emsp;":                            '\U00002003',
-	"emsp13;":                          '\U00002004',
-	"emsp14;":                          '\U00002005',
-	"eng;":                             '\U0000014B',
-	"ensp;":                            '\U00002002',
-	"eogon;":                           '\U00000119',
-	"eopf;":                            '\U0001D556',
-	"epar;":                            '\U000022D5',
-	"eparsl;":                          '\U000029E3',
-	"eplus;":                           '\U00002A71',
-	"epsi;":                            '\U000003B5',
-	"epsilon;":                         '\U000003B5',
-	"epsiv;":                           '\U000003F5',
-	"eqcirc;":                          '\U00002256',
-	"eqcolon;":                         '\U00002255',
-	"eqsim;":                           '\U00002242',
-	"eqslantgtr;":                      '\U00002A96',
-	"eqslantless;":                     '\U00002A95',
-	"equals;":                          '\U0000003D',
-	"equest;":                          '\U0000225F',
-	"equiv;":                           '\U00002261',
-	"equivDD;":                         '\U00002A78',
-	"eqvparsl;":                        '\U000029E5',
-	"erDot;":                           '\U00002253',
-	"erarr;":                           '\U00002971',
-	"escr;":                            '\U0000212F',
-	"esdot;":                           '\U00002250',
-	"esim;":                            '\U00002242',
-	"eta;":                             '\U000003B7',
-	"eth;":                             '\U000000F0',
-	"euml;":                            '\U000000EB',
-	"euro;":                            '\U000020AC',
-	"excl;":                            '\U00000021',
-	"exist;":                           '\U00002203',
-	"expectation;":                     '\U00002130',
-	"exponentiale;":                    '\U00002147',
-	"fallingdotseq;":                   '\U00002252',
-	"fcy;":                             '\U00000444',
-	"female;":                          '\U00002640',
-	"ffilig;":                          '\U0000FB03',
-	"fflig;":                           '\U0000FB00',
-	"ffllig;":                          '\U0000FB04',
-	"ffr;":                             '\U0001D523',
-	"filig;":                           '\U0000FB01',
-	"flat;":                            '\U0000266D',
-	"fllig;":                           '\U0000FB02',
-	"fltns;":                           '\U000025B1',
-	"fnof;":                            '\U00000192',
-	"fopf;":                            '\U0001D557',
-	"forall;":                          '\U00002200',
-	"fork;":                            '\U000022D4',
-	"forkv;":                           '\U00002AD9',
-	"fpartint;":                        '\U00002A0D',
-	"frac12;":                          '\U000000BD',
-	"frac13;":                          '\U00002153',
-	"frac14;":                          '\U000000BC',
-	"frac15;":                          '\U00002155',
-	"frac16;":                          '\U00002159',
-	"frac18;":                          '\U0000215B',
-	"frac23;":                          '\U00002154',
-	"frac25;":                          '\U00002156',
-	"frac34;":                          '\U000000BE',
-	"frac35;":                          '\U00002157',
-	"frac38;":                          '\U0000215C',
-	"frac45;":                          '\U00002158',
-	"frac56;":                          '\U0000215A',
-	"frac58;":                          '\U0000215D',
-	"frac78;":                          '\U0000215E',
-	"frasl;":                           '\U00002044',
-	"frown;":                           '\U00002322',
-	"fscr;":                            '\U0001D4BB',
-	"gE;":                              '\U00002267',
-	"gEl;":                             '\U00002A8C',
-	"gacute;":                          '\U000001F5',
-	"gamma;":                           '\U000003B3',
-	"gammad;":                          '\U000003DD',
-	"gap;":                             '\U00002A86',
-	"gbreve;":                          '\U0000011F',
-	"gcirc;":                           '\U0000011D',
-	"gcy;":                             '\U00000433',
-	"gdot;":                            '\U00000121',
-	"ge;":                              '\U00002265',
-	"gel;":                             '\U000022DB',
-	"geq;":                             '\U00002265',
-	"geqq;":                            '\U00002267',
-	"geqslant;":                        '\U00002A7E',
-	"ges;":                             '\U00002A7E',
-	"gescc;":                           '\U00002AA9',
-	"gesdot;":                          '\U00002A80',
-	"gesdoto;":                         '\U00002A82',
-	"gesdotol;":                        '\U00002A84',
-	"gesles;":                          '\U00002A94',
-	"gfr;":                             '\U0001D524',
-	"gg;":                              '\U0000226B',
-	"ggg;":                             '\U000022D9',
-	"gimel;":                           '\U00002137',
-	"gjcy;":                            '\U00000453',
-	"gl;":                              '\U00002277',
-	"glE;":                             '\U00002A92',
-	"gla;":                             '\U00002AA5',
-	"glj;":                             '\U00002AA4',
-	"gnE;":                             '\U00002269',
-	"gnap;":                            '\U00002A8A',
-	"gnapprox;":                        '\U00002A8A',
-	"gne;":                             '\U00002A88',
-	"gneq;":                            '\U00002A88',
-	"gneqq;":                           '\U00002269',
-	"gnsim;":                           '\U000022E7',
-	"gopf;":                            '\U0001D558',
-	"grave;":                           '\U00000060',
-	"gscr;":                            '\U0000210A',
-	"gsim;":                            '\U00002273',
-	"gsime;":                           '\U00002A8E',
-	"gsiml;":                           '\U00002A90',
-	"gt;":                              '\U0000003E',
-	"gtcc;":                            '\U00002AA7',
-	"gtcir;":                           '\U00002A7A',
-	"gtdot;":                           '\U000022D7',
-	"gtlPar;":                          '\U00002995',
-	"gtquest;":                         '\U00002A7C',
-	"gtrapprox;":                       '\U00002A86',
-	"gtrarr;":                          '\U00002978',
-	"gtrdot;":                          '\U000022D7',
-	"gtreqless;":                       '\U000022DB',
-	"gtreqqless;":                      '\U00002A8C',
-	"gtrless;":                         '\U00002277',
-	"gtrsim;":                          '\U00002273',
-	"hArr;":                            '\U000021D4',
-	"hairsp;":                          '\U0000200A',
-	"half;":                            '\U000000BD',
-	"hamilt;":                          '\U0000210B',
-	"hardcy;":                          '\U0000044A',
-	"harr;":                            '\U00002194',
-	"harrcir;":                         '\U00002948',
-	"harrw;":                           '\U000021AD',
-	"hbar;":                            '\U0000210F',
-	"hcirc;":                           '\U00000125',
-	"hearts;":                          '\U00002665',
-	"heartsuit;":                       '\U00002665',
-	"hellip;":                          '\U00002026',
-	"hercon;":                          '\U000022B9',
-	"hfr;":                             '\U0001D525',
-	"hksearow;":                        '\U00002925',
-	"hkswarow;":                        '\U00002926',
-	"hoarr;":                           '\U000021FF',
-	"homtht;":                          '\U0000223B',
-	"hookleftarrow;":                   '\U000021A9',
-	"hookrightarrow;":                  '\U000021AA',
-	"hopf;":                            '\U0001D559',
-	"horbar;":                          '\U00002015',
-	"hscr;":                            '\U0001D4BD',
-	"hslash;":                          '\U0000210F',
-	"hstrok;":                          '\U00000127',
-	"hybull;":                          '\U00002043',
-	"hyphen;":                          '\U00002010',
-	"iacute;":                          '\U000000ED',
-	"ic;":                              '\U00002063',
-	"icirc;":                           '\U000000EE',
-	"icy;":                             '\U00000438',
-	"iecy;":                            '\U00000435',
-	"iexcl;":                           '\U000000A1',
-	"iff;":                             '\U000021D4',
-	"ifr;":                             '\U0001D526',
-	"igrave;":                          '\U000000EC',
-	"ii;":                              '\U00002148',
-	"iiiint;":                          '\U00002A0C',
-	"iiint;":                           '\U0000222D',
-	"iinfin;":                          '\U000029DC',
-	"iiota;":                           '\U00002129',
-	"ijlig;":                           '\U00000133',
-	"imacr;":                           '\U0000012B',
-	"image;":                           '\U00002111',
-	"imagline;":                        '\U00002110',
-	"imagpart;":                        '\U00002111',
-	"imath;":                           '\U00000131',
-	"imof;":                            '\U000022B7',
-	"imped;":                           '\U000001B5',
-	"in;":                              '\U00002208',
-	"incare;":                          '\U00002105',
-	"infin;":                           '\U0000221E',
-	"infintie;":                        '\U000029DD',
-	"inodot;":                          '\U00000131',
-	"int;":                             '\U0000222B',
-	"intcal;":                          '\U000022BA',
-	"integers;":                        '\U00002124',
-	"intercal;":                        '\U000022BA',
-	"intlarhk;":                        '\U00002A17',
-	"intprod;":                         '\U00002A3C',
-	"iocy;":                            '\U00000451',
-	"iogon;":                           '\U0000012F',
-	"iopf;":                            '\U0001D55A',
-	"iota;":                            '\U000003B9',
-	"iprod;":                           '\U00002A3C',
-	"iquest;":                          '\U000000BF',
-	"iscr;":                            '\U0001D4BE',
-	"isin;":                            '\U00002208',
-	"isinE;":                           '\U000022F9',
-	"isindot;":                         '\U000022F5',
-	"isins;":                           '\U000022F4',
-	"isinsv;":                          '\U000022F3',
-	"isinv;":                           '\U00002208',
-	"it;":                              '\U00002062',
-	"itilde;":                          '\U00000129',
-	"iukcy;":                           '\U00000456',
-	"iuml;":                            '\U000000EF',
-	"jcirc;":                           '\U00000135',
-	"jcy;":                             '\U00000439',
-	"jfr;":                             '\U0001D527',
-	"jmath;":                           '\U00000237',
-	"jopf;":                            '\U0001D55B',
-	"jscr;":                            '\U0001D4BF',
-	"jsercy;":                          '\U00000458',
-	"jukcy;":                           '\U00000454',
-	"kappa;":                           '\U000003BA',
-	"kappav;":                          '\U000003F0',
-	"kcedil;":                          '\U00000137',
-	"kcy;":                             '\U0000043A',
-	"kfr;":                             '\U0001D528',
-	"kgreen;":                          '\U00000138',
-	"khcy;":                            '\U00000445',
-	"kjcy;":                            '\U0000045C',
-	"kopf;":                            '\U0001D55C',
-	"kscr;":                            '\U0001D4C0',
-	"lAarr;":                           '\U000021DA',
-	"lArr;":                            '\U000021D0',
-	"lAtail;":                          '\U0000291B',
-	"lBarr;":                           '\U0000290E',
-	"lE;":                              '\U00002266',
-	"lEg;":                             '\U00002A8B',
-	"lHar;":                            '\U00002962',
-	"lacute;":                          '\U0000013A',
-	"laemptyv;":                        '\U000029B4',
-	"lagran;":                          '\U00002112',
-	"lambda;":                          '\U000003BB',
-	"lang;":                            '\U000027E8',
-	"langd;":                           '\U00002991',
-	"langle;":                          '\U000027E8',
-	"lap;":                             '\U00002A85',
-	"laquo;":                           '\U000000AB',
-	"larr;":                            '\U00002190',
-	"larrb;":                           '\U000021E4',
-	"larrbfs;":                         '\U0000291F',
-	"larrfs;":                          '\U0000291D',
-	"larrhk;":                          '\U000021A9',
-	"larrlp;":                          '\U000021AB',
-	"larrpl;":                          '\U00002939',
-	"larrsim;":                         '\U00002973',
-	"larrtl;":                          '\U000021A2',
-	"lat;":                             '\U00002AAB',
-	"latail;":                          '\U00002919',
-	"late;":                            '\U00002AAD',
-	"lbarr;":                           '\U0000290C',
-	"lbbrk;":                           '\U00002772',
-	"lbrace;":                          '\U0000007B',
-	"lbrack;":                          '\U0000005B',
-	"lbrke;":                           '\U0000298B',
-	"lbrksld;":                         '\U0000298F',
-	"lbrkslu;":                         '\U0000298D',
-	"lcaron;":                          '\U0000013E',
-	"lcedil;":                          '\U0000013C',
-	"lceil;":                           '\U00002308',
-	"lcub;":                            '\U0000007B',
-	"lcy;":                             '\U0000043B',
-	"ldca;":                            '\U00002936',
-	"ldquo;":                           '\U0000201C',
-	"ldquor;":                          '\U0000201E',
-	"ldrdhar;":                         '\U00002967',
-	"ldrushar;":                        '\U0000294B',
-	"ldsh;":                            '\U000021B2',
-	"le;":                              '\U00002264',
-	"leftarrow;":                       '\U00002190',
-	"leftarrowtail;":                   '\U000021A2',
-	"leftharpoondown;":                 '\U000021BD',
-	"leftharpoonup;":                   '\U000021BC',
-	"leftleftarrows;":                  '\U000021C7',
-	"leftrightarrow;":                  '\U00002194',
-	"leftrightarrows;":                 '\U000021C6',
-	"leftrightharpoons;":               '\U000021CB',
-	"leftrightsquigarrow;":             '\U000021AD',
-	"leftthreetimes;":                  '\U000022CB',
-	"leg;":                             '\U000022DA',
-	"leq;":                             '\U00002264',
-	"leqq;":                            '\U00002266',
-	"leqslant;":                        '\U00002A7D',
-	"les;":                             '\U00002A7D',
-	"lescc;":                           '\U00002AA8',
-	"lesdot;":                          '\U00002A7F',
-	"lesdoto;":                         '\U00002A81',
-	"lesdotor;":                        '\U00002A83',
-	"lesges;":                          '\U00002A93',
-	"lessapprox;":                      '\U00002A85',
-	"lessdot;":                         '\U000022D6',
-	"lesseqgtr;":                       '\U000022DA',
-	"lesseqqgtr;":                      '\U00002A8B',
-	"lessgtr;":                         '\U00002276',
-	"lesssim;":                         '\U00002272',
-	"lfisht;":                          '\U0000297C',
-	"lfloor;":                          '\U0000230A',
-	"lfr;":                             '\U0001D529',
-	"lg;":                              '\U00002276',
-	"lgE;":                             '\U00002A91',
-	"lhard;":                           '\U000021BD',
-	"lharu;":                           '\U000021BC',
-	"lharul;":                          '\U0000296A',
-	"lhblk;":                           '\U00002584',
-	"ljcy;":                            '\U00000459',
-	"ll;":                              '\U0000226A',
-	"llarr;":                           '\U000021C7',
-	"llcorner;":                        '\U0000231E',
-	"llhard;":                          '\U0000296B',
-	"lltri;":                           '\U000025FA',
-	"lmidot;":                          '\U00000140',
-	"lmoust;":                          '\U000023B0',
-	"lmoustache;":                      '\U000023B0',
-	"lnE;":                             '\U00002268',
-	"lnap;":                            '\U00002A89',
-	"lnapprox;":                        '\U00002A89',
-	"lne;":                             '\U00002A87',
-	"lneq;":                            '\U00002A87',
-	"lneqq;":                           '\U00002268',
-	"lnsim;":                           '\U000022E6',
-	"loang;":                           '\U000027EC',
-	"loarr;":                           '\U000021FD',
-	"lobrk;":                           '\U000027E6',
-	"longleftarrow;":                   '\U000027F5',
-	"longleftrightarrow;":              '\U000027F7',
-	"longmapsto;":                      '\U000027FC',
-	"longrightarrow;":                  '\U000027F6',
-	"looparrowleft;":                   '\U000021AB',
-	"looparrowright;":                  '\U000021AC',
-	"lopar;":                           '\U00002985',
-	"lopf;":                            '\U0001D55D',
-	"loplus;":                          '\U00002A2D',
-	"lotimes;":                         '\U00002A34',
-	"lowast;":                          '\U00002217',
-	"lowbar;":                          '\U0000005F',
-	"loz;":                             '\U000025CA',
-	"lozenge;":                         '\U000025CA',
-	"lozf;":                            '\U000029EB',
-	"lpar;":                            '\U00000028',
-	"lparlt;":                          '\U00002993',
-	"lrarr;":                           '\U000021C6',
-	"lrcorner;":                        '\U0000231F',
-	"lrhar;":                           '\U000021CB',
-	"lrhard;":                          '\U0000296D',
-	"lrm;":                             '\U0000200E',
-	"lrtri;":                           '\U000022BF',
-	"lsaquo;":                          '\U00002039',
-	"lscr;":                            '\U0001D4C1',
-	"lsh;":                             '\U000021B0',
-	"lsim;":                            '\U00002272',
-	"lsime;":                           '\U00002A8D',
-	"lsimg;":                           '\U00002A8F',
-	"lsqb;":                            '\U0000005B',
-	"lsquo;":                           '\U00002018',
-	"lsquor;":                          '\U0000201A',
-	"lstrok;":                          '\U00000142',
-	"lt;":                              '\U0000003C',
-	"ltcc;":                            '\U00002AA6',
-	"ltcir;":                           '\U00002A79',
-	"ltdot;":                           '\U000022D6',
-	"lthree;":                          '\U000022CB',
-	"ltimes;":                          '\U000022C9',
-	"ltlarr;":                          '\U00002976',
-	"ltquest;":                         '\U00002A7B',
-	"ltrPar;":                          '\U00002996',
-	"ltri;":                            '\U000025C3',
-	"ltrie;":                           '\U000022B4',
-	"ltrif;":                           '\U000025C2',
-	"lurdshar;":                        '\U0000294A',
-	"luruhar;":                         '\U00002966',
-	"mDDot;":                           '\U0000223A',
-	"macr;":                            '\U000000AF',
-	"male;":                            '\U00002642',
-	"malt;":                            '\U00002720',
-	"maltese;":                         '\U00002720',
-	"map;":                             '\U000021A6',
-	"mapsto;":                          '\U000021A6',
-	"mapstodown;":                      '\U000021A7',
-	"mapstoleft;":                      '\U000021A4',
-	"mapstoup;":                        '\U000021A5',
-	"marker;":                          '\U000025AE',
-	"mcomma;":                          '\U00002A29',
-	"mcy;":                             '\U0000043C',
-	"mdash;":                           '\U00002014',
-	"measuredangle;":                   '\U00002221',
-	"mfr;":                             '\U0001D52A',
-	"mho;":                             '\U00002127',
-	"micro;":                           '\U000000B5',
-	"mid;":                             '\U00002223',
-	"midast;":                          '\U0000002A',
-	"midcir;":                          '\U00002AF0',
-	"middot;":                          '\U000000B7',
-	"minus;":                           '\U00002212',
-	"minusb;":                          '\U0000229F',
-	"minusd;":                          '\U00002238',
-	"minusdu;":                         '\U00002A2A',
-	"mlcp;":                            '\U00002ADB',
-	"mldr;":                            '\U00002026',
-	"mnplus;":                          '\U00002213',
-	"models;":                          '\U000022A7',
-	"mopf;":                            '\U0001D55E',
-	"mp;":                              '\U00002213',
-	"mscr;":                            '\U0001D4C2',
-	"mstpos;":                          '\U0000223E',
-	"mu;":                              '\U000003BC',
-	"multimap;":                        '\U000022B8',
-	"mumap;":                           '\U000022B8',
-	"nLeftarrow;":                      '\U000021CD',
-	"nLeftrightarrow;":                 '\U000021CE',
-	"nRightarrow;":                     '\U000021CF',
-	"nVDash;":                          '\U000022AF',
-	"nVdash;":                          '\U000022AE',
-	"nabla;":                           '\U00002207',
-	"nacute;":                          '\U00000144',
-	"nap;":                             '\U00002249',
-	"napos;":                           '\U00000149',
-	"napprox;":                         '\U00002249',
-	"natur;":                           '\U0000266E',
-	"natural;":                         '\U0000266E',
-	"naturals;":                        '\U00002115',
-	"nbsp;":                            '\U000000A0',
-	"ncap;":                            '\U00002A43',
-	"ncaron;":                          '\U00000148',
-	"ncedil;":                          '\U00000146',
-	"ncong;":                           '\U00002247',
-	"ncup;":                            '\U00002A42',
-	"ncy;":                             '\U0000043D',
-	"ndash;":                           '\U00002013',
-	"ne;":                              '\U00002260',
-	"neArr;":                           '\U000021D7',
-	"nearhk;":                          '\U00002924',
-	"nearr;":                           '\U00002197',
-	"nearrow;":                         '\U00002197',
-	"nequiv;":                          '\U00002262',
-	"nesear;":                          '\U00002928',
-	"nexist;":                          '\U00002204',
-	"nexists;":                         '\U00002204',
-	"nfr;":                             '\U0001D52B',
-	"nge;":                             '\U00002271',
-	"ngeq;":                            '\U00002271',
-	"ngsim;":                           '\U00002275',
-	"ngt;":                             '\U0000226F',
-	"ngtr;":                            '\U0000226F',
-	"nhArr;":                           '\U000021CE',
-	"nharr;":                           '\U000021AE',
-	"nhpar;":                           '\U00002AF2',
-	"ni;":                              '\U0000220B',
-	"nis;":                             '\U000022FC',
-	"nisd;":                            '\U000022FA',
-	"niv;":                             '\U0000220B',
-	"njcy;":                            '\U0000045A',
-	"nlArr;":                           '\U000021CD',
-	"nlarr;":                           '\U0000219A',
-	"nldr;":                            '\U00002025',
-	"nle;":                             '\U00002270',
-	"nleftarrow;":                      '\U0000219A',
-	"nleftrightarrow;":                 '\U000021AE',
-	"nleq;":                            '\U00002270',
-	"nless;":                           '\U0000226E',
-	"nlsim;":                           '\U00002274',
-	"nlt;":                             '\U0000226E',
-	"nltri;":                           '\U000022EA',
-	"nltrie;":                          '\U000022EC',
-	"nmid;":                            '\U00002224',
-	"nopf;":                            '\U0001D55F',
-	"not;":                             '\U000000AC',
-	"notin;":                           '\U00002209',
-	"notinva;":                         '\U00002209',
-	"notinvb;":                         '\U000022F7',
-	"notinvc;":                         '\U000022F6',
-	"notni;":                           '\U0000220C',
-	"notniva;":                         '\U0000220C',
-	"notnivb;":                         '\U000022FE',
-	"notnivc;":                         '\U000022FD',
-	"npar;":                            '\U00002226',
-	"nparallel;":                       '\U00002226',
-	"npolint;":                         '\U00002A14',
-	"npr;":                             '\U00002280',
-	"nprcue;":                          '\U000022E0',
-	"nprec;":                           '\U00002280',
-	"nrArr;":                           '\U000021CF',
-	"nrarr;":                           '\U0000219B',
-	"nrightarrow;":                     '\U0000219B',
-	"nrtri;":                           '\U000022EB',
-	"nrtrie;":                          '\U000022ED',
-	"nsc;":                             '\U00002281',
-	"nsccue;":                          '\U000022E1',
-	"nscr;":                            '\U0001D4C3',
-	"nshortmid;":                       '\U00002224',
-	"nshortparallel;":                  '\U00002226',
-	"nsim;":                            '\U00002241',
-	"nsime;":                           '\U00002244',
-	"nsimeq;":                          '\U00002244',
-	"nsmid;":                           '\U00002224',
-	"nspar;":                           '\U00002226',
-	"nsqsube;":                         '\U000022E2',
-	"nsqsupe;":                         '\U000022E3',
-	"nsub;":                            '\U00002284',
-	"nsube;":                           '\U00002288',
-	"nsubseteq;":                       '\U00002288',
-	"nsucc;":                           '\U00002281',
-	"nsup;":                            '\U00002285',
-	"nsupe;":                           '\U00002289',
-	"nsupseteq;":                       '\U00002289',
-	"ntgl;":                            '\U00002279',
-	"ntilde;":                          '\U000000F1',
-	"ntlg;":                            '\U00002278',
-	"ntriangleleft;":                   '\U000022EA',
-	"ntrianglelefteq;":                 '\U000022EC',
-	"ntriangleright;":                  '\U000022EB',
-	"ntrianglerighteq;":                '\U000022ED',
-	"nu;":                              '\U000003BD',
-	"num;":                             '\U00000023',
-	"numero;":                          '\U00002116',
-	"numsp;":                           '\U00002007',
-	"nvDash;":                          '\U000022AD',
-	"nvHarr;":                          '\U00002904',
-	"nvdash;":                          '\U000022AC',
-	"nvinfin;":                         '\U000029DE',
-	"nvlArr;":                          '\U00002902',
-	"nvrArr;":                          '\U00002903',
-	"nwArr;":                           '\U000021D6',
-	"nwarhk;":                          '\U00002923',
-	"nwarr;":                           '\U00002196',
-	"nwarrow;":                         '\U00002196',
-	"nwnear;":                          '\U00002927',
-	"oS;":                              '\U000024C8',
-	"oacute;":                          '\U000000F3',
-	"oast;":                            '\U0000229B',
-	"ocir;":                            '\U0000229A',
-	"ocirc;":                           '\U000000F4',
-	"ocy;":                             '\U0000043E',
-	"odash;":                           '\U0000229D',
-	"odblac;":                          '\U00000151',
-	"odiv;":                            '\U00002A38',
-	"odot;":                            '\U00002299',
-	"odsold;":                          '\U000029BC',
-	"oelig;":                           '\U00000153',
-	"ofcir;":                           '\U000029BF',
-	"ofr;":                             '\U0001D52C',
-	"ogon;":                            '\U000002DB',
-	"ograve;":                          '\U000000F2',
-	"ogt;":                             '\U000029C1',
-	"ohbar;":                           '\U000029B5',
-	"ohm;":                             '\U000003A9',
-	"oint;":                            '\U0000222E',
-	"olarr;":                           '\U000021BA',
-	"olcir;":                           '\U000029BE',
-	"olcross;":                         '\U000029BB',
-	"oline;":                           '\U0000203E',
-	"olt;":                             '\U000029C0',
-	"omacr;":                           '\U0000014D',
-	"omega;":                           '\U000003C9',
-	"omicron;":                         '\U000003BF',
-	"omid;":                            '\U000029B6',
-	"ominus;":                          '\U00002296',
-	"oopf;":                            '\U0001D560',
-	"opar;":                            '\U000029B7',
-	"operp;":                           '\U000029B9',
-	"oplus;":                           '\U00002295',
-	"or;":                              '\U00002228',
-	"orarr;":                           '\U000021BB',
-	"ord;":                             '\U00002A5D',
-	"order;":                           '\U00002134',
-	"orderof;":                         '\U00002134',
-	"ordf;":                            '\U000000AA',
-	"ordm;":                            '\U000000BA',
-	"origof;":                          '\U000022B6',
-	"oror;":                            '\U00002A56',
-	"orslope;":                         '\U00002A57',
-	"orv;":                             '\U00002A5B',
-	"oscr;":                            '\U00002134',
-	"oslash;":                          '\U000000F8',
-	"osol;":                            '\U00002298',
-	"otilde;":                          '\U000000F5',
-	"otimes;":                          '\U00002297',
-	"otimesas;":                        '\U00002A36',
-	"ouml;":                            '\U000000F6',
-	"ovbar;":                           '\U0000233D',
-	"par;":                             '\U00002225',
-	"para;":                            '\U000000B6',
-	"parallel;":                        '\U00002225',
-	"parsim;":                          '\U00002AF3',
-	"parsl;":                           '\U00002AFD',
-	"part;":                            '\U00002202',
-	"pcy;":                             '\U0000043F',
-	"percnt;":                          '\U00000025',
-	"period;":                          '\U0000002E',
-	"permil;":                          '\U00002030',
-	"perp;":                            '\U000022A5',
-	"pertenk;":                         '\U00002031',
-	"pfr;":                             '\U0001D52D',
-	"phi;":                             '\U000003C6',
-	"phiv;":                            '\U000003D5',
-	"phmmat;":                          '\U00002133',
-	"phone;":                           '\U0000260E',
-	"pi;":                              '\U000003C0',
-	"pitchfork;":                       '\U000022D4',
-	"piv;":                             '\U000003D6',
-	"planck;":                          '\U0000210F',
-	"planckh;":                         '\U0000210E',
-	"plankv;":                          '\U0000210F',
-	"plus;":                            '\U0000002B',
-	"plusacir;":                        '\U00002A23',
-	"plusb;":                           '\U0000229E',
-	"pluscir;":                         '\U00002A22',
-	"plusdo;":                          '\U00002214',
-	"plusdu;":                          '\U00002A25',
-	"pluse;":                           '\U00002A72',
-	"plusmn;":                          '\U000000B1',
-	"plussim;":                         '\U00002A26',
-	"plustwo;":                         '\U00002A27',
-	"pm;":                              '\U000000B1',
-	"pointint;":                        '\U00002A15',
-	"popf;":                            '\U0001D561',
-	"pound;":                           '\U000000A3',
-	"pr;":                              '\U0000227A',
-	"prE;":                             '\U00002AB3',
-	"prap;":                            '\U00002AB7',
-	"prcue;":                           '\U0000227C',
-	"pre;":                             '\U00002AAF',
-	"prec;":                            '\U0000227A',
-	"precapprox;":                      '\U00002AB7',
-	"preccurlyeq;":                     '\U0000227C',
-	"preceq;":                          '\U00002AAF',
-	"precnapprox;":                     '\U00002AB9',
-	"precneqq;":                        '\U00002AB5',
-	"precnsim;":                        '\U000022E8',
-	"precsim;":                         '\U0000227E',
-	"prime;":                           '\U00002032',
-	"primes;":                          '\U00002119',
-	"prnE;":                            '\U00002AB5',
-	"prnap;":                           '\U00002AB9',
-	"prnsim;":                          '\U000022E8',
-	"prod;":                            '\U0000220F',
-	"profalar;":                        '\U0000232E',
-	"profline;":                        '\U00002312',
-	"profsurf;":                        '\U00002313',
-	"prop;":                            '\U0000221D',
-	"propto;":                          '\U0000221D',
-	"prsim;":                           '\U0000227E',
-	"prurel;":                          '\U000022B0',
-	"pscr;":                            '\U0001D4C5',
-	"psi;":                             '\U000003C8',
-	"puncsp;":                          '\U00002008',
-	"qfr;":                             '\U0001D52E',
-	"qint;":                            '\U00002A0C',
-	"qopf;":                            '\U0001D562',
-	"qprime;":                          '\U00002057',
-	"qscr;":                            '\U0001D4C6',
-	"quaternions;":                     '\U0000210D',
-	"quatint;":                         '\U00002A16',
-	"quest;":                           '\U0000003F',
-	"questeq;":                         '\U0000225F',
-	"quot;":                            '\U00000022',
-	"rAarr;":                           '\U000021DB',
-	"rArr;":                            '\U000021D2',
-	"rAtail;":                          '\U0000291C',
-	"rBarr;":                           '\U0000290F',
-	"rHar;":                            '\U00002964',
-	"racute;":                          '\U00000155',
-	"radic;":                           '\U0000221A',
-	"raemptyv;":                        '\U000029B3',
-	"rang;":                            '\U000027E9',
-	"rangd;":                           '\U00002992',
-	"range;":                           '\U000029A5',
-	"rangle;":                          '\U000027E9',
-	"raquo;":                           '\U000000BB',
-	"rarr;":                            '\U00002192',
-	"rarrap;":                          '\U00002975',
-	"rarrb;":                           '\U000021E5',
-	"rarrbfs;":                         '\U00002920',
-	"rarrc;":                           '\U00002933',
-	"rarrfs;":                          '\U0000291E',
-	"rarrhk;":                          '\U000021AA',
-	"rarrlp;":                          '\U000021AC',
-	"rarrpl;":                          '\U00002945',
-	"rarrsim;":                         '\U00002974',
-	"rarrtl;":                          '\U000021A3',
-	"rarrw;":                           '\U0000219D',
-	"ratail;":                          '\U0000291A',
-	"ratio;":                           '\U00002236',
-	"rationals;":                       '\U0000211A',
-	"rbarr;":                           '\U0000290D',
-	"rbbrk;":                           '\U00002773',
-	"rbrace;":                          '\U0000007D',
-	"rbrack;":                          '\U0000005D',
-	"rbrke;":                           '\U0000298C',
-	"rbrksld;":                         '\U0000298E',
-	"rbrkslu;":                         '\U00002990',
-	"rcaron;":                          '\U00000159',
-	"rcedil;":                          '\U00000157',
-	"rceil;":                           '\U00002309',
-	"rcub;":                            '\U0000007D',
-	"rcy;":                             '\U00000440',
-	"rdca;":                            '\U00002937',
-	"rdldhar;":                         '\U00002969',
-	"rdquo;":                           '\U0000201D',
-	"rdquor;":                          '\U0000201D',
-	"rdsh;":                            '\U000021B3',
-	"real;":                            '\U0000211C',
-	"realine;":                         '\U0000211B',
-	"realpart;":                        '\U0000211C',
-	"reals;":                           '\U0000211D',
-	"rect;":                            '\U000025AD',
-	"reg;":                             '\U000000AE',
-	"rfisht;":                          '\U0000297D',
-	"rfloor;":                          '\U0000230B',
-	"rfr;":                             '\U0001D52F',
-	"rhard;":                           '\U000021C1',
-	"rharu;":                           '\U000021C0',
-	"rharul;":                          '\U0000296C',
-	"rho;":                             '\U000003C1',
-	"rhov;":                            '\U000003F1',
-	"rightarrow;":                      '\U00002192',
-	"rightarrowtail;":                  '\U000021A3',
-	"rightharpoondown;":                '\U000021C1',
-	"rightharpoonup;":                  '\U000021C0',
-	"rightleftarrows;":                 '\U000021C4',
-	"rightleftharpoons;":               '\U000021CC',
-	"rightrightarrows;":                '\U000021C9',
-	"rightsquigarrow;":                 '\U0000219D',
-	"rightthreetimes;":                 '\U000022CC',
-	"ring;":                            '\U000002DA',
-	"risingdotseq;":                    '\U00002253',
-	"rlarr;":                           '\U000021C4',
-	"rlhar;":                           '\U000021CC',
-	"rlm;":                             '\U0000200F',
-	"rmoust;":                          '\U000023B1',
-	"rmoustache;":                      '\U000023B1',
-	"rnmid;":                           '\U00002AEE',
-	"roang;":                           '\U000027ED',
-	"roarr;":                           '\U000021FE',
-	"robrk;":                           '\U000027E7',
-	"ropar;":                           '\U00002986',
-	"ropf;":                            '\U0001D563',
-	"roplus;":                          '\U00002A2E',
-	"rotimes;":                         '\U00002A35',
-	"rpar;":                            '\U00000029',
-	"rpargt;":                          '\U00002994',
-	"rppolint;":                        '\U00002A12',
-	"rrarr;":                           '\U000021C9',
-	"rsaquo;":                          '\U0000203A',
-	"rscr;":                            '\U0001D4C7',
-	"rsh;":                             '\U000021B1',
-	"rsqb;":                            '\U0000005D',
-	"rsquo;":                           '\U00002019',
-	"rsquor;":                          '\U00002019',
-	"rthree;":                          '\U000022CC',
-	"rtimes;":                          '\U000022CA',
-	"rtri;":                            '\U000025B9',
-	"rtrie;":                           '\U000022B5',
-	"rtrif;":                           '\U000025B8',
-	"rtriltri;":                        '\U000029CE',
-	"ruluhar;":                         '\U00002968',
-	"rx;":                              '\U0000211E',
-	"sacute;":                          '\U0000015B',
-	"sbquo;":                           '\U0000201A',
-	"sc;":                              '\U0000227B',
-	"scE;":                             '\U00002AB4',
-	"scap;":                            '\U00002AB8',
-	"scaron;":                          '\U00000161',
-	"sccue;":                           '\U0000227D',
-	"sce;":                             '\U00002AB0',
-	"scedil;":                          '\U0000015F',
-	"scirc;":                           '\U0000015D',
-	"scnE;":                            '\U00002AB6',
-	"scnap;":                           '\U00002ABA',
-	"scnsim;":                          '\U000022E9',
-	"scpolint;":                        '\U00002A13',
-	"scsim;":                           '\U0000227F',
-	"scy;":                             '\U00000441',
-	"sdot;":                            '\U000022C5',
-	"sdotb;":                           '\U000022A1',
-	"sdote;":                           '\U00002A66',
-	"seArr;":                           '\U000021D8',
-	"searhk;":                          '\U00002925',
-	"searr;":                           '\U00002198',
-	"searrow;":                         '\U00002198',
-	"sect;":                            '\U000000A7',
-	"semi;":                            '\U0000003B',
-	"seswar;":                          '\U00002929',
-	"setminus;":                        '\U00002216',
-	"setmn;":                           '\U00002216',
-	"sext;":                            '\U00002736',
-	"sfr;":                             '\U0001D530',
-	"sfrown;":                          '\U00002322',
-	"sharp;":                           '\U0000266F',
-	"shchcy;":                          '\U00000449',
-	"shcy;":                            '\U00000448',
-	"shortmid;":                        '\U00002223',
-	"shortparallel;":                   '\U00002225',
-	"shy;":                             '\U000000AD',
-	"sigma;":                           '\U000003C3',
-	"sigmaf;":                          '\U000003C2',
-	"sigmav;":                          '\U000003C2',
-	"sim;":                             '\U0000223C',
-	"simdot;":                          '\U00002A6A',
-	"sime;":                            '\U00002243',
-	"simeq;":                           '\U00002243',
-	"simg;":                            '\U00002A9E',
-	"simgE;":                           '\U00002AA0',
-	"siml;":                            '\U00002A9D',
-	"simlE;":                           '\U00002A9F',
-	"simne;":                           '\U00002246',
-	"simplus;":                         '\U00002A24',
-	"simrarr;":                         '\U00002972',
-	"slarr;":                           '\U00002190',
-	"smallsetminus;":                   '\U00002216',
-	"smashp;":                          '\U00002A33',
-	"smeparsl;":                        '\U000029E4',
-	"smid;":                            '\U00002223',
-	"smile;":                           '\U00002323',
-	"smt;":                             '\U00002AAA',
-	"smte;":                            '\U00002AAC',
-	"softcy;":                          '\U0000044C',
-	"sol;":                             '\U0000002F',
-	"solb;":                            '\U000029C4',
-	"solbar;":                          '\U0000233F',
-	"sopf;":                            '\U0001D564',
-	"spades;":                          '\U00002660',
-	"spadesuit;":                       '\U00002660',
-	"spar;":                            '\U00002225',
-	"sqcap;":                           '\U00002293',
-	"sqcup;":                           '\U00002294',
-	"sqsub;":                           '\U0000228F',
-	"sqsube;":                          '\U00002291',
-	"sqsubset;":                        '\U0000228F',
-	"sqsubseteq;":                      '\U00002291',
-	"sqsup;":                           '\U00002290',
-	"sqsupe;":                          '\U00002292',
-	"sqsupset;":                        '\U00002290',
-	"sqsupseteq;":                      '\U00002292',
-	"squ;":                             '\U000025A1',
-	"square;":                          '\U000025A1',
-	"squarf;":                          '\U000025AA',
-	"squf;":                            '\U000025AA',
-	"srarr;":                           '\U00002192',
-	"sscr;":                            '\U0001D4C8',
-	"ssetmn;":                          '\U00002216',
-	"ssmile;":                          '\U00002323',
-	"sstarf;":                          '\U000022C6',
-	"star;":                            '\U00002606',
-	"starf;":                           '\U00002605',
-	"straightepsilon;":                 '\U000003F5',
-	"straightphi;":                     '\U000003D5',
-	"strns;":                           '\U000000AF',
-	"sub;":                             '\U00002282',
-	"subE;":                            '\U00002AC5',
-	"subdot;":                          '\U00002ABD',
-	"sube;":                            '\U00002286',
-	"subedot;":                         '\U00002AC3',
-	"submult;":                         '\U00002AC1',
-	"subnE;":                           '\U00002ACB',
-	"subne;":                           '\U0000228A',
-	"subplus;":                         '\U00002ABF',
-	"subrarr;":                         '\U00002979',
-	"subset;":                          '\U00002282',
-	"subseteq;":                        '\U00002286',
-	"subseteqq;":                       '\U00002AC5',
-	"subsetneq;":                       '\U0000228A',
-	"subsetneqq;":                      '\U00002ACB',
-	"subsim;":                          '\U00002AC7',
-	"subsub;":                          '\U00002AD5',
-	"subsup;":                          '\U00002AD3',
-	"succ;":                            '\U0000227B',
-	"succapprox;":                      '\U00002AB8',
-	"succcurlyeq;":                     '\U0000227D',
-	"succeq;":                          '\U00002AB0',
-	"succnapprox;":                     '\U00002ABA',
-	"succneqq;":                        '\U00002AB6',
-	"succnsim;":                        '\U000022E9',
-	"succsim;":                         '\U0000227F',
-	"sum;":                             '\U00002211',
-	"sung;":                            '\U0000266A',
-	"sup;":                             '\U00002283',
-	"sup1;":                            '\U000000B9',
-	"sup2;":                            '\U000000B2',
-	"sup3;":                            '\U000000B3',
-	"supE;":                            '\U00002AC6',
-	"supdot;":                          '\U00002ABE',
-	"supdsub;":                         '\U00002AD8',
-	"supe;":                            '\U00002287',
-	"supedot;":                         '\U00002AC4',
-	"suphsol;":                         '\U000027C9',
-	"suphsub;":                         '\U00002AD7',
-	"suplarr;":                         '\U0000297B',
-	"supmult;":                         '\U00002AC2',
-	"supnE;":                           '\U00002ACC',
-	"supne;":                           '\U0000228B',
-	"supplus;":                         '\U00002AC0',
-	"supset;":                          '\U00002283',
-	"supseteq;":                        '\U00002287',
-	"supseteqq;":                       '\U00002AC6',
-	"supsetneq;":                       '\U0000228B',
-	"supsetneqq;":                      '\U00002ACC',
-	"supsim;":                          '\U00002AC8',
-	"supsub;":                          '\U00002AD4',
-	"supsup;":                          '\U00002AD6',
-	"swArr;":                           '\U000021D9',
-	"swarhk;":                          '\U00002926',
-	"swarr;":                           '\U00002199',
-	"swarrow;":                         '\U00002199',
-	"swnwar;":                          '\U0000292A',
-	"szlig;":                           '\U000000DF',
-	"target;":                          '\U00002316',
-	"tau;":                             '\U000003C4',
-	"tbrk;":                            '\U000023B4',
-	"tcaron;":                          '\U00000165',
-	"tcedil;":                          '\U00000163',
-	"tcy;":                             '\U00000442',
-	"tdot;":                            '\U000020DB',
-	"telrec;":                          '\U00002315',
-	"tfr;":                             '\U0001D531',
-	"there4;":                          '\U00002234',
-	"therefore;":                       '\U00002234',
-	"theta;":                           '\U000003B8',
-	"thetasym;":                        '\U000003D1',
-	"thetav;":                          '\U000003D1',
-	"thickapprox;":                     '\U00002248',
-	"thicksim;":                        '\U0000223C',
-	"thinsp;":                          '\U00002009',
-	"thkap;":                           '\U00002248',
-	"thksim;":                          '\U0000223C',
-	"thorn;":                           '\U000000FE',
-	"tilde;":                           '\U000002DC',
-	"times;":                           '\U000000D7',
-	"timesb;":                          '\U000022A0',
-	"timesbar;":                        '\U00002A31',
-	"timesd;":                          '\U00002A30',
-	"tint;":                            '\U0000222D',
-	"toea;":                            '\U00002928',
-	"top;":                             '\U000022A4',
-	"topbot;":                          '\U00002336',
-	"topcir;":                          '\U00002AF1',
-	"topf;":                            '\U0001D565',
-	"topfork;":                         '\U00002ADA',
-	"tosa;":                            '\U00002929',
-	"tprime;":                          '\U00002034',
-	"trade;":                           '\U00002122',
-	"triangle;":                        '\U000025B5',
-	"triangledown;":                    '\U000025BF',
-	"triangleleft;":                    '\U000025C3',
-	"trianglelefteq;":                  '\U000022B4',
-	"triangleq;":                       '\U0000225C',
-	"triangleright;":                   '\U000025B9',
-	"trianglerighteq;":                 '\U000022B5',
-	"tridot;":                          '\U000025EC',
-	"trie;":                            '\U0000225C',
-	"triminus;":                        '\U00002A3A',
-	"triplus;":                         '\U00002A39',
-	"trisb;":                           '\U000029CD',
-	"tritime;":                         '\U00002A3B',
-	"trpezium;":                        '\U000023E2',
-	"tscr;":                            '\U0001D4C9',
-	"tscy;":                            '\U00000446',
-	"tshcy;":                           '\U0000045B',
-	"tstrok;":                          '\U00000167',
-	"twixt;":                           '\U0000226C',
-	"twoheadleftarrow;":                '\U0000219E',
-	"twoheadrightarrow;":               '\U000021A0',
-	"uArr;":                            '\U000021D1',
-	"uHar;":                            '\U00002963',
-	"uacute;":                          '\U000000FA',
-	"uarr;":                            '\U00002191',
-	"ubrcy;":                           '\U0000045E',
-	"ubreve;":                          '\U0000016D',
-	"ucirc;":                           '\U000000FB',
-	"ucy;":                             '\U00000443',
-	"udarr;":                           '\U000021C5',
-	"udblac;":                          '\U00000171',
-	"udhar;":                           '\U0000296E',
-	"ufisht;":                          '\U0000297E',
-	"ufr;":                             '\U0001D532',
-	"ugrave;":                          '\U000000F9',
-	"uharl;":                           '\U000021BF',
-	"uharr;":                           '\U000021BE',
-	"uhblk;":                           '\U00002580',
-	"ulcorn;":                          '\U0000231C',
-	"ulcorner;":                        '\U0000231C',
-	"ulcrop;":                          '\U0000230F',
-	"ultri;":                           '\U000025F8',
-	"umacr;":                           '\U0000016B',
-	"uml;":                             '\U000000A8',
-	"uogon;":                           '\U00000173',
-	"uopf;":                            '\U0001D566',
-	"uparrow;":                         '\U00002191',
-	"updownarrow;":                     '\U00002195',
-	"upharpoonleft;":                   '\U000021BF',
-	"upharpoonright;":                  '\U000021BE',
-	"uplus;":                           '\U0000228E',
-	"upsi;":                            '\U000003C5',
-	"upsih;":                           '\U000003D2',
-	"upsilon;":                         '\U000003C5',
-	"upuparrows;":                      '\U000021C8',
-	"urcorn;":                          '\U0000231D',
-	"urcorner;":                        '\U0000231D',
-	"urcrop;":                          '\U0000230E',
-	"uring;":                           '\U0000016F',
-	"urtri;":                           '\U000025F9',
-	"uscr;":                            '\U0001D4CA',
-	"utdot;":                           '\U000022F0',
-	"utilde;":                          '\U00000169',
-	"utri;":                            '\U000025B5',
-	"utrif;":                           '\U000025B4',
-	"uuarr;":                           '\U000021C8',
-	"uuml;":                            '\U000000FC',
-	"uwangle;":                         '\U000029A7',
-	"vArr;":                            '\U000021D5',
-	"vBar;":                            '\U00002AE8',
-	"vBarv;":                           '\U00002AE9',
-	"vDash;":                           '\U000022A8',
-	"vangrt;":                          '\U0000299C',
-	"varepsilon;":                      '\U000003F5',
-	"varkappa;":                        '\U000003F0',
-	"varnothing;":                      '\U00002205',
-	"varphi;":                          '\U000003D5',
-	"varpi;":                           '\U000003D6',
-	"varpropto;":                       '\U0000221D',
-	"varr;":                            '\U00002195',
-	"varrho;":                          '\U000003F1',
-	"varsigma;":                        '\U000003C2',
-	"vartheta;":                        '\U000003D1',
-	"vartriangleleft;":                 '\U000022B2',
-	"vartriangleright;":                '\U000022B3',
-	"vcy;":                             '\U00000432',
-	"vdash;":                           '\U000022A2',
-	"vee;":                             '\U00002228',
-	"veebar;":                          '\U000022BB',
-	"veeeq;":                           '\U0000225A',
-	"vellip;":                          '\U000022EE',
-	"verbar;":                          '\U0000007C',
-	"vert;":                            '\U0000007C',
-	"vfr;":                             '\U0001D533',
-	"vltri;":                           '\U000022B2',
-	"vopf;":                            '\U0001D567',
-	"vprop;":                           '\U0000221D',
-	"vrtri;":                           '\U000022B3',
-	"vscr;":                            '\U0001D4CB',
-	"vzigzag;":                         '\U0000299A',
-	"wcirc;":                           '\U00000175',
-	"wedbar;":                          '\U00002A5F',
-	"wedge;":                           '\U00002227',
-	"wedgeq;":                          '\U00002259',
-	"weierp;":                          '\U00002118',
-	"wfr;":                             '\U0001D534',
-	"wopf;":                            '\U0001D568',
-	"wp;":                              '\U00002118',
-	"wr;":                              '\U00002240',
-	"wreath;":                          '\U00002240',
-	"wscr;":                            '\U0001D4CC',
-	"xcap;":                            '\U000022C2',
-	"xcirc;":                           '\U000025EF',
-	"xcup;":                            '\U000022C3',
-	"xdtri;":                           '\U000025BD',
-	"xfr;":                             '\U0001D535',
-	"xhArr;":                           '\U000027FA',
-	"xharr;":                           '\U000027F7',
-	"xi;":                              '\U000003BE',
-	"xlArr;":                           '\U000027F8',
-	"xlarr;":                           '\U000027F5',
-	"xmap;":                            '\U000027FC',
-	"xnis;":                            '\U000022FB',
-	"xodot;":                           '\U00002A00',
-	"xopf;":                            '\U0001D569',
-	"xoplus;":                          '\U00002A01',
-	"xotime;":                          '\U00002A02',
-	"xrArr;":                           '\U000027F9',
-	"xrarr;":                           '\U000027F6',
-	"xscr;":                            '\U0001D4CD',
-	"xsqcup;":                          '\U00002A06',
-	"xuplus;":                          '\U00002A04',
-	"xutri;":                           '\U000025B3',
-	"xvee;":                            '\U000022C1',
-	"xwedge;":                          '\U000022C0',
-	"yacute;":                          '\U000000FD',
-	"yacy;":                            '\U0000044F',
-	"ycirc;":                           '\U00000177',
-	"ycy;":                             '\U0000044B',
-	"yen;":                             '\U000000A5',
-	"yfr;":                             '\U0001D536',
-	"yicy;":                            '\U00000457',
-	"yopf;":                            '\U0001D56A',
-	"yscr;":                            '\U0001D4CE',
-	"yucy;":                            '\U0000044E',
-	"yuml;":                            '\U000000FF',
-	"zacute;":                          '\U0000017A',
-	"zcaron;":                          '\U0000017E',
-	"zcy;":                             '\U00000437',
-	"zdot;":                            '\U0000017C',
-	"zeetrf;":                          '\U00002128',
-	"zeta;":                            '\U000003B6',
-	"zfr;":                             '\U0001D537',
-	"zhcy;":                            '\U00000436',
-	"zigrarr;":                         '\U000021DD',
-	"zopf;":                            '\U0001D56B',
-	"zscr;":                            '\U0001D4CF',
-	"zwj;":                             '\U0000200D',
-	"zwnj;":                            '\U0000200C',
-	"AElig":                            '\U000000C6',
-	"AMP":                              '\U00000026',
-	"Aacute":                           '\U000000C1',
-	"Acirc":                            '\U000000C2',
-	"Agrave":                           '\U000000C0',
-	"Aring":                            '\U000000C5',
-	"Atilde":                           '\U000000C3',
-	"Auml":                             '\U000000C4',
-	"COPY":                             '\U000000A9',
-	"Ccedil":                           '\U000000C7',
-	"ETH":                              '\U000000D0',
-	"Eacute":                           '\U000000C9',
-	"Ecirc":                            '\U000000CA',
-	"Egrave":                           '\U000000C8',
-	"Euml":                             '\U000000CB',
-	"GT":                               '\U0000003E',
-	"Iacute":                           '\U000000CD',
-	"Icirc":                            '\U000000CE',
-	"Igrave":                           '\U000000CC',
-	"Iuml":                             '\U000000CF',
-	"LT":                               '\U0000003C',
-	"Ntilde":                           '\U000000D1',
-	"Oacute":                           '\U000000D3',
-	"Ocirc":                            '\U000000D4',
-	"Ograve":                           '\U000000D2',
-	"Oslash":                           '\U000000D8',
-	"Otilde":                           '\U000000D5',
-	"Ouml":                             '\U000000D6',
-	"QUOT":                             '\U00000022',
-	"REG":                              '\U000000AE',
-	"THORN":                            '\U000000DE',
-	"Uacute":                           '\U000000DA',
-	"Ucirc":                            '\U000000DB',
-	"Ugrave":                           '\U000000D9',
-	"Uuml":                             '\U000000DC',
-	"Yacute":                           '\U000000DD',
-	"aacute":                           '\U000000E1',
-	"acirc":                            '\U000000E2',
-	"acute":                            '\U000000B4',
-	"aelig":                            '\U000000E6',
-	"agrave":                           '\U000000E0',
-	"amp":                              '\U00000026',
-	"aring":                            '\U000000E5',
-	"atilde":                           '\U000000E3',
-	"auml":                             '\U000000E4',
-	"brvbar":                           '\U000000A6',
-	"ccedil":                           '\U000000E7',
-	"cedil":                            '\U000000B8',
-	"cent":                             '\U000000A2',
-	"copy":                             '\U000000A9',
-	"curren":                           '\U000000A4',
-	"deg":                              '\U000000B0',
-	"divide":                           '\U000000F7',
-	"eacute":                           '\U000000E9',
-	"ecirc":                            '\U000000EA',
-	"egrave":                           '\U000000E8',
-	"eth":                              '\U000000F0',
-	"euml":                             '\U000000EB',
-	"frac12":                           '\U000000BD',
-	"frac14":                           '\U000000BC',
-	"frac34":                           '\U000000BE',
-	"gt":                               '\U0000003E',
-	"iacute":                           '\U000000ED',
-	"icirc":                            '\U000000EE',
-	"iexcl":                            '\U000000A1',
-	"igrave":                           '\U000000EC',
-	"iquest":                           '\U000000BF',
-	"iuml":                             '\U000000EF',
-	"laquo":                            '\U000000AB',
-	"lt":                               '\U0000003C',
-	"macr":                             '\U000000AF',
-	"micro":                            '\U000000B5',
-	"middot":                           '\U000000B7',
-	"nbsp":                             '\U000000A0',
-	"not":                              '\U000000AC',
-	"ntilde":                           '\U000000F1',
-	"oacute":                           '\U000000F3',
-	"ocirc":                            '\U000000F4',
-	"ograve":                           '\U000000F2',
-	"ordf":                             '\U000000AA',
-	"ordm":                             '\U000000BA',
-	"oslash":                           '\U000000F8',
-	"otilde":                           '\U000000F5',
-	"ouml":                             '\U000000F6',
-	"para":                             '\U000000B6',
-	"plusmn":                           '\U000000B1',
-	"pound":                            '\U000000A3',
-	"quot":                             '\U00000022',
-	"raquo":                            '\U000000BB',
-	"reg":                              '\U000000AE',
-	"sect":                             '\U000000A7',
-	"shy":                              '\U000000AD',
-	"sup1":                             '\U000000B9',
-	"sup2":                             '\U000000B2',
-	"sup3":                             '\U000000B3',
-	"szlig":                            '\U000000DF',
-	"thorn":                            '\U000000FE',
-	"times":                            '\U000000D7',
-	"uacute":                           '\U000000FA',
-	"ucirc":                            '\U000000FB',
-	"ugrave":                           '\U000000F9',
-	"uml":                              '\U000000A8',
-	"uuml":                             '\U000000FC',
-	"yacute":                           '\U000000FD',
-	"yen":                              '\U000000A5',
-	"yuml":                             '\U000000FF',
-}
-
-// HTML entities that are two unicode codepoints.
-var entity2 = map[string][2]rune{
-	// TODO(nigeltao): Handle replacements that are wider than their names.
-	// "nLt;":                     {'\u226A', '\u20D2'},
-	// "nGt;":                     {'\u226B', '\u20D2'},
-	"NotEqualTilde;":           {'\u2242', '\u0338'},
-	"NotGreaterFullEqual;":     {'\u2267', '\u0338'},
-	"NotGreaterGreater;":       {'\u226B', '\u0338'},
-	"NotGreaterSlantEqual;":    {'\u2A7E', '\u0338'},
-	"NotHumpDownHump;":         {'\u224E', '\u0338'},
-	"NotHumpEqual;":            {'\u224F', '\u0338'},
-	"NotLeftTriangleBar;":      {'\u29CF', '\u0338'},
-	"NotLessLess;":             {'\u226A', '\u0338'},
-	"NotLessSlantEqual;":       {'\u2A7D', '\u0338'},
-	"NotNestedGreaterGreater;": {'\u2AA2', '\u0338'},
-	"NotNestedLessLess;":       {'\u2AA1', '\u0338'},
-	"NotPrecedesEqual;":        {'\u2AAF', '\u0338'},
-	"NotRightTriangleBar;":     {'\u29D0', '\u0338'},
-	"NotSquareSubset;":         {'\u228F', '\u0338'},
-	"NotSquareSuperset;":       {'\u2290', '\u0338'},
-	"NotSubset;":               {'\u2282', '\u20D2'},
-	"NotSucceedsEqual;":        {'\u2AB0', '\u0338'},
-	"NotSucceedsTilde;":        {'\u227F', '\u0338'},
-	"NotSuperset;":             {'\u2283', '\u20D2'},
-	"ThickSpace;":              {'\u205F', '\u200A'},
-	"acE;":                     {'\u223E', '\u0333'},
-	"bne;":                     {'\u003D', '\u20E5'},
-	"bnequiv;":                 {'\u2261', '\u20E5'},
-	"caps;":                    {'\u2229', '\uFE00'},
-	"cups;":                    {'\u222A', '\uFE00'},
-	"fjlig;":                   {'\u0066', '\u006A'},
-	"gesl;":                    {'\u22DB', '\uFE00'},
-	"gvertneqq;":               {'\u2269', '\uFE00'},
-	"gvnE;":                    {'\u2269', '\uFE00'},
-	"lates;":                   {'\u2AAD', '\uFE00'},
-	"lesg;":                    {'\u22DA', '\uFE00'},
-	"lvertneqq;":               {'\u2268', '\uFE00'},
-	"lvnE;":                    {'\u2268', '\uFE00'},
-	"nGg;":                     {'\u22D9', '\u0338'},
-	"nGtv;":                    {'\u226B', '\u0338'},
-	"nLl;":                     {'\u22D8', '\u0338'},
-	"nLtv;":                    {'\u226A', '\u0338'},
-	"nang;":                    {'\u2220', '\u20D2'},
-	"napE;":                    {'\u2A70', '\u0338'},
-	"napid;":                   {'\u224B', '\u0338'},
-	"nbump;":                   {'\u224E', '\u0338'},
-	"nbumpe;":                  {'\u224F', '\u0338'},
-	"ncongdot;":                {'\u2A6D', '\u0338'},
-	"nedot;":                   {'\u2250', '\u0338'},
-	"nesim;":                   {'\u2242', '\u0338'},
-	"ngE;":                     {'\u2267', '\u0338'},
-	"ngeqq;":                   {'\u2267', '\u0338'},
-	"ngeqslant;":               {'\u2A7E', '\u0338'},
-	"nges;":                    {'\u2A7E', '\u0338'},
-	"nlE;":                     {'\u2266', '\u0338'},
-	"nleqq;":                   {'\u2266', '\u0338'},
-	"nleqslant;":               {'\u2A7D', '\u0338'},
-	"nles;":                    {'\u2A7D', '\u0338'},
-	"notinE;":                  {'\u22F9', '\u0338'},
-	"notindot;":                {'\u22F5', '\u0338'},
-	"nparsl;":                  {'\u2AFD', '\u20E5'},
-	"npart;":                   {'\u2202', '\u0338'},
-	"npre;":                    {'\u2AAF', '\u0338'},
-	"npreceq;":                 {'\u2AAF', '\u0338'},
-	"nrarrc;":                  {'\u2933', '\u0338'},
-	"nrarrw;":                  {'\u219D', '\u0338'},
-	"nsce;":                    {'\u2AB0', '\u0338'},
-	"nsubE;":                   {'\u2AC5', '\u0338'},
-	"nsubset;":                 {'\u2282', '\u20D2'},
-	"nsubseteqq;":              {'\u2AC5', '\u0338'},
-	"nsucceq;":                 {'\u2AB0', '\u0338'},
-	"nsupE;":                   {'\u2AC6', '\u0338'},
-	"nsupset;":                 {'\u2283', '\u20D2'},
-	"nsupseteqq;":              {'\u2AC6', '\u0338'},
-	"nvap;":                    {'\u224D', '\u20D2'},
-	"nvge;":                    {'\u2265', '\u20D2'},
-	"nvgt;":                    {'\u003E', '\u20D2'},
-	"nvle;":                    {'\u2264', '\u20D2'},
-	"nvlt;":                    {'\u003C', '\u20D2'},
-	"nvltrie;":                 {'\u22B4', '\u20D2'},
-	"nvrtrie;":                 {'\u22B5', '\u20D2'},
-	"nvsim;":                   {'\u223C', '\u20D2'},
-	"race;":                    {'\u223D', '\u0331'},
-	"smtes;":                   {'\u2AAC', '\uFE00'},
-	"sqcaps;":                  {'\u2293', '\uFE00'},
-	"sqcups;":                  {'\u2294', '\uFE00'},
-	"varsubsetneq;":            {'\u228A', '\uFE00'},
-	"varsubsetneqq;":           {'\u2ACB', '\uFE00'},
-	"varsupsetneq;":            {'\u228B', '\uFE00'},
-	"varsupsetneqq;":           {'\u2ACC', '\uFE00'},
-	"vnsub;":                   {'\u2282', '\u20D2'},
-	"vnsup;":                   {'\u2283', '\u20D2'},
-	"vsubnE;":                  {'\u2ACB', '\uFE00'},
-	"vsubne;":                  {'\u228A', '\uFE00'},
-	"vsupnE;":                  {'\u2ACC', '\uFE00'},
-	"vsupne;":                  {'\u228B', '\uFE00'},
-}
diff --git a/src/pkg/exp/html/entity_test.go b/src/pkg/exp/html/entity_test.go
deleted file mode 100644
index b53f866..0000000
--- a/src/pkg/exp/html/entity_test.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-import (
-	"testing"
-	"unicode/utf8"
-)
-
-func TestEntityLength(t *testing.T) {
-	// We verify that the length of UTF-8 encoding of each value is <= 1 + len(key).
-	// The +1 comes from the leading "&". This property implies that the length of
-	// unescaped text is <= the length of escaped text.
-	for k, v := range entity {
-		if 1+len(k) < utf8.RuneLen(v) {
-			t.Error("escaped entity &" + k + " is shorter than its UTF-8 encoding " + string(v))
-		}
-		if len(k) > longestEntityWithoutSemicolon && k[len(k)-1] != ';' {
-			t.Errorf("entity name %s is %d characters, but longestEntityWithoutSemicolon=%d", k, len(k), longestEntityWithoutSemicolon)
-		}
-	}
-	for k, v := range entity2 {
-		if 1+len(k) < utf8.RuneLen(v[0])+utf8.RuneLen(v[1]) {
-			t.Error("escaped entity &" + k + " is shorter than its UTF-8 encoding " + string(v[0]) + string(v[1]))
-		}
-	}
-}
diff --git a/src/pkg/exp/html/escape.go b/src/pkg/exp/html/escape.go
deleted file mode 100644
index 8f62a8c..0000000
--- a/src/pkg/exp/html/escape.go
+++ /dev/null
@@ -1,253 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-import (
-	"bytes"
-	"strings"
-	"unicode/utf8"
-)
-
-// These replacements permit compatibility with old numeric entities that 
-// assumed Windows-1252 encoding.
-// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#consume-a-character-reference
-var replacementTable = [...]rune{
-	'\u20AC', // First entry is what 0x80 should be replaced with.
-	'\u0081',
-	'\u201A',
-	'\u0192',
-	'\u201E',
-	'\u2026',
-	'\u2020',
-	'\u2021',
-	'\u02C6',
-	'\u2030',
-	'\u0160',
-	'\u2039',
-	'\u0152',
-	'\u008D',
-	'\u017D',
-	'\u008F',
-	'\u0090',
-	'\u2018',
-	'\u2019',
-	'\u201C',
-	'\u201D',
-	'\u2022',
-	'\u2013',
-	'\u2014',
-	'\u02DC',
-	'\u2122',
-	'\u0161',
-	'\u203A',
-	'\u0153',
-	'\u009D',
-	'\u017E',
-	'\u0178', // Last entry is 0x9F.
-	// 0x00->'\uFFFD' is handled programmatically. 
-	// 0x0D->'\u000D' is a no-op.
-}
-
-// unescapeEntity reads an entity like "&lt;" from b[src:] and writes the
-// corresponding "<" to b[dst:], returning the incremented dst and src cursors.
-// Precondition: b[src] == '&' && dst <= src.
-// attribute should be true if parsing an attribute value.
-func unescapeEntity(b []byte, dst, src int, attribute bool) (dst1, src1 int) {
-	// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#consume-a-character-reference
-
-	// i starts at 1 because we already know that s[0] == '&'.
-	i, s := 1, b[src:]
-
-	if len(s) <= 1 {
-		b[dst] = b[src]
-		return dst + 1, src + 1
-	}
-
-	if s[i] == '#' {
-		if len(s) <= 3 { // We need to have at least "&#.".
-			b[dst] = b[src]
-			return dst + 1, src + 1
-		}
-		i++
-		c := s[i]
-		hex := false
-		if c == 'x' || c == 'X' {
-			hex = true
-			i++
-		}
-
-		x := '\x00'
-		for i < len(s) {
-			c = s[i]
-			i++
-			if hex {
-				if '0' <= c && c <= '9' {
-					x = 16*x + rune(c) - '0'
-					continue
-				} else if 'a' <= c && c <= 'f' {
-					x = 16*x + rune(c) - 'a' + 10
-					continue
-				} else if 'A' <= c && c <= 'F' {
-					x = 16*x + rune(c) - 'A' + 10
-					continue
-				}
-			} else if '0' <= c && c <= '9' {
-				x = 10*x + rune(c) - '0'
-				continue
-			}
-			if c != ';' {
-				i--
-			}
-			break
-		}
-
-		if i <= 3 { // No characters matched.
-			b[dst] = b[src]
-			return dst + 1, src + 1
-		}
-
-		if 0x80 <= x && x <= 0x9F {
-			// Replace characters from Windows-1252 with UTF-8 equivalents.
-			x = replacementTable[x-0x80]
-		} else if x == 0 || (0xD800 <= x && x <= 0xDFFF) || x > 0x10FFFF {
-			// Replace invalid characters with the replacement character.
-			x = '\uFFFD'
-		}
-
-		return dst + utf8.EncodeRune(b[dst:], x), src + i
-	}
-
-	// Consume the maximum number of characters possible, with the
-	// consumed characters matching one of the named references.
-
-	for i < len(s) {
-		c := s[i]
-		i++
-		// Lower-cased characters are more common in entities, so we check for them first.
-		if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9' {
-			continue
-		}
-		if c != ';' {
-			i--
-		}
-		break
-	}
-
-	entityName := string(s[1:i])
-	if entityName == "" {
-		// No-op.
-	} else if attribute && entityName[len(entityName)-1] != ';' && len(s) > i && s[i] == '=' {
-		// No-op.
-	} else if x := entity[entityName]; x != 0 {
-		return dst + utf8.EncodeRune(b[dst:], x), src + i
-	} else if x := entity2[entityName]; x[0] != 0 {
-		dst1 := dst + utf8.EncodeRune(b[dst:], x[0])
-		return dst1 + utf8.EncodeRune(b[dst1:], x[1]), src + i
-	} else if !attribute {
-		maxLen := len(entityName) - 1
-		if maxLen > longestEntityWithoutSemicolon {
-			maxLen = longestEntityWithoutSemicolon
-		}
-		for j := maxLen; j > 1; j-- {
-			if x := entity[entityName[:j]]; x != 0 {
-				return dst + utf8.EncodeRune(b[dst:], x), src + j + 1
-			}
-		}
-	}
-
-	dst1, src1 = dst+i, src+i
-	copy(b[dst:dst1], b[src:src1])
-	return dst1, src1
-}
-
-// unescape unescapes b's entities in-place, so that "a&lt;b" becomes "a<b".
-func unescape(b []byte) []byte {
-	for i, c := range b {
-		if c == '&' {
-			dst, src := unescapeEntity(b, i, i, false)
-			for src < len(b) {
-				c := b[src]
-				if c == '&' {
-					dst, src = unescapeEntity(b, dst, src, false)
-				} else {
-					b[dst] = c
-					dst, src = dst+1, src+1
-				}
-			}
-			return b[0:dst]
-		}
-	}
-	return b
-}
-
-// lower lower-cases the A-Z bytes in b in-place, so that "aBc" becomes "abc".
-func lower(b []byte) []byte {
-	for i, c := range b {
-		if 'A' <= c && c <= 'Z' {
-			b[i] = c + 'a' - 'A'
-		}
-	}
-	return b
-}
-
-const escapedChars = `&'<>"`
-
-func escape(w writer, s string) error {
-	i := strings.IndexAny(s, escapedChars)
-	for i != -1 {
-		if _, err := w.WriteString(s[:i]); err != nil {
-			return err
-		}
-		var esc string
-		switch s[i] {
-		case '&':
-			esc = "&amp;"
-		case '\'':
-			esc = "&apos;"
-		case '<':
-			esc = "&lt;"
-		case '>':
-			esc = "&gt;"
-		case '"':
-			esc = "&quot;"
-		default:
-			panic("unrecognized escape character")
-		}
-		s = s[i+1:]
-		if _, err := w.WriteString(esc); err != nil {
-			return err
-		}
-		i = strings.IndexAny(s, escapedChars)
-	}
-	_, err := w.WriteString(s)
-	return err
-}
-
-// EscapeString escapes special characters like "<" to become "&lt;". It
-// escapes only five such characters: amp, apos, lt, gt and quot.
-// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't
-// always true.
-func EscapeString(s string) string {
-	if strings.IndexAny(s, escapedChars) == -1 {
-		return s
-	}
-	var buf bytes.Buffer
-	escape(&buf, s)
-	return buf.String()
-}
-
-// UnescapeString unescapes entities like "&lt;" to become "<". It unescapes a
-// larger range of entities than EscapeString escapes. For example, "&aacute;"
-// unescapes to "á", as does "&#225;" and "&xE1;".
-// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't
-// always true.
-func UnescapeString(s string) string {
-	for _, c := range s {
-		if c == '&' {
-			return string(unescape([]byte(s)))
-		}
-	}
-	return s
-}
diff --git a/src/pkg/exp/html/foreign.go b/src/pkg/exp/html/foreign.go
deleted file mode 100644
index 3ba81ce..0000000
--- a/src/pkg/exp/html/foreign.go
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-import (
-	"strings"
-)
-
-func adjustForeignAttributes(aa []Attribute) {
-	for i, a := range aa {
-		if a.Key == "" || a.Key[0] != 'x' {
-			continue
-		}
-		switch a.Key {
-		case "xlink:actuate", "xlink:arcrole", "xlink:href", "xlink:role", "xlink:show",
-			"xlink:title", "xlink:type", "xml:base", "xml:lang", "xml:space", "xmlns:xlink":
-			j := strings.Index(a.Key, ":")
-			aa[i].Namespace = a.Key[:j]
-			aa[i].Key = a.Key[j+1:]
-		}
-	}
-}
-
-func htmlIntegrationPoint(n *Node) bool {
-	if n.Type != ElementNode {
-		return false
-	}
-	switch n.Namespace {
-	case "math":
-		// TODO: annotation-xml elements whose start tags have "text/html" or
-		// "application/xhtml+xml" encodings.
-	case "svg":
-		switch n.Data {
-		case "desc", "foreignObject", "title":
-			return true
-		}
-	}
-	return false
-}
-
-// Section 12.2.5.5.
-var breakout = map[string]bool{
-	"b":          true,
-	"big":        true,
-	"blockquote": true,
-	"body":       true,
-	"br":         true,
-	"center":     true,
-	"code":       true,
-	"dd":         true,
-	"div":        true,
-	"dl":         true,
-	"dt":         true,
-	"em":         true,
-	"embed":      true,
-	"font":       true,
-	"h1":         true,
-	"h2":         true,
-	"h3":         true,
-	"h4":         true,
-	"h5":         true,
-	"h6":         true,
-	"head":       true,
-	"hr":         true,
-	"i":          true,
-	"img":        true,
-	"li":         true,
-	"listing":    true,
-	"menu":       true,
-	"meta":       true,
-	"nobr":       true,
-	"ol":         true,
-	"p":          true,
-	"pre":        true,
-	"ruby":       true,
-	"s":          true,
-	"small":      true,
-	"span":       true,
-	"strong":     true,
-	"strike":     true,
-	"sub":        true,
-	"sup":        true,
-	"table":      true,
-	"tt":         true,
-	"u":          true,
-	"ul":         true,
-	"var":        true,
-}
-
-// Section 12.2.5.5.
-var svgTagNameAdjustments = map[string]string{
-	"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":       "foreignObject",
-	"glyphref":            "glyphRef",
-	"lineargradient":      "linearGradient",
-	"radialgradient":      "radialGradient",
-	"textpath":            "textPath",
-}
-
-// TODO: add look-up tables for MathML and SVG attribute adjustments.
diff --git a/src/pkg/exp/html/node.go b/src/pkg/exp/html/node.go
deleted file mode 100644
index c105a4e..0000000
--- a/src/pkg/exp/html/node.go
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-// A NodeType is the type of a Node.
-type NodeType int
-
-const (
-	ErrorNode NodeType = iota
-	TextNode
-	DocumentNode
-	ElementNode
-	CommentNode
-	DoctypeNode
-	scopeMarkerNode
-)
-
-// Section 12.2.3.3 says "scope markers are inserted when entering applet
-// elements, buttons, object elements, marquees, table cells, and table
-// captions, and are used to prevent formatting from 'leaking'".
-var scopeMarker = Node{Type: scopeMarkerNode}
-
-// A Node consists of a NodeType and some Data (tag name for element nodes,
-// content for text) and are part of a tree of Nodes. Element nodes may also
-// have a Namespace and contain a slice of Attributes. Data is unescaped, so
-// that it looks like "a<b" rather than "a&lt;b".
-//
-// An empty Namespace implies a "http://www.w3.org/1999/xhtml" namespace.
-// Similarly, "math" is short for "http://www.w3.org/1998/Math/MathML", and
-// "svg" is short for "http://www.w3.org/2000/svg".
-type Node struct {
-	Parent    *Node
-	Child     []*Node
-	Type      NodeType
-	Data      string
-	Namespace string
-	Attr      []Attribute
-}
-
-// Add adds a node as a child of n.
-// It will panic if the child's parent is not nil.
-func (n *Node) Add(child *Node) {
-	if child.Parent != nil {
-		panic("html: Node.Add called for a child Node that already has a parent")
-	}
-	child.Parent = n
-	n.Child = append(n.Child, child)
-}
-
-// Remove removes a node as a child of n.
-// It will panic if the child's parent is not n.
-func (n *Node) Remove(child *Node) {
-	if child.Parent == n {
-		child.Parent = nil
-		for i, m := range n.Child {
-			if m == child {
-				copy(n.Child[i:], n.Child[i+1:])
-				j := len(n.Child) - 1
-				n.Child[j] = nil
-				n.Child = n.Child[:j]
-				return
-			}
-		}
-	}
-	panic("html: Node.Remove called for a non-child Node")
-}
-
-// reparentChildren reparents all of src's child nodes to dst.
-func reparentChildren(dst, src *Node) {
-	for _, n := range src.Child {
-		if n.Parent != src {
-			panic("html: nodes have an inconsistent parent/child relationship")
-		}
-		n.Parent = dst
-	}
-	dst.Child = append(dst.Child, src.Child...)
-	src.Child = nil
-}
-
-// clone returns a new node with the same type, data and attributes.
-// The clone has no parent and no children.
-func (n *Node) clone() *Node {
-	m := &Node{
-		Type: n.Type,
-		Data: n.Data,
-		Attr: make([]Attribute, len(n.Attr)),
-	}
-	copy(m.Attr, n.Attr)
-	return m
-}
-
-// nodeStack is a stack of nodes.
-type nodeStack []*Node
-
-// pop pops the stack. It will panic if s is empty.
-func (s *nodeStack) pop() *Node {
-	i := len(*s)
-	n := (*s)[i-1]
-	*s = (*s)[:i-1]
-	return n
-}
-
-// top returns the most recently pushed node, or nil if s is empty.
-func (s *nodeStack) top() *Node {
-	if i := len(*s); i > 0 {
-		return (*s)[i-1]
-	}
-	return nil
-}
-
-// index returns the index of the top-most occurrence of n in the stack, or -1
-// if n is not present.
-func (s *nodeStack) index(n *Node) int {
-	for i := len(*s) - 1; i >= 0; i-- {
-		if (*s)[i] == n {
-			return i
-		}
-	}
-	return -1
-}
-
-// insert inserts a node at the given index.
-func (s *nodeStack) insert(i int, n *Node) {
-	(*s) = append(*s, nil)
-	copy((*s)[i+1:], (*s)[i:])
-	(*s)[i] = n
-}
-
-// remove removes a node from the stack. It is a no-op if n is not present.
-func (s *nodeStack) remove(n *Node) {
-	i := s.index(n)
-	if i == -1 {
-		return
-	}
-	copy((*s)[i:], (*s)[i+1:])
-	j := len(*s) - 1
-	(*s)[j] = nil
-	*s = (*s)[:j]
-}
-
-// TODO(nigeltao): forTag no longer used. Should it be deleted?
-
-// forTag returns the top-most element node with the given tag.
-func (s *nodeStack) forTag(tag string) *Node {
-	for i := len(*s) - 1; i >= 0; i-- {
-		n := (*s)[i]
-		if n.Type == ElementNode && n.Data == tag {
-			return n
-		}
-	}
-	return nil
-}
diff --git a/src/pkg/exp/html/parse.go b/src/pkg/exp/html/parse.go
deleted file mode 100644
index 04f4ae7..0000000
--- a/src/pkg/exp/html/parse.go
+++ /dev/null
@@ -1,1869 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-import (
-	"io"
-	"strings"
-)
-
-// A parser implements the HTML5 parsing algorithm:
-// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#tree-construction
-type parser struct {
-	// tokenizer provides the tokens for the parser.
-	tokenizer *Tokenizer
-	// tok is the most recently read token.
-	tok Token
-	// Self-closing tags like <hr/> are re-interpreted as a two-token sequence:
-	// <hr> followed by </hr>. hasSelfClosingToken is true if we have just read
-	// the synthetic start tag and the next one due is the matching end tag.
-	hasSelfClosingToken bool
-	// doc is the document root element.
-	doc *Node
-	// The stack of open elements (section 12.2.3.2) and active formatting
-	// elements (section 12.2.3.3).
-	oe, afe nodeStack
-	// Element pointers (section 12.2.3.4).
-	head, form *Node
-	// Other parsing state flags (section 12.2.3.5).
-	scripting, framesetOK bool
-	// im is the current insertion mode.
-	im insertionMode
-	// originalIM is the insertion mode to go back to after completing a text
-	// or inTableText insertion mode.
-	originalIM insertionMode
-	// fosterParenting is whether new elements should be inserted according to
-	// the foster parenting rules (section 12.2.5.3).
-	fosterParenting bool
-	// quirks is whether the parser is operating in "quirks mode."
-	quirks bool
-	// context is the context element when parsing an HTML fragment
-	// (section 12.4).
-	context *Node
-}
-
-func (p *parser) top() *Node {
-	if n := p.oe.top(); n != nil {
-		return n
-	}
-	return p.doc
-}
-
-// Stop tags for use in popUntil. These come from section 12.2.3.2.
-var (
-	defaultScopeStopTags = map[string][]string{
-		"":     {"applet", "caption", "html", "table", "td", "th", "marquee", "object"},
-		"math": {"annotation-xml", "mi", "mn", "mo", "ms", "mtext"},
-		"svg":  {"desc", "foreignObject", "title"},
-	}
-)
-
-type scope int
-
-const (
-	defaultScope scope = iota
-	listItemScope
-	buttonScope
-	tableScope
-	tableRowScope
-)
-
-// popUntil pops the stack of open elements at the highest element whose tag
-// is in matchTags, provided there is no higher element in the scope's stop
-// tags (as defined in section 12.2.3.2). It returns whether or not there was
-// such an element. If there was not, popUntil leaves the stack unchanged.
-//
-// For example, the set of stop tags for table scope is: "html", "table". If
-// the stack was:
-// ["html", "body", "font", "table", "b", "i", "u"]
-// then popUntil(tableScope, "font") would return false, but
-// popUntil(tableScope, "i") would return true and the stack would become:
-// ["html", "body", "font", "table", "b"]
-//
-// If an element's tag is in both the stop tags and matchTags, then the stack
-// will be popped and the function returns true (provided, of course, there was
-// no higher element in the stack that was also in the stop tags). For example,
-// popUntil(tableScope, "table") returns true and leaves:
-// ["html", "body", "font"]
-func (p *parser) popUntil(s scope, matchTags ...string) bool {
-	if i := p.indexOfElementInScope(s, matchTags...); i != -1 {
-		p.oe = p.oe[:i]
-		return true
-	}
-	return false
-}
-
-// indexOfElementInScope returns the index in p.oe of the highest element whose
-// tag is in matchTags that is in scope. If no matching element is in scope, it
-// returns -1.
-func (p *parser) indexOfElementInScope(s scope, matchTags ...string) int {
-	for i := len(p.oe) - 1; i >= 0; i-- {
-		tag := p.oe[i].Data
-		if p.oe[i].Namespace == "" {
-			for _, t := range matchTags {
-				if t == tag {
-					return i
-				}
-			}
-			switch s {
-			case defaultScope:
-				// No-op.
-			case listItemScope:
-				if tag == "ol" || tag == "ul" {
-					return -1
-				}
-			case buttonScope:
-				if tag == "button" {
-					return -1
-				}
-			case tableScope:
-				if tag == "html" || tag == "table" {
-					return -1
-				}
-			default:
-				panic("unreachable")
-			}
-		}
-		switch s {
-		case defaultScope, listItemScope, buttonScope:
-			for _, t := range defaultScopeStopTags[p.oe[i].Namespace] {
-				if t == tag {
-					return -1
-				}
-			}
-		}
-	}
-	return -1
-}
-
-// elementInScope is like popUntil, except that it doesn't modify the stack of
-// open elements.
-func (p *parser) elementInScope(s scope, matchTags ...string) bool {
-	return p.indexOfElementInScope(s, matchTags...) != -1
-}
-
-// clearStackToContext pops elements off the stack of open elements until a
-// scope-defined element is found.
-func (p *parser) clearStackToContext(s scope) {
-	for i := len(p.oe) - 1; i >= 0; i-- {
-		tag := p.oe[i].Data
-		switch s {
-		case tableScope:
-			if tag == "html" || tag == "table" {
-				p.oe = p.oe[:i+1]
-				return
-			}
-		case tableRowScope:
-			if tag == "html" || tag == "tr" {
-				p.oe = p.oe[:i+1]
-				return
-			}
-		default:
-			panic("unreachable")
-		}
-	}
-}
-
-// addChild adds a child node n to the top element, and pushes n onto the stack
-// of open elements if it is an element node.
-func (p *parser) addChild(n *Node) {
-	if p.fosterParenting {
-		p.fosterParent(n)
-	} else {
-		p.top().Add(n)
-	}
-
-	if n.Type == ElementNode {
-		p.oe = append(p.oe, n)
-	}
-}
-
-// fosterParent adds a child node according to the foster parenting rules.
-// Section 12.2.5.3, "foster parenting".
-func (p *parser) fosterParent(n *Node) {
-	p.fosterParenting = false
-	var table, parent *Node
-	var i int
-	for i = len(p.oe) - 1; i >= 0; i-- {
-		if p.oe[i].Data == "table" {
-			table = p.oe[i]
-			break
-		}
-	}
-
-	if table == nil {
-		// The foster parent is the html element.
-		parent = p.oe[0]
-	} else {
-		parent = table.Parent
-	}
-	if parent == nil {
-		parent = p.oe[i-1]
-	}
-
-	var child *Node
-	for i, child = range parent.Child {
-		if child == table {
-			break
-		}
-	}
-
-	if i > 0 && parent.Child[i-1].Type == TextNode && n.Type == TextNode {
-		parent.Child[i-1].Data += n.Data
-		return
-	}
-
-	if i == len(parent.Child) {
-		parent.Add(n)
-	} else {
-		// Insert n into parent.Child at index i.
-		parent.Child = append(parent.Child[:i+1], parent.Child[i:]...)
-		parent.Child[i] = n
-		n.Parent = parent
-	}
-}
-
-// addText adds text to the preceding node if it is a text node, or else it
-// calls addChild with a new text node.
-func (p *parser) addText(text string) {
-	// TODO: distinguish whitespace text from others.
-	t := p.top()
-	if i := len(t.Child); i > 0 && t.Child[i-1].Type == TextNode {
-		t.Child[i-1].Data += text
-		return
-	}
-	p.addChild(&Node{
-		Type: TextNode,
-		Data: text,
-	})
-}
-
-// addElement calls addChild with an element node.
-func (p *parser) addElement(tag string, attr []Attribute) {
-	p.addChild(&Node{
-		Type: ElementNode,
-		Data: tag,
-		Attr: attr,
-	})
-}
-
-// Section 12.2.3.3.
-func (p *parser) addFormattingElement(tag string, attr []Attribute) {
-	p.addElement(tag, attr)
-	p.afe = append(p.afe, p.top())
-	// TODO.
-}
-
-// Section 12.2.3.3.
-func (p *parser) clearActiveFormattingElements() {
-	for {
-		n := p.afe.pop()
-		if len(p.afe) == 0 || n.Type == scopeMarkerNode {
-			return
-		}
-	}
-}
-
-// Section 12.2.3.3.
-func (p *parser) reconstructActiveFormattingElements() {
-	n := p.afe.top()
-	if n == nil {
-		return
-	}
-	if n.Type == scopeMarkerNode || p.oe.index(n) != -1 {
-		return
-	}
-	i := len(p.afe) - 1
-	for n.Type != scopeMarkerNode && p.oe.index(n) == -1 {
-		if i == 0 {
-			i = -1
-			break
-		}
-		i--
-		n = p.afe[i]
-	}
-	for {
-		i++
-		clone := p.afe[i].clone()
-		p.addChild(clone)
-		p.afe[i] = clone
-		if i == len(p.afe)-1 {
-			break
-		}
-	}
-}
-
-// read reads the next token. This is usually from the tokenizer, but it may
-// be the synthesized end tag implied by a self-closing tag.
-func (p *parser) read() error {
-	if p.hasSelfClosingToken {
-		p.hasSelfClosingToken = false
-		p.tok.Type = EndTagToken
-		p.tok.Attr = nil
-		return nil
-	}
-	p.tokenizer.Next()
-	p.tok = p.tokenizer.Token()
-	switch p.tok.Type {
-	case ErrorToken:
-		return p.tokenizer.Err()
-	case SelfClosingTagToken:
-		p.hasSelfClosingToken = true
-		p.tok.Type = StartTagToken
-	}
-	return nil
-}
-
-// Section 12.2.4.
-func (p *parser) acknowledgeSelfClosingTag() {
-	p.hasSelfClosingToken = false
-}
-
-// An insertion mode (section 12.2.3.1) is the state transition function from
-// a particular state in the HTML5 parser's state machine. It updates the
-// parser's fields depending on parser.tok (where ErrorToken means EOF).
-// It returns whether the token was consumed.
-type insertionMode func(*parser) bool
-
-// setOriginalIM sets the insertion mode to return to after completing a text or
-// inTableText insertion mode.
-// Section 12.2.3.1, "using the rules for".
-func (p *parser) setOriginalIM() {
-	if p.originalIM != nil {
-		panic("html: bad parser state: originalIM was set twice")
-	}
-	p.originalIM = p.im
-}
-
-// Section 12.2.3.1, "reset the insertion mode".
-func (p *parser) resetInsertionMode() {
-	for i := len(p.oe) - 1; i >= 0; i-- {
-		n := p.oe[i]
-		if i == 0 && p.context != nil {
-			n = p.context
-		}
-
-		switch n.Data {
-		case "select":
-			p.im = inSelectIM
-		case "td", "th":
-			p.im = inCellIM
-		case "tr":
-			p.im = inRowIM
-		case "tbody", "thead", "tfoot":
-			p.im = inTableBodyIM
-		case "caption":
-			p.im = inCaptionIM
-		case "colgroup":
-			p.im = inColumnGroupIM
-		case "table":
-			p.im = inTableIM
-		case "head":
-			p.im = inBodyIM
-		case "body":
-			p.im = inBodyIM
-		case "frameset":
-			p.im = inFramesetIM
-		case "html":
-			p.im = beforeHeadIM
-		default:
-			continue
-		}
-		return
-	}
-	p.im = inBodyIM
-}
-
-const whitespace = " \t\r\n\f"
-
-// Section 12.2.5.4.1.
-func initialIM(p *parser) bool {
-	switch p.tok.Type {
-	case TextToken:
-		p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace)
-		if len(p.tok.Data) == 0 {
-			// It was all whitespace, so ignore it.
-			return true
-		}
-	case CommentToken:
-		p.doc.Add(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-		return true
-	case DoctypeToken:
-		n, quirks := parseDoctype(p.tok.Data)
-		p.doc.Add(n)
-		p.quirks = quirks
-		p.im = beforeHTMLIM
-		return true
-	}
-	p.quirks = true
-	p.im = beforeHTMLIM
-	return false
-}
-
-// Section 12.2.5.4.2.
-func beforeHTMLIM(p *parser) bool {
-	switch p.tok.Type {
-	case TextToken:
-		p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace)
-		if len(p.tok.Data) == 0 {
-			// It was all whitespace, so ignore it.
-			return true
-		}
-	case StartTagToken:
-		if p.tok.Data == "html" {
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.im = beforeHeadIM
-			return true
-		}
-	case EndTagToken:
-		switch p.tok.Data {
-		case "head", "body", "html", "br":
-			// Drop down to creating an implied <html> tag.
-		default:
-			// Ignore the token.
-			return true
-		}
-	case CommentToken:
-		p.doc.Add(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-		return true
-	}
-	// Create an implied <html> tag.
-	p.addElement("html", nil)
-	p.im = beforeHeadIM
-	return false
-}
-
-// Section 12.2.5.4.3.
-func beforeHeadIM(p *parser) bool {
-	var (
-		add     bool
-		attr    []Attribute
-		implied bool
-	)
-	switch p.tok.Type {
-	case ErrorToken:
-		implied = true
-	case TextToken:
-		p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace)
-		if len(p.tok.Data) == 0 {
-			// It was all whitespace, so ignore it.
-			return true
-		}
-		implied = true
-	case StartTagToken:
-		switch p.tok.Data {
-		case "head":
-			add = true
-			attr = p.tok.Attr
-		case "html":
-			return inBodyIM(p)
-		default:
-			implied = true
-		}
-	case EndTagToken:
-		switch p.tok.Data {
-		case "head", "body", "html", "br":
-			implied = true
-		default:
-			// Ignore the token.
-		}
-	case CommentToken:
-		p.addChild(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-		return true
-	}
-	if add || implied {
-		p.addElement("head", attr)
-		p.head = p.top()
-	}
-	p.im = inHeadIM
-	return !implied
-}
-
-// Section 12.2.5.4.4.
-func inHeadIM(p *parser) bool {
-	var (
-		pop     bool
-		implied bool
-	)
-	switch p.tok.Type {
-	case ErrorToken:
-		implied = true
-	case TextToken:
-		s := strings.TrimLeft(p.tok.Data, whitespace)
-		if len(s) < len(p.tok.Data) {
-			// Add the initial whitespace to the current node.
-			p.addText(p.tok.Data[:len(p.tok.Data)-len(s)])
-			if s == "" {
-				return true
-			}
-			p.tok.Data = s
-		}
-		implied = true
-	case StartTagToken:
-		switch p.tok.Data {
-		case "html":
-			return inBodyIM(p)
-		case "base", "basefont", "bgsound", "command", "link", "meta":
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.oe.pop()
-			p.acknowledgeSelfClosingTag()
-		case "script", "title", "noscript", "noframes", "style":
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.setOriginalIM()
-			p.im = textIM
-			return true
-		case "head":
-			// Ignore the token.
-			return true
-		default:
-			implied = true
-		}
-	case EndTagToken:
-		switch p.tok.Data {
-		case "head":
-			pop = true
-		case "body", "html", "br":
-			implied = true
-		default:
-			// Ignore the token.
-			return true
-		}
-	case CommentToken:
-		p.addChild(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-		return true
-	}
-	if pop || implied {
-		n := p.oe.pop()
-		if n.Data != "head" {
-			panic("html: bad parser state: <head> element not found, in the in-head insertion mode")
-		}
-		p.im = afterHeadIM
-		return !implied
-	}
-	return true
-}
-
-// Section 12.2.5.4.6.
-func afterHeadIM(p *parser) bool {
-	var (
-		add        bool
-		attr       []Attribute
-		framesetOK bool
-		implied    bool
-	)
-	switch p.tok.Type {
-	case ErrorToken:
-		implied = true
-		framesetOK = true
-	case TextToken:
-		s := strings.TrimLeft(p.tok.Data, whitespace)
-		if len(s) < len(p.tok.Data) {
-			// Add the initial whitespace to the current node.
-			p.addText(p.tok.Data[:len(p.tok.Data)-len(s)])
-			if s == "" {
-				return true
-			}
-			p.tok.Data = s
-		}
-		implied = true
-		framesetOK = true
-	case StartTagToken:
-		switch p.tok.Data {
-		case "html":
-			// TODO.
-		case "body":
-			add = true
-			attr = p.tok.Attr
-			framesetOK = false
-		case "frameset":
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.im = inFramesetIM
-			return true
-		case "base", "basefont", "bgsound", "link", "meta", "noframes", "script", "style", "title":
-			p.oe = append(p.oe, p.head)
-			defer p.oe.pop()
-			return inHeadIM(p)
-		case "head":
-			// Ignore the token.
-			return true
-		default:
-			implied = true
-			framesetOK = true
-		}
-	case EndTagToken:
-		switch p.tok.Data {
-		case "body", "html", "br":
-			implied = true
-			framesetOK = true
-		default:
-			// Ignore the token.
-			return true
-		}
-	case CommentToken:
-		p.addChild(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-		return true
-	}
-	if add || implied {
-		p.addElement("body", attr)
-		p.framesetOK = framesetOK
-	}
-	p.im = inBodyIM
-	return !implied
-}
-
-// copyAttributes copies attributes of src not found on dst to dst.
-func copyAttributes(dst *Node, src Token) {
-	if len(src.Attr) == 0 {
-		return
-	}
-	attr := map[string]string{}
-	for _, a := range dst.Attr {
-		attr[a.Key] = a.Val
-	}
-	for _, a := range src.Attr {
-		if _, ok := attr[a.Key]; !ok {
-			dst.Attr = append(dst.Attr, a)
-			attr[a.Key] = a.Val
-		}
-	}
-}
-
-// Section 12.2.5.4.7.
-func inBodyIM(p *parser) bool {
-	switch p.tok.Type {
-	case TextToken:
-		switch n := p.oe.top(); n.Data {
-		case "pre", "listing", "textarea":
-			if len(n.Child) == 0 {
-				// Ignore a newline at the start of a <pre> block.
-				d := p.tok.Data
-				if d != "" && d[0] == '\r' {
-					d = d[1:]
-				}
-				if d != "" && d[0] == '\n' {
-					d = d[1:]
-				}
-				if d == "" {
-					return true
-				}
-				p.tok.Data = d
-			}
-		}
-		p.reconstructActiveFormattingElements()
-		p.addText(p.tok.Data)
-		p.framesetOK = false
-	case StartTagToken:
-		switch p.tok.Data {
-		case "html":
-			copyAttributes(p.oe[0], p.tok)
-		case "address", "article", "aside", "blockquote", "center", "details", "dir", "div", "dl", "fieldset", "figcaption", "figure", "footer", "header", "hgroup", "menu", "nav", "ol", "p", "section", "summary", "ul":
-			p.popUntil(buttonScope, "p")
-			p.addElement(p.tok.Data, p.tok.Attr)
-		case "h1", "h2", "h3", "h4", "h5", "h6":
-			p.popUntil(buttonScope, "p")
-			switch n := p.top(); n.Data {
-			case "h1", "h2", "h3", "h4", "h5", "h6":
-				p.oe.pop()
-			}
-			p.addElement(p.tok.Data, p.tok.Attr)
-		case "a":
-			for i := len(p.afe) - 1; i >= 0 && p.afe[i].Type != scopeMarkerNode; i-- {
-				if n := p.afe[i]; n.Type == ElementNode && n.Data == "a" {
-					p.inBodyEndTagFormatting("a")
-					p.oe.remove(n)
-					p.afe.remove(n)
-					break
-				}
-			}
-			p.reconstructActiveFormattingElements()
-			p.addFormattingElement(p.tok.Data, p.tok.Attr)
-		case "b", "big", "code", "em", "font", "i", "s", "small", "strike", "strong", "tt", "u":
-			p.reconstructActiveFormattingElements()
-			p.addFormattingElement(p.tok.Data, p.tok.Attr)
-		case "nobr":
-			p.reconstructActiveFormattingElements()
-			if p.elementInScope(defaultScope, "nobr") {
-				p.inBodyEndTagFormatting("nobr")
-				p.reconstructActiveFormattingElements()
-			}
-			p.addFormattingElement(p.tok.Data, p.tok.Attr)
-		case "applet", "marquee", "object":
-			p.reconstructActiveFormattingElements()
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.afe = append(p.afe, &scopeMarker)
-			p.framesetOK = false
-		case "area", "br", "embed", "img", "input", "keygen", "wbr":
-			p.reconstructActiveFormattingElements()
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.oe.pop()
-			p.acknowledgeSelfClosingTag()
-			p.framesetOK = false
-		case "table":
-			if !p.quirks {
-				p.popUntil(buttonScope, "p")
-			}
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.framesetOK = false
-			p.im = inTableIM
-			return true
-		case "hr":
-			p.popUntil(buttonScope, "p")
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.oe.pop()
-			p.acknowledgeSelfClosingTag()
-			p.framesetOK = false
-		case "select":
-			p.reconstructActiveFormattingElements()
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.framesetOK = false
-			p.im = inSelectIM
-			return true
-		case "form":
-			if p.form == nil {
-				p.popUntil(buttonScope, "p")
-				p.addElement(p.tok.Data, p.tok.Attr)
-				p.form = p.top()
-			}
-		case "li":
-			p.framesetOK = false
-			for i := len(p.oe) - 1; i >= 0; i-- {
-				node := p.oe[i]
-				switch node.Data {
-				case "li":
-					p.popUntil(listItemScope, "li")
-				case "address", "div", "p":
-					continue
-				default:
-					if !isSpecialElement(node) {
-						continue
-					}
-				}
-				break
-			}
-			p.popUntil(buttonScope, "p")
-			p.addElement(p.tok.Data, p.tok.Attr)
-		case "dd", "dt":
-			p.framesetOK = false
-			for i := len(p.oe) - 1; i >= 0; i-- {
-				node := p.oe[i]
-				switch node.Data {
-				case "dd", "dt":
-					p.oe = p.oe[:i]
-				case "address", "div", "p":
-					continue
-				default:
-					if !isSpecialElement(node) {
-						continue
-					}
-				}
-				break
-			}
-			p.popUntil(buttonScope, "p")
-			p.addElement(p.tok.Data, p.tok.Attr)
-		case "plaintext":
-			p.popUntil(buttonScope, "p")
-			p.addElement(p.tok.Data, p.tok.Attr)
-		case "button":
-			p.popUntil(defaultScope, "button")
-			p.reconstructActiveFormattingElements()
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.framesetOK = false
-		case "optgroup", "option":
-			if p.top().Data == "option" {
-				p.oe.pop()
-			}
-			p.reconstructActiveFormattingElements()
-			p.addElement(p.tok.Data, p.tok.Attr)
-		case "body":
-			if len(p.oe) >= 2 {
-				body := p.oe[1]
-				if body.Type == ElementNode && body.Data == "body" {
-					p.framesetOK = false
-					copyAttributes(body, p.tok)
-				}
-			}
-		case "frameset":
-			if !p.framesetOK || len(p.oe) < 2 || p.oe[1].Data != "body" {
-				// Ignore the token.
-				return true
-			}
-			body := p.oe[1]
-			if body.Parent != nil {
-				body.Parent.Remove(body)
-			}
-			p.oe = p.oe[:1]
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.im = inFramesetIM
-			return true
-		case "base", "basefont", "bgsound", "command", "link", "meta", "noframes", "script", "style", "title":
-			return inHeadIM(p)
-		case "image":
-			p.tok.Data = "img"
-			return false
-		case "isindex":
-			if p.form != nil {
-				// Ignore the token.
-				return true
-			}
-			action := ""
-			prompt := "This is a searchable index. Enter search keywords: "
-			attr := []Attribute{{Key: "name", Val: "isindex"}}
-			for _, a := range p.tok.Attr {
-				switch a.Key {
-				case "action":
-					action = a.Val
-				case "name":
-					// Ignore the attribute.
-				case "prompt":
-					prompt = a.Val
-				default:
-					attr = append(attr, a)
-				}
-			}
-			p.acknowledgeSelfClosingTag()
-			p.popUntil(buttonScope, "p")
-			p.addElement("form", nil)
-			p.form = p.top()
-			if action != "" {
-				p.form.Attr = []Attribute{{Key: "action", Val: action}}
-			}
-			p.addElement("hr", nil)
-			p.oe.pop()
-			p.addElement("label", nil)
-			p.addText(prompt)
-			p.addElement("input", attr)
-			p.oe.pop()
-			p.oe.pop()
-			p.addElement("hr", nil)
-			p.oe.pop()
-			p.oe.pop()
-			p.form = nil
-		case "xmp":
-			p.popUntil(buttonScope, "p")
-			p.reconstructActiveFormattingElements()
-			p.framesetOK = false
-			p.addElement(p.tok.Data, p.tok.Attr)
-		case "math", "svg":
-			p.reconstructActiveFormattingElements()
-			if p.tok.Data == "math" {
-				// TODO: adjust MathML attributes.
-			} else {
-				// TODO: adjust SVG attributes.
-			}
-			adjustForeignAttributes(p.tok.Attr)
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.top().Namespace = p.tok.Data
-			return true
-		case "caption", "col", "colgroup", "frame", "head", "tbody", "td", "tfoot", "th", "thead", "tr":
-			// Ignore the token.
-		default:
-			// TODO.
-			p.addElement(p.tok.Data, p.tok.Attr)
-		}
-	case EndTagToken:
-		switch p.tok.Data {
-		case "body":
-			// TODO: autoclose the stack of open elements.
-			p.im = afterBodyIM
-			return true
-		case "p":
-			if !p.elementInScope(buttonScope, "p") {
-				p.addElement("p", nil)
-			}
-			p.popUntil(buttonScope, "p")
-		case "a", "b", "big", "code", "em", "font", "i", "nobr", "s", "small", "strike", "strong", "tt", "u":
-			p.inBodyEndTagFormatting(p.tok.Data)
-		case "address", "article", "aside", "blockquote", "button", "center", "details", "dir", "div", "dl", "fieldset", "figcaption", "figure", "footer", "header", "hgroup", "listing", "menu", "nav", "ol", "pre", "section", "summary", "ul":
-			p.popUntil(defaultScope, p.tok.Data)
-		case "applet", "marquee", "object":
-			if p.popUntil(defaultScope, p.tok.Data) {
-				p.clearActiveFormattingElements()
-			}
-		case "br":
-			p.tok.Type = StartTagToken
-			return false
-		default:
-			p.inBodyEndTagOther(p.tok.Data)
-		}
-	case CommentToken:
-		p.addChild(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-	}
-
-	return true
-}
-
-func (p *parser) inBodyEndTagFormatting(tag string) {
-	// This is the "adoption agency" algorithm, described at
-	// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#adoptionAgency
-
-	// TODO: this is a fairly literal line-by-line translation of that algorithm.
-	// Once the code successfully parses the comprehensive test suite, we should
-	// refactor this code to be more idiomatic.
-
-	// Steps 1-3. The outer loop.
-	for i := 0; i < 8; i++ {
-		// Step 4. Find the formatting element.
-		var formattingElement *Node
-		for j := len(p.afe) - 1; j >= 0; j-- {
-			if p.afe[j].Type == scopeMarkerNode {
-				break
-			}
-			if p.afe[j].Data == tag {
-				formattingElement = p.afe[j]
-				break
-			}
-		}
-		if formattingElement == nil {
-			p.inBodyEndTagOther(tag)
-			return
-		}
-		feIndex := p.oe.index(formattingElement)
-		if feIndex == -1 {
-			p.afe.remove(formattingElement)
-			return
-		}
-		if !p.elementInScope(defaultScope, tag) {
-			// Ignore the tag.
-			return
-		}
-
-		// Steps 5-6. Find the furthest block.
-		var furthestBlock *Node
-		for _, e := range p.oe[feIndex:] {
-			if isSpecialElement(e) {
-				furthestBlock = e
-				break
-			}
-		}
-		if furthestBlock == nil {
-			e := p.oe.pop()
-			for e != formattingElement {
-				e = p.oe.pop()
-			}
-			p.afe.remove(e)
-			return
-		}
-
-		// Steps 7-8. Find the common ancestor and bookmark node.
-		commonAncestor := p.oe[feIndex-1]
-		bookmark := p.afe.index(formattingElement)
-
-		// Step 9. The inner loop. Find the lastNode to reparent.
-		lastNode := furthestBlock
-		node := furthestBlock
-		x := p.oe.index(node)
-		// Steps 9.1-9.3.
-		for j := 0; j < 3; j++ {
-			// Step 9.4.
-			x--
-			node = p.oe[x]
-			// Step 9.5.
-			if p.afe.index(node) == -1 {
-				p.oe.remove(node)
-				continue
-			}
-			// Step 9.6.
-			if node == formattingElement {
-				break
-			}
-			// Step 9.7.
-			clone := node.clone()
-			p.afe[p.afe.index(node)] = clone
-			p.oe[p.oe.index(node)] = clone
-			node = clone
-			// Step 9.8.
-			if lastNode == furthestBlock {
-				bookmark = p.afe.index(node) + 1
-			}
-			// Step 9.9.
-			if lastNode.Parent != nil {
-				lastNode.Parent.Remove(lastNode)
-			}
-			node.Add(lastNode)
-			// Step 9.10.
-			lastNode = node
-		}
-
-		// Step 10. Reparent lastNode to the common ancestor,
-		// or for misnested table nodes, to the foster parent.
-		if lastNode.Parent != nil {
-			lastNode.Parent.Remove(lastNode)
-		}
-		switch commonAncestor.Data {
-		case "table", "tbody", "tfoot", "thead", "tr":
-			p.fosterParent(lastNode)
-		default:
-			commonAncestor.Add(lastNode)
-		}
-
-		// Steps 11-13. Reparent nodes from the furthest block's children
-		// to a clone of the formatting element.
-		clone := formattingElement.clone()
-		reparentChildren(clone, furthestBlock)
-		furthestBlock.Add(clone)
-
-		// Step 14. Fix up the list of active formatting elements.
-		if oldLoc := p.afe.index(formattingElement); oldLoc != -1 && oldLoc < bookmark {
-			// Move the bookmark with the rest of the list.
-			bookmark--
-		}
-		p.afe.remove(formattingElement)
-		p.afe.insert(bookmark, clone)
-
-		// Step 15. Fix up the stack of open elements.
-		p.oe.remove(formattingElement)
-		p.oe.insert(p.oe.index(furthestBlock)+1, clone)
-	}
-}
-
-// inBodyEndTagOther performs the "any other end tag" algorithm for inBodyIM.
-func (p *parser) inBodyEndTagOther(tag string) {
-	for i := len(p.oe) - 1; i >= 0; i-- {
-		if p.oe[i].Data == tag {
-			p.oe = p.oe[:i]
-			break
-		}
-		if isSpecialElement(p.oe[i]) {
-			break
-		}
-	}
-}
-
-// Section 12.2.5.4.8.
-func textIM(p *parser) bool {
-	switch p.tok.Type {
-	case ErrorToken:
-		p.oe.pop()
-	case TextToken:
-		p.addText(p.tok.Data)
-		return true
-	case EndTagToken:
-		p.oe.pop()
-	}
-	p.im = p.originalIM
-	p.originalIM = nil
-	return p.tok.Type == EndTagToken
-}
-
-// Section 12.2.5.4.9.
-func inTableIM(p *parser) bool {
-	switch p.tok.Type {
-	case ErrorToken:
-		// Stop parsing.
-		return true
-	case TextToken:
-		// TODO.
-	case StartTagToken:
-		switch p.tok.Data {
-		case "caption":
-			p.clearStackToContext(tableScope)
-			p.afe = append(p.afe, &scopeMarker)
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.im = inCaptionIM
-			return true
-		case "tbody", "tfoot", "thead":
-			p.clearStackToContext(tableScope)
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.im = inTableBodyIM
-			return true
-		case "td", "th", "tr":
-			p.clearStackToContext(tableScope)
-			p.addElement("tbody", nil)
-			p.im = inTableBodyIM
-			return false
-		case "table":
-			if p.popUntil(tableScope, "table") {
-				p.resetInsertionMode()
-				return false
-			}
-			// Ignore the token.
-			return true
-		case "colgroup":
-			p.clearStackToContext(tableScope)
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.im = inColumnGroupIM
-			return true
-		case "col":
-			p.clearStackToContext(tableScope)
-			p.addElement("colgroup", p.tok.Attr)
-			p.im = inColumnGroupIM
-			return false
-		case "select":
-			p.reconstructActiveFormattingElements()
-			switch p.top().Data {
-			case "table", "tbody", "tfoot", "thead", "tr":
-				p.fosterParenting = true
-			}
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.fosterParenting = false
-			p.framesetOK = false
-			p.im = inSelectInTableIM
-			return true
-		default:
-			// TODO.
-		}
-	case EndTagToken:
-		switch p.tok.Data {
-		case "table":
-			if p.popUntil(tableScope, "table") {
-				p.resetInsertionMode()
-				return true
-			}
-			// Ignore the token.
-			return true
-		case "body", "caption", "col", "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr":
-			// Ignore the token.
-			return true
-		}
-	case CommentToken:
-		p.addChild(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-		return true
-	}
-
-	switch p.top().Data {
-	case "table", "tbody", "tfoot", "thead", "tr":
-		p.fosterParenting = true
-		defer func() { p.fosterParenting = false }()
-	}
-
-	return inBodyIM(p)
-}
-
-// Section 12.2.5.4.11.
-func inCaptionIM(p *parser) bool {
-	switch p.tok.Type {
-	case StartTagToken:
-		switch p.tok.Data {
-		case "caption", "col", "colgroup", "tbody", "td", "tfoot", "thead", "tr":
-			if p.popUntil(tableScope, "caption") {
-				p.clearActiveFormattingElements()
-				p.im = inTableIM
-				return false
-			} else {
-				// Ignore the token.
-				return true
-			}
-		case "select":
-			p.reconstructActiveFormattingElements()
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.framesetOK = false
-			p.im = inSelectInTableIM
-			return true
-		}
-	case EndTagToken:
-		switch p.tok.Data {
-		case "caption":
-			if p.popUntil(tableScope, "caption") {
-				p.clearActiveFormattingElements()
-				p.im = inTableIM
-			}
-			return true
-		case "table":
-			if p.popUntil(tableScope, "caption") {
-				p.clearActiveFormattingElements()
-				p.im = inTableIM
-				return false
-			} else {
-				// Ignore the token.
-				return true
-			}
-		case "body", "col", "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr":
-			// Ignore the token.
-			return true
-		}
-	}
-	return inBodyIM(p)
-}
-
-// Section 12.2.5.4.12.
-func inColumnGroupIM(p *parser) bool {
-	switch p.tok.Type {
-	case CommentToken:
-		p.addChild(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-		return true
-	case DoctypeToken:
-		// Ignore the token.
-		return true
-	case StartTagToken:
-		switch p.tok.Data {
-		case "html":
-			return inBodyIM(p)
-		case "col":
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.oe.pop()
-			p.acknowledgeSelfClosingTag()
-			return true
-		}
-	case EndTagToken:
-		switch p.tok.Data {
-		case "colgroup":
-			if p.oe.top().Data != "html" {
-				p.oe.pop()
-				p.im = inTableIM
-			}
-			return true
-		case "col":
-			// Ignore the token.
-			return true
-		}
-	}
-	if p.oe.top().Data != "html" {
-		p.oe.pop()
-		p.im = inTableIM
-		return false
-	}
-	return true
-}
-
-// Section 12.2.5.4.13.
-func inTableBodyIM(p *parser) bool {
-	var (
-		add      bool
-		data     string
-		attr     []Attribute
-		consumed bool
-	)
-	switch p.tok.Type {
-	case ErrorToken:
-		// TODO.
-	case TextToken:
-		// TODO.
-	case StartTagToken:
-		switch p.tok.Data {
-		case "tr":
-			add = true
-			data = p.tok.Data
-			attr = p.tok.Attr
-			consumed = true
-		case "td", "th":
-			add = true
-			data = "tr"
-			consumed = false
-		case "caption", "col", "colgroup", "tbody", "tfoot", "thead":
-			if !p.popUntil(tableScope, "tbody", "thead", "tfoot") {
-				// Ignore the token.
-				return true
-			}
-			p.im = inTableIM
-			return false
-		default:
-			// TODO.
-		}
-	case EndTagToken:
-		switch p.tok.Data {
-		case "table":
-			if p.popUntil(tableScope, "tbody", "thead", "tfoot") {
-				p.im = inTableIM
-				return false
-			}
-			// Ignore the token.
-			return true
-		case "body", "caption", "col", "colgroup", "html", "td", "th", "tr":
-			// Ignore the token.
-			return true
-		}
-	case CommentToken:
-		p.addChild(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-		return true
-	}
-	if add {
-		// TODO: clear the stack back to a table body context.
-		p.addElement(data, attr)
-		p.im = inRowIM
-		return consumed
-	}
-	return inTableIM(p)
-}
-
-// Section 12.2.5.4.14.
-func inRowIM(p *parser) bool {
-	switch p.tok.Type {
-	case ErrorToken:
-		// TODO.
-	case TextToken:
-		// TODO.
-	case StartTagToken:
-		switch p.tok.Data {
-		case "td", "th":
-			p.clearStackToContext(tableRowScope)
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.afe = append(p.afe, &scopeMarker)
-			p.im = inCellIM
-			return true
-		case "caption", "col", "colgroup", "tbody", "tfoot", "thead", "tr":
-			if p.popUntil(tableScope, "tr") {
-				p.im = inTableBodyIM
-				return false
-			}
-			// Ignore the token.
-			return true
-		default:
-			// TODO.
-		}
-	case EndTagToken:
-		switch p.tok.Data {
-		case "tr":
-			if p.popUntil(tableScope, "tr") {
-				p.im = inTableBodyIM
-				return true
-			}
-			// Ignore the token.
-			return true
-		case "table":
-			if p.popUntil(tableScope, "tr") {
-				p.im = inTableBodyIM
-				return false
-			}
-			// Ignore the token.
-			return true
-		case "tbody", "tfoot", "thead":
-			// TODO.
-		case "body", "caption", "col", "colgroup", "html", "td", "th":
-			// Ignore the token.
-			return true
-		default:
-			// TODO.
-		}
-	case CommentToken:
-		p.addChild(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-		return true
-	}
-	return inTableIM(p)
-}
-
-// Section 12.2.5.4.15.
-func inCellIM(p *parser) bool {
-	var (
-		closeTheCellAndReprocess bool
-	)
-	switch p.tok.Type {
-	case StartTagToken:
-		switch p.tok.Data {
-		case "caption", "col", "colgroup", "tbody", "td", "tfoot", "th", "thead", "tr":
-			// TODO: check for "td" or "th" in table scope.
-			closeTheCellAndReprocess = true
-		case "select":
-			p.reconstructActiveFormattingElements()
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.framesetOK = false
-			p.im = inSelectInTableIM
-			return true
-		}
-	case EndTagToken:
-		switch p.tok.Data {
-		case "td", "th":
-			if !p.popUntil(tableScope, p.tok.Data) {
-				// Ignore the token.
-				return true
-			}
-			p.clearActiveFormattingElements()
-			p.im = inRowIM
-			return true
-		case "body", "caption", "col", "colgroup", "html":
-			// TODO.
-		case "table", "tbody", "tfoot", "thead", "tr":
-			// TODO: check for matching element in table scope.
-			closeTheCellAndReprocess = true
-		}
-	case CommentToken:
-		p.addChild(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-		return true
-	}
-	if closeTheCellAndReprocess {
-		if p.popUntil(tableScope, "td") || p.popUntil(tableScope, "th") {
-			p.clearActiveFormattingElements()
-			p.im = inRowIM
-			return false
-		}
-	}
-	return inBodyIM(p)
-}
-
-// Section 12.2.5.4.16.
-func inSelectIM(p *parser) bool {
-	endSelect := false
-	switch p.tok.Type {
-	case ErrorToken:
-		// TODO.
-	case TextToken:
-		p.addText(p.tok.Data)
-	case StartTagToken:
-		switch p.tok.Data {
-		case "html":
-			// TODO.
-		case "option":
-			if p.top().Data == "option" {
-				p.oe.pop()
-			}
-			p.addElement(p.tok.Data, p.tok.Attr)
-		case "optgroup":
-			if p.top().Data == "option" {
-				p.oe.pop()
-			}
-			if p.top().Data == "optgroup" {
-				p.oe.pop()
-			}
-			p.addElement(p.tok.Data, p.tok.Attr)
-		case "select":
-			endSelect = true
-		case "input", "keygen", "textarea":
-			// TODO.
-		case "script":
-			// TODO.
-		default:
-			// Ignore the token.
-		}
-	case EndTagToken:
-		switch p.tok.Data {
-		case "option":
-			if p.top().Data == "option" {
-				p.oe.pop()
-			}
-		case "optgroup":
-			i := len(p.oe) - 1
-			if p.oe[i].Data == "option" {
-				i--
-			}
-			if p.oe[i].Data == "optgroup" {
-				p.oe = p.oe[:i]
-			}
-		case "select":
-			endSelect = true
-		default:
-			// Ignore the token.
-		}
-	case CommentToken:
-		p.doc.Add(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-	}
-	if endSelect {
-		p.endSelect()
-	}
-	return true
-}
-
-// Section 12.2.5.4.17.
-func inSelectInTableIM(p *parser) bool {
-	switch p.tok.Type {
-	case StartTagToken, EndTagToken:
-		switch p.tok.Data {
-		case "caption", "table", "tbody", "tfoot", "thead", "tr", "td", "th":
-			if p.tok.Type == StartTagToken || p.elementInScope(tableScope, p.tok.Data) {
-				p.endSelect()
-				return false
-			} else {
-				// Ignore the token.
-				return true
-			}
-		}
-	}
-	return inSelectIM(p)
-}
-
-func (p *parser) endSelect() {
-	for i := len(p.oe) - 1; i >= 0; i-- {
-		switch p.oe[i].Data {
-		case "option", "optgroup":
-			continue
-		case "select":
-			p.oe = p.oe[:i]
-			p.resetInsertionMode()
-		}
-		return
-	}
-}
-
-// Section 12.2.5.4.18.
-func afterBodyIM(p *parser) bool {
-	switch p.tok.Type {
-	case ErrorToken:
-		// Stop parsing.
-		return true
-	case StartTagToken:
-		if p.tok.Data == "html" {
-			return inBodyIM(p)
-		}
-	case EndTagToken:
-		if p.tok.Data == "html" {
-			p.im = afterAfterBodyIM
-			return true
-		}
-	case CommentToken:
-		// The comment is attached to the <html> element.
-		if len(p.oe) < 1 || p.oe[0].Data != "html" {
-			panic("html: bad parser state: <html> element not found, in the after-body insertion mode")
-		}
-		p.oe[0].Add(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-		return true
-	}
-	p.im = inBodyIM
-	return false
-}
-
-// Section 12.2.5.4.19.
-func inFramesetIM(p *parser) bool {
-	switch p.tok.Type {
-	case CommentToken:
-		p.addChild(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-	case TextToken:
-		// Ignore all text but whitespace.
-		s := strings.Map(func(c rune) rune {
-			switch c {
-			case ' ', '\t', '\n', '\f', '\r':
-				return c
-			}
-			return -1
-		}, p.tok.Data)
-		if s != "" {
-			p.addText(s)
-		}
-	case StartTagToken:
-		switch p.tok.Data {
-		case "html":
-			return inBodyIM(p)
-		case "frameset":
-			p.addElement(p.tok.Data, p.tok.Attr)
-		case "frame":
-			p.addElement(p.tok.Data, p.tok.Attr)
-			p.oe.pop()
-			p.acknowledgeSelfClosingTag()
-		case "noframes":
-			return inHeadIM(p)
-		}
-	case EndTagToken:
-		switch p.tok.Data {
-		case "frameset":
-			if p.oe.top().Data != "html" {
-				p.oe.pop()
-				if p.oe.top().Data != "frameset" {
-					p.im = afterFramesetIM
-					return true
-				}
-			}
-		}
-	default:
-		// Ignore the token.
-	}
-	return true
-}
-
-// Section 12.2.5.4.20.
-func afterFramesetIM(p *parser) bool {
-	switch p.tok.Type {
-	case CommentToken:
-		p.addChild(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-	case TextToken:
-		// Ignore all text but whitespace.
-		s := strings.Map(func(c rune) rune {
-			switch c {
-			case ' ', '\t', '\n', '\f', '\r':
-				return c
-			}
-			return -1
-		}, p.tok.Data)
-		if s != "" {
-			p.addText(s)
-		}
-	case StartTagToken:
-		switch p.tok.Data {
-		case "html":
-			return inBodyIM(p)
-		case "noframes":
-			return inHeadIM(p)
-		}
-	case EndTagToken:
-		switch p.tok.Data {
-		case "html":
-			p.im = afterAfterFramesetIM
-			return true
-		}
-	default:
-		// Ignore the token.
-	}
-	return true
-}
-
-// Section 12.2.5.4.21.
-func afterAfterBodyIM(p *parser) bool {
-	switch p.tok.Type {
-	case ErrorToken:
-		// Stop parsing.
-		return true
-	case TextToken:
-		// TODO.
-	case StartTagToken:
-		if p.tok.Data == "html" {
-			return inBodyIM(p)
-		}
-	case CommentToken:
-		p.doc.Add(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-		return true
-	}
-	p.im = inBodyIM
-	return false
-}
-
-// Section 12.2.5.4.22.
-func afterAfterFramesetIM(p *parser) bool {
-	switch p.tok.Type {
-	case CommentToken:
-		p.addChild(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-	case TextToken:
-		// Ignore all text but whitespace.
-		s := strings.Map(func(c rune) rune {
-			switch c {
-			case ' ', '\t', '\n', '\f', '\r':
-				return c
-			}
-			return -1
-		}, p.tok.Data)
-		if s != "" {
-			p.reconstructActiveFormattingElements()
-			p.addText(s)
-		}
-	case StartTagToken:
-		switch p.tok.Data {
-		case "html":
-			return inBodyIM(p)
-		case "noframes":
-			return inHeadIM(p)
-		}
-	default:
-		// Ignore the token.
-	}
-	return true
-}
-
-// Section 12.2.5.5.
-func parseForeignContent(p *parser) bool {
-	switch p.tok.Type {
-	case TextToken:
-		// TODO: HTML integration points.
-		if p.top().Namespace == "" {
-			inBodyIM(p)
-			p.resetInsertionMode()
-			return true
-		}
-		if p.framesetOK {
-			p.framesetOK = strings.TrimLeft(p.tok.Data, whitespace) == ""
-		}
-		p.addText(p.tok.Data)
-	case CommentToken:
-		p.addChild(&Node{
-			Type: CommentNode,
-			Data: p.tok.Data,
-		})
-	case StartTagToken:
-		if htmlIntegrationPoint(p.top()) {
-			inBodyIM(p)
-			p.resetInsertionMode()
-			return true
-		}
-		if breakout[p.tok.Data] {
-			for i := len(p.oe) - 1; i >= 0; i-- {
-				// TODO: MathML integration points.
-				if p.oe[i].Namespace == "" || htmlIntegrationPoint(p.oe[i]) {
-					p.oe = p.oe[:i+1]
-					break
-				}
-			}
-			return false
-		}
-		switch p.top().Namespace {
-		case "math":
-			// TODO: adjust MathML attributes.
-		case "svg":
-			// Adjust SVG tag names. The tokenizer lower-cases tag names, but
-			// SVG wants e.g. "foreignObject" with a capital second "O".
-			if x := svgTagNameAdjustments[p.tok.Data]; x != "" {
-				p.tok.Data = x
-			}
-			// TODO: adjust SVG attributes.
-		default:
-			panic("html: bad parser state: unexpected namespace")
-		}
-		adjustForeignAttributes(p.tok.Attr)
-		namespace := p.top().Namespace
-		p.addElement(p.tok.Data, p.tok.Attr)
-		p.top().Namespace = namespace
-	case EndTagToken:
-		for i := len(p.oe) - 1; i >= 0; i-- {
-			if p.oe[i].Namespace == "" {
-				return p.im(p)
-			}
-			if strings.EqualFold(p.oe[i].Data, p.tok.Data) {
-				p.oe = p.oe[:i]
-				break
-			}
-		}
-		return true
-	default:
-		// Ignore the token.
-	}
-	return true
-}
-
-// Section 12.2.5.
-func (p *parser) inForeignContent() bool {
-	if len(p.oe) == 0 {
-		return false
-	}
-	n := p.oe[len(p.oe)-1]
-	if n.Namespace == "" {
-		return false
-	}
-	// TODO: MathML, HTML integration points.
-	// TODO: MathML's annotation-xml combining with SVG's svg.
-	return true
-}
-
-func (p *parser) parse() error {
-	// Iterate until EOF. Any other error will cause an early return.
-	consumed := true
-	for {
-		if consumed {
-			if err := p.read(); err != nil {
-				if err == io.EOF {
-					break
-				}
-				return err
-			}
-		}
-		if p.inForeignContent() {
-			consumed = parseForeignContent(p)
-		} else {
-			consumed = p.im(p)
-		}
-	}
-	// Loop until the final token (the ErrorToken signifying EOF) is consumed.
-	for {
-		if consumed = p.im(p); consumed {
-			break
-		}
-	}
-	return nil
-}
-
-// Parse returns the parse tree for the HTML from the given Reader.
-// The input is assumed to be UTF-8 encoded.
-func Parse(r io.Reader) (*Node, error) {
-	p := &parser{
-		tokenizer: NewTokenizer(r),
-		doc: &Node{
-			Type: DocumentNode,
-		},
-		scripting:  true,
-		framesetOK: true,
-		im:         initialIM,
-	}
-	err := p.parse()
-	if err != nil {
-		return nil, err
-	}
-	return p.doc, nil
-}
-
-// ParseFragment parses a fragment of HTML and returns the nodes that were 
-// found. If the fragment is the InnerHTML for an existing element, pass that
-// element in context.
-func ParseFragment(r io.Reader, context *Node) ([]*Node, error) {
-	p := &parser{
-		tokenizer: NewTokenizer(r),
-		doc: &Node{
-			Type: DocumentNode,
-		},
-		scripting: true,
-		context:   context,
-	}
-
-	if context != nil {
-		switch context.Data {
-		case "iframe", "noembed", "noframes", "noscript", "plaintext", "script", "style", "title", "textarea", "xmp":
-			p.tokenizer.rawTag = context.Data
-		}
-	}
-
-	root := &Node{
-		Type: ElementNode,
-		Data: "html",
-	}
-	p.doc.Add(root)
-	p.oe = nodeStack{root}
-	p.resetInsertionMode()
-
-	for n := context; n != nil; n = n.Parent {
-		if n.Type == ElementNode && n.Data == "form" {
-			p.form = n
-			break
-		}
-	}
-
-	err := p.parse()
-	if err != nil {
-		return nil, err
-	}
-
-	parent := p.doc
-	if context != nil {
-		parent = root
-	}
-
-	result := parent.Child
-	parent.Child = nil
-	for _, n := range result {
-		n.Parent = nil
-	}
-	return result, nil
-}
diff --git a/src/pkg/exp/html/parse_test.go b/src/pkg/exp/html/parse_test.go
deleted file mode 100644
index f3f966c..0000000
--- a/src/pkg/exp/html/parse_test.go
+++ /dev/null
@@ -1,276 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-import (
-	"bufio"
-	"bytes"
-	"errors"
-	"fmt"
-	"io"
-	"os"
-	"strings"
-	"testing"
-)
-
-// readParseTest reads a single test case from r.
-func readParseTest(r *bufio.Reader) (text, want, context string, err error) {
-	line, err := r.ReadSlice('\n')
-	if err != nil {
-		return "", "", "", err
-	}
-	var b []byte
-
-	// Read the HTML.
-	if string(line) != "#data\n" {
-		return "", "", "", fmt.Errorf(`got %q want "#data\n"`, line)
-	}
-	for {
-		line, err = r.ReadSlice('\n')
-		if err != nil {
-			return "", "", "", err
-		}
-		if line[0] == '#' {
-			break
-		}
-		b = append(b, line...)
-	}
-	text = strings.TrimRight(string(b), "\n")
-	b = b[:0]
-
-	// Skip the error list.
-	if string(line) != "#errors\n" {
-		return "", "", "", fmt.Errorf(`got %q want "#errors\n"`, line)
-	}
-	for {
-		line, err = r.ReadSlice('\n')
-		if err != nil {
-			return "", "", "", err
-		}
-		if line[0] == '#' {
-			break
-		}
-	}
-
-	if string(line) == "#document-fragment\n" {
-		line, err = r.ReadSlice('\n')
-		if err != nil {
-			return "", "", "", err
-		}
-		context = strings.TrimSpace(string(line))
-		line, err = r.ReadSlice('\n')
-		if err != nil {
-			return "", "", "", err
-		}
-	}
-
-	// Read the dump of what the parse tree should be.
-	if string(line) != "#document\n" {
-		return "", "", "", fmt.Errorf(`got %q want "#document\n"`, line)
-	}
-	for {
-		line, err = r.ReadSlice('\n')
-		if err != nil && err != io.EOF {
-			return "", "", "", err
-		}
-		if len(line) == 0 || len(line) == 1 && line[0] == '\n' {
-			break
-		}
-		b = append(b, line...)
-	}
-	return text, string(b), context, nil
-}
-
-func dumpIndent(w io.Writer, level int) {
-	io.WriteString(w, "| ")
-	for i := 0; i < level; i++ {
-		io.WriteString(w, "  ")
-	}
-}
-
-func dumpLevel(w io.Writer, n *Node, level int) error {
-	dumpIndent(w, level)
-	switch n.Type {
-	case ErrorNode:
-		return errors.New("unexpected ErrorNode")
-	case DocumentNode:
-		return errors.New("unexpected DocumentNode")
-	case ElementNode:
-		if n.Namespace != "" {
-			fmt.Fprintf(w, "<%s %s>", n.Namespace, n.Data)
-		} else {
-			fmt.Fprintf(w, "<%s>", n.Data)
-		}
-		attr := n.Attr
-		if len(attr) == 2 && attr[0].Namespace == "xml" && attr[1].Namespace == "xlink" {
-			// Some of the test cases in tests10.dat change the order of adjusted
-			// foreign attributes, but that behavior is not in the spec, and could
-			// simply be an implementation detail of html5lib's python map ordering.
-			attr[0], attr[1] = attr[1], attr[0]
-		}
-		for _, a := range attr {
-			io.WriteString(w, "\n")
-			dumpIndent(w, level+1)
-			if a.Namespace != "" {
-				fmt.Fprintf(w, `%s %s="%s"`, a.Namespace, a.Key, a.Val)
-			} else {
-				fmt.Fprintf(w, `%s="%s"`, a.Key, a.Val)
-			}
-		}
-	case TextNode:
-		fmt.Fprintf(w, `"%s"`, n.Data)
-	case CommentNode:
-		fmt.Fprintf(w, "<!-- %s -->", n.Data)
-	case DoctypeNode:
-		fmt.Fprintf(w, "<!DOCTYPE %s", n.Data)
-		if n.Attr != nil {
-			var p, s string
-			for _, a := range n.Attr {
-				switch a.Key {
-				case "public":
-					p = a.Val
-				case "system":
-					s = a.Val
-				}
-			}
-			if p != "" || s != "" {
-				fmt.Fprintf(w, ` "%s"`, p)
-				fmt.Fprintf(w, ` "%s"`, s)
-			}
-		}
-		io.WriteString(w, ">")
-	case scopeMarkerNode:
-		return errors.New("unexpected scopeMarkerNode")
-	default:
-		return errors.New("unknown node type")
-	}
-	io.WriteString(w, "\n")
-	for _, c := range n.Child {
-		if err := dumpLevel(w, c, level+1); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func dump(n *Node) (string, error) {
-	if n == nil || len(n.Child) == 0 {
-		return "", nil
-	}
-	var b bytes.Buffer
-	for _, child := range n.Child {
-		if err := dumpLevel(&b, child, 0); err != nil {
-			return "", err
-		}
-	}
-	return b.String(), nil
-}
-
-func TestParser(t *testing.T) {
-	testFiles := []struct {
-		filename string
-		// n is the number of test cases to run from that file.
-		// -1 means all test cases.
-		n int
-	}{
-		// TODO(nigeltao): Process all the test cases from all the .dat files.
-		{"adoption01.dat", -1},
-		{"doctype01.dat", -1},
-		{"tests1.dat", -1},
-		{"tests2.dat", -1},
-		{"tests3.dat", -1},
-		{"tests4.dat", -1},
-		{"tests5.dat", -1},
-		{"tests6.dat", -1},
-		{"tests10.dat", 35},
-	}
-	for _, tf := range testFiles {
-		f, err := os.Open("testdata/webkit/" + tf.filename)
-		if err != nil {
-			t.Fatal(err)
-		}
-		defer f.Close()
-		r := bufio.NewReader(f)
-		for i := 0; i != tf.n; i++ {
-			text, want, context, err := readParseTest(r)
-			if err == io.EOF && tf.n == -1 {
-				break
-			}
-			if err != nil {
-				t.Fatal(err)
-			}
-
-			var doc *Node
-			if context == "" {
-				doc, err = Parse(strings.NewReader(text))
-				if err != nil {
-					t.Fatal(err)
-				}
-			} else {
-				contextNode := &Node{
-					Type: ElementNode,
-					Data: context,
-				}
-				nodes, err := ParseFragment(strings.NewReader(text), contextNode)
-				if err != nil {
-					t.Fatal(err)
-				}
-				doc = &Node{
-					Type: DocumentNode,
-				}
-				for _, n := range nodes {
-					doc.Add(n)
-				}
-			}
-
-			got, err := dump(doc)
-			if err != nil {
-				t.Fatal(err)
-			}
-			// Compare the parsed tree to the #document section.
-			if got != want {
-				t.Errorf("%s test #%d %q, got vs want:\n----\n%s----\n%s----", tf.filename, i, text, got, want)
-				continue
-			}
-			if renderTestBlacklist[text] || context != "" {
-				continue
-			}
-			// Check that rendering and re-parsing results in an identical tree.
-			pr, pw := io.Pipe()
-			go func() {
-				pw.CloseWithError(Render(pw, doc))
-			}()
-			doc1, err := Parse(pr)
-			if err != nil {
-				t.Fatal(err)
-			}
-			got1, err := dump(doc1)
-			if err != nil {
-				t.Fatal(err)
-			}
-			if got != got1 {
-				t.Errorf("%s test #%d %q, got vs got1:\n----\n%s----\n%s----", tf.filename, i, text, got, got1)
-				continue
-			}
-		}
-	}
-}
-
-// Some test input result in parse trees are not 'well-formed' despite
-// following the HTML5 recovery algorithms. Rendering and re-parsing such a
-// tree will not result in an exact clone of that tree. We blacklist such
-// inputs from the render test.
-var renderTestBlacklist = map[string]bool{
-	// The second <a> will be reparented to the first <table>'s parent. This
-	// results in an <a> whose parent is an <a>, which is not 'well-formed'.
-	`<a><table><td><a><table></table><a></tr><a></table><b>X</b>C<a>Y`: true,
-	// More cases of <a> being reparented:
-	`<a href="blah">aba<table><a href="foo">br<tr><td></td></tr>x</table>aoe`: true,
-	`<a><table><a></table><p><a><div><a>`:                                     true,
-	`<a><table><td><a><table></table><a></tr><a></table><a>`:                  true,
-	// A <plaintext> element is reparented, putting it before a table.
-	// A <plaintext> element can't have anything after it in HTML.
-	`<table><plaintext><td>`: true,
-}
diff --git a/src/pkg/exp/html/render.go b/src/pkg/exp/html/render.go
deleted file mode 100644
index 07859fa..0000000
--- a/src/pkg/exp/html/render.go
+++ /dev/null
@@ -1,277 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-import (
-	"bufio"
-	"errors"
-	"fmt"
-	"io"
-	"strings"
-)
-
-type writer interface {
-	io.Writer
-	WriteByte(byte) error
-	WriteString(string) (int, error)
-}
-
-// Render renders the parse tree n to the given writer.
-//
-// Rendering is done on a 'best effort' basis: calling Parse on the output of
-// Render will always result in something similar to the original tree, but it
-// is not necessarily an exact clone unless the original tree was 'well-formed'.
-// 'Well-formed' is not easily specified; the HTML5 specification is
-// complicated.
-//
-// Calling Parse on arbitrary input typically results in a 'well-formed' parse
-// tree. However, it is possible for Parse to yield a 'badly-formed' parse tree.
-// For example, in a 'well-formed' parse tree, no <a> element is a child of
-// another <a> element: parsing "<a><a>" results in two sibling elements.
-// Similarly, in a 'well-formed' parse tree, no <a> element is a child of a
-// <table> element: parsing "<p><table><a>" results in a <p> with two sibling
-// children; the <a> is reparented to the <table>'s parent. However, calling
-// Parse on "<a><table><a>" does not return an error, but the result has an <a>
-// element with an <a> child, and is therefore not 'well-formed'.
-// 
-// Programmatically constructed trees are typically also 'well-formed', but it
-// is possible to construct a tree that looks innocuous but, when rendered and
-// re-parsed, results in a different tree. A simple example is that a solitary
-// text node would become a tree containing <html>, <head> and <body> elements.
-// Another example is that the programmatic equivalent of "a<head>b</head>c"
-// becomes "<html><head><head/><body>abc</body></html>".
-func Render(w io.Writer, n *Node) error {
-	if x, ok := w.(writer); ok {
-		return render(x, n)
-	}
-	buf := bufio.NewWriter(w)
-	if err := render(buf, n); err != nil {
-		return err
-	}
-	return buf.Flush()
-}
-
-// plaintextAbort is returned from render1 when a <plaintext> element 
-// has been rendered. No more end tags should be rendered after that.
-var plaintextAbort = errors.New("html: internal error (plaintext abort)")
-
-func render(w writer, n *Node) error {
-	err := render1(w, n)
-	if err == plaintextAbort {
-		err = nil
-	}
-	return err
-}
-
-func render1(w writer, n *Node) error {
-	// Render non-element nodes; these are the easy cases.
-	switch n.Type {
-	case ErrorNode:
-		return errors.New("html: cannot render an ErrorNode node")
-	case TextNode:
-		return escape(w, n.Data)
-	case DocumentNode:
-		for _, c := range n.Child {
-			if err := render1(w, c); err != nil {
-				return err
-			}
-		}
-		return nil
-	case ElementNode:
-		// No-op.
-	case CommentNode:
-		if _, err := w.WriteString("<!--"); err != nil {
-			return err
-		}
-		if _, err := w.WriteString(n.Data); err != nil {
-			return err
-		}
-		if _, err := w.WriteString("-->"); err != nil {
-			return err
-		}
-		return nil
-	case DoctypeNode:
-		if _, err := w.WriteString("<!DOCTYPE "); err != nil {
-			return err
-		}
-		if _, err := w.WriteString(n.Data); err != nil {
-			return err
-		}
-		if n.Attr != nil {
-			var p, s string
-			for _, a := range n.Attr {
-				switch a.Key {
-				case "public":
-					p = a.Val
-				case "system":
-					s = a.Val
-				}
-			}
-			if p != "" {
-				if _, err := w.WriteString(" PUBLIC "); err != nil {
-					return err
-				}
-				if err := writeQuoted(w, p); err != nil {
-					return err
-				}
-				if s != "" {
-					if err := w.WriteByte(' '); err != nil {
-						return err
-					}
-					if err := writeQuoted(w, s); err != nil {
-						return err
-					}
-				}
-			} else if s != "" {
-				if _, err := w.WriteString(" SYSTEM "); err != nil {
-					return err
-				}
-				if err := writeQuoted(w, s); err != nil {
-					return err
-				}
-			}
-		}
-		return w.WriteByte('>')
-	default:
-		return errors.New("html: unknown node type")
-	}
-
-	// Render the <xxx> opening tag.
-	if err := w.WriteByte('<'); err != nil {
-		return err
-	}
-	if _, err := w.WriteString(n.Data); err != nil {
-		return err
-	}
-	for _, a := range n.Attr {
-		if err := w.WriteByte(' '); err != nil {
-			return err
-		}
-		if a.Namespace != "" {
-			if _, err := w.WriteString(a.Namespace); err != nil {
-				return err
-			}
-			if err := w.WriteByte(':'); err != nil {
-				return err
-			}
-		}
-		if _, err := w.WriteString(a.Key); err != nil {
-			return err
-		}
-		if _, err := w.WriteString(`="`); err != nil {
-			return err
-		}
-		if err := escape(w, a.Val); err != nil {
-			return err
-		}
-		if err := w.WriteByte('"'); err != nil {
-			return err
-		}
-	}
-	if voidElements[n.Data] {
-		if len(n.Child) != 0 {
-			return fmt.Errorf("html: void element <%s> has child nodes", n.Data)
-		}
-		_, err := w.WriteString("/>")
-		return err
-	}
-	if err := w.WriteByte('>'); err != nil {
-		return err
-	}
-
-	// Add initial newline where there is danger of a newline beging ignored.
-	if len(n.Child) > 0 && n.Child[0].Type == TextNode && strings.HasPrefix(n.Child[0].Data, "\n") {
-		switch n.Data {
-		case "pre", "listing", "textarea":
-			if err := w.WriteByte('\n'); err != nil {
-				return err
-			}
-		}
-	}
-
-	// Render any child nodes.
-	switch n.Data {
-	case "iframe", "noembed", "noframes", "noscript", "plaintext", "script", "style", "xmp":
-		for _, c := range n.Child {
-			if c.Type != TextNode {
-				return fmt.Errorf("html: raw text element <%s> has non-text child node", n.Data)
-			}
-			if _, err := w.WriteString(c.Data); err != nil {
-				return err
-			}
-		}
-		if n.Data == "plaintext" {
-			// Don't render anything else. <plaintext> must be the
-			// last element in the file, with no closing tag.
-			return plaintextAbort
-		}
-	case "textarea", "title":
-		for _, c := range n.Child {
-			if c.Type != TextNode {
-				return fmt.Errorf("html: RCDATA element <%s> has non-text child node", n.Data)
-			}
-			if err := render1(w, c); err != nil {
-				return err
-			}
-		}
-	default:
-		for _, c := range n.Child {
-			if err := render1(w, c); err != nil {
-				return err
-			}
-		}
-	}
-
-	// Render the </xxx> closing tag.
-	if _, err := w.WriteString("</"); err != nil {
-		return err
-	}
-	if _, err := w.WriteString(n.Data); err != nil {
-		return err
-	}
-	return w.WriteByte('>')
-}
-
-// writeQuoted writes s to w surrounded by quotes. Normally it will use double
-// quotes, but if s contains a double quote, it will use single quotes.
-// It is used for writing the identifiers in a doctype declaration.
-// In valid HTML, they can't contain both types of quotes.
-func writeQuoted(w writer, s string) error {
-	var q byte = '"'
-	if strings.Contains(s, `"`) {
-		q = '\''
-	}
-	if err := w.WriteByte(q); err != nil {
-		return err
-	}
-	if _, err := w.WriteString(s); err != nil {
-		return err
-	}
-	if err := w.WriteByte(q); err != nil {
-		return err
-	}
-	return nil
-}
-
-// Section 12.1.2, "Elements", gives this list of void elements. Void elements
-// are those that can't have any contents.
-var voidElements = map[string]bool{
-	"area":    true,
-	"base":    true,
-	"br":      true,
-	"col":     true,
-	"command": true,
-	"embed":   true,
-	"hr":      true,
-	"img":     true,
-	"input":   true,
-	"keygen":  true,
-	"link":    true,
-	"meta":    true,
-	"param":   true,
-	"source":  true,
-	"track":   true,
-	"wbr":     true,
-}
diff --git a/src/pkg/exp/html/render_test.go b/src/pkg/exp/html/render_test.go
deleted file mode 100644
index 0584f35..0000000
--- a/src/pkg/exp/html/render_test.go
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-import (
-	"bytes"
-	"testing"
-)
-
-func TestRenderer(t *testing.T) {
-	n := &Node{
-		Type: ElementNode,
-		Data: "html",
-		Child: []*Node{
-			{
-				Type: ElementNode,
-				Data: "head",
-			},
-			{
-				Type: ElementNode,
-				Data: "body",
-				Child: []*Node{
-					{
-						Type: TextNode,
-						Data: "0<1",
-					},
-					{
-						Type: ElementNode,
-						Data: "p",
-						Attr: []Attribute{
-							{
-								Key: "id",
-								Val: "A",
-							},
-							{
-								Key: "foo",
-								Val: `abc"def`,
-							},
-						},
-						Child: []*Node{
-							{
-								Type: TextNode,
-								Data: "2",
-							},
-							{
-								Type: ElementNode,
-								Data: "b",
-								Attr: []Attribute{
-									{
-										Key: "empty",
-										Val: "",
-									},
-								},
-								Child: []*Node{
-									{
-										Type: TextNode,
-										Data: "3",
-									},
-								},
-							},
-							{
-								Type: ElementNode,
-								Data: "i",
-								Attr: []Attribute{
-									{
-										Key: "backslash",
-										Val: `\`,
-									},
-								},
-								Child: []*Node{
-									{
-										Type: TextNode,
-										Data: "&4",
-									},
-								},
-							},
-						},
-					},
-					{
-						Type: TextNode,
-						Data: "5",
-					},
-					{
-						Type: ElementNode,
-						Data: "blockquote",
-					},
-					{
-						Type: ElementNode,
-						Data: "br",
-					},
-					{
-						Type: TextNode,
-						Data: "6",
-					},
-				},
-			},
-		},
-	}
-	want := `<html><head></head><body>0&lt;1<p id="A" foo="abc&quot;def">` +
-		`2<b empty="">3</b><i backslash="\">&amp;4</i></p>` +
-		`5<blockquote></blockquote><br/>6</body></html>`
-	b := new(bytes.Buffer)
-	if err := Render(b, n); err != nil {
-		t.Fatal(err)
-	}
-	if got := b.String(); got != want {
-		t.Errorf("got vs want:\n%s\n%s\n", got, want)
-	}
-}
diff --git a/src/pkg/exp/html/testdata/webkit/README b/src/pkg/exp/html/testdata/webkit/README
deleted file mode 100644
index 9b4c2d8..0000000
--- a/src/pkg/exp/html/testdata/webkit/README
+++ /dev/null
@@ -1,28 +0,0 @@
-The *.dat files in this directory are copied from The WebKit Open Source
-Project, specifically $WEBKITROOT/LayoutTests/html5lib/resources.
-WebKit is licensed under a BSD style license.
-http://webkit.org/coding/bsd-license.html says:
-
-Copyright (C) 2009 Apple Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
-this list of conditions and the following disclaimer in the documentation
-and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS "AS IS" AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
diff --git a/src/pkg/exp/html/testdata/webkit/adoption01.dat b/src/pkg/exp/html/testdata/webkit/adoption01.dat
deleted file mode 100644
index 787e1b0..0000000
--- a/src/pkg/exp/html/testdata/webkit/adoption01.dat
+++ /dev/null
@@ -1,194 +0,0 @@
-#data
-<a><p></a></p>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|     <p>
-|       <a>
-
-#data
-<a>1<p>2</a>3</p>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       "1"
-|     <p>
-|       <a>
-|         "2"
-|       "3"
-
-#data
-<a>1<button>2</a>3</button>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       "1"
-|     <button>
-|       <a>
-|         "2"
-|       "3"
-
-#data
-<a>1<b>2</a>3</b>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       "1"
-|       <b>
-|         "2"
-|     <b>
-|       "3"
-
-#data
-<a>1<div>2<div>3</a>4</div>5</div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       "1"
-|     <div>
-|       <a>
-|         "2"
-|       <div>
-|         <a>
-|           "3"
-|         "4"
-|       "5"
-
-#data
-<table><a>1<p>2</a>3</p>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       "1"
-|     <p>
-|       <a>
-|         "2"
-|       "3"
-|     <table>
-
-#data
-<b><b><a><p></a>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|       <b>
-|         <a>
-|         <p>
-|           <a>
-
-#data
-<b><a><b><p></a>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|       <a>
-|         <b>
-|       <b>
-|         <p>
-|           <a>
-
-#data
-<a><b><b><p></a>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       <b>
-|         <b>
-|     <b>
-|       <b>
-|         <p>
-|           <a>
-
-#data
-<p>1<s id="A">2<b id="B">3</p>4</s>5</b>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <p>
-|       "1"
-|       <s>
-|         id="A"
-|         "2"
-|         <b>
-|           id="B"
-|           "3"
-|     <s>
-|       id="A"
-|       <b>
-|         id="B"
-|         "4"
-|     <b>
-|       id="B"
-|       "5"
-
-#data
-<table><a>1<td>2</td>3</table>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       "1"
-|     <a>
-|       "3"
-|     <table>
-|       <tbody>
-|         <tr>
-|           <td>
-|             "2"
-
-#data
-<table>A<td>B</td>C</table>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "AC"
-|     <table>
-|       <tbody>
-|         <tr>
-|           <td>
-|             "B"
-
-#data
-<a><svg><tr><input></a>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       <svg svg>
-|         <svg tr>
-|           <svg input>
diff --git a/src/pkg/exp/html/testdata/webkit/adoption02.dat b/src/pkg/exp/html/testdata/webkit/adoption02.dat
deleted file mode 100644
index d18151b..0000000
--- a/src/pkg/exp/html/testdata/webkit/adoption02.dat
+++ /dev/null
@@ -1,31 +0,0 @@
-#data
-<b>1<i>2<p>3</b>4
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|       "1"
-|       <i>
-|         "2"
-|     <i>
-|       <p>
-|         <b>
-|           "3"
-|         "4"
-
-#data
-<a><div><style></style><address><a>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|     <div>
-|       <a>
-|         <style>
-|       <address>
-|         <a>
-|         <a>
diff --git a/src/pkg/exp/html/testdata/webkit/comments01.dat b/src/pkg/exp/html/testdata/webkit/comments01.dat
deleted file mode 100644
index 44f1876..0000000
--- a/src/pkg/exp/html/testdata/webkit/comments01.dat
+++ /dev/null
@@ -1,135 +0,0 @@
-#data
-FOO<!-- BAR -->BAZ
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <!--  BAR  -->
-|     "BAZ"
-
-#data
-FOO<!-- BAR --!>BAZ
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <!--  BAR  -->
-|     "BAZ"
-
-#data
-FOO<!-- BAR --   >BAZ
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <!--  BAR --   >BAZ -->
-
-#data
-FOO<!-- BAR -- <QUX> -- MUX -->BAZ
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <!--  BAR -- <QUX> -- MUX  -->
-|     "BAZ"
-
-#data
-FOO<!-- BAR -- <QUX> -- MUX --!>BAZ
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <!--  BAR -- <QUX> -- MUX  -->
-|     "BAZ"
-
-#data
-FOO<!-- BAR -- <QUX> -- MUX -- >BAZ
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <!--  BAR -- <QUX> -- MUX -- >BAZ -->
-
-#data
-FOO<!---->BAZ
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <!--  -->
-|     "BAZ"
-
-#data
-FOO<!--->BAZ
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <!--  -->
-|     "BAZ"
-
-#data
-FOO<!-->BAZ
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <!--  -->
-|     "BAZ"
-
-#data
-<?xml version="1.0">Hi
-#errors
-#document
-| <!-- ?xml version="1.0" -->
-| <html>
-|   <head>
-|   <body>
-|     "Hi"
-
-#data
-<?xml version="1.0">
-#errors
-#document
-| <!-- ?xml version="1.0" -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-<?xml version
-#errors
-#document
-| <!-- ?xml version -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-FOO<!----->BAZ
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <!-- - -->
-|     "BAZ"
diff --git a/src/pkg/exp/html/testdata/webkit/doctype01.dat b/src/pkg/exp/html/testdata/webkit/doctype01.dat
deleted file mode 100644
index ae45732..0000000
--- a/src/pkg/exp/html/testdata/webkit/doctype01.dat
+++ /dev/null
@@ -1,370 +0,0 @@
-#data
-<!DOCTYPE html>Hello
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!dOctYpE HtMl>Hello
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPEhtml>Hello
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE>Hello
-#errors
-#document
-| <!DOCTYPE >
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE >Hello
-#errors
-#document
-| <!DOCTYPE >
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato >Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato taco>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato taco "ddd>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato sYstEM>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato sYstEM    >Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE   potato       sYstEM  ggg>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato SYSTEM taco  >Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato SYSTEM 'taco"'>Hello
-#errors
-#document
-| <!DOCTYPE potato "" "taco"">
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato SYSTEM "taco">Hello
-#errors
-#document
-| <!DOCTYPE potato "" "taco">
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato SYSTEM "tai'co">Hello
-#errors
-#document
-| <!DOCTYPE potato "" "tai'co">
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato SYSTEMtaco "ddd">Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato grass SYSTEM taco>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato pUbLIc>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato pUbLIc >Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato pUbLIcgoof>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato PUBLIC goof>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato PUBLIC "go'of">Hello
-#errors
-#document
-| <!DOCTYPE potato "go'of" "">
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato PUBLIC 'go'of'>Hello
-#errors
-#document
-| <!DOCTYPE potato "go" "">
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato PUBLIC 'go:hh   of' >Hello
-#errors
-#document
-| <!DOCTYPE potato "go:hh   of" "">
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE potato PUBLIC "W3C-//dfdf" SYSTEM ggg>Hello
-#errors
-#document
-| <!DOCTYPE potato "W3C-//dfdf" "">
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-   "http://www.w3.org/TR/html4/strict.dtd">Hello
-#errors
-#document
-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE ...>Hello
-#errors
-#document
-| <!DOCTYPE ...>
-| <html>
-|   <head>
-|   <body>
-|     "Hello"
-
-#data
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-#errors
-#document
-| <!DOCTYPE html "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-| <html>
-|   <head>
-|   <body>
-
-#data
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
-#errors
-#document
-| <!DOCTYPE html "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
-| <html>
-|   <head>
-|   <body>
-
-#data
-<!DOCTYPE root-element [SYSTEM OR PUBLIC FPI] "uri" [ 
-<!-- internal declarations -->
-]>
-#errors
-#document
-| <!DOCTYPE root-element>
-| <html>
-|   <head>
-|   <body>
-|     "]>"
-
-#data
-<!DOCTYPE html PUBLIC
-  "-//WAPFORUM//DTD XHTML Mobile 1.0//EN"
-    "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
-#errors
-#document
-| <!DOCTYPE html "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
-| <html>
-|   <head>
-|   <body>
-
-#data
-<!DOCTYPE HTML SYSTEM "http://www.w3.org/DTD/HTML4-strict.dtd"><body><b>Mine!</b></body>
-#errors
-#document
-| <!DOCTYPE html "" "http://www.w3.org/DTD/HTML4-strict.dtd">
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|       "Mine!"
-
-#data
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
-#errors
-#document
-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-| <html>
-|   <head>
-|   <body>
-
-#data
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'http://www.w3.org/TR/html4/strict.dtd'>
-#errors
-#document
-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-| <html>
-|   <head>
-|   <body>
-
-#data
-<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01//EN"'http://www.w3.org/TR/html4/strict.dtd'>
-#errors
-#document
-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-| <html>
-|   <head>
-|   <body>
-
-#data
-<!DOCTYPE HTML PUBLIC'-//W3C//DTD HTML 4.01//EN''http://www.w3.org/TR/html4/strict.dtd'>
-#errors
-#document
-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-| <html>
-|   <head>
-|   <body>
diff --git a/src/pkg/exp/html/testdata/webkit/entities01.dat b/src/pkg/exp/html/testdata/webkit/entities01.dat
deleted file mode 100644
index c8073b7..0000000
--- a/src/pkg/exp/html/testdata/webkit/entities01.dat
+++ /dev/null
@@ -1,603 +0,0 @@
-#data
-FOO&gt;BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO>BAR"
-
-#data
-FOO&gtBAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO>BAR"
-
-#data
-FOO&gt BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO> BAR"
-
-#data
-FOO&gt;;;BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO>;;BAR"
-
-#data
-I'm &notit; I tell you
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "I'm ¬it; I tell you"
-
-#data
-I'm &notin; I tell you
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "I'm ∉ I tell you"
-
-#data
-FOO& BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO& BAR"
-
-#data
-FOO&<BAR>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO&"
-|     <bar>
-
-#data
-FOO&&&&gt;BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO&&&>BAR"
-
-#data
-FOO&#41;BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO)BAR"
-
-#data
-FOO&#x41;BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOABAR"
-
-#data
-FOO&#X41;BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOABAR"
-
-#data
-FOO&#BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO&#BAR"
-
-#data
-FOO&#ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO&#ZOO"
-
-#data
-FOO&#xBAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOºR"
-
-#data
-FOO&#xZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO&#xZOO"
-
-#data
-FOO&#XZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO&#XZOO"
-
-#data
-FOO&#41BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO)BAR"
-
-#data
-FOO&#x41BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO䆺R"
-
-#data
-FOO&#x41ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOAZOO"
-
-#data
-FOO&#x0000;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO�ZOO"
-
-#data
-FOO&#x0078;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOxZOO"
-
-#data
-FOO&#x0079;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOyZOO"
-
-#data
-FOO&#x0080;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO€ZOO"
-
-#data
-FOO&#x0081;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOZOO"
-
-#data
-FOO&#x0082;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO‚ZOO"
-
-#data
-FOO&#x0083;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOƒZOO"
-
-#data
-FOO&#x0084;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO„ZOO"
-
-#data
-FOO&#x0085;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO…ZOO"
-
-#data
-FOO&#x0086;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO†ZOO"
-
-#data
-FOO&#x0087;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO‡ZOO"
-
-#data
-FOO&#x0088;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOˆZOO"
-
-#data
-FOO&#x0089;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO‰ZOO"
-
-#data
-FOO&#x008A;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOŠZOO"
-
-#data
-FOO&#x008B;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO‹ZOO"
-
-#data
-FOO&#x008C;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOŒZOO"
-
-#data
-FOO&#x008D;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOZOO"
-
-#data
-FOO&#x008E;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOŽZOO"
-
-#data
-FOO&#x008F;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOZOO"
-
-#data
-FOO&#x0090;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOZOO"
-
-#data
-FOO&#x0091;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO‘ZOO"
-
-#data
-FOO&#x0092;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO’ZOO"
-
-#data
-FOO&#x0093;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO“ZOO"
-
-#data
-FOO&#x0094;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO”ZOO"
-
-#data
-FOO&#x0095;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO•ZOO"
-
-#data
-FOO&#x0096;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO–ZOO"
-
-#data
-FOO&#x0097;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO—ZOO"
-
-#data
-FOO&#x0098;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO˜ZOO"
-
-#data
-FOO&#x0099;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO™ZOO"
-
-#data
-FOO&#x009A;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOšZOO"
-
-#data
-FOO&#x009B;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO›ZOO"
-
-#data
-FOO&#x009C;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOœZOO"
-
-#data
-FOO&#x009D;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOZOO"
-
-#data
-FOO&#x009E;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOžZOO"
-
-#data
-FOO&#x009F;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOŸZOO"
-
-#data
-FOO&#x00A0;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO ZOO"
-
-#data
-FOO&#xD7FF;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO퟿ZOO"
-
-#data
-FOO&#xD800;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO�ZOO"
-
-#data
-FOO&#xD801;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO�ZOO"
-
-#data
-FOO&#xDFFE;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO�ZOO"
-
-#data
-FOO&#xDFFF;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO�ZOO"
-
-#data
-FOO&#xE000;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOOZOO"
-
-#data
-FOO&#x10FFFE;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO􏿾ZOO"
-
-#data
-FOO&#x1087D4;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO􈟔ZOO"
-
-#data
-FOO&#x10FFFF;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO􏿿ZOO"
-
-#data
-FOO&#x110000;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO�ZOO"
-
-#data
-FOO&#xFFFFFF;ZOO
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO�ZOO"
diff --git a/src/pkg/exp/html/testdata/webkit/entities02.dat b/src/pkg/exp/html/testdata/webkit/entities02.dat
deleted file mode 100644
index e2fb42a..0000000
--- a/src/pkg/exp/html/testdata/webkit/entities02.dat
+++ /dev/null
@@ -1,249 +0,0 @@
-#data
-<div bar="ZZ&gt;YY"></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ>YY"
-
-#data
-<div bar="ZZ&"></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ&"
-
-#data
-<div bar='ZZ&'></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ&"
-
-#data
-<div bar=ZZ&></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ&"
-
-#data
-<div bar="ZZ&gt=YY"></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ&gt=YY"
-
-#data
-<div bar="ZZ&gt0YY"></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ&gt0YY"
-
-#data
-<div bar="ZZ&gt9YY"></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ&gt9YY"
-
-#data
-<div bar="ZZ&gtaYY"></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ&gtaYY"
-
-#data
-<div bar="ZZ&gtZYY"></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ&gtZYY"
-
-#data
-<div bar="ZZ&gt YY"></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ> YY"
-
-#data
-<div bar="ZZ&gt"></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ>"
-
-#data
-<div bar='ZZ&gt'></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ>"
-
-#data
-<div bar=ZZ&gt></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ>"
-
-#data
-<div bar="ZZ&pound_id=23"></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ£_id=23"
-
-#data
-<div bar="ZZ&prod_id=23"></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ&prod_id=23"
-
-#data
-<div bar="ZZ&pound;_id=23"></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ£_id=23"
-
-#data
-<div bar="ZZ&prod;_id=23"></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ∏_id=23"
-
-#data
-<div bar="ZZ&pound=23"></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ&pound=23"
-
-#data
-<div bar="ZZ&prod=23"></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       bar="ZZ&prod=23"
-
-#data
-<div>ZZ&pound_id=23</div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       "ZZ£_id=23"
-
-#data
-<div>ZZ&prod_id=23</div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       "ZZ&prod_id=23"
-
-#data
-<div>ZZ&pound;_id=23</div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       "ZZ£_id=23"
-
-#data
-<div>ZZ&prod;_id=23</div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       "ZZ∏_id=23"
-
-#data
-<div>ZZ&pound=23</div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       "ZZ£=23"
-
-#data
-<div>ZZ&prod=23</div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       "ZZ&prod=23"
diff --git a/src/pkg/exp/html/testdata/webkit/html5test-com.dat b/src/pkg/exp/html/testdata/webkit/html5test-com.dat
deleted file mode 100644
index d7cb71d..0000000
--- a/src/pkg/exp/html/testdata/webkit/html5test-com.dat
+++ /dev/null
@@ -1,246 +0,0 @@
-#data
-<div<div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div<div>
-
-#data
-<div foo<bar=''>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       foo<bar=""
-
-#data
-<div foo=`bar`>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       foo="`bar`"
-
-#data
-<div \"foo=''>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       \"foo=""
-
-#data
-<a href='\nbar'></a>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       href="\nbar"
-
-#data
-<!DOCTYPE html>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-
-#data
-&lang;&rang;
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "⟨⟩"
-
-#data
-&apos;
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "'"
-
-#data
-&ImaginaryI;
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "ⅈ"
-
-#data
-&Kopf;
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "𝕂"
-
-#data
-&notinva;
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "∉"
-
-#data
-<?import namespace="foo" implementation="#bar">
-#errors
-#document
-| <!-- ?import namespace="foo" implementation="#bar" -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-<!--foo--bar-->
-#errors
-#document
-| <!-- foo--bar -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-<![CDATA[x]]>
-#errors
-#document
-| <!-- [CDATA[x]] -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-<textarea><!--</textarea>--></textarea>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <textarea>
-|       "<!--"
-|     "-->"
-
-#data
-<textarea><!--</textarea>-->
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <textarea>
-|       "<!--"
-|     "-->"
-
-#data
-<style><!--</style>--></style>
-#errors
-#document
-| <html>
-|   <head>
-|     <style>
-|       "<!--"
-|   <body>
-|     "-->"
-
-#data
-<style><!--</style>-->
-#errors
-#document
-| <html>
-|   <head>
-|     <style>
-|       "<!--"
-|   <body>
-|     "-->"
-
-#data
-<ul><li>A </li> <li>B</li></ul>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <ul>
-|       <li>
-|         "A "
-|       " "
-|       <li>
-|         "B"
-
-#data
-<table><form><input type=hidden><input></form><div></div></table>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <input>
-|     <div>
-|     <table>
-|       <form>
-|       <input>
-|         type="hidden"
-
-#data
-<i>A<b>B<p></i>C</b>D
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <i>
-|       "A"
-|       <b>
-|         "B"
-|     <b>
-|     <p>
-|       <b>
-|         <i>
-|         "C"
-|       "D"
-
-#data
-<div></div>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-
-#data
-<svg></svg>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-
-#data
-<math></math>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
diff --git a/src/pkg/exp/html/testdata/webkit/inbody01.dat b/src/pkg/exp/html/testdata/webkit/inbody01.dat
deleted file mode 100644
index 3f2bd37..0000000
--- a/src/pkg/exp/html/testdata/webkit/inbody01.dat
+++ /dev/null
@@ -1,43 +0,0 @@
-#data
-<button>1</foo>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <button>
-|       "1"
-
-#data
-<foo>1<p>2</foo>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <foo>
-|       "1"
-|       <p>
-|         "2"
-
-#data
-<dd>1</foo>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <dd>
-|       "1"
-
-#data
-<foo>1<dd>2</foo>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <foo>
-|       "1"
-|       <dd>
-|         "2"
diff --git a/src/pkg/exp/html/testdata/webkit/isindex.dat b/src/pkg/exp/html/testdata/webkit/isindex.dat
deleted file mode 100644
index 88325ff..0000000
--- a/src/pkg/exp/html/testdata/webkit/isindex.dat
+++ /dev/null
@@ -1,40 +0,0 @@
-#data
-<isindex>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <form>
-|       <hr>
-|       <label>
-|         "This is a searchable index. Enter search keywords: "
-|         <input>
-|           name="isindex"
-|       <hr>
-
-#data
-<isindex name="A" action="B" prompt="C" foo="D">
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <form>
-|       action="B"
-|       <hr>
-|       <label>
-|         "C"
-|         <input>
-|           foo="D"
-|           name="isindex"
-|       <hr>
-
-#data
-<form><isindex>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <form>
diff --git a/src/pkg/exp/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat b/src/pkg/exp/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat
deleted file mode 100644
index a5ebb1e..0000000
--- a/src/pkg/exp/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat
+++ /dev/null
Binary files differ
diff --git a/src/pkg/exp/html/testdata/webkit/pending-spec-changes.dat b/src/pkg/exp/html/testdata/webkit/pending-spec-changes.dat
deleted file mode 100644
index e00ee85..0000000
--- a/src/pkg/exp/html/testdata/webkit/pending-spec-changes.dat
+++ /dev/null
@@ -1,28 +0,0 @@
-#data
-<input type="hidden"><frameset>
-#errors
-21: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
-31: “frameset” start tag seen.
-31: End of file seen and there were open elements.
-#document
-| <html>
-|   <head>
-|   <frameset>
-
-#data
-<!DOCTYPE html><table><caption><svg>foo</table>bar
-#errors
-47: End tag “table” did not match the name of the current open element (“svg”).
-47: “table” closed but “caption” was still open.
-47: End tag “table” seen, but there were open elements.
-36: Unclosed element “svg”.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <caption>
-|         <svg svg>
-|           "foo"
-|     "bar"
diff --git a/src/pkg/exp/html/testdata/webkit/plain-text-unsafe.dat b/src/pkg/exp/html/testdata/webkit/plain-text-unsafe.dat
deleted file mode 100644
index 2f40e83..0000000
--- a/src/pkg/exp/html/testdata/webkit/plain-text-unsafe.dat
+++ /dev/null
Binary files differ
diff --git a/src/pkg/exp/html/testdata/webkit/scriptdata01.dat b/src/pkg/exp/html/testdata/webkit/scriptdata01.dat
deleted file mode 100644
index 76b67f4..0000000
--- a/src/pkg/exp/html/testdata/webkit/scriptdata01.dat
+++ /dev/null
@@ -1,308 +0,0 @@
-#data
-FOO<script>'Hello'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       "'Hello'"
-|     "BAR"
-
-#data
-FOO<script></script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|     "BAR"
-
-#data
-FOO<script></script >BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|     "BAR"
-
-#data
-FOO<script></script/>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|     "BAR"
-
-#data
-FOO<script></script/ >BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|     "BAR"
-
-#data
-FOO<script type="text/plain"></scriptx>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       type="text/plain"
-|       "</scriptx>BAR"
-
-#data
-FOO<script></script foo=">" dd>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|     "BAR"
-
-#data
-FOO<script>'<'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       "'<'"
-|     "BAR"
-
-#data
-FOO<script>'<!'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       "'<!'"
-|     "BAR"
-
-#data
-FOO<script>'<!-'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       "'<!-'"
-|     "BAR"
-
-#data
-FOO<script>'<!--'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       "'<!--'"
-|     "BAR"
-
-#data
-FOO<script>'<!---'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       "'<!---'"
-|     "BAR"
-
-#data
-FOO<script>'<!-->'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       "'<!-->'"
-|     "BAR"
-
-#data
-FOO<script>'<!-->'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       "'<!-->'"
-|     "BAR"
-
-#data
-FOO<script>'<!-- potato'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       "'<!-- potato'"
-|     "BAR"
-
-#data
-FOO<script>'<!-- <sCrIpt'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       "'<!-- <sCrIpt'"
-|     "BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt>'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       type="text/plain"
-|       "'<!-- <sCrIpt>'</script>BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt> -'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       type="text/plain"
-|       "'<!-- <sCrIpt> -'</script>BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt> --'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       type="text/plain"
-|       "'<!-- <sCrIpt> --'</script>BAR"
-
-#data
-FOO<script>'<!-- <sCrIpt> -->'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       "'<!-- <sCrIpt> -->'"
-|     "BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt> --!>'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       type="text/plain"
-|       "'<!-- <sCrIpt> --!>'</script>BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt> -- >'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       type="text/plain"
-|       "'<!-- <sCrIpt> -- >'</script>BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt '</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       type="text/plain"
-|       "'<!-- <sCrIpt '</script>BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt/'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       type="text/plain"
-|       "'<!-- <sCrIpt/'</script>BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt\'</script>BAR
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       type="text/plain"
-|       "'<!-- <sCrIpt\'"
-|     "BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt/'</script>BAR</script>QUX
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "FOO"
-|     <script>
-|       type="text/plain"
-|       "'<!-- <sCrIpt/'</script>BAR"
-|     "QUX"
diff --git a/src/pkg/exp/html/testdata/webkit/scripted/adoption01.dat b/src/pkg/exp/html/testdata/webkit/scripted/adoption01.dat
deleted file mode 100644
index 4e08d0e..0000000
--- a/src/pkg/exp/html/testdata/webkit/scripted/adoption01.dat
+++ /dev/null
@@ -1,15 +0,0 @@
-#data
-<p><b id="A"><script>document.getElementById("A").id = "B"</script></p>TEXT</b>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <p>
-|       <b>
-|         id="B"
-|         <script>
-|           "document.getElementById("A").id = "B""
-|     <b>
-|       id="A"
-|       "TEXT"
diff --git a/src/pkg/exp/html/testdata/webkit/scripted/webkit01.dat b/src/pkg/exp/html/testdata/webkit/scripted/webkit01.dat
deleted file mode 100644
index ef4a41c..0000000
--- a/src/pkg/exp/html/testdata/webkit/scripted/webkit01.dat
+++ /dev/null
@@ -1,28 +0,0 @@
-#data
-1<script>document.write("2")</script>3
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "1"
-|     <script>
-|       "document.write("2")"
-|     "23"
-
-#data
-1<script>document.write("<script>document.write('2')</scr"+ "ipt><script>document.write('3')</scr" + "ipt>")</script>4
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "1"
-|     <script>
-|       "document.write("<script>document.write('2')</scr"+ "ipt><script>document.write('3')</scr" + "ipt>")"
-|     <script>
-|       "document.write('2')"
-|     "2"
-|     <script>
-|       "document.write('3')"
-|     "34"
diff --git a/src/pkg/exp/html/testdata/webkit/tables01.dat b/src/pkg/exp/html/testdata/webkit/tables01.dat
deleted file mode 100644
index 88ef1fe..0000000
--- a/src/pkg/exp/html/testdata/webkit/tables01.dat
+++ /dev/null
@@ -1,197 +0,0 @@
-#data
-<table><th>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <tbody>
-|         <tr>
-|           <th>
-
-#data
-<table><td>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <tbody>
-|         <tr>
-|           <td>
-
-#data
-<table><col foo='bar'>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <colgroup>
-|         <col>
-|           foo="bar"
-
-#data
-<table><colgroup></html>foo
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     "foo"
-|     <table>
-|       <colgroup>
-
-#data
-<table></table><p>foo
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|     <p>
-|       "foo"
-
-#data
-<table></body></caption></col></colgroup></html></tbody></td></tfoot></th></thead></tr><td>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <tbody>
-|         <tr>
-|           <td>
-
-#data
-<table><select><option>3</select></table>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <select>
-|       <option>
-|         "3"
-|     <table>
-
-#data
-<table><select><table></table></select></table>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <select>
-|     <table>
-|     <table>
-
-#data
-<table><select></table>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <select>
-|     <table>
-
-#data
-<table><select><option>A<tr><td>B</td></tr></table>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <select>
-|       <option>
-|         "A"
-|     <table>
-|       <tbody>
-|         <tr>
-|           <td>
-|             "B"
-
-#data
-<table><td></body></caption></col></colgroup></html>foo
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <tbody>
-|         <tr>
-|           <td>
-|             "foo"
-
-#data
-<table><td>A</table>B
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <tbody>
-|         <tr>
-|           <td>
-|             "A"
-|     "B"
-
-#data
-<table><tr><caption>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <tbody>
-|         <tr>
-|       <caption>
-
-#data
-<table><tr></body></caption></col></colgroup></html></td></th><td>foo
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <tbody>
-|         <tr>
-|           <td>
-|             "foo"
-
-#data
-<table><td><tr>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <tbody>
-|         <tr>
-|           <td>
-|         <tr>
-
-#data
-<table><td><button><td>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <tbody>
-|         <tr>
-|           <td>
-|             <button>
-|           <td>
diff --git a/src/pkg/exp/html/testdata/webkit/tests1.dat b/src/pkg/exp/html/testdata/webkit/tests1.dat
deleted file mode 100644
index cbf8bdd..0000000
--- a/src/pkg/exp/html/testdata/webkit/tests1.dat
+++ /dev/null
@@ -1,1952 +0,0 @@
-#data
-Test
-#errors
-Line: 1 Col: 4 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-|     "Test"
-
-#data
-<p>One<p>Two
-#errors
-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <p>
-|       "One"
-|     <p>
-|       "Two"
-
-#data
-Line1<br>Line2<br>Line3<br>Line4
-#errors
-Line: 1 Col: 5 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-|     "Line1"
-|     <br>
-|     "Line2"
-|     <br>
-|     "Line3"
-|     <br>
-|     "Line4"
-
-#data
-<html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-<head>
-#errors
-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-<body>
-#errors
-Line: 1 Col: 6 Unexpected start tag (body). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-<html><head>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-<html><head></head>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-<html><head></head><body>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-<html><head></head><body></body>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-<html><head><body></body></html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-<html><head></body></html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-Line: 1 Col: 19 Unexpected end tag (body).
-Line: 1 Col: 26 Unexpected end tag (html).
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-<html><head><body></html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-<html><body></html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-<body></html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (body). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-<head></html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
-Line: 1 Col: 13 Unexpected end tag (html). Ignored.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-</head>
-#errors
-Line: 1 Col: 7 Unexpected end tag (head). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-</body>
-#errors
-Line: 1 Col: 7 Unexpected end tag (body). Expected DOCTYPE.
-Line: 1 Col: 7 Unexpected end tag (body) after the (implied) root element.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-</html>
-#errors
-Line: 1 Col: 7 Unexpected end tag (html). Expected DOCTYPE.
-Line: 1 Col: 7 Unexpected end tag (html) after the (implied) root element.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-<b><table><td><i></table>
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 25 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 25 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|       <table>
-|         <tbody>
-|           <tr>
-|             <td>
-|               <i>
-
-#data
-<b><table><td></b><i></table>X
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 18 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 29 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 30 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|       <table>
-|         <tbody>
-|           <tr>
-|             <td>
-|               <i>
-|       "X"
-
-#data
-<h1>Hello<h2>World
-#errors
-4: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
-13: Heading cannot be a child of another heading.
-18: End of file seen and there were open elements.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <h1>
-|       "Hello"
-|     <h2>
-|       "World"
-
-#data
-<a><p>X<a>Y</a>Z</p></a>
-#errors
-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 10 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 10 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 24 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|     <p>
-|       <a>
-|         "X"
-|       <a>
-|         "Y"
-|       "Z"
-
-#data
-<b><button>foo</b>bar
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 15 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|     <button>
-|       <b>
-|         "foo"
-|       "bar"
-
-#data
-<!DOCTYPE html><span><button>foo</span>bar
-#errors
-39: End tag “span” seen but there were unclosed elements.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <span>
-|       <button>
-|         "foobar"
-
-#data
-<p><b><div><marquee></p></b></div>X
-#errors
-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected end tag (p). Ignored.
-Line: 1 Col: 24 Unexpected end tag (p). Ignored.
-Line: 1 Col: 28 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 34 End tag (div) seen too early. Expected other end tag.
-Line: 1 Col: 35 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <p>
-|       <b>
-|     <div>
-|       <b>
-|         <marquee>
-|           <p>
-|           "X"
-
-#data
-<script><div></script></div><title><p></title><p><p>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 28 Unexpected end tag (div). Ignored.
-#document
-| <html>
-|   <head>
-|     <script>
-|       "<div>"
-|     <title>
-|       "<p>"
-|   <body>
-|     <p>
-|     <p>
-
-#data
-<!--><div>--<!-->
-#errors
-Line: 1 Col: 5 Incorrect comment.
-Line: 1 Col: 10 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 17 Incorrect comment.
-Line: 1 Col: 17 Expected closing tag. Unexpected end of file.
-#document
-| <!--  -->
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       "--"
-|       <!--  -->
-
-#data
-<p><hr></p>
-#errors
-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected end tag (p). Ignored.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <p>
-|     <hr>
-|     <p>
-
-#data
-<select><b><option><select><option></b></select>X
-#errors
-Line: 1 Col: 8 Unexpected start tag (select). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected start tag token (b) in the select phase. Ignored.
-Line: 1 Col: 27 Unexpected select start tag in the select phase treated as select end tag.
-Line: 1 Col: 39 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 48 Unexpected end tag (select). Ignored.
-Line: 1 Col: 49 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <select>
-|       <option>
-|     <option>
-|       "X"
-
-#data
-<a><table><td><a><table></table><a></tr><a></table><b>X</b>C<a>Y
-#errors
-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 35 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 40 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 43 Unexpected start tag (a) in table context caused voodoo mode.
-Line: 1 Col: 43 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 43 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 51 Unexpected implied end tag (a) in the table phase.
-Line: 1 Col: 63 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 64 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       <a>
-|       <table>
-|         <tbody>
-|           <tr>
-|             <td>
-|               <a>
-|                 <table>
-|               <a>
-|     <a>
-|       <b>
-|         "X"
-|       "C"
-|     <a>
-|       "Y"
-
-#data
-<a X>0<b>1<a Y>2
-#errors
-Line: 1 Col: 5 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 15 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 15 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 16 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       x=""
-|       "0"
-|       <b>
-|         "1"
-|     <b>
-|       <a>
-|         y=""
-|         "2"
-
-#data
-<!-----><font><div>hello<table>excite!<b>me!<th><i>please!</tr><!--X-->
-#errors
-Line: 1 Col: 7 Unexpected '-' after '--' found in comment.
-Line: 1 Col: 14 Unexpected start tag (font). Expected DOCTYPE.
-Line: 1 Col: 38 Unexpected non-space characters in table context caused voodoo mode.
-Line: 1 Col: 41 Unexpected start tag (b) in table context caused voodoo mode.
-Line: 1 Col: 48 Unexpected implied end tag (b) in the table phase.
-Line: 1 Col: 48 Unexpected table cell start tag (th) in the table body phase.
-Line: 1 Col: 63 Got table cell end tag (th) while required end tags are missing.
-Line: 1 Col: 71 Unexpected end of file. Expected table content.
-#document
-| <!-- - -->
-| <html>
-|   <head>
-|   <body>
-|     <font>
-|       <div>
-|         "helloexcite!"
-|         <b>
-|           "me!"
-|         <table>
-|           <tbody>
-|             <tr>
-|               <th>
-|                 <i>
-|                   "please!"
-|             <!-- X -->
-
-#data
-<!DOCTYPE html><li>hello<li>world<ul>how<li>do</ul>you</body><!--do-->
-#errors
-Line: 1 Col: 61 Unexpected end tag (li). Missing end tag (body).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <li>
-|       "hello"
-|     <li>
-|       "world"
-|       <ul>
-|         "how"
-|         <li>
-|           "do"
-|       "you"
-|   <!-- do -->
-
-#data
-<!DOCTYPE html>A<option>B<optgroup>C<select>D</option>E
-#errors
-Line: 1 Col: 54 Unexpected end tag (option) in the select phase. Ignored.
-Line: 1 Col: 55 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     "A"
-|     <option>
-|       "B"
-|     <optgroup>
-|       "C"
-|       <select>
-|         "DE"
-
-#data
-<
-#errors
-Line: 1 Col: 1 Expected tag name. Got something else instead
-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-|     "<"
-
-#data
-<#
-#errors
-Line: 1 Col: 1 Expected tag name. Got something else instead
-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-|     "<#"
-
-#data
-</
-#errors
-Line: 1 Col: 2 Expected closing tag. Unexpected end of file.
-Line: 1 Col: 2 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-|     "</"
-
-#data
-</#
-#errors
-Line: 1 Col: 2 Expected closing tag. Unexpected character '#' found.
-Line: 1 Col: 3 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- # -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-<?
-#errors
-Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)
-Line: 1 Col: 2 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- ? -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-<?#
-#errors
-Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)
-Line: 1 Col: 3 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- ?# -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-<!
-#errors
-Line: 1 Col: 2 Expected '--' or 'DOCTYPE'. Not found.
-Line: 1 Col: 2 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!--  -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-<!#
-#errors
-Line: 1 Col: 3 Expected '--' or 'DOCTYPE'. Not found.
-Line: 1 Col: 3 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- # -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-<?COMMENT?>
-#errors
-Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)
-Line: 1 Col: 11 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- ?COMMENT? -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-<!COMMENT>
-#errors
-Line: 1 Col: 2 Expected '--' or 'DOCTYPE'. Not found.
-Line: 1 Col: 10 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- COMMENT -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-</ COMMENT >
-#errors
-Line: 1 Col: 2 Expected closing tag. Unexpected character ' ' found.
-Line: 1 Col: 12 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!--  COMMENT  -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-<?COM--MENT?>
-#errors
-Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)
-Line: 1 Col: 13 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- ?COM--MENT? -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-<!COM--MENT>
-#errors
-Line: 1 Col: 2 Expected '--' or 'DOCTYPE'. Not found.
-Line: 1 Col: 12 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- COM--MENT -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-</ COM--MENT >
-#errors
-Line: 1 Col: 2 Expected closing tag. Unexpected character ' ' found.
-Line: 1 Col: 14 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!--  COM--MENT  -->
-| <html>
-|   <head>
-|   <body>
-
-#data
-<!DOCTYPE html><style> EOF
-#errors
-Line: 1 Col: 26 Unexpected end of file. Expected end tag (style).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <style>
-|       " EOF"
-|   <body>
-
-#data
-<!DOCTYPE html><script> <!-- </script> --> </script> EOF
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       " <!-- "
-|     " "
-|   <body>
-|     "-->  EOF"
-
-#data
-<b><p></b>TEST
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 10 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|     <p>
-|       <b>
-|       "TEST"
-
-#data
-<p id=a><b><p id=b></b>TEST
-#errors
-Line: 1 Col: 8 Unexpected start tag (p). Expected DOCTYPE.
-Line: 1 Col: 19 Unexpected end tag (p). Ignored.
-Line: 1 Col: 23 End tag (b) violates step 1, paragraph 2 of the adoption agency algorithm.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <p>
-|       id="a"
-|       <b>
-|     <p>
-|       id="b"
-|       "TEST"
-
-#data
-<b id=a><p><b id=b></p></b>TEST
-#errors
-Line: 1 Col: 8 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 23 Unexpected end tag (p). Ignored.
-Line: 1 Col: 27 End tag (b) violates step 1, paragraph 2 of the adoption agency algorithm.
-Line: 1 Col: 31 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|       id="a"
-|       <p>
-|         <b>
-|           id="b"
-|       "TEST"
-
-#data
-<!DOCTYPE html><title>U-test</title><body><div><p>Test<u></p></div></body>
-#errors
-Line: 1 Col: 61 Unexpected end tag (p). Ignored.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <title>
-|       "U-test"
-|   <body>
-|     <div>
-|       <p>
-|         "Test"
-|         <u>
-
-#data
-<!DOCTYPE html><font><table></font></table></font>
-#errors
-Line: 1 Col: 35 Unexpected end tag (font) in table context caused voodoo mode.
-Line: 1 Col: 35 End tag (font) violates step 1, paragraph 1 of the adoption agency algorithm.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <font>
-|       <table>
-
-#data
-<font><p>hello<b>cruel</font>world
-#errors
-Line: 1 Col: 6 Unexpected start tag (font). Expected DOCTYPE.
-Line: 1 Col: 29 End tag (font) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 29 End tag (font) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 34 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <font>
-|     <p>
-|       <font>
-|         "hello"
-|         <b>
-|           "cruel"
-|       <b>
-|         "world"
-
-#data
-<b>Test</i>Test
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 11 End tag (i) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 15 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|       "TestTest"
-
-#data
-<b>A<cite>B<div>C
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 17 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|       "A"
-|       <cite>
-|         "B"
-|         <div>
-|           "C"
-
-#data
-<b>A<cite>B<div>C</cite>D
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 24 Unexpected end tag (cite). Ignored.
-Line: 1 Col: 25 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|       "A"
-|       <cite>
-|         "B"
-|         <div>
-|           "CD"
-
-#data
-<b>A<cite>B<div>C</b>D
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 21 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 22 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|       "A"
-|       <cite>
-|         "B"
-|     <div>
-|       <b>
-|         "C"
-|       "D"
-
-#data
-
-#errors
-Line: 1 Col: 0 Unexpected End of file. Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-
-#data
-<DIV>
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 5 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-
-#data
-<DIV> abc
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 9 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       " abc"
-
-#data
-<DIV> abc <B>
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 13 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       " abc "
-|       <b>
-
-#data
-<DIV> abc <B> def
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 17 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       " abc "
-|       <b>
-|         " def"
-
-#data
-<DIV> abc <B> def <I>
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 21 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       " abc "
-|       <b>
-|         " def "
-|         <i>
-
-#data
-<DIV> abc <B> def <I> ghi
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 25 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       " abc "
-|       <b>
-|         " def "
-|         <i>
-|           " ghi"
-
-#data
-<DIV> abc <B> def <I> ghi <P>
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 29 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       " abc "
-|       <b>
-|         " def "
-|         <i>
-|           " ghi "
-|           <p>
-
-#data
-<DIV> abc <B> def <I> ghi <P> jkl
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 33 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       " abc "
-|       <b>
-|         " def "
-|         <i>
-|           " ghi "
-|           <p>
-|             " jkl"
-
-#data
-<DIV> abc <B> def <I> ghi <P> jkl </B>
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 38 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       " abc "
-|       <b>
-|         " def "
-|         <i>
-|           " ghi "
-|       <i>
-|         <p>
-|           <b>
-|             " jkl "
-
-#data
-<DIV> abc <B> def <I> ghi <P> jkl </B> mno
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 42 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       " abc "
-|       <b>
-|         " def "
-|         <i>
-|           " ghi "
-|       <i>
-|         <p>
-|           <b>
-|             " jkl "
-|           " mno"
-
-#data
-<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I>
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 47 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       " abc "
-|       <b>
-|         " def "
-|         <i>
-|           " ghi "
-|       <i>
-|       <p>
-|         <i>
-|           <b>
-|             " jkl "
-|           " mno "
-
-#data
-<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I> pqr
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 51 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       " abc "
-|       <b>
-|         " def "
-|         <i>
-|           " ghi "
-|       <i>
-|       <p>
-|         <i>
-|           <b>
-|             " jkl "
-|           " mno "
-|         " pqr"
-
-#data
-<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I> pqr </P>
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 56 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       " abc "
-|       <b>
-|         " def "
-|         <i>
-|           " ghi "
-|       <i>
-|       <p>
-|         <i>
-|           <b>
-|             " jkl "
-|           " mno "
-|         " pqr "
-
-#data
-<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I> pqr </P> stu
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 60 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       " abc "
-|       <b>
-|         " def "
-|         <i>
-|           " ghi "
-|       <i>
-|       <p>
-|         <i>
-|           <b>
-|             " jkl "
-|           " mno "
-|         " pqr "
-|       " stu"
-
-#data
-<test attribute---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
-#errors
-Line: 1 Col: 1040 Unexpected start tag (test). Expected DOCTYPE.
-Line: 1 Col: 1040 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <test>
-|       attribute----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=""
-
-#data
-<a href="blah">aba<table><a href="foo">br<tr><td></td></tr>x</table>aoe
-#errors
-Line: 1 Col: 15 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 39 Unexpected start tag (a) in table context caused voodoo mode.
-Line: 1 Col: 39 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 39 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 45 Unexpected implied end tag (a) in the table phase.
-Line: 1 Col: 68 Unexpected implied end tag (a) in the table phase.
-Line: 1 Col: 71 Expected closing tag. Unexpected end of file.
-
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       href="blah"
-|       "aba"
-|       <a>
-|         href="foo"
-|         "br"
-|       <a>
-|         href="foo"
-|         "x"
-|       <table>
-|         <tbody>
-|           <tr>
-|             <td>
-|     <a>
-|       href="foo"
-|       "aoe"
-
-#data
-<a href="blah">aba<table><tr><td><a href="foo">br</td></tr>x</table>aoe
-#errors
-Line: 1 Col: 15 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 54 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 60 Unexpected non-space characters in table context caused voodoo mode.
-Line: 1 Col: 71 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       href="blah"
-|       "abax"
-|       <table>
-|         <tbody>
-|           <tr>
-|             <td>
-|               <a>
-|                 href="foo"
-|                 "br"
-|       "aoe"
-
-#data
-<table><a href="blah">aba<tr><td><a href="foo">br</td></tr>x</table>aoe
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 22 Unexpected start tag (a) in table context caused voodoo mode.
-Line: 1 Col: 29 Unexpected implied end tag (a) in the table phase.
-Line: 1 Col: 54 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 68 Unexpected implied end tag (a) in the table phase.
-Line: 1 Col: 71 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       href="blah"
-|       "aba"
-|     <a>
-|       href="blah"
-|       "x"
-|     <table>
-|       <tbody>
-|         <tr>
-|           <td>
-|             <a>
-|               href="foo"
-|               "br"
-|     <a>
-|       href="blah"
-|       "aoe"
-
-#data
-<a href=a>aa<marquee>aa<a href=b>bb</marquee>aa
-#errors
-Line: 1 Col: 10 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 45 End tag (marquee) seen too early. Expected other end tag.
-Line: 1 Col: 47 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       href="a"
-|       "aa"
-|       <marquee>
-|         "aa"
-|         <a>
-|           href="b"
-|           "bb"
-|       "aa"
-
-#data
-<wbr><strike><code></strike><code><strike></code>
-#errors
-Line: 1 Col: 5 Unexpected start tag (wbr). Expected DOCTYPE.
-Line: 1 Col: 28 End tag (strike) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 49 Unexpected end tag (code). Ignored.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <wbr>
-|     <strike>
-|       <code>
-|     <code>
-|       <code>
-|         <strike>
-
-#data
-<!DOCTYPE html><spacer>foo
-#errors
-26: End of file seen and there were open elements.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <spacer>
-|       "foo"
-
-#data
-<title><meta></title><link><title><meta></title>
-#errors
-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|     <title>
-|       "<meta>"
-|     <link>
-|     <title>
-|       "<meta>"
-|   <body>
-
-#data
-<style><!--</style><meta><script>--><link></script>
-#errors
-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
-Line: 1 Col: 51 Unexpected end of file. Expected end tag (style).
-#document
-| <html>
-|   <head>
-|     <style>
-|       "<!--"
-|     <meta>
-|     <script>
-|       "--><link>"
-|   <body>
-
-#data
-<head><meta></head><link>
-#errors
-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
-Line: 1 Col: 25 Unexpected start tag (link) that can be in head. Moved.
-#document
-| <html>
-|   <head>
-|     <meta>
-|     <link>
-|   <body>
-
-#data
-<table><tr><tr><td><td><span><th><span>X</table>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 33 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 48 Got table cell end tag (th) while required end tags are missing.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <tbody>
-|         <tr>
-|         <tr>
-|           <td>
-|           <td>
-|             <span>
-|           <th>
-|             <span>
-|               "X"
-
-#data
-<body><body><base><link><meta><title><p></title><body><p></body>
-#errors
-Line: 1 Col: 6 Unexpected start tag (body). Expected DOCTYPE.
-Line: 1 Col: 12 Unexpected start tag (body).
-Line: 1 Col: 54 Unexpected start tag (body).
-Line: 1 Col: 64 Unexpected end tag (p). Missing end tag (body).
-#document
-| <html>
-|   <head>
-|   <body>
-|     <base>
-|     <link>
-|     <meta>
-|     <title>
-|       "<p>"
-|     <p>
-
-#data
-<textarea><p></textarea>
-#errors
-Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <textarea>
-|       "<p>"
-
-#data
-<p><image></p>
-#errors
-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
-Line: 1 Col: 10 Unexpected start tag (image). Treated as img.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <p>
-|       <img>
-
-#data
-<a><table><a></table><p><a><div><a>
-#errors
-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 13 Unexpected start tag (a) in table context caused voodoo mode.
-Line: 1 Col: 13 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 13 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 21 Unexpected end tag (table). Expected end tag (a).
-Line: 1 Col: 27 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 27 End tag (a) violates step 1, paragraph 2 of the adoption agency algorithm.
-Line: 1 Col: 32 Unexpected end tag (p). Ignored.
-Line: 1 Col: 35 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 35 End tag (a) violates step 1, paragraph 2 of the adoption agency algorithm.
-Line: 1 Col: 35 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       <a>
-|       <table>
-|     <p>
-|       <a>
-|     <div>
-|       <a>
-
-#data
-<head></p><meta><p>
-#errors
-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
-Line: 1 Col: 10 Unexpected end tag (p). Ignored.
-#document
-| <html>
-|   <head>
-|     <meta>
-|   <body>
-|     <p>
-
-#data
-<head></html><meta><p>
-#errors
-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
-Line: 1 Col: 19 Unexpected start tag (meta).
-#document
-| <html>
-|   <head>
-|   <body>
-|     <meta>
-|     <p>
-
-#data
-<b><table><td><i></table>
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 25 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 25 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|       <table>
-|         <tbody>
-|           <tr>
-|             <td>
-|               <i>
-
-#data
-<b><table><td></b><i></table>
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 18 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 29 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 29 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|       <table>
-|         <tbody>
-|           <tr>
-|             <td>
-|               <i>
-
-#data
-<h1><h2>
-#errors
-4: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
-8: Heading cannot be a child of another heading.
-8: End of file seen and there were open elements.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <h1>
-|     <h2>
-
-#data
-<a><p><a></a></p></a>
-#errors
-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 9 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 9 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 21 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|     <p>
-|       <a>
-|       <a>
-
-#data
-<b><button></b></button></b>
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 15 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <b>
-|     <button>
-|       <b>
-
-#data
-<p><b><div><marquee></p></b></div>
-#errors
-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected end tag (p). Ignored.
-Line: 1 Col: 24 Unexpected end tag (p). Ignored.
-Line: 1 Col: 28 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 34 End tag (div) seen too early. Expected other end tag.
-Line: 1 Col: 34 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <p>
-|       <b>
-|     <div>
-|       <b>
-|         <marquee>
-|           <p>
-
-#data
-<script></script></div><title></title><p><p>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 23 Unexpected end tag (div). Ignored.
-#document
-| <html>
-|   <head>
-|     <script>
-|     <title>
-|   <body>
-|     <p>
-|     <p>
-
-#data
-<p><hr></p>
-#errors
-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected end tag (p). Ignored.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <p>
-|     <hr>
-|     <p>
-
-#data
-<select><b><option><select><option></b></select>
-#errors
-Line: 1 Col: 8 Unexpected start tag (select). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected start tag token (b) in the select phase. Ignored.
-Line: 1 Col: 27 Unexpected select start tag in the select phase treated as select end tag.
-Line: 1 Col: 39 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 48 Unexpected end tag (select). Ignored.
-Line: 1 Col: 48 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <select>
-|       <option>
-|     <option>
-
-#data
-<html><head><title></title><body></body></html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|     <title>
-|   <body>
-
-#data
-<a><table><td><a><table></table><a></tr><a></table><a>
-#errors
-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 35 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 40 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 43 Unexpected start tag (a) in table context caused voodoo mode.
-Line: 1 Col: 43 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 43 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 51 Unexpected implied end tag (a) in the table phase.
-Line: 1 Col: 54 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 54 End tag (a) violates step 1, paragraph 2 of the adoption agency algorithm.
-Line: 1 Col: 54 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <a>
-|       <a>
-|       <table>
-|         <tbody>
-|           <tr>
-|             <td>
-|               <a>
-|                 <table>
-|               <a>
-|     <a>
-
-#data
-<ul><li></li><div><li></div><li><li><div><li><address><li><b><em></b><li></ul>
-#errors
-Line: 1 Col: 4 Unexpected start tag (ul). Expected DOCTYPE.
-Line: 1 Col: 45 Missing end tag (div, li).
-Line: 1 Col: 58 Missing end tag (address, li).
-Line: 1 Col: 69 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <ul>
-|       <li>
-|       <div>
-|         <li>
-|       <li>
-|       <li>
-|         <div>
-|       <li>
-|         <address>
-|       <li>
-|         <b>
-|           <em>
-|       <li>
-
-#data
-<ul><li><ul></li><li>a</li></ul></li></ul>
-#errors
-XXX: fix me
-#document
-| <html>
-|   <head>
-|   <body>
-|     <ul>
-|       <li>
-|         <ul>
-|           <li>
-|             "a"
-
-#data
-<frameset><frame><frameset><frame></frameset><noframes></noframes></frameset>
-#errors
-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <frameset>
-|     <frame>
-|     <frameset>
-|       <frame>
-|     <noframes>
-
-#data
-<h1><table><td><h3></table><h3></h1>
-#errors
-4: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
-15: “td” start tag in table body.
-27: Unclosed elements.
-31: Heading cannot be a child of another heading.
-36: End tag “h1” seen but there were unclosed elements.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <h1>
-|       <table>
-|         <tbody>
-|           <tr>
-|             <td>
-|               <h3>
-|     <h3>
-
-#data
-<table><colgroup><col><colgroup><col><col><col><colgroup><col><col><thead><tr><td></table>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <colgroup>
-|         <col>
-|       <colgroup>
-|         <col>
-|         <col>
-|         <col>
-|       <colgroup>
-|         <col>
-|         <col>
-|       <thead>
-|         <tr>
-|           <td>
-
-#data
-<table><col><tbody><col><tr><col><td><col></table><col>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 37 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 55 Unexpected start tag col. Ignored.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <colgroup>
-|         <col>
-|       <tbody>
-|       <colgroup>
-|         <col>
-|       <tbody>
-|         <tr>
-|       <colgroup>
-|         <col>
-|       <tbody>
-|         <tr>
-|           <td>
-|       <colgroup>
-|         <col>
-
-#data
-<table><colgroup><tbody><colgroup><tr><colgroup><td><colgroup></table><colgroup>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 52 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 80 Unexpected start tag colgroup. Ignored.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <colgroup>
-|       <tbody>
-|       <colgroup>
-|       <tbody>
-|         <tr>
-|       <colgroup>
-|       <tbody>
-|         <tr>
-|           <td>
-|       <colgroup>
-
-#data
-</strong></b></em></i></u></strike></s></blink></tt></pre></big></small></font></select></h1></h2></h3></h4></h5></h6></body></br></a></img></title></span></style></script></table></th></td></tr></frame></area></link></param></hr></input></col></base></meta></basefont></bgsound></embed></spacer></p></dd></dt></caption></colgroup></tbody></tfoot></thead></address></blockquote></center></dir></div></dl></fieldset></listing></menu></ol></ul></li></nobr></wbr></form></button></marquee></object></html></frameset></head></iframe></image></isindex></noembed></noframes></noscript></optgroup></option></plaintext></textarea>
-#errors
-Line: 1 Col: 9 Unexpected end tag (strong). Expected DOCTYPE.
-Line: 1 Col: 9 Unexpected end tag (strong) after the (implied) root element.
-Line: 1 Col: 13 Unexpected end tag (b) after the (implied) root element.
-Line: 1 Col: 18 Unexpected end tag (em) after the (implied) root element.
-Line: 1 Col: 22 Unexpected end tag (i) after the (implied) root element.
-Line: 1 Col: 26 Unexpected end tag (u) after the (implied) root element.
-Line: 1 Col: 35 Unexpected end tag (strike) after the (implied) root element.
-Line: 1 Col: 39 Unexpected end tag (s) after the (implied) root element.
-Line: 1 Col: 47 Unexpected end tag (blink) after the (implied) root element.
-Line: 1 Col: 52 Unexpected end tag (tt) after the (implied) root element.
-Line: 1 Col: 58 Unexpected end tag (pre) after the (implied) root element.
-Line: 1 Col: 64 Unexpected end tag (big) after the (implied) root element.
-Line: 1 Col: 72 Unexpected end tag (small) after the (implied) root element.
-Line: 1 Col: 79 Unexpected end tag (font) after the (implied) root element.
-Line: 1 Col: 88 Unexpected end tag (select) after the (implied) root element.
-Line: 1 Col: 93 Unexpected end tag (h1) after the (implied) root element.
-Line: 1 Col: 98 Unexpected end tag (h2) after the (implied) root element.
-Line: 1 Col: 103 Unexpected end tag (h3) after the (implied) root element.
-Line: 1 Col: 108 Unexpected end tag (h4) after the (implied) root element.
-Line: 1 Col: 113 Unexpected end tag (h5) after the (implied) root element.
-Line: 1 Col: 118 Unexpected end tag (h6) after the (implied) root element.
-Line: 1 Col: 125 Unexpected end tag (body) after the (implied) root element.
-Line: 1 Col: 130 Unexpected end tag (br). Treated as br element.
-Line: 1 Col: 134 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 140 This element (img) has no end tag.
-Line: 1 Col: 148 Unexpected end tag (title). Ignored.
-Line: 1 Col: 155 Unexpected end tag (span). Ignored.
-Line: 1 Col: 163 Unexpected end tag (style). Ignored.
-Line: 1 Col: 172 Unexpected end tag (script). Ignored.
-Line: 1 Col: 180 Unexpected end tag (table). Ignored.
-Line: 1 Col: 185 Unexpected end tag (th). Ignored.
-Line: 1 Col: 190 Unexpected end tag (td). Ignored.
-Line: 1 Col: 195 Unexpected end tag (tr). Ignored.
-Line: 1 Col: 203 This element (frame) has no end tag.
-Line: 1 Col: 210 This element (area) has no end tag.
-Line: 1 Col: 217 Unexpected end tag (link). Ignored.
-Line: 1 Col: 225 This element (param) has no end tag.
-Line: 1 Col: 230 This element (hr) has no end tag.
-Line: 1 Col: 238 This element (input) has no end tag.
-Line: 1 Col: 244 Unexpected end tag (col). Ignored.
-Line: 1 Col: 251 Unexpected end tag (base). Ignored.
-Line: 1 Col: 258 Unexpected end tag (meta). Ignored.
-Line: 1 Col: 269 This element (basefont) has no end tag.
-Line: 1 Col: 279 This element (bgsound) has no end tag.
-Line: 1 Col: 287 This element (embed) has no end tag.
-Line: 1 Col: 296 This element (spacer) has no end tag.
-Line: 1 Col: 300 Unexpected end tag (p). Ignored.
-Line: 1 Col: 305 End tag (dd) seen too early. Expected other end tag.
-Line: 1 Col: 310 End tag (dt) seen too early. Expected other end tag.
-Line: 1 Col: 320 Unexpected end tag (caption). Ignored.
-Line: 1 Col: 331 Unexpected end tag (colgroup). Ignored.
-Line: 1 Col: 339 Unexpected end tag (tbody). Ignored.
-Line: 1 Col: 347 Unexpected end tag (tfoot). Ignored.
-Line: 1 Col: 355 Unexpected end tag (thead). Ignored.
-Line: 1 Col: 365 End tag (address) seen too early. Expected other end tag.
-Line: 1 Col: 378 End tag (blockquote) seen too early. Expected other end tag.
-Line: 1 Col: 387 End tag (center) seen too early. Expected other end tag.
-Line: 1 Col: 393 Unexpected end tag (dir). Ignored.
-Line: 1 Col: 399 End tag (div) seen too early. Expected other end tag.
-Line: 1 Col: 404 End tag (dl) seen too early. Expected other end tag.
-Line: 1 Col: 415 End tag (fieldset) seen too early. Expected other end tag.
-Line: 1 Col: 425 End tag (listing) seen too early. Expected other end tag.
-Line: 1 Col: 432 End tag (menu) seen too early. Expected other end tag.
-Line: 1 Col: 437 End tag (ol) seen too early. Expected other end tag.
-Line: 1 Col: 442 End tag (ul) seen too early. Expected other end tag.
-Line: 1 Col: 447 End tag (li) seen too early. Expected other end tag.
-Line: 1 Col: 454 End tag (nobr) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 460 This element (wbr) has no end tag.
-Line: 1 Col: 476 End tag (button) seen too early. Expected other end tag.
-Line: 1 Col: 486 End tag (marquee) seen too early. Expected other end tag.
-Line: 1 Col: 495 End tag (object) seen too early. Expected other end tag.
-Line: 1 Col: 513 Unexpected end tag (html). Ignored.
-Line: 1 Col: 513 Unexpected end tag (frameset). Ignored.
-Line: 1 Col: 520 Unexpected end tag (head). Ignored.
-Line: 1 Col: 529 Unexpected end tag (iframe). Ignored.
-Line: 1 Col: 537 This element (image) has no end tag.
-Line: 1 Col: 547 This element (isindex) has no end tag.
-Line: 1 Col: 557 Unexpected end tag (noembed). Ignored.
-Line: 1 Col: 568 Unexpected end tag (noframes). Ignored.
-Line: 1 Col: 579 Unexpected end tag (noscript). Ignored.
-Line: 1 Col: 590 Unexpected end tag (optgroup). Ignored.
-Line: 1 Col: 599 Unexpected end tag (option). Ignored.
-Line: 1 Col: 611 Unexpected end tag (plaintext). Ignored.
-Line: 1 Col: 622 Unexpected end tag (textarea). Ignored.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <br>
-|     <p>
-
-#data
-<table><tr></strong></b></em></i></u></strike></s></blink></tt></pre></big></small></font></select></h1></h2></h3></h4></h5></h6></body></br></a></img></title></span></style></script></table></th></td></tr></frame></area></link></param></hr></input></col></base></meta></basefont></bgsound></embed></spacer></p></dd></dt></caption></colgroup></tbody></tfoot></thead></address></blockquote></center></dir></div></dl></fieldset></listing></menu></ol></ul></li></nobr></wbr></form></button></marquee></object></html></frameset></head></iframe></image></isindex></noembed></noframes></noscript></optgroup></option></plaintext></textarea>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 20 Unexpected end tag (strong) in table context caused voodoo mode.
-Line: 1 Col: 20 End tag (strong) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 24 Unexpected end tag (b) in table context caused voodoo mode.
-Line: 1 Col: 24 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 29 Unexpected end tag (em) in table context caused voodoo mode.
-Line: 1 Col: 29 End tag (em) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 33 Unexpected end tag (i) in table context caused voodoo mode.
-Line: 1 Col: 33 End tag (i) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 37 Unexpected end tag (u) in table context caused voodoo mode.
-Line: 1 Col: 37 End tag (u) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 46 Unexpected end tag (strike) in table context caused voodoo mode.
-Line: 1 Col: 46 End tag (strike) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 50 Unexpected end tag (s) in table context caused voodoo mode.
-Line: 1 Col: 50 End tag (s) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 58 Unexpected end tag (blink) in table context caused voodoo mode.
-Line: 1 Col: 58 Unexpected end tag (blink). Ignored.
-Line: 1 Col: 63 Unexpected end tag (tt) in table context caused voodoo mode.
-Line: 1 Col: 63 End tag (tt) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 69 Unexpected end tag (pre) in table context caused voodoo mode.
-Line: 1 Col: 69 End tag (pre) seen too early. Expected other end tag.
-Line: 1 Col: 75 Unexpected end tag (big) in table context caused voodoo mode.
-Line: 1 Col: 75 End tag (big) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 83 Unexpected end tag (small) in table context caused voodoo mode.
-Line: 1 Col: 83 End tag (small) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 90 Unexpected end tag (font) in table context caused voodoo mode.
-Line: 1 Col: 90 End tag (font) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 99 Unexpected end tag (select) in table context caused voodoo mode.
-Line: 1 Col: 99 Unexpected end tag (select). Ignored.
-Line: 1 Col: 104 Unexpected end tag (h1) in table context caused voodoo mode.
-Line: 1 Col: 104 End tag (h1) seen too early. Expected other end tag.
-Line: 1 Col: 109 Unexpected end tag (h2) in table context caused voodoo mode.
-Line: 1 Col: 109 End tag (h2) seen too early. Expected other end tag.
-Line: 1 Col: 114 Unexpected end tag (h3) in table context caused voodoo mode.
-Line: 1 Col: 114 End tag (h3) seen too early. Expected other end tag.
-Line: 1 Col: 119 Unexpected end tag (h4) in table context caused voodoo mode.
-Line: 1 Col: 119 End tag (h4) seen too early. Expected other end tag.
-Line: 1 Col: 124 Unexpected end tag (h5) in table context caused voodoo mode.
-Line: 1 Col: 124 End tag (h5) seen too early. Expected other end tag.
-Line: 1 Col: 129 Unexpected end tag (h6) in table context caused voodoo mode.
-Line: 1 Col: 129 End tag (h6) seen too early. Expected other end tag.
-Line: 1 Col: 136 Unexpected end tag (body) in the table row phase. Ignored.
-Line: 1 Col: 141 Unexpected end tag (br) in table context caused voodoo mode.
-Line: 1 Col: 141 Unexpected end tag (br). Treated as br element.
-Line: 1 Col: 145 Unexpected end tag (a) in table context caused voodoo mode.
-Line: 1 Col: 145 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 151 Unexpected end tag (img) in table context caused voodoo mode.
-Line: 1 Col: 151 This element (img) has no end tag.
-Line: 1 Col: 159 Unexpected end tag (title) in table context caused voodoo mode.
-Line: 1 Col: 159 Unexpected end tag (title). Ignored.
-Line: 1 Col: 166 Unexpected end tag (span) in table context caused voodoo mode.
-Line: 1 Col: 166 Unexpected end tag (span). Ignored.
-Line: 1 Col: 174 Unexpected end tag (style) in table context caused voodoo mode.
-Line: 1 Col: 174 Unexpected end tag (style). Ignored.
-Line: 1 Col: 183 Unexpected end tag (script) in table context caused voodoo mode.
-Line: 1 Col: 183 Unexpected end tag (script). Ignored.
-Line: 1 Col: 196 Unexpected end tag (th). Ignored.
-Line: 1 Col: 201 Unexpected end tag (td). Ignored.
-Line: 1 Col: 206 Unexpected end tag (tr). Ignored.
-Line: 1 Col: 214 This element (frame) has no end tag.
-Line: 1 Col: 221 This element (area) has no end tag.
-Line: 1 Col: 228 Unexpected end tag (link). Ignored.
-Line: 1 Col: 236 This element (param) has no end tag.
-Line: 1 Col: 241 This element (hr) has no end tag.
-Line: 1 Col: 249 This element (input) has no end tag.
-Line: 1 Col: 255 Unexpected end tag (col). Ignored.
-Line: 1 Col: 262 Unexpected end tag (base). Ignored.
-Line: 1 Col: 269 Unexpected end tag (meta). Ignored.
-Line: 1 Col: 280 This element (basefont) has no end tag.
-Line: 1 Col: 290 This element (bgsound) has no end tag.
-Line: 1 Col: 298 This element (embed) has no end tag.
-Line: 1 Col: 307 This element (spacer) has no end tag.
-Line: 1 Col: 311 Unexpected end tag (p). Ignored.
-Line: 1 Col: 316 End tag (dd) seen too early. Expected other end tag.
-Line: 1 Col: 321 End tag (dt) seen too early. Expected other end tag.
-Line: 1 Col: 331 Unexpected end tag (caption). Ignored.
-Line: 1 Col: 342 Unexpected end tag (colgroup). Ignored.
-Line: 1 Col: 350 Unexpected end tag (tbody). Ignored.
-Line: 1 Col: 358 Unexpected end tag (tfoot). Ignored.
-Line: 1 Col: 366 Unexpected end tag (thead). Ignored.
-Line: 1 Col: 376 End tag (address) seen too early. Expected other end tag.
-Line: 1 Col: 389 End tag (blockquote) seen too early. Expected other end tag.
-Line: 1 Col: 398 End tag (center) seen too early. Expected other end tag.
-Line: 1 Col: 404 Unexpected end tag (dir). Ignored.
-Line: 1 Col: 410 End tag (div) seen too early. Expected other end tag.
-Line: 1 Col: 415 End tag (dl) seen too early. Expected other end tag.
-Line: 1 Col: 426 End tag (fieldset) seen too early. Expected other end tag.
-Line: 1 Col: 436 End tag (listing) seen too early. Expected other end tag.
-Line: 1 Col: 443 End tag (menu) seen too early. Expected other end tag.
-Line: 1 Col: 448 End tag (ol) seen too early. Expected other end tag.
-Line: 1 Col: 453 End tag (ul) seen too early. Expected other end tag.
-Line: 1 Col: 458 End tag (li) seen too early. Expected other end tag.
-Line: 1 Col: 465 End tag (nobr) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 471 This element (wbr) has no end tag.
-Line: 1 Col: 487 End tag (button) seen too early. Expected other end tag.
-Line: 1 Col: 497 End tag (marquee) seen too early. Expected other end tag.
-Line: 1 Col: 506 End tag (object) seen too early. Expected other end tag.
-Line: 1 Col: 524 Unexpected end tag (html). Ignored.
-Line: 1 Col: 524 Unexpected end tag (frameset). Ignored.
-Line: 1 Col: 531 Unexpected end tag (head). Ignored.
-Line: 1 Col: 540 Unexpected end tag (iframe). Ignored.
-Line: 1 Col: 548 This element (image) has no end tag.
-Line: 1 Col: 558 This element (isindex) has no end tag.
-Line: 1 Col: 568 Unexpected end tag (noembed). Ignored.
-Line: 1 Col: 579 Unexpected end tag (noframes). Ignored.
-Line: 1 Col: 590 Unexpected end tag (noscript). Ignored.
-Line: 1 Col: 601 Unexpected end tag (optgroup). Ignored.
-Line: 1 Col: 610 Unexpected end tag (option). Ignored.
-Line: 1 Col: 622 Unexpected end tag (plaintext). Ignored.
-Line: 1 Col: 633 Unexpected end tag (textarea). Ignored.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <br>
-|     <table>
-|       <tbody>
-|         <tr>
-|     <p>
-
-#data
-<frameset>
-#errors
-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
-Line: 1 Col: 10 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <frameset>
diff --git a/src/pkg/exp/html/testdata/webkit/tests10.dat b/src/pkg/exp/html/testdata/webkit/tests10.dat
deleted file mode 100644
index 4f8df86..0000000
--- a/src/pkg/exp/html/testdata/webkit/tests10.dat
+++ /dev/null
@@ -1,799 +0,0 @@
-#data
-<!DOCTYPE html><svg></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-
-#data
-<!DOCTYPE html><svg></svg><![CDATA[a]]>
-#errors
-29: Bogus comment
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|     <!-- [CDATA[a]] -->
-
-#data
-<!DOCTYPE html><body><svg></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-
-#data
-<!DOCTYPE html><body><select><svg></svg></select>
-#errors
-35: Stray “svg” start tag.
-42: Stray end tag “svg”
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <select>
-
-#data
-<!DOCTYPE html><body><select><option><svg></svg></option></select>
-#errors
-43: Stray “svg” start tag.
-50: Stray end tag “svg”
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <select>
-|       <option>
-
-#data
-<!DOCTYPE html><body><table><svg></svg></table>
-#errors
-34: Start tag “svg” seen in “table”.
-41: Stray end tag “svg”.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|     <table>
-
-#data
-<!DOCTYPE html><body><table><svg><g>foo</g></svg></table>
-#errors
-34: Start tag “svg” seen in “table”.
-46: Stray end tag “g”.
-53: Stray end tag “svg”.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg g>
-|         "foo"
-|     <table>
-
-#data
-<!DOCTYPE html><body><table><svg><g>foo</g><g>bar</g></svg></table>
-#errors
-34: Start tag “svg” seen in “table”.
-46: Stray end tag “g”.
-58: Stray end tag “g”.
-65: Stray end tag “svg”.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg g>
-|         "foo"
-|       <svg g>
-|         "bar"
-|     <table>
-
-#data
-<!DOCTYPE html><body><table><tbody><svg><g>foo</g><g>bar</g></svg></tbody></table>
-#errors
-41: Start tag “svg” seen in “table”.
-53: Stray end tag “g”.
-65: Stray end tag “g”.
-72: Stray end tag “svg”.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg g>
-|         "foo"
-|       <svg g>
-|         "bar"
-|     <table>
-|       <tbody>
-
-#data
-<!DOCTYPE html><body><table><tbody><tr><svg><g>foo</g><g>bar</g></svg></tr></tbody></table>
-#errors
-45: Start tag “svg” seen in “table”.
-57: Stray end tag “g”.
-69: Stray end tag “g”.
-76: Stray end tag “svg”.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg g>
-|         "foo"
-|       <svg g>
-|         "bar"
-|     <table>
-|       <tbody>
-|         <tr>
-
-#data
-<!DOCTYPE html><body><table><tbody><tr><td><svg><g>foo</g><g>bar</g></svg></td></tr></tbody></table>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <tbody>
-|         <tr>
-|           <td>
-|             <svg svg>
-|               <svg g>
-|                 "foo"
-|               <svg g>
-|                 "bar"
-
-#data
-<!DOCTYPE html><body><table><tbody><tr><td><svg><g>foo</g><g>bar</g></svg><p>baz</td></tr></tbody></table>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <tbody>
-|         <tr>
-|           <td>
-|             <svg svg>
-|               <svg g>
-|                 "foo"
-|               <svg g>
-|                 "bar"
-|             <p>
-|               "baz"
-
-#data
-<!DOCTYPE html><body><table><caption><svg><g>foo</g><g>bar</g></svg><p>baz</caption></table>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <caption>
-|         <svg svg>
-|           <svg g>
-|             "foo"
-|           <svg g>
-|             "bar"
-|         <p>
-|           "baz"
-
-#data
-<!DOCTYPE html><body><table><caption><svg><g>foo</g><g>bar</g><p>baz</table><p>quux
-#errors
-70: HTML start tag “p” in a foreign namespace context.
-81: “table” closed but “caption” was still open.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <caption>
-|         <svg svg>
-|           <svg g>
-|             "foo"
-|           <svg g>
-|             "bar"
-|         <p>
-|           "baz"
-|     <p>
-|       "quux"
-
-#data
-<!DOCTYPE html><body><table><caption><svg><g>foo</g><g>bar</g>baz</table><p>quux
-#errors
-78: “table” closed but “caption” was still open.
-78: Unclosed elements on stack.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <caption>
-|         <svg svg>
-|           <svg g>
-|             "foo"
-|           <svg g>
-|             "bar"
-|           "baz"
-|     <p>
-|       "quux"
-
-#data
-<!DOCTYPE html><body><table><colgroup><svg><g>foo</g><g>bar</g><p>baz</table><p>quux
-#errors
-44: Start tag “svg” seen in “table”.
-56: Stray end tag “g”.
-68: Stray end tag “g”.
-71: HTML start tag “p” in a foreign namespace context.
-71: Start tag “p” seen in “table”.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg g>
-|         "foo"
-|       <svg g>
-|         "bar"
-|     <p>
-|       "baz"
-|     <table>
-|       <colgroup>
-|     <p>
-|       "quux"
-
-#data
-<!DOCTYPE html><body><table><tr><td><select><svg><g>foo</g><g>bar</g><p>baz</table><p>quux
-#errors
-50: Stray “svg” start tag.
-54: Stray “g” start tag.
-62: Stray end tag “g”
-66: Stray “g” start tag.
-74: Stray end tag “g”
-77: Stray “p” start tag.
-88: “table” end tag with “select” open.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <table>
-|       <tbody>
-|         <tr>
-|           <td>
-|             <select>
-|               "foobarbaz"
-|     <p>
-|       "quux"
-
-#data
-<!DOCTYPE html><body><table><select><svg><g>foo</g><g>bar</g><p>baz</table><p>quux
-#errors
-36: Start tag “select” seen in “table”.
-42: Stray “svg” start tag.
-46: Stray “g” start tag.
-54: Stray end tag “g”
-58: Stray “g” start tag.
-66: Stray end tag “g”
-69: Stray “p” start tag.
-80: “table” end tag with “select” open.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <select>
-|       "foobarbaz"
-|     <table>
-|     <p>
-|       "quux"
-
-#data
-<!DOCTYPE html><body></body></html><svg><g>foo</g><g>bar</g><p>baz
-#errors
-41: Stray “svg” start tag.
-68: HTML start tag “p” in a foreign namespace context.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg g>
-|         "foo"
-|       <svg g>
-|         "bar"
-|     <p>
-|       "baz"
-
-#data
-<!DOCTYPE html><body></body><svg><g>foo</g><g>bar</g><p>baz
-#errors
-34: Stray “svg” start tag.
-61: HTML start tag “p” in a foreign namespace context.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg g>
-|         "foo"
-|       <svg g>
-|         "bar"
-|     <p>
-|       "baz"
-
-#data
-<!DOCTYPE html><frameset><svg><g></g><g></g><p><span>
-#errors
-31: Stray “svg” start tag.
-35: Stray “g” start tag.
-40: Stray end tag “g”
-44: Stray “g” start tag.
-49: Stray end tag “g”
-52: Stray “p” start tag.
-58: Stray “span” start tag.
-58: End of file seen and there were open elements.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <frameset>
-
-#data
-<!DOCTYPE html><frameset></frameset><svg><g></g><g></g><p><span>
-#errors
-42: Stray “svg” start tag.
-46: Stray “g” start tag.
-51: Stray end tag “g”
-55: Stray “g” start tag.
-60: Stray end tag “g”
-63: Stray “p” start tag.
-69: Stray “span” start tag.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <frameset>
-
-#data
-<!DOCTYPE html><body xlink:href=foo><svg xlink:href=foo></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     xlink:href="foo"
-|     <svg svg>
-|       xlink href="foo"
-
-#data
-<!DOCTYPE html><body xlink:href=foo xml:lang=en><svg><g xml:lang=en xlink:href=foo></g></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     xlink:href="foo"
-|     xml:lang="en"
-|     <svg svg>
-|       <svg g>
-|         xlink href="foo"
-|         xml lang="en"
-
-#data
-<!DOCTYPE html><body xlink:href=foo xml:lang=en><svg><g xml:lang=en xlink:href=foo /></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     xlink:href="foo"
-|     xml:lang="en"
-|     <svg svg>
-|       <svg g>
-|         xlink href="foo"
-|         xml lang="en"
-
-#data
-<!DOCTYPE html><body xlink:href=foo xml:lang=en><svg><g xml:lang=en xlink:href=foo />bar</svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     xlink:href="foo"
-|     xml:lang="en"
-|     <svg svg>
-|       <svg g>
-|         xlink href="foo"
-|         xml lang="en"
-|       "bar"
-
-#data
-<svg></path>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-
-#data
-<div><svg></div>a
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       <svg svg>
-|     "a"
-
-#data
-<div><svg><path></div>a
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       <svg svg>
-|         <svg path>
-|     "a"
-
-#data
-<div><svg><path></svg><path>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       <svg svg>
-|         <svg path>
-|       <path>
-
-#data
-<div><svg><path><foreignObject><math></div>a
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       <svg svg>
-|         <svg path>
-|           <svg foreignObject>
-|             <math math>
-|               "a"
-
-#data
-<div><svg><path><foreignObject><p></div>a
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       <svg svg>
-|         <svg path>
-|           <svg foreignObject>
-|             <p>
-|               "a"
-
-#data
-<!DOCTYPE html><svg><desc><div><svg><ul>a
-#errors
-40: HTML start tag “ul” in a foreign namespace context.
-41: End of file in a foreign namespace context.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg desc>
-|         <div>
-|           <svg svg>
-|           <ul>
-|             "a"
-
-#data
-<!DOCTYPE html><svg><desc><svg><ul>a
-#errors
-35: HTML start tag “ul” in a foreign namespace context.
-36: End of file in a foreign namespace context.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg desc>
-|         <svg svg>
-|         <ul>
-|           "a"
-
-#data
-<!DOCTYPE html><p><svg><desc><p>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <p>
-|       <svg svg>
-|         <svg desc>
-|           <p>
-
-#data
-<!DOCTYPE html><p><svg><title><p>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <p>
-|       <svg svg>
-|         <svg title>
-|           <p>
-
-#data
-<div><svg><path><foreignObject><p></foreignObject><p>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       <svg svg>
-|         <svg path>
-|           <svg foreignObject>
-|             <p>
-|             <p>
-
-#data
-<math><mi><div><object><div><span></span></div></object></div></mi><mi>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math mi>
-|         <div>
-|           <object>
-|             <div>
-|               <span>
-|       <math mi>
-
-#data
-<math><mi><svg><foreignObject><div><div></div></div></foreignObject></svg></mi><mi>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math mi>
-|         <svg svg>
-|           <svg foreignObject>
-|             <div>
-|               <div>
-|       <math mi>
-
-#data
-<svg><script></script><path>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg script>
-|       <svg path>
-
-#data
-<table><svg></svg><tr>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|     <table>
-|       <tbody>
-|         <tr>
-
-#data
-<math><mi><mglyph>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math mi>
-|         <math mglyph>
-
-#data
-<math><mi><malignmark>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math mi>
-|         <math malignmark>
-
-#data
-<math><mo><mglyph>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math mo>
-|         <math mglyph>
-
-#data
-<math><mo><malignmark>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math mo>
-|         <math malignmark>
-
-#data
-<math><mn><mglyph>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math mn>
-|         <math mglyph>
-
-#data
-<math><mn><malignmark>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math mn>
-|         <math malignmark>
-
-#data
-<math><ms><mglyph>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math ms>
-|         <math mglyph>
-
-#data
-<math><ms><malignmark>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math ms>
-|         <math malignmark>
-
-#data
-<math><mtext><mglyph>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math mtext>
-|         <math mglyph>
-
-#data
-<math><mtext><malignmark>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math mtext>
-|         <math malignmark>
-
-#data
-<math><annotation-xml><svg></svg></annotation-xml><mi>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math annotation-xml>
-|         <svg svg>
-|       <math mi>
-
-#data
-<math><annotation-xml><svg><foreignObject><div><math><mi></mi></math><span></span></div></foreignObject><path></path></svg></annotation-xml><mi>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math annotation-xml>
-|         <svg svg>
-|           <svg foreignObject>
-|             <div>
-|               <math math>
-|                 <math mi>
-|               <span>
-|           <svg path>
-|       <math mi>
-
-#data
-<math><annotation-xml><svg><foreignObject><math><mi><svg></svg></mi><mo></mo></math><span></span></foreignObject><path></path></svg></annotation-xml><mi>
-#errors
-#document
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math annotation-xml>
-|         <svg svg>
-|           <svg foreignObject>
-|             <math math>
-|               <math mi>
-|                 <svg svg>
-|               <math mo>
-|             <span>
-|           <svg path>
-|       <math mi>
diff --git a/src/pkg/exp/html/testdata/webkit/tests11.dat b/src/pkg/exp/html/testdata/webkit/tests11.dat
deleted file mode 100644
index 638cde4..0000000
--- a/src/pkg/exp/html/testdata/webkit/tests11.dat
+++ /dev/null
@@ -1,482 +0,0 @@
-#data
-<!DOCTYPE html><body><svg attributeName='' attributeType='' baseFrequency='' baseProfile='' calcMode='' clipPathUnits='' contentScriptType='' contentStyleType='' diffuseConstant='' edgeMode='' externalResourcesRequired='' filterRes='' filterUnits='' glyphRef='' gradientTransform='' gradientUnits='' kernelMatrix='' kernelUnitLength='' keyPoints='' keySplines='' keyTimes='' lengthAdjust='' limitingConeAngle='' markerHeight='' markerUnits='' markerWidth='' maskContentUnits='' maskUnits='' numOctaves='' pathLength='' patternContentUnits='' patternTransform='' patternUnits='' pointsAtX='' pointsAtY='' pointsAtZ='' preserveAlpha='' preserveAspectRatio='' primitiveUnits='' refX='' refY='' repeatCount='' repeatDur='' requiredExtensions='' requiredFeatures='' specularConstant='' specularExponent='' spreadMethod='' startOffset='' stdDeviation='' stitchTiles='' surfaceScale='' systemLanguage='' tableValues='' targetX='' targetY='' textLength='' viewBox='' viewTarget='' xChannelSelector='' yChannelSelector='' zoomAndPan=''></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       attributeName=""
-|       attributeType=""
-|       baseFrequency=""
-|       baseProfile=""
-|       calcMode=""
-|       clipPathUnits=""
-|       contentScriptType=""
-|       contentStyleType=""
-|       diffuseConstant=""
-|       edgeMode=""
-|       externalResourcesRequired=""
-|       filterRes=""
-|       filterUnits=""
-|       glyphRef=""
-|       gradientTransform=""
-|       gradientUnits=""
-|       kernelMatrix=""
-|       kernelUnitLength=""
-|       keyPoints=""
-|       keySplines=""
-|       keyTimes=""
-|       lengthAdjust=""
-|       limitingConeAngle=""
-|       markerHeight=""
-|       markerUnits=""
-|       markerWidth=""
-|       maskContentUnits=""
-|       maskUnits=""
-|       numOctaves=""
-|       pathLength=""
-|       patternContentUnits=""
-|       patternTransform=""
-|       patternUnits=""
-|       pointsAtX=""
-|       pointsAtY=""
-|       pointsAtZ=""
-|       preserveAlpha=""
-|       preserveAspectRatio=""
-|       primitiveUnits=""
-|       refX=""
-|       refY=""
-|       repeatCount=""
-|       repeatDur=""
-|       requiredExtensions=""
-|       requiredFeatures=""
-|       specularConstant=""
-|       specularExponent=""
-|       spreadMethod=""
-|       startOffset=""
-|       stdDeviation=""
-|       stitchTiles=""
-|       surfaceScale=""
-|       systemLanguage=""
-|       tableValues=""
-|       targetX=""
-|       targetY=""
-|       textLength=""
-|       viewBox=""
-|       viewTarget=""
-|       xChannelSelector=""
-|       yChannelSelector=""
-|       zoomAndPan=""
-
-#data
-<!DOCTYPE html><BODY><SVG ATTRIBUTENAME='' ATTRIBUTETYPE='' BASEFREQUENCY='' BASEPROFILE='' CALCMODE='' CLIPPATHUNITS='' CONTENTSCRIPTTYPE='' CONTENTSTYLETYPE='' DIFFUSECONSTANT='' EDGEMODE='' EXTERNALRESOURCESREQUIRED='' FILTERRES='' FILTERUNITS='' GLYPHREF='' GRADIENTTRANSFORM='' GRADIENTUNITS='' KERNELMATRIX='' KERNELUNITLENGTH='' KEYPOINTS='' KEYSPLINES='' KEYTIMES='' LENGTHADJUST='' LIMITINGCONEANGLE='' MARKERHEIGHT='' MARKERUNITS='' MARKERWIDTH='' MASKCONTENTUNITS='' MASKUNITS='' NUMOCTAVES='' PATHLENGTH='' PATTERNCONTENTUNITS='' PATTERNTRANSFORM='' PATTERNUNITS='' POINTSATX='' POINTSATY='' POINTSATZ='' PRESERVEALPHA='' PRESERVEASPECTRATIO='' PRIMITIVEUNITS='' REFX='' REFY='' REPEATCOUNT='' REPEATDUR='' REQUIREDEXTENSIONS='' REQUIREDFEATURES='' SPECULARCONSTANT='' SPECULAREXPONENT='' SPREADMETHOD='' STARTOFFSET='' STDDEVIATION='' STITCHTILES='' SURFACESCALE='' SYSTEMLANGUAGE='' TABLEVALUES='' TARGETX='' TARGETY='' TEXTLENGTH='' VIEWBOX='' VIEWTARGET='' XCHANNELSELECTOR='' YCHANNELSELECTOR='' ZOOMANDPAN=''></SVG>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       attributeName=""
-|       attributeType=""
-|       baseFrequency=""
-|       baseProfile=""
-|       calcMode=""
-|       clipPathUnits=""
-|       contentScriptType=""
-|       contentStyleType=""
-|       diffuseConstant=""
-|       edgeMode=""
-|       externalResourcesRequired=""
-|       filterRes=""
-|       filterUnits=""
-|       glyphRef=""
-|       gradientTransform=""
-|       gradientUnits=""
-|       kernelMatrix=""
-|       kernelUnitLength=""
-|       keyPoints=""
-|       keySplines=""
-|       keyTimes=""
-|       lengthAdjust=""
-|       limitingConeAngle=""
-|       markerHeight=""
-|       markerUnits=""
-|       markerWidth=""
-|       maskContentUnits=""
-|       maskUnits=""
-|       numOctaves=""
-|       pathLength=""
-|       patternContentUnits=""
-|       patternTransform=""
-|       patternUnits=""
-|       pointsAtX=""
-|       pointsAtY=""
-|       pointsAtZ=""
-|       preserveAlpha=""
-|       preserveAspectRatio=""
-|       primitiveUnits=""
-|       refX=""
-|       refY=""
-|       repeatCount=""
-|       repeatDur=""
-|       requiredExtensions=""
-|       requiredFeatures=""
-|       specularConstant=""
-|       specularExponent=""
-|       spreadMethod=""
-|       startOffset=""
-|       stdDeviation=""
-|       stitchTiles=""
-|       surfaceScale=""
-|       systemLanguage=""
-|       tableValues=""
-|       targetX=""
-|       targetY=""
-|       textLength=""
-|       viewBox=""
-|       viewTarget=""
-|       xChannelSelector=""
-|       yChannelSelector=""
-|       zoomAndPan=""
-
-#data
-<!DOCTYPE html><body><svg attributename='' attributetype='' basefrequency='' baseprofile='' calcmode='' clippathunits='' contentscripttype='' contentstyletype='' diffuseconstant='' edgemode='' externalresourcesrequired='' filterres='' filterunits='' glyphref='' gradienttransform='' gradientunits='' kernelmatrix='' kernelunitlength='' keypoints='' keysplines='' keytimes='' lengthadjust='' limitingconeangle='' markerheight='' markerunits='' markerwidth='' maskcontentunits='' maskunits='' numoctaves='' pathlength='' patterncontentunits='' patterntransform='' patternunits='' pointsatx='' pointsaty='' pointsatz='' preservealpha='' preserveaspectratio='' primitiveunits='' refx='' refy='' repeatcount='' repeatdur='' requiredextensions='' requiredfeatures='' specularconstant='' specularexponent='' spreadmethod='' startoffset='' stddeviation='' stitchtiles='' surfacescale='' systemlanguage='' tablevalues='' targetx='' targety='' textlength='' viewbox='' viewtarget='' xchannelselector='' ychannelselector='' zoomandpan=''></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       attributeName=""
-|       attributeType=""
-|       baseFrequency=""
-|       baseProfile=""
-|       calcMode=""
-|       clipPathUnits=""
-|       contentScriptType=""
-|       contentStyleType=""
-|       diffuseConstant=""
-|       edgeMode=""
-|       externalResourcesRequired=""
-|       filterRes=""
-|       filterUnits=""
-|       glyphRef=""
-|       gradientTransform=""
-|       gradientUnits=""
-|       kernelMatrix=""
-|       kernelUnitLength=""
-|       keyPoints=""
-|       keySplines=""
-|       keyTimes=""
-|       lengthAdjust=""
-|       limitingConeAngle=""
-|       markerHeight=""
-|       markerUnits=""
-|       markerWidth=""
-|       maskContentUnits=""
-|       maskUnits=""
-|       numOctaves=""
-|       pathLength=""
-|       patternContentUnits=""
-|       patternTransform=""
-|       patternUnits=""
-|       pointsAtX=""
-|       pointsAtY=""
-|       pointsAtZ=""
-|       preserveAlpha=""
-|       preserveAspectRatio=""
-|       primitiveUnits=""
-|       refX=""
-|       refY=""
-|       repeatCount=""
-|       repeatDur=""
-|       requiredExtensions=""
-|       requiredFeatures=""
-|       specularConstant=""
-|       specularExponent=""
-|       spreadMethod=""
-|       startOffset=""
-|       stdDeviation=""
-|       stitchTiles=""
-|       surfaceScale=""
-|       systemLanguage=""
-|       tableValues=""
-|       targetX=""
-|       targetY=""
-|       textLength=""
-|       viewBox=""
-|       viewTarget=""
-|       xChannelSelector=""
-|       yChannelSelector=""
-|       zoomAndPan=""
-
-#data
-<!DOCTYPE html><body><math attributeName='' attributeType='' baseFrequency='' baseProfile='' calcMode='' clipPathUnits='' contentScriptType='' contentStyleType='' diffuseConstant='' edgeMode='' externalResourcesRequired='' filterRes='' filterUnits='' glyphRef='' gradientTransform='' gradientUnits='' kernelMatrix='' kernelUnitLength='' keyPoints='' keySplines='' keyTimes='' lengthAdjust='' limitingConeAngle='' markerHeight='' markerUnits='' markerWidth='' maskContentUnits='' maskUnits='' numOctaves='' pathLength='' patternContentUnits='' patternTransform='' patternUnits='' pointsAtX='' pointsAtY='' pointsAtZ='' preserveAlpha='' preserveAspectRatio='' primitiveUnits='' refX='' refY='' repeatCount='' repeatDur='' requiredExtensions='' requiredFeatures='' specularConstant='' specularExponent='' spreadMethod='' startOffset='' stdDeviation='' stitchTiles='' surfaceScale='' systemLanguage='' tableValues='' targetX='' targetY='' textLength='' viewBox='' viewTarget='' xChannelSelector='' yChannelSelector='' zoomAndPan=''></math>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       attributename=""
-|       attributetype=""
-|       basefrequency=""
-|       baseprofile=""
-|       calcmode=""
-|       clippathunits=""
-|       contentscripttype=""
-|       contentstyletype=""
-|       diffuseconstant=""
-|       edgemode=""
-|       externalresourcesrequired=""
-|       filterres=""
-|       filterunits=""
-|       glyphref=""
-|       gradienttransform=""
-|       gradientunits=""
-|       kernelmatrix=""
-|       kernelunitlength=""
-|       keypoints=""
-|       keysplines=""
-|       keytimes=""
-|       lengthadjust=""
-|       limitingconeangle=""
-|       markerheight=""
-|       markerunits=""
-|       markerwidth=""
-|       maskcontentunits=""
-|       maskunits=""
-|       numoctaves=""
-|       pathlength=""
-|       patterncontentunits=""
-|       patterntransform=""
-|       patternunits=""
-|       pointsatx=""
-|       pointsaty=""
-|       pointsatz=""
-|       preservealpha=""
-|       preserveaspectratio=""
-|       primitiveunits=""
-|       refx=""
-|       refy=""
-|       repeatcount=""
-|       repeatdur=""
-|       requiredextensions=""
-|       requiredfeatures=""
-|       specularconstant=""
-|       specularexponent=""
-|       spreadmethod=""
-|       startoffset=""
-|       stddeviation=""
-|       stitchtiles=""
-|       surfacescale=""
-|       systemlanguage=""
-|       tablevalues=""
-|       targetx=""
-|       targety=""
-|       textlength=""
-|       viewbox=""
-|       viewtarget=""
-|       xchannelselector=""
-|       ychannelselector=""
-|       zoomandpan=""
-
-#data
-<!DOCTYPE html><body><svg><altGlyph /><altGlyphDef /><altGlyphItem /><animateColor /><animateMotion /><animateTransform /><clipPath /><feBlend /><feColorMatrix /><feComponentTransfer /><feComposite /><feConvolveMatrix /><feDiffuseLighting /><feDisplacementMap /><feDistantLight /><feFlood /><feFuncA /><feFuncB /><feFuncG /><feFuncR /><feGaussianBlur /><feImage /><feMerge /><feMergeNode /><feMorphology /><feOffset /><fePointLight /><feSpecularLighting /><feSpotLight /><feTile /><feTurbulence /><foreignObject /><glyphRef /><linearGradient /><radialGradient /><textPath /></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg altGlyph>
-|       <svg altGlyphDef>
-|       <svg altGlyphItem>
-|       <svg animateColor>
-|       <svg animateMotion>
-|       <svg animateTransform>
-|       <svg clipPath>
-|       <svg feBlend>
-|       <svg feColorMatrix>
-|       <svg feComponentTransfer>
-|       <svg feComposite>
-|       <svg feConvolveMatrix>
-|       <svg feDiffuseLighting>
-|       <svg feDisplacementMap>
-|       <svg feDistantLight>
-|       <svg feFlood>
-|       <svg feFuncA>
-|       <svg feFuncB>
-|       <svg feFuncG>
-|       <svg feFuncR>
-|       <svg feGaussianBlur>
-|       <svg feImage>
-|       <svg feMerge>
-|       <svg feMergeNode>
-|       <svg feMorphology>
-|       <svg feOffset>
-|       <svg fePointLight>
-|       <svg feSpecularLighting>
-|       <svg feSpotLight>
-|       <svg feTile>
-|       <svg feTurbulence>
-|       <svg foreignObject>
-|       <svg glyphRef>
-|       <svg linearGradient>
-|       <svg radialGradient>
-|       <svg textPath>
-
-#data
-<!DOCTYPE html><body><svg><altglyph /><altglyphdef /><altglyphitem /><animatecolor /><animatemotion /><animatetransform /><clippath /><feblend /><fecolormatrix /><fecomponenttransfer /><fecomposite /><feconvolvematrix /><fediffuselighting /><fedisplacementmap /><fedistantlight /><feflood /><fefunca /><fefuncb /><fefuncg /><fefuncr /><fegaussianblur /><feimage /><femerge /><femergenode /><femorphology /><feoffset /><fepointlight /><fespecularlighting /><fespotlight /><fetile /><feturbulence /><foreignobject /><glyphref /><lineargradient /><radialgradient /><textpath /></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg altGlyph>
-|       <svg altGlyphDef>
-|       <svg altGlyphItem>
-|       <svg animateColor>
-|       <svg animateMotion>
-|       <svg animateTransform>
-|       <svg clipPath>
-|       <svg feBlend>
-|       <svg feColorMatrix>
-|       <svg feComponentTransfer>
-|       <svg feComposite>
-|       <svg feConvolveMatrix>
-|       <svg feDiffuseLighting>
-|       <svg feDisplacementMap>
-|       <svg feDistantLight>
-|       <svg feFlood>
-|       <svg feFuncA>
-|       <svg feFuncB>
-|       <svg feFuncG>
-|       <svg feFuncR>
-|       <svg feGaussianBlur>
-|       <svg feImage>
-|       <svg feMerge>
-|       <svg feMergeNode>
-|       <svg feMorphology>
-|       <svg feOffset>
-|       <svg fePointLight>
-|       <svg feSpecularLighting>
-|       <svg feSpotLight>
-|       <svg feTile>
-|       <svg feTurbulence>
-|       <svg foreignObject>
-|       <svg glyphRef>
-|       <svg linearGradient>
-|       <svg radialGradient>
-|       <svg textPath>
-
-#data
-<!DOCTYPE html><BODY><SVG><ALTGLYPH /><ALTGLYPHDEF /><ALTGLYPHITEM /><ANIMATECOLOR /><ANIMATEMOTION /><ANIMATETRANSFORM /><CLIPPATH /><FEBLEND /><FECOLORMATRIX /><FECOMPONENTTRANSFER /><FECOMPOSITE /><FECONVOLVEMATRIX /><FEDIFFUSELIGHTING /><FEDISPLACEMENTMAP /><FEDISTANTLIGHT /><FEFLOOD /><FEFUNCA /><FEFUNCB /><FEFUNCG /><FEFUNCR /><FEGAUSSIANBLUR /><FEIMAGE /><FEMERGE /><FEMERGENODE /><FEMORPHOLOGY /><FEOFFSET /><FEPOINTLIGHT /><FESPECULARLIGHTING /><FESPOTLIGHT /><FETILE /><FETURBULENCE /><FOREIGNOBJECT /><GLYPHREF /><LINEARGRADIENT /><RADIALGRADIENT /><TEXTPATH /></SVG>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg altGlyph>
-|       <svg altGlyphDef>
-|       <svg altGlyphItem>
-|       <svg animateColor>
-|       <svg animateMotion>
-|       <svg animateTransform>
-|       <svg clipPath>
-|       <svg feBlend>
-|       <svg feColorMatrix>
-|       <svg feComponentTransfer>
-|       <svg feComposite>
-|       <svg feConvolveMatrix>
-|       <svg feDiffuseLighting>
-|       <svg feDisplacementMap>
-|       <svg feDistantLight>
-|       <svg feFlood>
-|       <svg feFuncA>
-|       <svg feFuncB>
-|       <svg feFuncG>
-|       <svg feFuncR>
-|       <svg feGaussianBlur>
-|       <svg feImage>
-|       <svg feMerge>
-|       <svg feMergeNode>
-|       <svg feMorphology>
-|       <svg feOffset>
-|       <svg fePointLight>
-|       <svg feSpecularLighting>
-|       <svg feSpotLight>
-|       <svg feTile>
-|       <svg feTurbulence>
-|       <svg foreignObject>
-|       <svg glyphRef>
-|       <svg linearGradient>
-|       <svg radialGradient>
-|       <svg textPath>
-
-#data
-<!DOCTYPE html><body><math><altGlyph /><altGlyphDef /><altGlyphItem /><animateColor /><animateMotion /><animateTransform /><clipPath /><feBlend /><feColorMatrix /><feComponentTransfer /><feComposite /><feConvolveMatrix /><feDiffuseLighting /><feDisplacementMap /><feDistantLight /><feFlood /><feFuncA /><feFuncB /><feFuncG /><feFuncR /><feGaussianBlur /><feImage /><feMerge /><feMergeNode /><feMorphology /><feOffset /><fePointLight /><feSpecularLighting /><feSpotLight /><feTile /><feTurbulence /><foreignObject /><glyphRef /><linearGradient /><radialGradient /><textPath /></math>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <math math>
-|       <math altglyph>
-|       <math altglyphdef>
-|       <math altglyphitem>
-|       <math animatecolor>
-|       <math animatemotion>
-|       <math animatetransform>
-|       <math clippath>
-|       <math feblend>
-|       <math fecolormatrix>
-|       <math fecomponenttransfer>
-|       <math fecomposite>
-|       <math feconvolvematrix>
-|       <math fediffuselighting>
-|       <math fedisplacementmap>
-|       <math fedistantlight>
-|       <math feflood>
-|       <math fefunca>
-|       <math fefuncb>
-|       <math fefuncg>
-|       <math fefuncr>
-|       <math fegaussianblur>
-|       <math feimage>
-|       <math femerge>
-|       <math femergenode>
-|       <math femorphology>
-|       <math feoffset>
-|       <math fepointlight>
-|       <math fespecularlighting>
-|       <math fespotlight>
-|       <math fetile>
-|       <math feturbulence>
-|       <math foreignobject>
-|       <math glyphref>
-|       <math lineargradient>
-|       <math radialgradient>
-|       <math textpath>
-
-#data
-<!DOCTYPE html><body><svg><solidColor /></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <svg svg>
-|       <svg solidcolor>
diff --git a/src/pkg/exp/html/testdata/webkit/tests12.dat b/src/pkg/exp/html/testdata/webkit/tests12.dat
deleted file mode 100644
index 63107d2..0000000
--- a/src/pkg/exp/html/testdata/webkit/tests12.dat
+++ /dev/null
@@ -1,62 +0,0 @@
-#data
-<!DOCTYPE html><body><p>foo<math><mtext><i>baz</i></mtext><annotation-xml><svg><desc><b>eggs</b></desc><g><foreignObject><P>spam<TABLE><tr><td><img></td></table></foreignObject></g><g>quux</g></svg></annotation-xml></math>bar
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <p>
-|       "foo"
-|       <math math>
-|         <math mtext>
-|           <i>
-|             "baz"
-|         <math annotation-xml>
-|           <svg svg>
-|             <svg desc>
-|               <b>
-|                 "eggs"
-|             <svg g>
-|               <svg foreignObject>
-|                 <p>
-|                   "spam"
-|                 <table>
-|                   <tbody>
-|                     <tr>
-|                       <td>
-|                         <img>
-|             <svg g>
-|               "quux"
-|       "bar"
-
-#data
-<!DOCTYPE html><body>foo<math><mtext><i>baz</i></mtext><annotation-xml><svg><desc><b>eggs</b></desc><g><foreignObject><P>spam<TABLE><tr><td><img></td></table></foreignObject></g><g>quux</g></svg></annotation-xml></math>bar
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     "foo"
-|     <math math>
-|       <math mtext>
-|         <i>
-|           "baz"
-|       <math annotation-xml>
-|         <svg svg>
-|           <svg desc>
-|             <b>
-|               "eggs"
-|           <svg g>
-|             <svg foreignObject>
-|               <p>
-|                 "spam"
-|               <table>
-|                 <tbody>
-|                   <tr>
-|                     <td>
-|                       <img>
-|           <svg g>
-|             "quux"
-|     "bar"
diff --git a/src/pkg/exp/html/testdata/webkit/tests14.dat b/src/pkg/exp/html/testdata/webkit/tests14.dat
deleted file mode 100644
index b8713f8..0000000
--- a/src/pkg/exp/html/testdata/webkit/tests14.dat
+++ /dev/null
@@ -1,74 +0,0 @@
-#data
-<!DOCTYPE html><html><body><xyz:abc></xyz:abc>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <xyz:abc>
-
-#data
-<!DOCTYPE html><html><body><xyz:abc></xyz:abc><span></span>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <xyz:abc>
-|     <span>
-
-#data
-<!DOCTYPE html><html><html abc:def=gh><xyz:abc></xyz:abc>
-#errors
-15: Unexpected start tag html
-#document
-| <!DOCTYPE html>
-| <html>
-|   abc:def="gh"
-|   <head>
-|   <body>
-|     <xyz:abc>
-
-#data
-<!DOCTYPE html><html xml:lang=bar><html xml:lang=foo>
-#errors
-15: Unexpected start tag html
-#document
-| <!DOCTYPE html>
-| <html>
-|   xml:lang="bar"
-|   <head>
-|   <body>
-
-#data
-<!DOCTYPE html><html 123=456>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   123="456"
-|   <head>
-|   <body>
-
-#data
-<!DOCTYPE html><html 123=456><html 789=012>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   123="456"
-|   789="012"
-|   <head>
-|   <body>
-
-#data
-<!DOCTYPE html><html><body 789=012>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     789="012"
diff --git a/src/pkg/exp/html/testdata/webkit/tests15.dat b/src/pkg/exp/html/testdata/webkit/tests15.dat
deleted file mode 100644
index 6ce1c0d..0000000
--- a/src/pkg/exp/html/testdata/webkit/tests15.dat
+++ /dev/null
@@ -1,208 +0,0 @@
-#data
-<!DOCTYPE html><p><b><i><u></p> <p>X
-#errors
-Line: 1 Col: 31 Unexpected end tag (p). Ignored.
-Line: 1 Col: 36 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <p>
-|       <b>
-|         <i>
-|           <u>
-|     <b>
-|       <i>
-|         <u>
-|           " "
-|           <p>
-|             "X"
-
-#data
-<p><b><i><u></p>
-<p>X
-#errors
-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
-Line: 1 Col: 16 Unexpected end tag (p). Ignored.
-Line: 2 Col: 4 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-|   <head>
-|   <body>
-|     <p>
-|       <b>
-|         <i>
-|           <u>
-|     <b>
-|       <i>
-|         <u>
-|           "
-"
-|           <p>
-|             "X"
-
-#data
-<!doctype html></html> <head>
-#errors
-Line: 1 Col: 22 Unexpected end tag (html) after the (implied) root element.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     " "
-
-#data
-<!doctype html></body><meta>
-#errors
-Line: 1 Col: 22 Unexpected end tag (body) after the (implied) root element.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <meta>
-
-#data
-<html></html><!-- foo -->
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-Line: 1 Col: 13 Unexpected end tag (html) after the (implied) root element.
-#document
-| <html>
-|   <head>
-|   <body>
-| <!--  foo  -->
-
-#data
-<!doctype html></body><title>X</title>
-#errors
-Line: 1 Col: 22 Unexpected end tag (body) after the (implied) root element.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <title>
-|       "X"
-
-#data
-<!doctype html><table> X<meta></table>
-#errors
-Line: 1 Col: 24 Unexpected non-space characters in table context caused voodoo mode.
-Line: 1 Col: 30 Unexpected start tag (meta) in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     " X"
-|     <meta>
-|     <table>
-
-#data
-<!doctype html><table> x</table>
-#errors
-Line: 1 Col: 24 Unexpected non-space characters in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     " x"
-|     <table>
-
-#data
-<!doctype html><table> x </table>
-#errors
-Line: 1 Col: 25 Unexpected non-space characters in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     " x "
-|     <table>
-
-#data
-<!doctype html><table><tr> x</table>
-#errors
-Line: 1 Col: 28 Unexpected non-space characters in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     " x"
-|     <table>
-|       <tbody>
-|         <tr>
-
-#data
-<!doctype html><table>X<style> <tr>x </style> </table>
-#errors
-Line: 1 Col: 23 Unexpected non-space characters in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     "X"
-|     <table>
-|       <style>
-|         " <tr>x "
-|       " "
-
-#data
-<!doctype html><div><table><a>foo</a> <tr><td>bar</td> </tr></table></div>
-#errors
-Line: 1 Col: 30 Unexpected start tag (a) in table context caused voodoo mode.
-Line: 1 Col: 37 Unexpected end tag (a) in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <div>
-|       <a>
-|         "foo"
-|       <table>
-|         " "
-|         <tbody>
-|           <tr>
-|             <td>
-|               "bar"
-|             " "
-
-#data
-<frame></frame></frame><frameset><frame><frameset><frame></frameset><noframes></frameset><noframes>
-#errors
-6: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
-13: Stray start tag “frame”.
-21: Stray end tag “frame”.
-29: Stray end tag “frame”.
-39: “frameset” start tag after “body” already open.
-105: End of file seen inside an [R]CDATA element.
-105: End of file seen and there were open elements.
-XXX: These errors are wrong, please fix me!
-#document
-| <html>
-|   <head>
-|   <frameset>
-|     <frame>
-|     <frameset>
-|       <frame>
-|     <noframes>
-|       "</frameset><noframes>"
-
-#data
-<!DOCTYPE html><object></html>
-#errors
-1: Expected closing tag. Unexpected end of file
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <object>
diff --git a/src/pkg/exp/html/testdata/webkit/tests16.dat b/src/pkg/exp/html/testdata/webkit/tests16.dat
deleted file mode 100644
index 937dba9..0000000
--- a/src/pkg/exp/html/testdata/webkit/tests16.dat
+++ /dev/null
@@ -1,2277 +0,0 @@
-#data
-<!doctype html><script>
-#errors
-Line: 1 Col: 23 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|   <body>
-
-#data
-<!doctype html><script>a
-#errors
-Line: 1 Col: 24 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "a"
-|   <body>
-
-#data
-<!doctype html><script><
-#errors
-Line: 1 Col: 24 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<"
-|   <body>
-
-#data
-<!doctype html><script></
-#errors
-Line: 1 Col: 25 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "</"
-|   <body>
-
-#data
-<!doctype html><script></S
-#errors
-Line: 1 Col: 26 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "</S"
-|   <body>
-
-#data
-<!doctype html><script></SC
-#errors
-Line: 1 Col: 27 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "</SC"
-|   <body>
-
-#data
-<!doctype html><script></SCR
-#errors
-Line: 1 Col: 28 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "</SCR"
-|   <body>
-
-#data
-<!doctype html><script></SCRI
-#errors
-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "</SCRI"
-|   <body>
-
-#data
-<!doctype html><script></SCRIP
-#errors
-Line: 1 Col: 30 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "</SCRIP"
-|   <body>
-
-#data
-<!doctype html><script></SCRIPT
-#errors
-Line: 1 Col: 31 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "</SCRIPT"
-|   <body>
-
-#data
-<!doctype html><script></SCRIPT 
-#errors
-Line: 1 Col: 32 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|   <body>
-
-#data
-<!doctype html><script></s
-#errors
-Line: 1 Col: 26 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "</s"
-|   <body>
-
-#data
-<!doctype html><script></sc
-#errors
-Line: 1 Col: 27 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "</sc"
-|   <body>
-
-#data
-<!doctype html><script></scr
-#errors
-Line: 1 Col: 28 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "</scr"
-|   <body>
-
-#data
-<!doctype html><script></scri
-#errors
-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "</scri"
-|   <body>
-
-#data
-<!doctype html><script></scrip
-#errors
-Line: 1 Col: 30 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "</scrip"
-|   <body>
-
-#data
-<!doctype html><script></script
-#errors
-Line: 1 Col: 31 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "</script"
-|   <body>
-
-#data
-<!doctype html><script></script 
-#errors
-Line: 1 Col: 32 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|   <body>
-
-#data
-<!doctype html><script><!
-#errors
-Line: 1 Col: 25 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!"
-|   <body>
-
-#data
-<!doctype html><script><!a
-#errors
-Line: 1 Col: 26 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!a"
-|   <body>
-
-#data
-<!doctype html><script><!-
-#errors
-Line: 1 Col: 26 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!-"
-|   <body>
-
-#data
-<!doctype html><script><!-a
-#errors
-Line: 1 Col: 27 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!-a"
-|   <body>
-
-#data
-<!doctype html><script><!--
-#errors
-Line: 1 Col: 27 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--"
-|   <body>
-
-#data
-<!doctype html><script><!--a
-#errors
-Line: 1 Col: 28 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--a"
-|   <body>
-
-#data
-<!doctype html><script><!--<
-#errors
-Line: 1 Col: 28 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<"
-|   <body>
-
-#data
-<!doctype html><script><!--<a
-#errors
-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<a"
-|   <body>
-
-#data
-<!doctype html><script><!--</
-#errors
-Line: 1 Col: 27 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--</"
-|   <body>
-
-#data
-<!doctype html><script><!--</script
-#errors
-Line: 1 Col: 35 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--</script"
-|   <body>
-
-#data
-<!doctype html><script><!--</script 
-#errors
-Line: 1 Col: 36 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--"
-|   <body>
-
-#data
-<!doctype html><script><!--<s
-#errors
-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<s"
-|   <body>
-
-#data
-<!doctype html><script><!--<script
-#errors
-Line: 1 Col: 34 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script"
-|   <body>
-
-#data
-<!doctype html><script><!--<script 
-#errors
-Line: 1 Col: 35 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script "
-|   <body>
-
-#data
-<!doctype html><script><!--<script <
-#errors
-Line: 1 Col: 36 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script <"
-|   <body>
-
-#data
-<!doctype html><script><!--<script <a
-#errors
-Line: 1 Col: 37 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script <a"
-|   <body>
-
-#data
-<!doctype html><script><!--<script </
-#errors
-Line: 1 Col: 37 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script </"
-|   <body>
-
-#data
-<!doctype html><script><!--<script </s
-#errors
-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script </s"
-|   <body>
-
-#data
-<!doctype html><script><!--<script </script
-#errors
-Line: 1 Col: 43 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script </script"
-|   <body>
-
-#data
-<!doctype html><script><!--<script </scripta
-#errors
-Line: 1 Col: 44 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script </scripta"
-|   <body>
-
-#data
-<!doctype html><script><!--<script </script 
-#errors
-Line: 1 Col: 44 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script </script "
-|   <body>
-
-#data
-<!doctype html><script><!--<script </script>
-#errors
-Line: 1 Col: 44 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script </script>"
-|   <body>
-
-#data
-<!doctype html><script><!--<script </script/
-#errors
-Line: 1 Col: 44 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script </script/"
-|   <body>
-
-#data
-<!doctype html><script><!--<script </script <
-#errors
-Line: 1 Col: 45 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script </script <"
-|   <body>
-
-#data
-<!doctype html><script><!--<script </script <a
-#errors
-Line: 1 Col: 46 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script </script <a"
-|   <body>
-
-#data
-<!doctype html><script><!--<script </script </
-#errors
-Line: 1 Col: 46 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script </script </"
-|   <body>
-
-#data
-<!doctype html><script><!--<script </script </script
-#errors
-Line: 1 Col: 52 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script </script </script"
-|   <body>
-
-#data
-<!doctype html><script><!--<script </script </script 
-#errors
-Line: 1 Col: 53 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script </script "
-|   <body>
-
-#data
-<!doctype html><script><!--<script </script </script/
-#errors
-Line: 1 Col: 53 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script </script "
-|   <body>
-
-#data
-<!doctype html><script><!--<script </script </script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script </script "
-|   <body>
-
-#data
-<!doctype html><script><!--<script -
-#errors
-Line: 1 Col: 36 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script -"
-|   <body>
-
-#data
-<!doctype html><script><!--<script -a
-#errors
-Line: 1 Col: 37 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script -a"
-|   <body>
-
-#data
-<!doctype html><script><!--<script -<
-#errors
-Line: 1 Col: 37 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script -<"
-|   <body>
-
-#data
-<!doctype html><script><!--<script --
-#errors
-Line: 1 Col: 37 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script --"
-|   <body>
-
-#data
-<!doctype html><script><!--<script --a
-#errors
-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script --a"
-|   <body>
-
-#data
-<!doctype html><script><!--<script --<
-#errors
-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script --<"
-|   <body>
-
-#data
-<!doctype html><script><!--<script -->
-#errors
-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script -->"
-|   <body>
-
-#data
-<!doctype html><script><!--<script --><
-#errors
-Line: 1 Col: 39 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script --><"
-|   <body>
-
-#data
-<!doctype html><script><!--<script --></
-#errors
-Line: 1 Col: 40 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script --></"
-|   <body>
-
-#data
-<!doctype html><script><!--<script --></script
-#errors
-Line: 1 Col: 46 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script --></script"
-|   <body>
-
-#data
-<!doctype html><script><!--<script --></script 
-#errors
-Line: 1 Col: 47 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script -->"
-|   <body>
-
-#data
-<!doctype html><script><!--<script --></script/
-#errors
-Line: 1 Col: 47 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script -->"
-|   <body>
-
-#data
-<!doctype html><script><!--<script --></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script -->"
-|   <body>
-
-#data
-<!doctype html><script><!--<script><\/script>--></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script><\/script>-->"
-|   <body>
-
-#data
-<!doctype html><script><!--<script></scr'+'ipt>--></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script></scr'+'ipt>-->"
-|   <body>
-
-#data
-<!doctype html><script><!--<script></script><script></script></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script></script><script></script>"
-|   <body>
-
-#data
-<!doctype html><script><!--<script></script><script></script>--><!--</script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script></script><script></script>--><!--"
-|   <body>
-
-#data
-<!doctype html><script><!--<script></script><script></script>-- ></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script></script><script></script>-- >"
-|   <body>
-
-#data
-<!doctype html><script><!--<script></script><script></script>- -></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script></script><script></script>- ->"
-|   <body>
-
-#data
-<!doctype html><script><!--<script></script><script></script>- - ></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script></script><script></script>- - >"
-|   <body>
-
-#data
-<!doctype html><script><!--<script></script><script></script>-></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script></script><script></script>->"
-|   <body>
-
-#data
-<!doctype html><script><!--<script>--!></script>X
-#errors
-Line: 1 Col: 49 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script>--!></script>X"
-|   <body>
-
-#data
-<!doctype html><script><!--<scr'+'ipt></script>--></script>
-#errors
-Line: 1 Col: 59 Unexpected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<scr'+'ipt>"
-|   <body>
-|     "-->"
-
-#data
-<!doctype html><script><!--<script></scr'+'ipt></script>X
-#errors
-Line: 1 Col: 57 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <script>
-|       "<!--<script></scr'+'ipt></script>X"
-|   <body>
-
-#data
-<!doctype html><style><!--<style></style>--></style>
-#errors
-Line: 1 Col: 52 Unexpected end tag (style).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <style>
-|       "<!--<style>"
-|   <body>
-|     "-->"
-
-#data
-<!doctype html><style><!--</style>X
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <style>
-|       "<!--"
-|   <body>
-|     "X"
-
-#data
-<!doctype html><style><!--...</style>...--></style>
-#errors
-Line: 1 Col: 51 Unexpected end tag (style).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <style>
-|       "<!--..."
-|   <body>
-|     "...-->"
-
-#data
-<!doctype html><style><!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style></style>X
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <style>
-|       "<!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style>"
-|   <body>
-|     "X"
-
-#data
-<!doctype html><style><!--...<style><!--...--!></style>--></style>
-#errors
-Line: 1 Col: 66 Unexpected end tag (style).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <style>
-|       "<!--...<style><!--...--!>"
-|   <body>
-|     "-->"
-
-#data
-<!doctype html><style><!--...</style><!-- --><style>@import ...</style>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <style>
-|       "<!--..."
-|     <!--   -->
-|     <style>
-|       "@import ..."
-|   <body>
-
-#data
-<!doctype html><style>...<style><!--...</style><!-- --></style>
-#errors
-Line: 1 Col: 63 Unexpected end tag (style).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <style>
-|       "...<style><!--..."
-|     <!--   -->
-|   <body>
-
-#data
-<!doctype html><style>...<!--[if IE]><style>...</style>X
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <style>
-|       "...<!--[if IE]><style>..."
-|   <body>
-|     "X"
-
-#data
-<!doctype html><title><!--<title></title>--></title>
-#errors
-Line: 1 Col: 52 Unexpected end tag (title).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <title>
-|       "<!--<title>"
-|   <body>
-|     "-->"
-
-#data
-<!doctype html><title>&lt;/title></title>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <title>
-|       "</title>"
-|   <body>
-
-#data
-<!doctype html><title>foo/title><link></head><body>X
-#errors
-Line: 1 Col: 52 Unexpected end of file. Expected end tag (title).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <title>
-|       "foo/title><link></head><body>X"
-|   <body>
-
-#data
-<!doctype html><noscript><!--<noscript></noscript>--></noscript>
-#errors
-Line: 1 Col: 64 Unexpected end tag (noscript).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <noscript>
-|       "<!--<noscript>"
-|   <body>
-|     "-->"
-
-#data
-<!doctype html><noscript><!--</noscript>X<noscript>--></noscript>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <noscript>
-|       "<!--"
-|   <body>
-|     "X"
-|     <noscript>
-|       "-->"
-
-#data
-<!doctype html><noscript><iframe></noscript>X
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <noscript>
-|       "<iframe>"
-|   <body>
-|     "X"
-
-#data
-<!doctype html><noframes><!--<noframes></noframes>--></noframes>
-#errors
-Line: 1 Col: 64 Unexpected end tag (noframes).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <noframes>
-|       "<!--<noframes>"
-|   <body>
-|     "-->"
-
-#data
-<!doctype html><noframes><body><script><!--...</script></body></noframes></html>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|     <noframes>
-|       "<body><script><!--...</script></body>"
-|   <body>
-
-#data
-<!doctype html><textarea><!--<textarea></textarea>--></textarea>
-#errors
-Line: 1 Col: 64 Unexpected end tag (textarea).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <textarea>
-|       "<!--<textarea>"
-|     "-->"
-
-#data
-<!doctype html><textarea>&lt;/textarea></textarea>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <textarea>
-|       "</textarea>"
-
-#data
-<!doctype html><iframe><!--<iframe></iframe>--></iframe>
-#errors
-Line: 1 Col: 56 Unexpected end tag (iframe).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <iframe>
-|       "<!--<iframe>"
-|     "-->"
-
-#data
-<!doctype html><iframe>...<!--X->...<!--/X->...</iframe>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <iframe>
-|       "...<!--X->...<!--/X->..."
-
-#data
-<!doctype html><xmp><!--<xmp></xmp>--></xmp>
-#errors
-Line: 1 Col: 44 Unexpected end tag (xmp).
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <xmp>
-|       "<!--<xmp>"
-|     "-->"
-
-#data